277 lines
10 KiB
HTML
277 lines
10 KiB
HTML
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Bill of Materials</title>
|
|
<style>
|
|
.cell-title { vertical-align: bottom; }
|
|
.cell-info { vertical-align: top; padding: 1em;}
|
|
.cell-extra-info { vertical-align: top; padding: 1em;}
|
|
.cell-stats { vertical-align: top; padding: 1em;}
|
|
.title { font-size:2.5em; font-weight: bold; }
|
|
.subtitle { font-size:1.5em; font-weight: bold; }
|
|
.h2 { font-size:1.5em; font-weight: bold; }
|
|
.td-empty0 { text-align: center; background-color: #F57676;}
|
|
.td-gen0 { text-align: center; background-color: #DCF5E4;}
|
|
.td-kicad0 { text-align: center; background-color: #F5DCA9;}
|
|
.td-user0 { text-align: center; background-color: #DCEFF5;}
|
|
.td-empty1 { text-align: center; background-color: #FF8080;}
|
|
.td-gen1 { text-align: center; background-color: #E6FFEE;}
|
|
.td-kicad1 { text-align: center; background-color: #FFE6B3;}
|
|
.td-user1 { text-align: center; background-color: #E6F9FF;}
|
|
.td-nocolor { text-align: center; }
|
|
.color-ref { margin: 25px 0; }
|
|
.color-ref th { text-align: left }
|
|
.color-ref td { padding: 5px 20px; }
|
|
.head-table { margin-bottom: 2em; }
|
|
.centered-checkmark { font-size: 30vw; text-align: center; color: green; }
|
|
.tg-sort-header::-moz-selection{background:0 0}
|
|
.tg-sort-header::selection{background:0 0}.tg-sort-header{cursor:pointer}
|
|
.tg-sort-header:after{content:'';float:right;border-width:0 5px 5px;border-style:solid;
|
|
border-color:#ffffff transparent;visibility:hidden;opacity:.6}
|
|
.tg-sort-header:hover:after{visibility:visible}
|
|
.tg-sort-asc:after,.tg-sort-asc:hover:after,.tg-sort-desc:after{visibility:visible;opacity:1}
|
|
.tg-sort-desc:after{border-bottom:none;border-width:5px 5px 0}
|
|
|
|
.content-table {
|
|
border-collapse:
|
|
collapse;
|
|
margin-top: 5px;
|
|
margin-bottom: 4em;
|
|
font-size: 0.9em;
|
|
font-family: sans-serif;
|
|
min-width: 400px;
|
|
border-radius: 5px 5px 0 0;
|
|
overflow: hidden;
|
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
|
|
}
|
|
.content-table thead tr { background-color: #0e4e8e; color: #ffffff; text-align: left; }
|
|
.content-table th, .content-table td { padding: 12px 15px; }
|
|
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
|
|
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
|
|
.content-table tbody tr:last-of-type { border-bottom: 2px solid #0e4e8e; }
|
|
.content-table * tr:hover > td { background-color: @bgl@ !important }
|
|
|
|
.content-table {
|
|
border-collapse:
|
|
collapse;
|
|
margin-top: 5px;
|
|
margin-bottom: 4em;
|
|
font-size: 0.9em;
|
|
font-family: sans-serif;
|
|
min-width: 400px;
|
|
border-radius: 5px 5px 0 0;
|
|
overflow: hidden;
|
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
|
|
}
|
|
.content-table thead tr { background-color: @bg@; color: #ffffff; text-align: left; }
|
|
.content-table th, .content-table td { padding: 12px 15px; }
|
|
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
|
|
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
|
|
.content-table tbody tr:last-of-type { border-bottom: 2px solid @bg@; }
|
|
.content-table * tr:hover > td { background-color: #3e7ebe !important }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table class="head-table">
|
|
<tr>
|
|
<td rowspan="2">
|
|
</td>
|
|
<td colspan="2" class="cell-title">
|
|
<div class="title">Bill of Materials</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="cell-info">
|
|
<b>Schematic</b>: Nixie_Tube_Clock<br>
|
|
<b>Variant</b>: DRAFT<br>
|
|
<b>Revision</b>: + (Unreleased)<br>
|
|
<b>Date</b>: 2025-01-12<br>
|
|
<b>KiCad Version</b>: 9.0.7+1<br>
|
|
</td>
|
|
<td class="cell-stats">
|
|
<b>Component Groups</b>: 3<br>
|
|
<b>Component Count</b>: 8 (per PCB)<br>
|
|
|
|
<b>Fitted Components</b>: 8 (per PCB)<br>
|
|
<b>Number of PCBs</b>: 1<br>
|
|
<b>Total Components</b>: 8 (for 1 PCBs)<br>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h2>Component Groups</h2>
|
|
<table class="content-table">
|
|
<thead>
|
|
<tr>
|
|
<th class="th-gen">Row</th>
|
|
<th class="th-gen">Quantity Per PCB</th>
|
|
<th class="th-kicad">References</th>
|
|
<th class="th-kicad">Value</th>
|
|
<th class="th-kicad">Datasheet</th>
|
|
<th class="th-kicad">Footprint</th>
|
|
<th class="th-user">Description</th>
|
|
<th class="th-user">Manufacturer</th>
|
|
<th class="th-user">Manufacturer Part Number</th>
|
|
<th class="th-user">Supplier Part Number</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr id="0">
|
|
<td class="td-gen0">1</td>
|
|
<td class="td-gen0">1</td>
|
|
<td class="td-kicad0"><div id="U1"></div>U1</td>
|
|
<td class="td-kicad0">4020</td>
|
|
<td class="td-kicad0"><a href="http://www.intersil.com/content/dam/Intersil/documents/cd40/cd4020bms-24bms-40bms.pdf">http://www.intersil.com/content/dam/Intersil/documents/cd40/cd4020bms-24bms-40bms.pdf</a></td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-user0">Binary counter 14 stages (asynchronous)</td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-empty0"></td>
|
|
</tr>
|
|
<tr id="1">
|
|
<td class="td-gen1">2</td>
|
|
<td class="td-gen1">1</td>
|
|
<td class="td-kicad1"><div id="U2"></div>U2</td>
|
|
<td class="td-kicad1">4060</td>
|
|
<td class="td-kicad1"><a href="https://www.st.com/resource/en/datasheet/m74hc4060.pdf">https://www.st.com/resource/en/datasheet/m74hc4060.pdf</a></td>
|
|
<td class="td-empty1"></td>
|
|
<td class="td-user1">Binary counter (14-stages) and oscillator</td>
|
|
<td class="td-empty1"></td>
|
|
<td class="td-empty1"></td>
|
|
<td class="td-empty1"></td>
|
|
</tr>
|
|
<tr id="2">
|
|
<td class="td-gen0">3</td>
|
|
<td class="td-gen0">6</td>
|
|
<td class="td-kicad0"><div id="U8"></div><div id="U7"></div><div id="U6"></div><div id="U5"></div><div id="U4"></div><div id="U3"></div>U3 U4 U5 U6 U7 U8</td>
|
|
<td class="td-kicad0">74HC193</td>
|
|
<td class="td-kicad0"><a href="https://assets.nexperia.com/documents/data-sheet/74HC_HCT193.pdf">https://assets.nexperia.com/documents/data-sheet/74HC_HCT193.pdf</a></td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-user0">Synchronous 4-bit Up/Down (2 clk) counter</td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-empty0"></td>
|
|
<td class="td-empty0"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="color-ref">
|
|
<tr><th>Color reference for columns:</th></tr>
|
|
<tr><td class="td-kicad0">KiCad Fields (default)</td></tr>
|
|
<tr><td class="td-gen0">Generated Fields</td></tr>
|
|
<tr><td class="td-user0">User Fields</td></tr>
|
|
<tr><td class="td-empty0">Empty Fields</td></tr>
|
|
</table>
|
|
<script charset="utf-8">
|
|
var TGSort = window.TGSort || function(n) {
|
|
"use strict";
|
|
function r(n) { return n ? n.length : 0 }
|
|
function t(n, t, e, o = 0) { for (e = r(n); o < e; ++o) t(n[o], o) }
|
|
function e(n) { return n.split("").reverse().join("") }
|
|
function o(n) {
|
|
var e = n[0];
|
|
return t(n, function(n) {
|
|
for (; !n.startsWith(e);) e = e.substring(0, r(e) - 1)
|
|
}), r(e)
|
|
}
|
|
function u(n, r, e = []) {
|
|
return t(n, function(n) {
|
|
r(n) && e.push(n)
|
|
}), e
|
|
}
|
|
var a = parseFloat;
|
|
function i(n, r) {
|
|
return function(t) {
|
|
var e = "";
|
|
return t.replace(n, function(n, t, o) {
|
|
return e = t.replace(r, "") + "." + (o || "").substring(1)
|
|
}), a(e)
|
|
}
|
|
}
|
|
var s = i(/^(?:\s*)([+-]?(?:\d+)(?:,\d{3})*)(\.\d*)?$/g, /,/g),
|
|
c = i(/^(?:\s*)([+-]?(?:\d+)(?:\.\d{3})*)(,\d*)?$/g, /\./g);
|
|
function f(n) {
|
|
var t = a(n);
|
|
return !isNaN(t) && r("" + t) + 1 >= r(n) ? t : NaN
|
|
}
|
|
function d(n) {
|
|
var e = [],
|
|
o = n;
|
|
return t([f, s, c], function(u) {
|
|
var a = [],
|
|
i = [];
|
|
t(n, function(n, r) {
|
|
r = u(n), a.push(r), r || i.push(n)
|
|
}), r(i) < r(o) && (o = i, e = a)
|
|
}), r(u(o, function(n) {
|
|
return n == o[0]
|
|
})) == r(o) ? e : []
|
|
}
|
|
function v(n) {
|
|
if ("TABLE" == n.nodeName) {
|
|
for (var a = function(r) {
|
|
var e, o, u = [],
|
|
a = [];
|
|
return function n(r, e) {
|
|
e(r), t(r.childNodes, function(r) {
|
|
n(r, e)
|
|
})
|
|
}(n, function(n) {
|
|
"TR" == (o = n.nodeName) ? (e = [], u.push(e), a.push(n)) : "TD" != o && "TH" != o || e.push(n)
|
|
}), [u, a]
|
|
}(), i = a[0], s = a[1], c = r(i), f = c > 1 && r(i[0]) < r(i[1]) ? 1 : 0, v = f + 1, p = i[f], h = r(p), l = [], g = [], N = [], m = v; m < c; ++m) {
|
|
for (var T = 0; T < h; ++T) {
|
|
r(g) < h && g.push([]);
|
|
var C = i[m][T],
|
|
L = C.textContent || C.innerText || "";
|
|
g[T].push(L.trim())
|
|
}
|
|
N.push(m - v)
|
|
}
|
|
t(p, function(n, t) {
|
|
l[t] = 0;
|
|
var a = n.classList;
|
|
a.add("tg-sort-header"), n.addEventListener("click", function() {
|
|
var n = l[t];
|
|
! function() {
|
|
for (var n = 0; n < h; ++n) {
|
|
var r = p[n].classList;
|
|
r.remove("tg-sort-asc"), r.remove("tg-sort-desc"), l[n] = 0
|
|
}
|
|
}(), (n = 1 == n ? -1 : +!n) && a.add(n > 0 ? "tg-sort-asc" : "tg-sort-desc"), l[t] = n;
|
|
var i, f = g[t],
|
|
m = function(r, t) {
|
|
return n * f[r].localeCompare(f[t]) || n * (r - t)
|
|
},
|
|
T = function(n) {
|
|
var t = d(n);
|
|
if (!r(t)) {
|
|
var u = o(n),
|
|
a = o(n.map(e));
|
|
t = d(n.map(function(n) {
|
|
return n.substring(u, r(n) - a)
|
|
}))
|
|
}
|
|
return t
|
|
}(f);
|
|
(r(T) || r(T = r(u(i = f.map(Date.parse), isNaN)) ? [] : i)) && (m = function(r, t) {
|
|
var e = T[r],
|
|
o = T[t],
|
|
u = isNaN(e),
|
|
a = isNaN(o);
|
|
return u && a ? 0 : u ? -n : a ? n : e > o ? n : e < o ? -n : n * (r - t)
|
|
});
|
|
var C, L = N.slice();
|
|
L.sort(m);
|
|
for (var E = v; E < c; ++E)(C = s[E].parentNode).removeChild(s[E]);
|
|
for (E = v; E < c; ++E) C.appendChild(s[v + L[E - v]])
|
|
})
|
|
})
|
|
}
|
|
}
|
|
n.addEventListener("DOMContentLoaded", function() {
|
|
for (var t = n.getElementsByClassName("content-table"), e = 0; e < r(t); ++e) try {
|
|
v(t[e])
|
|
} catch (n) {}
|
|
})
|
|
}(document)
|
|
</script>
|
|
</body></html> |