mirror of
https://github.com/UzixLS/pc-isa16-backplane.git
synced 2025-07-18 23:11:20 +03:00
4670 lines
411 KiB
HTML
4670 lines
411 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Interactive BOM for KiCAD</title>
|
|
<style type="text/css">
|
|
:root {
|
|
--pcb-edge-color: black;
|
|
--pad-color: #878787;
|
|
--pad-hole-color: #CCCCCC;
|
|
--pad-color-highlight: #D04040;
|
|
--pad-color-highlight-both: #D0D040;
|
|
--pad-color-highlight-marked: #44a344;
|
|
--pin1-outline-color: #ffb629;
|
|
--pin1-outline-color-highlight: #ffb629;
|
|
--pin1-outline-color-highlight-both: #fcbb39;
|
|
--pin1-outline-color-highlight-marked: #fdbe41;
|
|
--silkscreen-edge-color: #aa4;
|
|
--silkscreen-polygon-color: #4aa;
|
|
--silkscreen-text-color: #4aa;
|
|
--fabrication-edge-color: #907651;
|
|
--fabrication-polygon-color: #907651;
|
|
--fabrication-text-color: #a27c24;
|
|
--track-color: #def5f1;
|
|
--track-color-highlight: #D04040;
|
|
--zone-color: #def5f1;
|
|
--zone-color-highlight: #d0404080;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0px;
|
|
height: 100%;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark.topmostdiv {
|
|
--pcb-edge-color: #eee;
|
|
--pad-color: #808080;
|
|
--pin1-outline-color: #ffa800;
|
|
--pin1-outline-color-highlight: #ccff00;
|
|
--track-color: #42524f;
|
|
--zone-color: #42524f;
|
|
background-color: #252c30;
|
|
color: #eee;
|
|
}
|
|
|
|
button {
|
|
background-color: #eee;
|
|
border: 1px solid #888;
|
|
color: black;
|
|
height: 44px;
|
|
width: 44px;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
font-size: 14px;
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.dark button {
|
|
/* This will be inverted */
|
|
background-color: #c3b7b5;
|
|
}
|
|
|
|
button.depressed {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark button.depressed {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 0;
|
|
}
|
|
|
|
button#tb-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#lr-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#bom-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-grouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-ungrouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-netlist-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#copy {
|
|
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
|
|
background-position: 6px 6px;
|
|
background-repeat: no-repeat;
|
|
background-size: 26px 26px;
|
|
border-radius: 6px;
|
|
height: 40px;
|
|
width: 40px;
|
|
margin: 10px 5px;
|
|
}
|
|
|
|
button#copy:active {
|
|
box-shadow: inset 0px 0px 5px #6c6c6c;
|
|
}
|
|
|
|
textarea.clipboard-temp {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 2em;
|
|
height: 2em;
|
|
padding: 0;
|
|
border: None;
|
|
outline: None;
|
|
box-shadow: None;
|
|
background: transparent;
|
|
}
|
|
|
|
.left-most-button {
|
|
border-right: 0;
|
|
border-top-left-radius: 6px;
|
|
border-bottom-left-radius: 6px;
|
|
}
|
|
|
|
.middle-button {
|
|
border-right: 0;
|
|
}
|
|
|
|
.right-most-button {
|
|
border-top-right-radius: 6px;
|
|
border-bottom-right-radius: 6px;
|
|
}
|
|
|
|
.button-container {
|
|
font-size: 0;
|
|
margin: 0.4rem 0.4rem 0.4rem 0;
|
|
}
|
|
|
|
.dark .button-container {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.button-container button {
|
|
background-size: 32px 32px;
|
|
background-position: 5px 5px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
@media print {
|
|
.hideonprint {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
canvas {
|
|
cursor: crosshair;
|
|
}
|
|
|
|
canvas:active {
|
|
cursor: grabbing;
|
|
}
|
|
|
|
.fileinfo {
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
border: none;
|
|
padding: 3px;
|
|
}
|
|
|
|
.fileinfo .title {
|
|
font-size: 20pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.fileinfo td {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
max-width: 1px;
|
|
width: 50%;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.bom {
|
|
border-collapse: collapse;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 10pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
margin-top: 1px;
|
|
position: relative;
|
|
}
|
|
|
|
.bom th,
|
|
.bom td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
.dark .bom th,
|
|
.dark .bom td {
|
|
border: 1px solid #777;
|
|
}
|
|
|
|
.bom th {
|
|
background-color: #CCCCCC;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
.dark .bom th {
|
|
background-color: #3b4749;
|
|
}
|
|
|
|
.bom tr.highlighted:nth-child(n) {
|
|
background-color: #cfc;
|
|
}
|
|
|
|
.dark .bom tr.highlighted:nth-child(n) {
|
|
background-color: #226022;
|
|
}
|
|
|
|
.bom tr:nth-child(even) {
|
|
background-color: #f2f2f2;
|
|
}
|
|
|
|
.dark .bom tr:nth-child(even) {
|
|
background-color: #313b40;
|
|
}
|
|
|
|
.bom tr.checked {
|
|
color: #1cb53d;
|
|
}
|
|
|
|
.dark .bom tr.checked {
|
|
color: #2cce54;
|
|
}
|
|
|
|
.bom tr {
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.bom .numCol {
|
|
width: 30px;
|
|
}
|
|
|
|
.bom .value {
|
|
width: 15%;
|
|
}
|
|
|
|
.bom .quantity {
|
|
width: 65px;
|
|
}
|
|
|
|
.bom th .sortmark {
|
|
position: absolute;
|
|
right: 1px;
|
|
top: 1px;
|
|
margin-top: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent transparent #221 transparent;
|
|
transform-origin: 50% 85%;
|
|
transition: opacity 0.2s, transform 0.4s;
|
|
}
|
|
|
|
.dark .bom th .sortmark {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.bom th .sortmark.none {
|
|
opacity: 0;
|
|
}
|
|
|
|
.bom th .sortmark.desc {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.bom th:hover .sortmark.none {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.bom .bom-checkbox {
|
|
width: 30px;
|
|
position: relative;
|
|
user-select: none;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
.bom .bom-checkbox:before {
|
|
content: "";
|
|
position: absolute;
|
|
border-width: 15px;
|
|
border-style: solid;
|
|
border-color: #51829f transparent transparent transparent;
|
|
visibility: hidden;
|
|
top: -15px;
|
|
}
|
|
|
|
.bom .bom-checkbox:after {
|
|
content: "Double click to set/unset all";
|
|
position: absolute;
|
|
color: white;
|
|
top: -35px;
|
|
left: -26px;
|
|
background: #51829f;
|
|
padding: 5px 15px;
|
|
border-radius: 8px;
|
|
white-space: nowrap;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.bom .bom-checkbox:hover:before,
|
|
.bom .bom-checkbox:hover:after {
|
|
visibility: visible;
|
|
transition: visibility 0.2s linear 1s;
|
|
}
|
|
|
|
.split {
|
|
-webkit-box-sizing: border-box;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
background-color: inherit;
|
|
}
|
|
|
|
.split.split-horizontal,
|
|
.gutter.gutter-horizontal {
|
|
height: 100%;
|
|
float: left;
|
|
}
|
|
|
|
.gutter {
|
|
background-color: #ddd;
|
|
background-repeat: no-repeat;
|
|
background-position: 50%;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
.dark .gutter {
|
|
background-color: #777;
|
|
}
|
|
|
|
.gutter.gutter-horizontal {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
|
|
cursor: ew-resize;
|
|
width: 5px;
|
|
}
|
|
|
|
.gutter.gutter-vertical {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
|
|
cursor: ns-resize;
|
|
height: 5px;
|
|
}
|
|
|
|
.searchbox {
|
|
float: left;
|
|
height: 40px;
|
|
margin: 10px 5px;
|
|
padding: 12px 32px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 18px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 6px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
|
|
background-position: 10px 10px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.dark .searchbox {
|
|
background-color: #111;
|
|
color: #eee;
|
|
}
|
|
|
|
.searchbox::placeholder {
|
|
color: #ccc;
|
|
}
|
|
|
|
.dark .searchbox::placeholder {
|
|
color: #666;
|
|
}
|
|
|
|
.filter {
|
|
width: calc(60% - 64px);
|
|
}
|
|
|
|
.reflookup {
|
|
width: calc(40% - 10px);
|
|
}
|
|
|
|
input[type=text]:focus {
|
|
background-color: white;
|
|
border: 1px solid #333;
|
|
}
|
|
|
|
.dark input[type=text]:focus {
|
|
background-color: #333;
|
|
border: 1px solid #ccc;
|
|
}
|
|
|
|
mark.highlight {
|
|
background-color: #5050ff;
|
|
color: #fff;
|
|
padding: 2px;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.dark mark.highlight {
|
|
background-color: #76a6da;
|
|
color: #111;
|
|
}
|
|
|
|
.menubtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.statsbtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.iobtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.visbtn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
padding: 15px;
|
|
}
|
|
|
|
#vismenu-content {
|
|
left: 0px;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark .statsbtn,
|
|
.dark .savebtn,
|
|
.dark .menubtn,
|
|
.dark .iobtn,
|
|
.dark .visbtn {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.flexbox {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
}
|
|
|
|
.savebtn {
|
|
background-color: #d6d6d6;
|
|
width: auto;
|
|
height: 30px;
|
|
flex-grow: 1;
|
|
margin: 5px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.savebtn:active {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark .savebtn:active {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
.stats {
|
|
border-collapse: collapse;
|
|
font-size: 12pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
min-width: 450px;
|
|
}
|
|
|
|
.dark .stats td {
|
|
border: 1px solid #bbb;
|
|
}
|
|
|
|
.stats td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
#checkbox-stats div {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
#checkbox-stats .bar {
|
|
background-color: rgba(28, 251, 0, 0.6);
|
|
}
|
|
|
|
.menu {
|
|
position: relative;
|
|
display: inline-block;
|
|
margin: 0.4rem 0.4rem 0.4rem 0;
|
|
}
|
|
|
|
.menu-content {
|
|
font-size: 12pt !important;
|
|
text-align: left !important;
|
|
font-weight: normal !important;
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
right: 0;
|
|
min-width: 300px;
|
|
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
|
z-index: 100;
|
|
padding: 8px;
|
|
}
|
|
|
|
.dark .menu-content {
|
|
background-color: #111;
|
|
}
|
|
|
|
.menu:hover .menu-content {
|
|
display: block;
|
|
}
|
|
|
|
.menu:hover .menubtn,
|
|
.menu:hover .iobtn,
|
|
.menu:hover .statsbtn {
|
|
background-color: #eee;
|
|
}
|
|
|
|
.menu-label {
|
|
display: inline-block;
|
|
padding: 8px;
|
|
border: 1px solid #ccc;
|
|
border-top: 0;
|
|
width: calc(100% - 18px);
|
|
}
|
|
|
|
.menu-label-top {
|
|
border-top: 1px solid #ccc;
|
|
}
|
|
|
|
.menu-textbox {
|
|
float: left;
|
|
height: 24px;
|
|
margin: 10px 5px;
|
|
padding: 5px 5px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 14px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 4px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
width: calc(100% - 10px);
|
|
}
|
|
|
|
.menu-textbox.invalid,
|
|
.dark .menu-textbox.invalid {
|
|
color: red;
|
|
}
|
|
|
|
.dark .menu-textbox {
|
|
background-color: #222;
|
|
color: #eee;
|
|
}
|
|
|
|
.radio-container {
|
|
margin: 4px;
|
|
}
|
|
|
|
.topmostdiv {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
background-color: white;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
#top {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
}
|
|
|
|
#topdivider {
|
|
border-bottom: 2px solid black;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.dark #topdivider {
|
|
border-bottom: 2px solid #ccc;
|
|
}
|
|
|
|
#topdivider>div {
|
|
position: relative;
|
|
}
|
|
|
|
#toptoggle {
|
|
cursor: pointer;
|
|
user-select: none;
|
|
position: absolute;
|
|
padding: 0.1rem 0.3rem;
|
|
top: -0.4rem;
|
|
left: -1rem;
|
|
font-size: 1.4rem;
|
|
line-height: 60%;
|
|
border: 1px solid black;
|
|
border-radius: 1rem;
|
|
background-color: #fff;
|
|
z-index: 100;
|
|
}
|
|
|
|
.flipped {
|
|
transform: rotate(0.5turn);
|
|
}
|
|
|
|
.dark #toptoggle {
|
|
border: 1px solid #fff;
|
|
background-color: #222;
|
|
}
|
|
|
|
#fileinfodiv {
|
|
flex: 20rem 1 0;
|
|
overflow: auto;
|
|
}
|
|
|
|
#bomcontrols {
|
|
display: flex;
|
|
flex-direction: row-reverse;
|
|
}
|
|
|
|
#bomcontrols>* {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
#dbg {
|
|
display: block;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: #aaa;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #666;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #555;
|
|
}
|
|
|
|
.slider {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
margin: 3px 0;
|
|
padding: 0;
|
|
outline: none;
|
|
opacity: 0.7;
|
|
-webkit-transition: .2s;
|
|
transition: opacity .2s;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.slider:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-runnable-track {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
border: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin-top: -4px;
|
|
}
|
|
|
|
.dark .slider::-webkit-slider-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-moz-range-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.slider::-moz-range-track {
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.dark .slider::-moz-range-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-ms-track {
|
|
width: 100%;
|
|
height: 8px;
|
|
border-width: 3px 0;
|
|
background: transparent;
|
|
border-color: transparent;
|
|
color: transparent;
|
|
transition: opacity .2s;
|
|
}
|
|
|
|
.slider::-ms-fill-lower {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-fill-upper {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
}
|
|
|
|
.shameless-plug {
|
|
font-size: 0.8em;
|
|
text-align: center;
|
|
display: block;
|
|
}
|
|
|
|
a {
|
|
color: #0278a4;
|
|
}
|
|
|
|
.dark a {
|
|
color: #00b9fd;
|
|
}
|
|
|
|
#frontcanvas,
|
|
#backcanvas {
|
|
touch-action: none;
|
|
}
|
|
|
|
.placeholder {
|
|
border: 1px dashed #9f9fda !important;
|
|
background-color: #edf2f7 !important;
|
|
}
|
|
|
|
.dragging {
|
|
z-index: 999;
|
|
}
|
|
|
|
.dark .dragging>table>tbody>tr {
|
|
background-color: #252c30;
|
|
}
|
|
|
|
.dark .placeholder {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.column-spacer {
|
|
top: 0;
|
|
left: 0;
|
|
width: calc(100% - 4px);
|
|
position: absolute;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle {
|
|
top: 0;
|
|
right: 0;
|
|
width: 4px;
|
|
position: absolute;
|
|
cursor: col-resize;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle:hover {
|
|
background-color: #4f99bd;
|
|
}
|
|
|
|
.help-link {
|
|
border: 1px solid #0278a4;
|
|
padding-inline: 0.3rem;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.dark .help-link {
|
|
border: 1px solid #00b9fd;
|
|
}
|
|
|
|
.bom-color {
|
|
width: 20%;
|
|
}
|
|
|
|
.color-column input {
|
|
width: 1.6rem;
|
|
height: 1rem;
|
|
border: 1px solid black;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
}
|
|
|
|
/* removes default styling from input color element */
|
|
::-webkit-color-swatch {
|
|
border: none;
|
|
}
|
|
|
|
::-webkit-color-swatch-wrapper {
|
|
padding: 0;
|
|
}
|
|
|
|
::-moz-color-swatch,
|
|
::-moz-focus-inner {
|
|
border: none;
|
|
}
|
|
|
|
::-moz-focus-inner {
|
|
padding: 0;
|
|
}
|
|
/* #bomhead {
|
|
position: sticky;
|
|
top: 0px;
|
|
z-index: 1;
|
|
} */
|
|
</style>
|
|
<script type="text/javascript" >
|
|
///////////////////////////////////////////////
|
|
/*
|
|
Split.js - v1.3.5
|
|
MIT License
|
|
https://github.com/nathancahill/Split.js
|
|
*/
|
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
|
|
// This work is free. You can redistribute it and/or modify it
|
|
// under the terms of the WTFPL, Version 2
|
|
// For more information see LICENSE.txt or http://www.wtfpl.net/
|
|
//
|
|
// For more information, the home page:
|
|
// http://pieroxy.net/blog/pages/lz-string/testing.html
|
|
//
|
|
// LZ-based compression algorithm, version 1.4.4
|
|
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*!
|
|
* PEP v0.4.3 | https://github.com/jquery/PEP
|
|
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
|
|
*/
|
|
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
|
|
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
|
|
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
|
|
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
|
|
for(var b=a;b.parentNode;)b=b.parentNode;
|
|
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
|
|
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
|
|
//
|
|
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
|
|
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
|
|
var b=x(a,this.findElements,this);
|
|
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
|
|
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
|
|
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
|
|
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
|
|
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
|
|
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
|
|
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
|
|
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
|
|
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
|
|
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
|
|
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
|
|
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
|
|
b=!1;else if("XY"===c)
|
|
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
|
|
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
|
|
vacuumTouches:function(a){var b=a.touches;
|
|
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
|
|
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
|
|
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
|
|
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
|
|
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
|
|
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
|
|
if(this.isPrimaryTouch(c)){
|
|
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0.0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("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VVepVuVWIVWCQ7FVUTEpVmVU1+fuV/5VuVTiEbhTVVXJVF5U6jtpVGVWEatHIalW0VbpVr5VnEBCYMuioVXWVvErVVaRV/VVOwINV3lXuVeYIHVW1iK5G3VXOIHOVYUAvlatVS1UrlfpqclCjlXNV5VUSkFRVk1XLVbKQF1W1kH5V+mqmmEci8OiCVNXgrlW5lSYQ45WujJ1VlVUaQB9Vq5VcVcZV5uCzlYpVEUpolk9VX0CHVa1V05WJuleVklXFlcAWaVXWVX1VWXKXwIFA61VkwG9V/uwdVQ1VrFWNFL9VQ1WVlXnqnlWNlUjVtVX0cGZVJNUo1W1AKuhQVcpVLZWM6KZVO1WUVRNVuOhWVa9VcNVk1YzV6NXs1chV6VUrVSjVI0gUVZgYm1UPhkTVOlUesIuVIyQI1TpVx1W7lQDZBlX3VdhVKNVIcNTVCtUXVZjVZlVHBQN0dNVonGpgcVVdVdi6MNUzVc2VOTA30GVAq5UCVVIkJtV94MtS+NW0pCKYz1U2gHrVb1W14lgIsNWy1UU8NtWQ1QTV/YKs1SFVx6g41T7VKtUaVXTVAMhm1fpq7MATVSqywfBPlQtVgFXjFJ5VJFVc1bLVtRaaiI2VTNW1VeDo0dU6VYEI/MxzwOewcKg6VSxVJiR51dtVwNV6mtxVp1RTVUlVFtUTVSnVIWQ01aJV8dXpUDlVyVWy1VHVHKBu1XHVodW61V7VKlVHZOOVw8x81dhszdVs1bLVhIocRaPVcdWDMga42dWK1QKUCdX+VcLVE4ie1djVxdU5ijPVttW1VePVBdVO1XDVtvQj1bvVY9UFVXWym9XI2FwsO9XKSP7Va9XsLBfVmtW51fPVB9XWQGhVVSBgQKnV2dXFVf8kL9X5aKPIs9UXVbNg7FVp1UnVcdWuclnV4dVz1f/Vb9Xh1R/VtVUQNfXVRtV3lS/VqUTGwKfVtfTAkP7o/FV7VYg1ADXwVVfVMDUHVcDoGDWg1arF2DUoNbA1yDWX1b+KCICllT3VtZXFlXAleNXmVXQ1dPCgNXaZUVVUNUg1LVWFoJg1Z9SG1WLqAVVuJFQ11ZU91SJV05W9lAvVqtWvlTw1YdX/3HlVuuWaiC1VdFW51au6VdW/1ZI1PUAMNbHVOFUolOI1NVVTZBg0rtVgNVRVbPoqNVA19FW3nBPVzFW4NXo14lWO1Y9IitVTxQw1IjWVleY1F9XpgPw1WjUHwCY1mxncNThlBjWsNaJV2jWP1bQ1CDWRlBo1UHBmNY/YFjV81aE1O0qT1Vo1vDq+1dE1uXCxNaY1SjXJNS9V8DXI1TWsU1WD1Vw1oNXdrM1Vq5VTlc41Qaii1cOVXVXOFYU15TW5lWusZTX+NaI1hMpB1Xk1i5UJrI41qUCbVa01KTUeakY1jTW81SDVLTUTjFE1mjXpQPXaGTXB1fOg9dBXVUA1WjU1mhDVSNUtlRMVOTXm1dw1aLTyNQ3VojWdphFVX1V0NVFi5NWt1YBVBXJndH41TjV21QVyZVX4VavVMzWm1WdVjlULNelIvVUeBIhVBXLW1V5VJzVaNQQSXTUU1ZTyVTXbNbuVpPlbNW81LgjHJk01jzWsVdFyUtWZNQs1H4RTNY5VWjXQtXM1+zVQtfg1uTV0sPk1NFlrNafVanJ1NV81lXRY1fs1WjVcNRi1vdUEtaNVSVWhVcXVjbl3VeM1lLUPNeS1JLUzIMJV0NCiNRvUnzX4tbnQGojHNWy1ouTYtUy1zjVHBYk1lzW+QMtQiTWx1S2Vu/BlNcLcjuS7leK1EVVZalK14FWmhLK13VqdRO5VXeAStevKn5AKtff5BZWStZq195XdlUOVurWjlQa1c5WCFvK1+rVtlaa1GrXGtTeIsVWVaiq1e5WGtXAkH/A+VYh6g1X2teuVJrWvhXK1mrXuVV61I4y06rPoR5UPlXxVZrW+tceVvFXXlUa1CDUhtVG1s3BBtT5VMF46tUIeDrUIcNlVAbWctOG1a6TsVbHMYbWjlUh5ybVV4Km1xgxwVYmUEhmIVbBVKFXRtcjVRqXy1Xm1hFXVYodV9bU1tevswVU+tWRViVUBtdrlyNgCNUJVH5UvmSiKYlXptZYWDGoNtau4TbXG2nq1uFVMuBO1AgXyVci1GbWwmMbVFDBLNWW1HlKBVa7qGLUAFgm17lWLYHdVN9yQijBVkogq1c21u7Wo1U61S7UxtbVQmoi5tZO1KVW8fExVkPpTZGFVzvzutSm165UxVROVp7WqVUc1HFXftdZi+5UHtRw4YUr5VYxVf7VQ6I70+VUhrIa1d7UXlcGgObVdtXO1cHWWtd61EHU+VTpIdrXdtdxVw2LDtaTcxuKW1QB1MHX3Osh1v7W5tUtwg7UJtoB15HWQdSJkCHVltWh5j1UspoB1aHX7VcrV6VXVtftVM7XTVRx13VVyABk1A7U0decgELUvmQTAJVVT+hK10qKlAGFVhECyteB6PbX7VVTV7HXxtS61CnV41UB1qbUDVU21mbUnVcqIJ7XadYtVDNXete+1IHXQGFu1sHVx1f3mW7XWtQg1YCQStdR1E1XSMrrV1bV01Y51C4zftaZ1BjWsCsB1fdVF7r7VInWjcJ/Vq1kpNQJ1zNU81W2MPHUi1Uq1IBShdYp14XX3sQF1pNVhdYh1o7XI1ZLVfnXGdXbVQXX8dcp1EtW+dXp15bU41ZBxsnVgupbVaXX5dYe1mXV5dUp1BXWDXPbVgcCGtdZ1cdVQ3De1AbWNdRnV1DXXjB61BNWQaFW1zrUS1ZlcdrV60hXVP1hUdUW1UNUjdRe1b4CQdXysuHWSdY1VPXW3tTZ099W4jFF1TmL21cBV4HVIdU1159WmteZ1tVWB1Yt1a3WqyhJ1S3UlVRMJbbVzdQHVD7V/tfZ1+3XXdWR1Y3Xe1Z21ZbXDCBXVHtX9tX11pXUHda11lLlQ1TXKDXUNTMbVb7R0df5199Xd1VG1LHUpEDYcj7V7dVD1xNgv8Ih1R3X88i11lha54GD10PWbdSl1IdXXNVG1bXVn1Rt1ubV49a8UIPUZdVvVwLUPdRV1ZPX1dYMsZbXtaKV1l6BTVa6MT7VSddfV+jU3dUjm99VdnCj1pNwueI1VDPXB8Ez18XWc9Tt1cXXRdWT1OVxVtbD1TxwuVSO18rW1VcvV6Gio9YO15nT7tUL1j1X95EI1VEwRdViq6VBa9fp1qXU69cZotPU7tS/VytUU9d51eDUM1eF1+vW1VbOqZUDDzO51PcWltep1UNXlEOOVnXXI+iz1tvW2tVJosvVTtTF67vWLtQbkONVl+cNgi7WU9ZEQHLXs9SvWfzWuJs71NvV6NdB1NPUu9c41lLYC9UH1z7UUtWn1CPV+9cbVgTVG9Tx1+fWK9c21CzXY6gX1OXWW1XAlVYrh9Rb1VDXbVdb1l7UHNYDw9vWLtTH1TfW6deb1DrVm5SZ4HvU1dVo1kuw99cl15rVUNVwYxhgZ9V71VDVW9TX1XfUCcNz1CfVsJfH1jfXxNZa1DfUR9faUjPXj9U81MXY59c51eZUStaN0E0iAVTK1OrWjJYf1qrUddQG1yBzViHbV9ZUn9ZNgZ/VVlfv1ICb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"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* Utility functions */
|
|
|
|
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
|
|
pcbdata.metadata.revision + '__#';
|
|
var storage;
|
|
|
|
function initStorage(key) {
|
|
try {
|
|
window.localStorage.getItem("blank");
|
|
storage = window.localStorage;
|
|
} catch (e) {
|
|
// localStorage not available
|
|
}
|
|
if (!storage) {
|
|
try {
|
|
window.sessionStorage.getItem("blank");
|
|
storage = window.sessionStorage;
|
|
} catch (e) {
|
|
// sessionStorage also not available
|
|
}
|
|
}
|
|
}
|
|
|
|
function readStorage(key) {
|
|
if (storage) {
|
|
return storage.getItem(storagePrefix + key);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function writeStorage(key, value) {
|
|
if (storage) {
|
|
storage.setItem(storagePrefix + key, value);
|
|
}
|
|
}
|
|
|
|
function fancyDblClickHandler(el, onsingle, ondouble) {
|
|
return function () {
|
|
if (el.getAttribute("data-dblclick") == null) {
|
|
el.setAttribute("data-dblclick", 1);
|
|
setTimeout(function () {
|
|
if (el.getAttribute("data-dblclick") == 1) {
|
|
onsingle();
|
|
}
|
|
el.removeAttribute("data-dblclick");
|
|
}, 200);
|
|
} else {
|
|
el.removeAttribute("data-dblclick");
|
|
ondouble();
|
|
}
|
|
}
|
|
}
|
|
|
|
function smoothScrollToRow(rowid) {
|
|
document.getElementById(rowid).scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
inline: "nearest"
|
|
});
|
|
}
|
|
|
|
function focusInputField(input) {
|
|
input.scrollIntoView(false);
|
|
input.focus();
|
|
input.select();
|
|
}
|
|
|
|
function saveBomTable(output) {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
|
|
}
|
|
if (node != bomhead.childNodes[0].lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
for (var row of bombody.childNodes) {
|
|
for (var cell of row.childNodes) {
|
|
let val = '';
|
|
for (var node of cell.childNodes) {
|
|
if (node.nodeName == "INPUT") {
|
|
if (node.checked) {
|
|
val += '✓';
|
|
}
|
|
} else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
|
|
val += node.firstChild.nodeValue;
|
|
} else {
|
|
val += node.nodeValue;
|
|
}
|
|
}
|
|
if (output == 'csv') {
|
|
val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
|
|
if (isNumeric(val)) {
|
|
val = +val; // use number
|
|
} else {
|
|
val = `"${val}"`; // enclosed within double-quote
|
|
}
|
|
}
|
|
text += val;
|
|
if (cell != row.lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
}
|
|
|
|
if (output != 'clipboard') {
|
|
// To file: csv or txt
|
|
var blob = new Blob([text], {
|
|
type: `text/${output}`
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.${output}`, blob);
|
|
} else {
|
|
// To clipboard
|
|
var textArea = document.createElement("textarea");
|
|
textArea.classList.add('clipboard-temp');
|
|
textArea.value = text;
|
|
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
|
|
try {
|
|
if (document.execCommand('copy')) {
|
|
console.log('Bom copied to clipboard.');
|
|
}
|
|
} catch (err) {
|
|
console.log('Can not copy to clipboard.');
|
|
}
|
|
|
|
document.body.removeChild(textArea);
|
|
}
|
|
}
|
|
|
|
function isNumeric(str) {
|
|
/* https://stackoverflow.com/a/175787 */
|
|
return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
|
|
}
|
|
|
|
function removeGutterNode(node) {
|
|
for (var i = 0; i < node.childNodes.length; i++) {
|
|
if (node.childNodes[i].classList &&
|
|
node.childNodes[i].classList.contains("gutter")) {
|
|
node.removeChild(node.childNodes[i]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function cleanGutters() {
|
|
removeGutterNode(document.getElementById("bot"));
|
|
removeGutterNode(document.getElementById("canvasdiv"));
|
|
}
|
|
|
|
var units = {
|
|
prefixes: {
|
|
giga: ["G", "g", "giga", "Giga", "GIGA"],
|
|
mega: ["M", "mega", "Mega", "MEGA"],
|
|
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
|
|
milli: ["m", "milli", "Milli", "MILLI"],
|
|
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
|
|
nano: ["N", "n", "nano", "Nano", "NANO"],
|
|
pico: ["P", "p", "pico", "Pico", "PICO"],
|
|
},
|
|
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
|
|
unitsLong: [
|
|
"OHM", "Ohm", "ohm", "ohms",
|
|
"FARAD", "Farad", "farad",
|
|
"HENRY", "Henry", "henry"
|
|
],
|
|
getMultiplier: function (s) {
|
|
if (this.prefixes.giga.includes(s)) return 1e9;
|
|
if (this.prefixes.mega.includes(s)) return 1e6;
|
|
if (this.prefixes.kilo.includes(s)) return 1e3;
|
|
if (this.prefixes.milli.includes(s)) return 1e-3;
|
|
if (this.prefixes.micro.includes(s)) return 1e-6;
|
|
if (this.prefixes.nano.includes(s)) return 1e-9;
|
|
if (this.prefixes.pico.includes(s)) return 1e-12;
|
|
return 1;
|
|
},
|
|
valueRegex: null,
|
|
}
|
|
|
|
function initUtils() {
|
|
var allPrefixes = units.prefixes.giga
|
|
.concat(units.prefixes.mega)
|
|
.concat(units.prefixes.kilo)
|
|
.concat(units.prefixes.milli)
|
|
.concat(units.prefixes.micro)
|
|
.concat(units.prefixes.nano)
|
|
.concat(units.prefixes.pico);
|
|
var allUnits = units.unitsShort.concat(units.unitsLong);
|
|
units.valueRegex = new RegExp("^([0-9\.]+)" +
|
|
"\\s*(" + allPrefixes.join("|") + ")?" +
|
|
"(" + allUnits.join("|") + ")?" +
|
|
"(\\b.*)?$", "");
|
|
units.valueAltRegex = new RegExp("^([0-9]*)" +
|
|
"(" + units.unitsShort.join("|") + ")?" +
|
|
"([GgMmKkUuNnPp])?" +
|
|
"([0-9]*)" +
|
|
"(\\b.*)?$", "");
|
|
if (config.fields.includes("Value")) {
|
|
var index = config.fields.indexOf("Value");
|
|
pcbdata.bom["parsedValues"] = {};
|
|
for (var id in pcbdata.bom.fields) {
|
|
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseValue(val, ref) {
|
|
var inferUnit = (unit, ref) => {
|
|
if (unit) {
|
|
unit = unit.toLowerCase();
|
|
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
|
|
unit = 'r';
|
|
}
|
|
unit = unit[0];
|
|
} else {
|
|
ref = /^([a-z]+)\d+$/i.exec(ref);
|
|
if (ref) {
|
|
ref = ref[1].toLowerCase();
|
|
if (ref == "c") unit = 'f';
|
|
else if (ref == "l") unit = 'h';
|
|
else if (ref == "r" || ref == "rv") unit = 'r';
|
|
else unit = null;
|
|
}
|
|
}
|
|
return unit;
|
|
};
|
|
val = val.replace(/,/g, "");
|
|
var match = units.valueRegex.exec(val);
|
|
var unit;
|
|
if (match) {
|
|
val = parseFloat(match[1]);
|
|
if (match[2]) {
|
|
val = val * units.getMultiplier(match[2]);
|
|
}
|
|
unit = inferUnit(match[3], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[4],
|
|
}
|
|
}
|
|
match = units.valueAltRegex.exec(val);
|
|
if (match && (match[1] || match[4])) {
|
|
val = parseFloat(match[1] + "." + match[4]);
|
|
if (match[3]) {
|
|
val = val * units.getMultiplier(match[3]);
|
|
}
|
|
unit = inferUnit(match[2], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[5],
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function valueCompare(a, b, stra, strb) {
|
|
if (a === null && b === null) {
|
|
// Failed to parse both values, compare them as strings.
|
|
if (stra != strb) return stra > strb ? 1 : -1;
|
|
else return 0;
|
|
} else if (a === null) {
|
|
return 1;
|
|
} else if (b === null) {
|
|
return -1;
|
|
} else {
|
|
if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
|
|
else if (a.val != b.val) return a.val > b.val ? 1 : -1;
|
|
else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
|
|
function validateSaveImgDimension(element) {
|
|
var valid = false;
|
|
var intValue = 0;
|
|
if (/^[1-9]\d*$/.test(element.value)) {
|
|
intValue = parseInt(element.value);
|
|
if (intValue <= 16000) {
|
|
valid = true;
|
|
}
|
|
}
|
|
if (valid) {
|
|
element.classList.remove("invalid");
|
|
} else {
|
|
element.classList.add("invalid");
|
|
}
|
|
return intValue;
|
|
}
|
|
|
|
function saveImage(layer) {
|
|
var width = validateSaveImgDimension(document.getElementById("render-save-width"));
|
|
var height = validateSaveImgDimension(document.getElementById("render-save-height"));
|
|
var bgcolor = null;
|
|
if (!document.getElementById("render-save-transparent").checked) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
bgcolor = style.getPropertyValue("background-color");
|
|
}
|
|
if (!width || !height) return;
|
|
|
|
// Prepare image
|
|
var canvas = document.createElement("canvas");
|
|
var layerdict = {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
bg: canvas,
|
|
fab: canvas,
|
|
silk: canvas,
|
|
highlight: canvas,
|
|
layer: layer,
|
|
}
|
|
// Do the rendering
|
|
recalcLayerScale(layerdict, width, height);
|
|
prepareLayer(layerdict);
|
|
clearCanvas(canvas, bgcolor);
|
|
drawBackground(layerdict, false);
|
|
drawHighlightsOnLayer(layerdict, false);
|
|
|
|
// Save image
|
|
var imgdata = canvas.toDataURL("image/png");
|
|
|
|
var filename = pcbdata.metadata.title;
|
|
if (pcbdata.metadata.revision) {
|
|
filename += `.${pcbdata.metadata.revision}`;
|
|
}
|
|
filename += `.${layer}.png`;
|
|
saveFile(filename, dataURLtoBlob(imgdata));
|
|
}
|
|
|
|
function saveSettings() {
|
|
var data = {
|
|
type: "InteractiveHtmlBom settings",
|
|
version: 1,
|
|
pcbmetadata: pcbdata.metadata,
|
|
settings: settings,
|
|
}
|
|
var blob = new Blob([JSON.stringify(data, null, 4)], {
|
|
type: "application/json"
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
|
|
}
|
|
|
|
function loadSettings() {
|
|
var input = document.createElement("input");
|
|
input.type = "file";
|
|
input.accept = ".settings.json";
|
|
input.onchange = function (e) {
|
|
var file = e.target.files[0];
|
|
var reader = new FileReader();
|
|
reader.onload = readerEvent => {
|
|
var content = readerEvent.target.result;
|
|
var newSettings;
|
|
try {
|
|
newSettings = JSON.parse(content);
|
|
} catch (e) {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
if (newSettings.type != "InteractiveHtmlBom settings") {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
|
|
if (metadataMatches) {
|
|
for (var k in pcbdata.metadata) {
|
|
if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
|
|
metadataMatches = false;
|
|
}
|
|
}
|
|
}
|
|
if (!metadataMatches) {
|
|
var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
|
|
var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
|
|
if (!confirm(
|
|
`Settins file metadata does not match current metadata.\n\n` +
|
|
`Page metadata:\n${currentMetadata}\n\n` +
|
|
`Settings file metadata:\n${fileMetadata}\n\n` +
|
|
`Press OK if you would like to import settings anyway.`)) {
|
|
return;
|
|
}
|
|
}
|
|
overwriteSettings(newSettings.settings);
|
|
}
|
|
reader.readAsText(file, 'UTF-8');
|
|
}
|
|
input.click();
|
|
}
|
|
|
|
function resetSettings() {
|
|
if (!confirm(
|
|
`This will reset all checkbox states and other settings.\n\n` +
|
|
`Press OK if you want to continue.`)) {
|
|
return;
|
|
}
|
|
if (storage) {
|
|
var keys = [];
|
|
for (var i = 0; i < storage.length; i++) {
|
|
var key = storage.key(i);
|
|
if (key.startsWith(storagePrefix)) keys.push(key);
|
|
}
|
|
for (var key of keys) storage.removeItem(key);
|
|
}
|
|
location.reload();
|
|
}
|
|
|
|
function overwriteSettings(newSettings) {
|
|
initDone = false;
|
|
Object.assign(settings, newSettings);
|
|
writeStorage("bomlayout", settings.bomlayout);
|
|
writeStorage("bommode", settings.bommode);
|
|
writeStorage("canvaslayout", settings.canvaslayout);
|
|
writeStorage("bomCheckboxes", settings.checkboxes.join(","));
|
|
document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
|
|
for (var checkbox of settings.checkboxes) {
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
}
|
|
writeStorage("markWhenChecked", settings.markWhenChecked);
|
|
padsVisible(settings.renderPads);
|
|
document.getElementById("padsCheckbox").checked = settings.renderPads;
|
|
fabricationVisible(settings.renderFabrication);
|
|
document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
|
|
silkscreenVisible(settings.renderSilkscreen);
|
|
document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
|
|
referencesVisible(settings.renderReferences);
|
|
document.getElementById("referencesCheckbox").checked = settings.renderReferences;
|
|
valuesVisible(settings.renderValues);
|
|
document.getElementById("valuesCheckbox").checked = settings.renderValues;
|
|
tracksVisible(settings.renderTracks);
|
|
document.getElementById("tracksCheckbox").checked = settings.renderTracks;
|
|
zonesVisible(settings.renderZones);
|
|
document.getElementById("zonesCheckbox").checked = settings.renderZones;
|
|
dnpOutline(settings.renderDnpOutline);
|
|
document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
|
|
setRedrawOnDrag(settings.redrawOnDrag);
|
|
document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
|
|
setDarkMode(settings.darkMode);
|
|
document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
|
|
setHighlightPin1(settings.highlightpin1);
|
|
document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
setOffsetBackRotation(settings.offsetBackRotation);
|
|
document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
|
|
initDone = true;
|
|
prepCheckboxes();
|
|
changeBomLayout(settings.bomlayout);
|
|
}
|
|
|
|
function saveFile(filename, blob) {
|
|
var link = document.createElement("a");
|
|
var objurl = URL.createObjectURL(blob);
|
|
link.download = filename;
|
|
link.href = objurl;
|
|
link.click();
|
|
}
|
|
|
|
function dataURLtoBlob(dataurl) {
|
|
var arr = dataurl.split(','),
|
|
mime = arr[0].match(/:(.*?);/)[1],
|
|
bstr = atob(arr[1]),
|
|
n = bstr.length,
|
|
u8arr = new Uint8Array(n);
|
|
while (n--) {
|
|
u8arr[n] = bstr.charCodeAt(n);
|
|
}
|
|
return new Blob([u8arr], {
|
|
type: mime
|
|
});
|
|
}
|
|
|
|
var settings = {
|
|
canvaslayout: "FB",
|
|
bomlayout: "left-right",
|
|
bommode: "grouped",
|
|
checkboxes: [],
|
|
checkboxStoredRefs: {},
|
|
darkMode: false,
|
|
highlightpin1: "none",
|
|
redrawOnDrag: true,
|
|
boardRotation: 0,
|
|
offsetBackRotation: false,
|
|
renderPads: true,
|
|
renderReferences: true,
|
|
renderValues: true,
|
|
renderSilkscreen: true,
|
|
renderFabrication: true,
|
|
renderDnpOutline: false,
|
|
renderTracks: true,
|
|
renderZones: true,
|
|
columnOrder: [],
|
|
hiddenColumns: [],
|
|
netColors: {},
|
|
}
|
|
|
|
function initDefaults() {
|
|
settings.bomlayout = readStorage("bomlayout");
|
|
if (settings.bomlayout === null) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
settings.bommode = readStorage("bommode");
|
|
if (settings.bommode === null) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
if (settings.bommode == "netlist" && !pcbdata.nets) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
settings.canvaslayout = readStorage("canvaslayout");
|
|
if (settings.canvaslayout === null) {
|
|
settings.canvaslayout = config.layer_view;
|
|
}
|
|
var bomCheckboxes = readStorage("bomCheckboxes");
|
|
if (bomCheckboxes === null) {
|
|
bomCheckboxes = config.checkboxes;
|
|
}
|
|
settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
|
|
document.getElementById("bomCheckboxes").value = bomCheckboxes;
|
|
|
|
var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1;
|
|
if (highlightpin1 === "false") highlightpin1 = "none";
|
|
if (highlightpin1 === "true") highlightpin1 = "all";
|
|
setHighlightPin1(highlightpin1);
|
|
document.forms.highlightpin1.highlightpin1.value = highlightpin1;
|
|
|
|
settings.markWhenChecked = readStorage("markWhenChecked") || "";
|
|
populateMarkWhenCheckedOptions();
|
|
|
|
function initBooleanSetting(storageString, def, elementId, func) {
|
|
var b = readStorage(storageString);
|
|
if (b === null) {
|
|
b = def;
|
|
} else {
|
|
b = (b == "true");
|
|
}
|
|
document.getElementById(elementId).checked = b;
|
|
func(b);
|
|
}
|
|
|
|
initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
|
|
initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
|
|
initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
|
|
initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
|
|
initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
|
|
if ("tracks" in pcbdata) {
|
|
initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
|
|
initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
|
|
} else {
|
|
document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
|
|
tracksVisible(false);
|
|
zonesVisible(false);
|
|
}
|
|
initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
|
|
initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
|
|
initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
|
|
|
|
var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
|
|
var hcols = JSON.parse(readStorage("hiddenColumns"));
|
|
if (hcols === null) {
|
|
hcols = [];
|
|
}
|
|
settings.hiddenColumns = hcols.filter(e => fields.includes(e));
|
|
|
|
var cord = JSON.parse(readStorage("columnOrder"));
|
|
if (cord === null) {
|
|
cord = fields;
|
|
} else {
|
|
cord = cord.filter(e => fields.includes(e));
|
|
if (cord.length != fields.length)
|
|
cord = fields;
|
|
}
|
|
settings.columnOrder = cord;
|
|
|
|
settings.boardRotation = readStorage("boardRotation");
|
|
if (settings.boardRotation === null) {
|
|
settings.boardRotation = config.board_rotation * 5;
|
|
} else {
|
|
settings.boardRotation = parseInt(settings.boardRotation);
|
|
}
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
|
|
|
|
settings.netColors = JSON.parse(readStorage("netColors")) || {};
|
|
}
|
|
|
|
// Helper classes for user js callbacks.
|
|
|
|
const IBOM_EVENT_TYPES = {
|
|
ALL: "all",
|
|
HIGHLIGHT_EVENT: "highlightEvent",
|
|
CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
|
|
BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
|
|
}
|
|
|
|
const EventHandler = {
|
|
callbacks: {},
|
|
init: function () {
|
|
for (eventType of Object.values(IBOM_EVENT_TYPES))
|
|
this.callbacks[eventType] = [];
|
|
},
|
|
registerCallback: function (eventType, callback) {
|
|
this.callbacks[eventType].push(callback);
|
|
},
|
|
emitEvent: function (eventType, eventArgs) {
|
|
event = {
|
|
eventType: eventType,
|
|
args: eventArgs,
|
|
}
|
|
var callback;
|
|
for (callback of this.callbacks[eventType])
|
|
callback(event);
|
|
for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
|
|
callback(event);
|
|
}
|
|
}
|
|
EventHandler.init();
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* PCB rendering code */
|
|
|
|
var emptyContext2d = document.createElement("canvas").getContext("2d");
|
|
|
|
function deg2rad(deg) {
|
|
return deg * Math.PI / 180;
|
|
}
|
|
|
|
function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
|
|
var point = [
|
|
linepoint[0] * text.width + offsetx,
|
|
linepoint[1] * text.height + offsety
|
|
];
|
|
// This approximates pcbnew behavior with how text tilts depending on horizontal justification
|
|
point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
|
|
return point;
|
|
}
|
|
|
|
function drawText(ctx, text, color) {
|
|
if ("ref" in text && !settings.renderReferences) return;
|
|
if ("val" in text && !settings.renderValues) return;
|
|
ctx.save();
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.lineWidth = text.thickness;
|
|
if ("svgpath" in text) {
|
|
ctx.stroke(new Path2D(text.svgpath));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
if ("polygons" in text) {
|
|
ctx.fill(getPolygonsPath(text));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
ctx.translate(...text.pos);
|
|
ctx.translate(text.thickness * 0.5, 0);
|
|
var angle = -text.angle;
|
|
if (text.attr.includes("mirrored")) {
|
|
ctx.scale(-1, 1);
|
|
angle = -angle;
|
|
}
|
|
var tilt = 0;
|
|
if (text.attr.includes("italic")) {
|
|
tilt = 0.125;
|
|
}
|
|
var interline = text.height * 1.5 + text.thickness;
|
|
var txt = text.text.split("\n");
|
|
// KiCad ignores last empty line.
|
|
if (txt[txt.length - 1] == '') txt.pop();
|
|
ctx.rotate(deg2rad(angle));
|
|
var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
|
|
offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
|
|
for (var i in txt) {
|
|
var lineWidth = text.thickness + interline / 2 * tilt;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
lineWidth += fourSpaces - lineWidth % fourSpaces;
|
|
} else {
|
|
if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
}
|
|
lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
|
|
}
|
|
}
|
|
var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
|
|
var inOverbar = false;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (config.kicad_text_formatting) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
offsetx += fourSpaces - offsetx % fourSpaces;
|
|
continue;
|
|
} else if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
if (txt[i][j] != '~') {
|
|
inOverbar = !inOverbar;
|
|
}
|
|
}
|
|
}
|
|
var glyph = pcbdata.font_data[txt[i][j]];
|
|
if (inOverbar) {
|
|
var overbarStart = [offsetx, -text.height * 1.4 + offsety];
|
|
var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
|
|
|
|
if (!lastHadOverbar) {
|
|
overbarStart[0] += text.height * 1.4 * tilt;
|
|
lastHadOverbar = true;
|
|
}
|
|
ctx.beginPath();
|
|
ctx.moveTo(...overbarStart);
|
|
ctx.lineTo(...overbarEnd);
|
|
ctx.stroke();
|
|
} else {
|
|
lastHadOverbar = false;
|
|
}
|
|
for (var line of glyph.l) {
|
|
ctx.beginPath();
|
|
ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
|
|
for (var k = 1; k < line.length; k++) {
|
|
ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
offsetx += glyph.w * text.width;
|
|
}
|
|
offsety += interline;
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawedge(ctx, scalefactor, edge, color) {
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
if ("svgpath" in edge) {
|
|
ctx.stroke(new Path2D(edge.svgpath));
|
|
} else {
|
|
ctx.beginPath();
|
|
if (edge.type == "segment") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(...edge.end);
|
|
}
|
|
if (edge.type == "rect") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(edge.start[0], edge.end[1]);
|
|
ctx.lineTo(...edge.end);
|
|
ctx.lineTo(edge.end[0], edge.start[1]);
|
|
ctx.lineTo(...edge.start);
|
|
}
|
|
if (edge.type == "arc") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
deg2rad(edge.startangle),
|
|
deg2rad(edge.endangle));
|
|
}
|
|
if (edge.type == "circle") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
0, 2 * Math.PI);
|
|
ctx.closePath();
|
|
}
|
|
if (edge.type == "curve") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
|
|
}
|
|
if("filled" in edge && edge.filled)
|
|
ctx.fill();
|
|
else
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
|
|
// chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
|
|
var path = new Path2D();
|
|
var width = size[0];
|
|
var height = size[1];
|
|
var x = width * -0.5;
|
|
var y = height * -0.5;
|
|
var chamfOffset = Math.min(width, height) * chamfratio;
|
|
path.moveTo(x, 0);
|
|
if (chamfpos & 4) {
|
|
path.lineTo(x, y + height - chamfOffset);
|
|
path.lineTo(x + chamfOffset, y + height);
|
|
path.lineTo(0, y + height);
|
|
} else {
|
|
path.arcTo(x, y + height, x + width, y + height, radius);
|
|
}
|
|
if (chamfpos & 8) {
|
|
path.lineTo(x + width - chamfOffset, y + height);
|
|
path.lineTo(x + width, y + height - chamfOffset);
|
|
path.lineTo(x + width, 0);
|
|
} else {
|
|
path.arcTo(x + width, y + height, x + width, y, radius);
|
|
}
|
|
if (chamfpos & 2) {
|
|
path.lineTo(x + width, y + chamfOffset);
|
|
path.lineTo(x + width - chamfOffset, y);
|
|
path.lineTo(0, y);
|
|
} else {
|
|
path.arcTo(x + width, y, x, y, radius);
|
|
}
|
|
if (chamfpos & 1) {
|
|
path.lineTo(x + chamfOffset, y);
|
|
path.lineTo(x, y + chamfOffset);
|
|
path.lineTo(x, 0);
|
|
} else {
|
|
path.arcTo(x, y, x, y + height, radius);
|
|
}
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getOblongPath(size) {
|
|
return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
|
|
}
|
|
|
|
function getPolygonsPath(shape) {
|
|
if (shape.path2d) {
|
|
return shape.path2d;
|
|
}
|
|
if ("svgpath" in shape) {
|
|
shape.path2d = new Path2D(shape.svgpath);
|
|
} else {
|
|
var path = new Path2D();
|
|
for (var polygon of shape.polygons) {
|
|
path.moveTo(...polygon[0]);
|
|
for (var i = 1; i < polygon.length; i++) {
|
|
path.lineTo(...polygon[i]);
|
|
}
|
|
path.closePath();
|
|
}
|
|
shape.path2d = path;
|
|
}
|
|
return shape.path2d;
|
|
}
|
|
|
|
function drawPolygonShape(ctx, scalefactor, shape, color) {
|
|
ctx.save();
|
|
if (!("svgpath" in shape)) {
|
|
ctx.translate(...shape.pos);
|
|
ctx.rotate(deg2rad(-shape.angle));
|
|
}
|
|
if("filled" in shape && !shape.filled) {
|
|
ctx.strokeStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.stroke(getPolygonsPath(shape));
|
|
} else {
|
|
ctx.fillStyle = color;
|
|
ctx.fill(getPolygonsPath(shape));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawDrawing(ctx, scalefactor, drawing, color) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
|
|
drawedge(ctx, scalefactor, drawing, color);
|
|
} else if (drawing.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, drawing, color);
|
|
} else {
|
|
drawText(ctx, drawing, color);
|
|
}
|
|
}
|
|
|
|
function getCirclePath(radius) {
|
|
var path = new Path2D();
|
|
path.arc(0, 0, radius, 0, 2 * Math.PI);
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getCachedPadPath(pad) {
|
|
if (!pad.path2d) {
|
|
// if path2d is not set, build one and cache it on pad object
|
|
if (pad.shape == "rect") {
|
|
pad.path2d = new Path2D();
|
|
pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
|
|
} else if (pad.shape == "oval") {
|
|
pad.path2d = getOblongPath(pad.size);
|
|
} else if (pad.shape == "circle") {
|
|
pad.path2d = getCirclePath(pad.size[0] / 2);
|
|
} else if (pad.shape == "roundrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
|
|
} else if (pad.shape == "chamfrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
|
|
} else if (pad.shape == "custom") {
|
|
pad.path2d = getPolygonsPath(pad);
|
|
}
|
|
}
|
|
return pad.path2d;
|
|
}
|
|
|
|
function drawPad(ctx, pad, color, outline) {
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
if (pad.offset) {
|
|
ctx.translate(...pad.offset);
|
|
}
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
var path = getCachedPadPath(pad);
|
|
if (outline) {
|
|
ctx.stroke(path);
|
|
} else {
|
|
ctx.fill(path);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawPadHole(ctx, pad, padHoleColor) {
|
|
if (pad.type != "th") return;
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
ctx.fillStyle = padHoleColor;
|
|
if (pad.drillshape == "oblong") {
|
|
ctx.fill(getOblongPath(pad.drillsize));
|
|
} else {
|
|
ctx.fill(getCirclePath(pad.drillsize[0] / 2));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
|
|
if (highlight) {
|
|
// draw bounding box
|
|
if (footprint.layer == layer) {
|
|
ctx.save();
|
|
ctx.globalAlpha = 0.2;
|
|
ctx.translate(...footprint.bbox.pos);
|
|
ctx.rotate(deg2rad(-footprint.bbox.angle));
|
|
ctx.translate(...footprint.bbox.relpos);
|
|
ctx.fillStyle = colors.pad;
|
|
ctx.fillRect(0, 0, ...footprint.bbox.size);
|
|
ctx.globalAlpha = 1;
|
|
ctx.strokeStyle = colors.pad;
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
ctx.strokeRect(0, 0, ...footprint.bbox.size);
|
|
ctx.restore();
|
|
}
|
|
}
|
|
// draw drawings
|
|
for (var drawing of footprint.drawings) {
|
|
if (drawing.layer == layer) {
|
|
drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
|
|
}
|
|
}
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
// draw pads
|
|
if (settings.renderPads) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, colors.pad, outline);
|
|
if (pad.pin1 &&
|
|
(settings.highlightpin1 == "all" ||
|
|
settings.highlightpin1 == "selected" && highlight)) {
|
|
drawPad(ctx, pad, colors.outline, true);
|
|
}
|
|
}
|
|
}
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, colors.padHole);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawEdgeCuts(canvas, scalefactor) {
|
|
var ctx = canvas.getContext("2d");
|
|
var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
|
|
for (var edge of pcbdata.edges) {
|
|
drawDrawing(ctx, scalefactor, edge, edgecolor);
|
|
}
|
|
}
|
|
|
|
function drawFootprints(canvas, layer, scalefactor, highlight) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
var style = getComputedStyle(topmostdiv);
|
|
|
|
var colors = {
|
|
pad: style.getPropertyValue('--pad-color'),
|
|
padHole: style.getPropertyValue('--pad-hole-color'),
|
|
outline: style.getPropertyValue('--pin1-outline-color'),
|
|
}
|
|
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var mod = pcbdata.footprints[i];
|
|
var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
|
|
var h = highlightedFootprints.includes(i);
|
|
var d = markedFootprints.has(i);
|
|
if (highlight) {
|
|
if(h && d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-both');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
|
|
} else if (h) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
|
|
} else if (d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
|
|
}
|
|
}
|
|
if( h || d || !highlight) {
|
|
drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
|
|
var ctx = canvas.getContext("2d");
|
|
for (var d of pcbdata.drawings[layername][layer]) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
|
|
drawedge(ctx, scalefactor, d, edgeColor);
|
|
} else if (d.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, d, polygonColor);
|
|
} else {
|
|
drawText(ctx, d, textColor);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawTracks(canvas, layer, defaultColor, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.lineCap = "round";
|
|
|
|
var hasHole = (track) => (
|
|
'drillsize' in track &&
|
|
track.start[0] == track.end[0] &&
|
|
track.start[1] == track.end[1]);
|
|
|
|
// First draw tracks and tented vias
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if (highlight && highlightedNet != track.net) continue;
|
|
if (!hasHole(track)) {
|
|
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
|
|
ctx.lineWidth = track.width;
|
|
ctx.beginPath();
|
|
if ('radius' in track) {
|
|
ctx.arc(
|
|
...track.center,
|
|
track.radius,
|
|
deg2rad(track.startangle),
|
|
deg2rad(track.endangle));
|
|
} else {
|
|
ctx.moveTo(...track.start);
|
|
ctx.lineTo(...track.end);
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
// Second pass to draw untented vias
|
|
var style = getComputedStyle(topmostdiv);
|
|
var holeColor = style.getPropertyValue('--pad-hole-color')
|
|
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if (highlight && highlightedNet != track.net) continue;
|
|
if (hasHole(track)) {
|
|
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
|
|
ctx.lineWidth = track.width;
|
|
ctx.beginPath();
|
|
ctx.moveTo(...track.start);
|
|
ctx.lineTo(...track.end);
|
|
ctx.stroke();
|
|
ctx.strokeStyle = holeColor;
|
|
ctx.lineWidth = track.drillsize;
|
|
ctx.lineTo(...track.end);
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawZones(canvas, layer, defaultColor, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.lineJoin = "round";
|
|
for (var zone of pcbdata.zones[layer]) {
|
|
if (highlight && highlightedNet != zone.net) continue;
|
|
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
|
|
ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
|
|
if (!zone.path2d) {
|
|
zone.path2d = getPolygonsPath(zone);
|
|
}
|
|
ctx.fill(zone.path2d, zone.fillrule || "nonzero");
|
|
if (zone.width > 0) {
|
|
ctx.lineWidth = zone.width;
|
|
ctx.stroke(zone.path2d);
|
|
}
|
|
}
|
|
}
|
|
|
|
function clearCanvas(canvas, color = null) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.save();
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
if (color) {
|
|
ctx.fillStyle = color;
|
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
} else {
|
|
if (!window.matchMedia("print").matches)
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawNets(canvas, layer, highlight) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
if (settings.renderZones) {
|
|
var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
|
|
drawZones(canvas, layer, zoneColor, highlight);
|
|
}
|
|
if (settings.renderTracks) {
|
|
var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
|
|
drawTracks(canvas, layer, trackColor, highlight);
|
|
}
|
|
if (highlight && settings.renderPads) {
|
|
var padColor = style.getPropertyValue('--pad-color-highlight');
|
|
var padHoleColor = style.getPropertyValue('--pad-hole-color');
|
|
var ctx = canvas.getContext("2d");
|
|
for (var footprint of pcbdata.footprints) {
|
|
// draw pads
|
|
var padDrawn = false;
|
|
for (var pad of footprint.pads) {
|
|
if (highlightedNet != pad.net) continue;
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, padColor, false);
|
|
padDrawn = true;
|
|
}
|
|
}
|
|
if (padDrawn) {
|
|
// redraw all pad holes because some pads may overlap
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, padHoleColor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawHighlightsOnLayer(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.highlight);
|
|
}
|
|
if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
|
|
drawFootprints(canvasdict.highlight, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, true);
|
|
}
|
|
if (highlightedNet !== null) {
|
|
drawNets(canvasdict.highlight, canvasdict.layer, true);
|
|
}
|
|
}
|
|
|
|
function drawHighlights() {
|
|
drawHighlightsOnLayer(allcanvas.front);
|
|
drawHighlightsOnLayer(allcanvas.back);
|
|
}
|
|
|
|
function drawBackground(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.bg);
|
|
clearCanvas(canvasdict.fab);
|
|
clearCanvas(canvasdict.silk);
|
|
}
|
|
|
|
drawNets(canvasdict.bg, canvasdict.layer, false);
|
|
drawFootprints(canvasdict.bg, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, false);
|
|
|
|
drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
|
|
|
|
var style = getComputedStyle(topmostdiv);
|
|
var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
|
|
var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
|
|
var textColor = style.getPropertyValue('--silkscreen-text-color');
|
|
if (settings.renderSilkscreen) {
|
|
drawBgLayer(
|
|
"silkscreen", canvasdict.silk, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
edgeColor = style.getPropertyValue('--fabrication-edge-color');
|
|
polygonColor = style.getPropertyValue('--fabrication-polygon-color');
|
|
textColor = style.getPropertyValue('--fabrication-text-color');
|
|
if (settings.renderFabrication) {
|
|
drawBgLayer(
|
|
"fabrication", canvasdict.fab, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
}
|
|
|
|
function prepareCanvas(canvas, flip, transform) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
ctx.scale(transform.zoom, transform.zoom);
|
|
ctx.translate(transform.panx, transform.pany);
|
|
if (flip) {
|
|
ctx.scale(-1, 1);
|
|
}
|
|
ctx.translate(transform.x, transform.y);
|
|
ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
ctx.scale(transform.s, transform.s);
|
|
}
|
|
|
|
function prepareLayer(canvasdict) {
|
|
var flip = (canvasdict.layer === "B");
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
prepareCanvas(canvasdict[c], flip, canvasdict.transform);
|
|
}
|
|
}
|
|
|
|
function rotateVector(v, angle) {
|
|
angle = deg2rad(angle);
|
|
return [
|
|
v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
|
|
v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
|
|
];
|
|
}
|
|
|
|
function applyRotation(bbox, flip) {
|
|
var corners = [
|
|
[bbox.minx, bbox.miny],
|
|
[bbox.minx, bbox.maxy],
|
|
[bbox.maxx, bbox.miny],
|
|
[bbox.maxx, bbox.maxy],
|
|
];
|
|
corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
return {
|
|
minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
|
|
miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
|
|
maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
|
|
maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
|
|
}
|
|
}
|
|
|
|
function recalcLayerScale(layerdict, width, height) {
|
|
var flip = (layerdict.layer === "B");
|
|
var bbox = applyRotation(pcbdata.edges_bbox, flip);
|
|
var scalefactor = 0.98 * Math.min(
|
|
width / (bbox.maxx - bbox.minx),
|
|
height / (bbox.maxy - bbox.miny)
|
|
);
|
|
if (scalefactor < 0.1) {
|
|
scalefactor = 1;
|
|
}
|
|
layerdict.transform.s = scalefactor;
|
|
if (flip) {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
|
|
} else {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
|
|
}
|
|
layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
canvas = layerdict[c];
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
canvas.style.width = (width / devicePixelRatio) + "px";
|
|
canvas.style.height = (height / devicePixelRatio) + "px";
|
|
}
|
|
}
|
|
|
|
function redrawCanvas(layerdict) {
|
|
prepareLayer(layerdict);
|
|
drawBackground(layerdict);
|
|
drawHighlightsOnLayer(layerdict);
|
|
}
|
|
|
|
function resizeCanvas(layerdict) {
|
|
var canvasdivid = {
|
|
"F": "frontcanvas",
|
|
"B": "backcanvas"
|
|
} [layerdict.layer];
|
|
var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
|
|
var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
|
|
recalcLayerScale(layerdict, width, height);
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function resizeAll() {
|
|
resizeCanvas(allcanvas.front);
|
|
resizeCanvas(allcanvas.back);
|
|
}
|
|
|
|
function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
|
|
var A = x - x1;
|
|
var B = y - y1;
|
|
var C = x2 - x1;
|
|
var D = y2 - y1;
|
|
|
|
var dot = A * C + B * D;
|
|
var len_sq = C * C + D * D;
|
|
var dx, dy;
|
|
if (len_sq == 0) {
|
|
// start and end of the segment coincide
|
|
dx = x - x1;
|
|
dy = y - y1;
|
|
} else {
|
|
var param = dot / len_sq;
|
|
var xx, yy;
|
|
if (param < 0) {
|
|
xx = x1;
|
|
yy = y1;
|
|
} else if (param > 1) {
|
|
xx = x2;
|
|
yy = y2;
|
|
} else {
|
|
xx = x1 + param * C;
|
|
yy = y1 + param * D;
|
|
}
|
|
dx = x - xx;
|
|
dy = y - yy;
|
|
}
|
|
return dx * dx + dy * dy <= d * d;
|
|
}
|
|
|
|
function modulo(n, mod) {
|
|
return ((n % mod) + mod) % mod;
|
|
}
|
|
|
|
function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
|
|
var dx = x - xc;
|
|
var dy = y - yc;
|
|
var r_sq = dx * dx + dy * dy;
|
|
var rmin = Math.max(0, radius - d);
|
|
var rmax = radius + d;
|
|
|
|
if (r_sq < rmin * rmin || r_sq > rmax * rmax)
|
|
return false;
|
|
|
|
var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
|
|
var dx1 = xc + radius * Math.cos(angle1) - x;
|
|
var dy1 = yc + radius * Math.sin(angle1) - y;
|
|
if (dx1 * dx1 + dy1 * dy1 <= d * d)
|
|
return true;
|
|
|
|
var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
|
|
var dx2 = xc + radius * Math.cos(angle2) - x;
|
|
var dy2 = yc + radius * Math.sin(angle2) - y;
|
|
if (dx2 * dx2 + dy2 * dy2 <= d * d)
|
|
return true;
|
|
|
|
var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
|
|
if (angle1 > angle2)
|
|
return (angle >= angle2 || angle <= angle1);
|
|
else
|
|
return (angle >= angle1 && angle <= angle2);
|
|
}
|
|
|
|
function pointWithinPad(x, y, pad) {
|
|
var v = [x - pad.pos[0], y - pad.pos[1]];
|
|
v = rotateVector(v, pad.angle);
|
|
if (pad.offset) {
|
|
v[0] -= pad.offset[0];
|
|
v[1] -= pad.offset[1];
|
|
}
|
|
return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
|
|
}
|
|
|
|
function netHitScan(layer, x, y) {
|
|
// Check track segments
|
|
if (settings.renderTracks && pcbdata.tracks) {
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if ('radius' in track) {
|
|
if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
} else {
|
|
if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Check pads
|
|
if (settings.renderPads) {
|
|
for (var footprint of pcbdata.footprints) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
|
|
return pad.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function pointWithinFootprintBbox(x, y, bbox) {
|
|
var v = [x - bbox.pos[0], y - bbox.pos[1]];
|
|
v = rotateVector(v, bbox.angle);
|
|
return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
|
|
bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
|
|
}
|
|
|
|
function bboxHitScan(layer, x, y) {
|
|
var result = [];
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var footprint = pcbdata.footprints[i];
|
|
if (footprint.layer == layer) {
|
|
if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
|
|
result.push(i);
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function handlePointerDown(e, layerdict) {
|
|
if (e.button != 0 && e.button != 1) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
layerdict.pointerStates[e.pointerId] = {
|
|
distanceTravelled: 0,
|
|
lastX: e.offsetX,
|
|
lastY: e.offsetY,
|
|
downTime: Date.now(),
|
|
};
|
|
}
|
|
|
|
function handleMouseClick(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var x = e.offsetX;
|
|
var y = e.offsetY;
|
|
var t = layerdict.transform;
|
|
var flip = layerdict.layer === "B";
|
|
if (flip) {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
|
|
} else {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
|
|
}
|
|
y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
|
|
var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
|
|
if ("nets" in pcbdata) {
|
|
var net = netHitScan(layerdict.layer, ...v);
|
|
if (net !== highlightedNet) {
|
|
netClicked(net);
|
|
}
|
|
}
|
|
if (highlightedNet === null) {
|
|
var footprints = bboxHitScan(layerdict.layer, ...v);
|
|
if (footprints.length > 0) {
|
|
footprintsClicked(footprints);
|
|
}
|
|
}
|
|
}
|
|
|
|
function handlePointerLeave(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function resetTransform(layerdict) {
|
|
layerdict.transform.panx = 0;
|
|
layerdict.transform.pany = 0;
|
|
layerdict.transform.zoom = 1;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function handlePointerUp(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (e.button == 2) {
|
|
// Reset pan and zoom on right click.
|
|
resetTransform(layerdict);
|
|
layerdict.anotherPointerTapped = false;
|
|
return;
|
|
}
|
|
|
|
// We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
|
|
var ptr = layerdict.pointerStates[e.pointerId];
|
|
ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
|
|
|
|
if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
if (layerdict.anotherPointerTapped) {
|
|
// This is the second pointer coming off of a two-finger tap
|
|
resetTransform(layerdict);
|
|
} else {
|
|
// This is just a regular tap
|
|
handleMouseClick(e, layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
} else {
|
|
// This is the first finger coming off of what could become a two-finger tap
|
|
layerdict.anotherPointerTapped = true;
|
|
}
|
|
} else {
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function handlePointerMove(e, layerdict) {
|
|
if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var thisPtr = layerdict.pointerStates[e.pointerId];
|
|
|
|
var dx = e.offsetX - thisPtr.lastX;
|
|
var dy = e.offsetY - thisPtr.lastY;
|
|
|
|
// If this number is low on pointer up, we count the action as a click
|
|
thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
|
|
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
// This is a simple drag
|
|
layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
|
|
layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
|
|
} else if (Object.keys(layerdict.pointerStates).length == 2) {
|
|
var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
|
|
|
|
var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
|
|
var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
|
|
|
|
var scaleFactor = newDist / oldDist;
|
|
|
|
if (scaleFactor != NaN) {
|
|
layerdict.transform.zoom *= scaleFactor;
|
|
|
|
var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
|
|
layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
|
|
layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
|
|
}
|
|
}
|
|
|
|
thisPtr.lastX = e.offsetX;
|
|
thisPtr.lastY = e.offsetY;
|
|
|
|
if (settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
}
|
|
|
|
function handleMouseWheel(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var t = layerdict.transform;
|
|
var wheeldelta = e.deltaY;
|
|
if (e.deltaMode == 1) {
|
|
// FF only, scroll by lines
|
|
wheeldelta *= 30;
|
|
} else if (e.deltaMode == 2) {
|
|
wheeldelta *= 300;
|
|
}
|
|
var m = Math.pow(1.1, -wheeldelta / 40);
|
|
// Limit amount of zoom per tick.
|
|
if (m > 2) {
|
|
m = 2;
|
|
} else if (m < 0.5) {
|
|
m = 0.5;
|
|
}
|
|
t.zoom *= m;
|
|
var zoomd = (1 - m) / t.zoom;
|
|
t.panx += devicePixelRatio * e.offsetX * zoomd;
|
|
t.pany += devicePixelRatio * e.offsetY * zoomd;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function addMouseHandlers(div, layerdict) {
|
|
div.addEventListener("pointerdown", function(e) {
|
|
handlePointerDown(e, layerdict);
|
|
});
|
|
div.addEventListener("pointermove", function(e) {
|
|
handlePointerMove(e, layerdict);
|
|
});
|
|
div.addEventListener("pointerup", function(e) {
|
|
handlePointerUp(e, layerdict);
|
|
});
|
|
var pointerleave = function(e) {
|
|
handlePointerLeave(e, layerdict);
|
|
}
|
|
div.addEventListener("pointercancel", pointerleave);
|
|
div.addEventListener("pointerleave", pointerleave);
|
|
div.addEventListener("pointerout", pointerleave);
|
|
|
|
div.onwheel = function(e) {
|
|
handleMouseWheel(e, layerdict);
|
|
}
|
|
for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
|
|
element.addEventListener("contextmenu", function(e) {
|
|
e.preventDefault();
|
|
}, false);
|
|
}
|
|
}
|
|
|
|
function setRedrawOnDrag(value) {
|
|
settings.redrawOnDrag = value;
|
|
writeStorage("redrawOnDrag", value);
|
|
}
|
|
|
|
function setBoardRotation(value) {
|
|
settings.boardRotation = value * 5;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
resizeAll();
|
|
}
|
|
|
|
function setOffsetBackRotation(value) {
|
|
settings.offsetBackRotation = value;
|
|
writeStorage("offsetBackRotation", value);
|
|
resizeAll();
|
|
}
|
|
|
|
function initRender() {
|
|
allcanvas = {
|
|
front: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("F_bg"),
|
|
fab: document.getElementById("F_fab"),
|
|
silk: document.getElementById("F_slk"),
|
|
highlight: document.getElementById("F_hl"),
|
|
layer: "F",
|
|
},
|
|
back: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("B_bg"),
|
|
fab: document.getElementById("B_fab"),
|
|
silk: document.getElementById("B_slk"),
|
|
highlight: document.getElementById("B_hl"),
|
|
layer: "B",
|
|
}
|
|
};
|
|
addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
|
|
addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*
|
|
* Table reordering via Drag'n'Drop
|
|
* Inspired by: https://htmldom.dev/drag-and-drop-table-column
|
|
*/
|
|
|
|
function setBomHandlers() {
|
|
|
|
const bom = document.getElementById('bomtable');
|
|
|
|
let dragName;
|
|
let placeHolderElements;
|
|
let draggingElement;
|
|
let forcePopulation;
|
|
let xOffset;
|
|
let yOffset;
|
|
let wasDragged;
|
|
|
|
const mouseUpHandler = function(e) {
|
|
// Delete dragging element
|
|
draggingElement.remove();
|
|
|
|
// Make BOM selectable again
|
|
bom.style.removeProperty("userSelect");
|
|
|
|
// Remove listeners
|
|
document.removeEventListener('mousemove', mouseMoveHandler);
|
|
document.removeEventListener('mouseup', mouseUpHandler);
|
|
|
|
if (wasDragged) {
|
|
// Redraw whole BOM
|
|
populateBomTable();
|
|
}
|
|
}
|
|
|
|
const mouseMoveHandler = function(e) {
|
|
// Notice the dragging
|
|
wasDragged = true;
|
|
|
|
// Make the dragged element visible
|
|
draggingElement.style.removeProperty("display");
|
|
|
|
// Set elements position to mouse position
|
|
draggingElement.style.left = `${e.screenX - xOffset}px`;
|
|
draggingElement.style.top = `${e.screenY - yOffset}px`;
|
|
|
|
// Forced redrawing of BOM table
|
|
if (forcePopulation) {
|
|
forcePopulation = false;
|
|
// Copy array
|
|
phe = Array.from(placeHolderElements);
|
|
// populate BOM table again
|
|
populateBomHeader(dragName, phe);
|
|
populateBomBody(dragName, phe);
|
|
}
|
|
|
|
// Set up array of hidden columns
|
|
var hiddenColumns = Array.from(settings.hiddenColumns);
|
|
// In the ungrouped mode, quantity don't exist
|
|
if (settings.bommode === "ungrouped")
|
|
hiddenColumns.push("Quantity");
|
|
// If no checkbox fields can be found, we consider them hidden
|
|
if (settings.checkboxes.length == 0)
|
|
hiddenColumns.push("checkboxes");
|
|
|
|
// Get table headers and group them into checkboxes, extrafields and normal headers
|
|
const bh = document.getElementById("bomhead");
|
|
headers = Array.from(bh.querySelectorAll("th"))
|
|
headers.shift() // numCol is not part of the columnOrder
|
|
headerGroups = []
|
|
lastCompoundClass = null;
|
|
for (i = 0; i < settings.columnOrder.length; i++) {
|
|
cElem = settings.columnOrder[i];
|
|
if (hiddenColumns.includes(cElem)) {
|
|
// Hidden columns appear as a dummy element
|
|
headerGroups.push([]);
|
|
continue;
|
|
}
|
|
elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
|
|
if (elem.classList.contains("bom-checkbox")) {
|
|
if (lastCompoundClass === "bom-checkbox") {
|
|
cbGroup = headerGroups.pop();
|
|
cbGroup.push(elem);
|
|
headerGroups.push(cbGroup);
|
|
} else {
|
|
lastCompoundClass = "bom-checkbox";
|
|
headerGroups.push([elem])
|
|
}
|
|
} else {
|
|
headerGroups.push([elem])
|
|
}
|
|
}
|
|
|
|
// Copy settings.columnOrder
|
|
var columns = Array.from(settings.columnOrder)
|
|
|
|
// Set up array with indices of hidden columns
|
|
var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
|
|
var dragIndex = columns.indexOf(dragName);
|
|
var swapIndex = dragIndex;
|
|
var swapDone = false;
|
|
|
|
// Check if the current dragged element is swapable with the left or right element
|
|
if (dragIndex > 0) {
|
|
// Get left headers boundingbox
|
|
swapIndex = dragIndex - 1;
|
|
while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
|
|
swapIndex--;
|
|
if (!hiddenIndices.includes(swapIndex)) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
if ((!swapDone) && dragIndex < headerGroups.length - 1) {
|
|
// Get right headers boundingbox
|
|
swapIndex = dragIndex + 1;
|
|
while (hiddenIndices.includes(swapIndex))
|
|
swapIndex++;
|
|
if (swapIndex < headerGroups.length) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Write back change to storage
|
|
if (swapDone) {
|
|
settings.columnOrder = columns
|
|
writeStorage("columnOrder", JSON.stringify(columns));
|
|
}
|
|
|
|
}
|
|
|
|
const mouseDownHandler = function(e) {
|
|
var target = e.target;
|
|
if (target.tagName.toLowerCase() != "td")
|
|
target = target.parentElement;
|
|
|
|
// Used to check if a dragging has ever happened
|
|
wasDragged = false;
|
|
|
|
// Create new element which will be displayed as the dragged column
|
|
draggingElement = document.createElement("div")
|
|
draggingElement.classList.add("dragging");
|
|
draggingElement.style.display = "none";
|
|
draggingElement.style.position = "absolute";
|
|
draggingElement.style.overflow = "hidden";
|
|
|
|
// Get bomhead and bombody elements
|
|
const bh = document.getElementById("bomhead");
|
|
const bb = document.getElementById("bombody");
|
|
|
|
// Get all compound headers for the current column
|
|
var compoundHeaders;
|
|
if (target.classList.contains("bom-checkbox")) {
|
|
compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
|
|
} else {
|
|
compoundHeaders = [target];
|
|
}
|
|
|
|
// Create new table which will display the column
|
|
var newTable = document.createElement("table");
|
|
newTable.classList.add("bom");
|
|
newTable.style.background = "white";
|
|
draggingElement.append(newTable);
|
|
|
|
// Create new header element
|
|
var newHeader = document.createElement("thead");
|
|
newTable.append(newHeader);
|
|
|
|
// Set up array for storing all placeholder elements
|
|
placeHolderElements = [];
|
|
|
|
// Add all compound headers to the new thead element and placeholders
|
|
compoundHeaders.forEach(function(h) {
|
|
clone = cloneElementWithDimensions(h);
|
|
newHeader.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
|
|
// Create new body element
|
|
var newBody = document.createElement("tbody");
|
|
newTable.append(newBody);
|
|
|
|
// Get indices for compound headers
|
|
var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
|
|
|
|
// For each row in the BOM body...
|
|
var rows = bb.querySelectorAll("tr");
|
|
rows.forEach(function(row) {
|
|
// ..get the cells for the compound column
|
|
const tds = row.querySelectorAll("td");
|
|
var copytds = idxs.map(i => tds[i]);
|
|
// Add them to the new element and the placeholders
|
|
var newRow = document.createElement("tr");
|
|
copytds.forEach(function(td) {
|
|
clone = cloneElementWithDimensions(td);
|
|
newRow.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
newBody.append(newRow);
|
|
});
|
|
|
|
// Compute width for compound header
|
|
var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
|
|
draggingElement.style.width = `${width}px`;
|
|
|
|
// Insert the new dragging element and disable selection on BOM
|
|
bom.insertBefore(draggingElement, null);
|
|
bom.style.userSelect = "none";
|
|
|
|
// Determine the mouse position offset
|
|
xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
|
|
yOffset = e.screenY - compoundHeaders[0].offsetTop;
|
|
|
|
// Get name for the column in settings.columnOrder
|
|
dragName = getColumnOrderName(target);
|
|
|
|
// Change text and class for placeholder elements
|
|
placeHolderElements = placeHolderElements.map(function(e) {
|
|
newElem = cloneElementWithDimensions(e);
|
|
newElem.textContent = "";
|
|
newElem.classList.add("placeholder");
|
|
return newElem;
|
|
});
|
|
|
|
// On next mouse move, the whole BOM needs to be redrawn to show the placeholders
|
|
forcePopulation = true;
|
|
|
|
// Add listeners for move and up on mouse
|
|
document.addEventListener('mousemove', mouseMoveHandler);
|
|
document.addEventListener('mouseup', mouseUpHandler);
|
|
}
|
|
|
|
// In netlist mode, there is nothing to reorder
|
|
if (settings.bommode === "netlist")
|
|
return;
|
|
|
|
// Add mouseDownHandler to every column except the numCol
|
|
bom.querySelectorAll("th")
|
|
.forEach(function(head) {
|
|
if (!head.classList.contains("numCol")) {
|
|
head.onmousedown = mouseDownHandler;
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function getBoundingClientRectFromMultiple(elements) {
|
|
var elems = Array.from(elements);
|
|
|
|
if (elems.length == 0)
|
|
return null;
|
|
|
|
var box = elems.shift()
|
|
.getBoundingClientRect();
|
|
|
|
elems.forEach(function(elem) {
|
|
var elembox = elem.getBoundingClientRect();
|
|
box.left = Math.min(elembox.left, box.left);
|
|
box.top = Math.min(elembox.top, box.top);
|
|
box.width += elembox.width;
|
|
box.height = Math.max(elembox.height, box.height);
|
|
});
|
|
|
|
return box;
|
|
}
|
|
|
|
function cloneElementWithDimensions(elem) {
|
|
var newElem = elem.cloneNode(true);
|
|
newElem.style.height = window.getComputedStyle(elem).height;
|
|
newElem.style.width = window.getComputedStyle(elem).width;
|
|
return newElem;
|
|
}
|
|
|
|
function getBomTableHeaderIndex(elem) {
|
|
const bh = document.getElementById('bomhead');
|
|
const ths = Array.from(bh.querySelectorAll("th"));
|
|
return ths.indexOf(elem);
|
|
}
|
|
|
|
function getColumnOrderName(elem) {
|
|
var cname = elem.getAttribute("col_name");
|
|
if (cname === "bom-checkbox")
|
|
return "checkboxes";
|
|
else
|
|
return cname;
|
|
}
|
|
|
|
function resizableGrid(tablehead) {
|
|
var cols = tablehead.firstElementChild.children;
|
|
var rowWidth = tablehead.offsetWidth;
|
|
|
|
for (var i = 1; i < cols.length; i++) {
|
|
if (cols[i].classList.contains("bom-checkbox"))
|
|
continue;
|
|
cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
|
|
}
|
|
|
|
for (var i = 1; i < cols.length - 1; i++) {
|
|
var div = document.createElement('div');
|
|
div.className = "column-width-handle";
|
|
cols[i].appendChild(div);
|
|
setListeners(div);
|
|
}
|
|
|
|
function setListeners(div) {
|
|
var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
|
|
|
|
div.addEventListener('mousedown', function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
curCol = e.target.parentElement;
|
|
nxtCol = curCol.nextElementSibling;
|
|
startX = e.pageX;
|
|
|
|
var padding = paddingDiff(curCol);
|
|
|
|
rowWidth = curCol.parentElement.offsetWidth;
|
|
curColWidth = curCol.clientWidth - padding;
|
|
nxtColWidth = nxtCol.clientWidth - padding;
|
|
});
|
|
|
|
document.addEventListener('mousemove', function(e) {
|
|
if (startX) {
|
|
var diffX = e.pageX - startX;
|
|
diffX = -Math.min(-diffX, curColWidth - 20);
|
|
diffX = Math.min(diffX, nxtColWidth - 20);
|
|
|
|
curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
|
|
nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
|
|
console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
|
|
}
|
|
});
|
|
|
|
document.addEventListener('mouseup', function(e) {
|
|
curCol = undefined;
|
|
nxtCol = undefined;
|
|
startX = undefined;
|
|
nxtColWidth = undefined;
|
|
curColWidth = undefined
|
|
});
|
|
}
|
|
|
|
function paddingDiff(col) {
|
|
|
|
if (getStyleVal(col, 'box-sizing') == 'border-box') {
|
|
return 0;
|
|
}
|
|
|
|
var padLeft = getStyleVal(col, 'padding-left');
|
|
var padRight = getStyleVal(col, 'padding-right');
|
|
return (parseInt(padLeft) + parseInt(padRight));
|
|
|
|
}
|
|
|
|
function getStyleVal(elm, css) {
|
|
return (window.getComputedStyle(elm, null).getPropertyValue(css))
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* DOM manipulation and misc code */
|
|
|
|
var bomsplit;
|
|
var canvassplit;
|
|
var initDone = false;
|
|
var bomSortFunction = null;
|
|
var currentSortColumn = null;
|
|
var currentSortOrder = null;
|
|
var currentHighlightedRowId;
|
|
var highlightHandlers = [];
|
|
var footprintIndexToHandler = {};
|
|
var netsToHandler = {};
|
|
var markedFootprints = new Set();
|
|
var highlightedFootprints = [];
|
|
var highlightedNet = null;
|
|
var lastClicked;
|
|
|
|
function dbg(html) {
|
|
dbgdiv.innerHTML = html;
|
|
}
|
|
|
|
function redrawIfInitDone() {
|
|
if (initDone) {
|
|
redrawCanvas(allcanvas.front);
|
|
redrawCanvas(allcanvas.back);
|
|
}
|
|
}
|
|
|
|
function padsVisible(value) {
|
|
writeStorage("padsVisible", value);
|
|
settings.renderPads = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function referencesVisible(value) {
|
|
writeStorage("referencesVisible", value);
|
|
settings.renderReferences = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function valuesVisible(value) {
|
|
writeStorage("valuesVisible", value);
|
|
settings.renderValues = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function tracksVisible(value) {
|
|
writeStorage("tracksVisible", value);
|
|
settings.renderTracks = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function zonesVisible(value) {
|
|
writeStorage("zonesVisible", value);
|
|
settings.renderZones = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function dnpOutline(value) {
|
|
writeStorage("dnpOutline", value);
|
|
settings.renderDnpOutline = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setDarkMode(value) {
|
|
if (value) {
|
|
topmostdiv.classList.add("dark");
|
|
} else {
|
|
topmostdiv.classList.remove("dark");
|
|
}
|
|
writeStorage("darkmode", value);
|
|
settings.darkMode = value;
|
|
redrawIfInitDone();
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
}
|
|
|
|
function setShowBOMColumn(field, value) {
|
|
if (field === "references") {
|
|
var rl = document.getElementById("reflookup");
|
|
rl.disabled = !value;
|
|
if (!value) {
|
|
rl.value = "";
|
|
updateRefLookup("");
|
|
}
|
|
}
|
|
|
|
var n = settings.hiddenColumns.indexOf(field);
|
|
if (value) {
|
|
if (n != -1) {
|
|
settings.hiddenColumns.splice(n, 1);
|
|
}
|
|
} else {
|
|
if (n == -1) {
|
|
settings.hiddenColumns.push(field);
|
|
}
|
|
}
|
|
|
|
writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
|
|
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
|
|
function setFullscreen(value) {
|
|
if (value) {
|
|
document.documentElement.requestFullscreen();
|
|
} else {
|
|
document.exitFullscreen();
|
|
}
|
|
}
|
|
|
|
function fabricationVisible(value) {
|
|
writeStorage("fabricationVisible", value);
|
|
settings.renderFabrication = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function silkscreenVisible(value) {
|
|
writeStorage("silkscreenVisible", value);
|
|
settings.renderSilkscreen = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setHighlightPin1(value) {
|
|
writeStorage("highlightpin1", value);
|
|
settings.highlightpin1 = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function getStoredCheckboxRefs(checkbox) {
|
|
function convert(ref) {
|
|
var intref = parseInt(ref);
|
|
if (isNaN(intref)) {
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.footprints[i].ref == ref) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
} else {
|
|
return intref;
|
|
}
|
|
}
|
|
if (!(checkbox in settings.checkboxStoredRefs)) {
|
|
var val = readStorage("checkbox_" + checkbox);
|
|
settings.checkboxStoredRefs[checkbox] = val ? val : "";
|
|
}
|
|
if (!settings.checkboxStoredRefs[checkbox]) {
|
|
return new Set();
|
|
} else {
|
|
return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
|
|
}
|
|
}
|
|
|
|
function getCheckboxState(checkbox, references) {
|
|
var storedRefsSet = getStoredCheckboxRefs(checkbox);
|
|
var currentRefsSet = new Set(references.map(r => r[1]));
|
|
// Get difference of current - stored
|
|
var difference = new Set(currentRefsSet);
|
|
for (ref of storedRefsSet) {
|
|
difference.delete(ref);
|
|
}
|
|
if (difference.size == 0) {
|
|
// All the current refs are stored
|
|
return "checked";
|
|
} else if (difference.size == currentRefsSet.size) {
|
|
// None of the current refs are stored
|
|
return "unchecked";
|
|
} else {
|
|
// Some of the refs are stored
|
|
return "indeterminate";
|
|
}
|
|
}
|
|
|
|
function setBomCheckboxState(checkbox, element, references) {
|
|
var state = getCheckboxState(checkbox, references);
|
|
element.checked = (state == "checked");
|
|
element.indeterminate = (state == "indeterminate");
|
|
}
|
|
|
|
function createCheckboxChangeHandler(checkbox, references, row) {
|
|
return function () {
|
|
refsSet = getStoredCheckboxRefs(checkbox);
|
|
var markWhenChecked = settings.markWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (this.checked) {
|
|
// checkbox ticked
|
|
for (var ref of references) {
|
|
refsSet.add(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.add("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.add(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'checked';
|
|
} else {
|
|
// checkbox unticked
|
|
for (var ref of references) {
|
|
refsSet.delete(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.remove("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.delete(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'unchecked';
|
|
}
|
|
settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
updateCheckboxStats(checkbox);
|
|
EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
|
|
}
|
|
}
|
|
|
|
function clearHighlightedFootprints() {
|
|
if (currentHighlightedRowId) {
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
currentHighlightedRowId = null;
|
|
highlightedFootprints = [];
|
|
highlightedNet = null;
|
|
}
|
|
}
|
|
|
|
function createRowHighlightHandler(rowid, refs, net) {
|
|
return function () {
|
|
if (currentHighlightedRowId) {
|
|
if (currentHighlightedRowId == rowid) {
|
|
return;
|
|
}
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
}
|
|
document.getElementById(rowid).classList.add("highlighted");
|
|
currentHighlightedRowId = rowid;
|
|
highlightedFootprints = refs ? refs.map(r => r[1]) : [];
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
|
|
rowid: rowid,
|
|
refs: refs,
|
|
net: net
|
|
});
|
|
}
|
|
}
|
|
|
|
function updateNetColors() {
|
|
writeStorage("netColors", JSON.stringify(settings.netColors));
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function netColorChangeHandler(net) {
|
|
return (event) => {
|
|
settings.netColors[net] = event.target.value;
|
|
updateNetColors();
|
|
}
|
|
}
|
|
|
|
function netColorRightClick(net) {
|
|
return (event) => {
|
|
if(event.button == 2) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
|
|
var style = getComputedStyle(topmostdiv);
|
|
var defaultNetColor = style.getPropertyValue('--track-color').trim();
|
|
event.target.value = defaultNetColor;
|
|
delete settings.netColors[net];
|
|
updateNetColors();
|
|
}
|
|
}
|
|
}
|
|
|
|
function entryMatches(entry) {
|
|
if (settings.bommode == "netlist") {
|
|
// entry is just a net name
|
|
return entry.toLowerCase().indexOf(filter) >= 0;
|
|
}
|
|
// check refs
|
|
if (!settings.hiddenColumns.includes("references")) {
|
|
for (var ref of entry) {
|
|
if (ref[0].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
// check fields
|
|
for (var i in config.fields) {
|
|
var f = config.fields[i];
|
|
if (!settings.hiddenColumns.includes(f)) {
|
|
for (var ref of entry) {
|
|
if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findRefInEntry(entry) {
|
|
return entry.filter(r => r[0].toLowerCase() == reflookup);
|
|
}
|
|
|
|
function highlightFilter(s) {
|
|
if (!filter) {
|
|
return s;
|
|
}
|
|
var parts = s.toLowerCase().split(filter);
|
|
if (parts.length == 1) {
|
|
return s;
|
|
}
|
|
var r = "";
|
|
var pos = 0;
|
|
for (var i in parts) {
|
|
if (i > 0) {
|
|
r += '<mark class="highlight">' +
|
|
s.substring(pos, pos + filter.length) +
|
|
'</mark>';
|
|
pos += filter.length;
|
|
}
|
|
r += s.substring(pos, pos + parts[i].length);
|
|
pos += parts[i].length;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function checkboxSetUnsetAllHandler(checkboxname) {
|
|
return function () {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var allset = true;
|
|
var checkbox;
|
|
var row;
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
if (!checkbox.checked || checkbox.indeterminate) {
|
|
allset = false;
|
|
break;
|
|
}
|
|
}
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = !allset;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
}
|
|
}
|
|
|
|
function createColumnHeader(name, cls, comparator, is_checkbox = false) {
|
|
var th = document.createElement("TH");
|
|
th.innerHTML = name;
|
|
th.classList.add(cls);
|
|
if (is_checkbox)
|
|
th.setAttribute("col_name", "bom-checkbox");
|
|
else
|
|
th.setAttribute("col_name", name);
|
|
var span = document.createElement("SPAN");
|
|
span.classList.add("sortmark");
|
|
span.classList.add("none");
|
|
th.appendChild(span);
|
|
var spacer = document.createElement("div");
|
|
spacer.className = "column-spacer";
|
|
th.appendChild(spacer);
|
|
spacer.onclick = function () {
|
|
if (currentSortColumn && th !== currentSortColumn) {
|
|
// Currently sorted by another column
|
|
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
if (currentSortColumn && th === currentSortColumn) {
|
|
// Already sorted by this column
|
|
if (currentSortOrder == "asc") {
|
|
// Sort by this column, descending order
|
|
bomSortFunction = function (a, b) {
|
|
return -comparator(a, b);
|
|
}
|
|
currentSortColumn.childNodes[1].classList.remove("asc");
|
|
currentSortColumn.childNodes[1].classList.add("desc");
|
|
currentSortOrder = "desc";
|
|
} else {
|
|
// Unsort
|
|
bomSortFunction = null;
|
|
currentSortColumn.childNodes[1].classList.remove("desc");
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
} else {
|
|
// Sort by this column, ascending order
|
|
bomSortFunction = comparator;
|
|
currentSortColumn = th;
|
|
currentSortColumn.childNodes[1].classList.remove("none");
|
|
currentSortColumn.childNodes[1].classList.add("asc");
|
|
currentSortOrder = "asc";
|
|
}
|
|
populateBomBody();
|
|
}
|
|
if (is_checkbox) {
|
|
spacer.onclick = fancyDblClickHandler(
|
|
spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
|
|
}
|
|
return th;
|
|
}
|
|
|
|
function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
|
|
while (bomhead.firstChild) {
|
|
bomhead.removeChild(bomhead.firstChild);
|
|
}
|
|
var tr = document.createElement("TR");
|
|
var th = document.createElement("TH");
|
|
th.classList.add("numCol");
|
|
|
|
var vismenu = document.createElement("div");
|
|
vismenu.id = "vismenu";
|
|
vismenu.classList.add("menu");
|
|
|
|
var visbutton = document.createElement("div");
|
|
visbutton.classList.add("visbtn");
|
|
visbutton.classList.add("hideonprint");
|
|
|
|
var viscontent = document.createElement("div");
|
|
viscontent.classList.add("menu-content");
|
|
viscontent.id = "vismenu-content";
|
|
|
|
settings.columnOrder.forEach(column => {
|
|
if (typeof column !== "string")
|
|
return;
|
|
|
|
// Skip empty columns
|
|
if (column === "checkboxes" && settings.checkboxes.length == 0)
|
|
return;
|
|
else if (column === "Quantity" && settings.bommode == "ungrouped")
|
|
return;
|
|
|
|
var label = document.createElement("label");
|
|
label.classList.add("menu-label");
|
|
|
|
var input = document.createElement("input");
|
|
input.classList.add("visibility_checkbox");
|
|
input.type = "checkbox";
|
|
input.onchange = function (e) {
|
|
setShowBOMColumn(column, e.target.checked)
|
|
};
|
|
input.checked = !(settings.hiddenColumns.includes(column));
|
|
|
|
label.appendChild(input);
|
|
if (column.length > 0)
|
|
label.append(column[0].toUpperCase() + column.slice(1));
|
|
|
|
viscontent.appendChild(label);
|
|
});
|
|
|
|
viscontent.childNodes[0].classList.add("menu-label-top");
|
|
|
|
vismenu.appendChild(visbutton);
|
|
if (settings.bommode != "netlist") {
|
|
vismenu.appendChild(viscontent);
|
|
th.appendChild(vismenu);
|
|
}
|
|
tr.appendChild(th);
|
|
|
|
var checkboxCompareClosure = function (checkbox) {
|
|
return (a, b) => {
|
|
var stateA = getCheckboxState(checkbox, a);
|
|
var stateB = getCheckboxState(checkbox, b);
|
|
if (stateA > stateB) return -1;
|
|
if (stateA < stateB) return 1;
|
|
return 0;
|
|
}
|
|
}
|
|
var stringFieldCompareClosure = function (fieldIndex) {
|
|
return (a, b) => {
|
|
var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
|
|
var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
|
|
if (fa != fb) return fa > fb ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
|
|
var compareRefs = (a, b) => {
|
|
var ra = referenceRegex.exec(a);
|
|
var rb = referenceRegex.exec(b);
|
|
if (ra === null || rb === null) {
|
|
if (a != b) return a > b ? 1 : -1;
|
|
return 0;
|
|
} else {
|
|
if (ra.groups.prefix != rb.groups.prefix) {
|
|
return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
|
|
}
|
|
if (ra.groups.number != rb.groups.number) {
|
|
return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
if (settings.bommode == "netlist") {
|
|
tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => {
|
|
if (a > b) return -1;
|
|
if (a < b) return 1;
|
|
return 0;
|
|
}));
|
|
tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => {
|
|
return 0;
|
|
}));
|
|
} else {
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
var valueIndex = config.fields.indexOf("Value");
|
|
var footprintIndex = config.fields.indexOf("Footprint");
|
|
columns.forEach((column) => {
|
|
if (column === placeHolderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
th = createColumnHeader(
|
|
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
|
|
tr.appendChild(th);
|
|
}
|
|
} else if (column === "References") {
|
|
tr.appendChild(createColumnHeader("References", "references", (a, b) => {
|
|
var i = 0;
|
|
while (i < a.length && i < b.length) {
|
|
if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
|
|
i++;
|
|
}
|
|
return a.length - b.length;
|
|
}));
|
|
} else if (column === "Value") {
|
|
tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
|
|
var ra = a[0][1], rb = b[0][1];
|
|
return valueCompare(
|
|
pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
|
|
pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
|
|
}));
|
|
return;
|
|
} else if (column === "Footprint") {
|
|
tr.appendChild(createColumnHeader(
|
|
"Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
|
|
return a.length - b.length;
|
|
}));
|
|
} else {
|
|
// Other fields
|
|
var i = config.fields.indexOf(column);
|
|
if (i < 0)
|
|
return;
|
|
tr.appendChild(createColumnHeader(
|
|
column, `field${i + 1}`, stringFieldCompareClosure(i)));
|
|
}
|
|
});
|
|
}
|
|
bomhead.appendChild(tr);
|
|
}
|
|
|
|
function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
|
|
const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
|
|
while (bom.firstChild) {
|
|
bom.removeChild(bom.firstChild);
|
|
}
|
|
highlightHandlers = [];
|
|
footprintIndexToHandler = {};
|
|
netsToHandler = {};
|
|
currentHighlightedRowId = null;
|
|
var first = true;
|
|
var style = getComputedStyle(topmostdiv);
|
|
var defaultNetColor = style.getPropertyValue('--track-color').trim();
|
|
if (settings.bommode == "netlist") {
|
|
bomtable = pcbdata.nets.slice();
|
|
} else {
|
|
switch (settings.canvaslayout) {
|
|
case 'F':
|
|
bomtable = pcbdata.bom.F.slice();
|
|
break;
|
|
case 'FB':
|
|
bomtable = pcbdata.bom.both.slice();
|
|
break;
|
|
case 'B':
|
|
bomtable = pcbdata.bom.B.slice();
|
|
break;
|
|
}
|
|
if (settings.bommode == "ungrouped") {
|
|
// expand bom table
|
|
expandedTable = []
|
|
for (var bomentry of bomtable) {
|
|
for (var ref of bomentry) {
|
|
expandedTable.push([ref]);
|
|
}
|
|
}
|
|
bomtable = expandedTable;
|
|
}
|
|
}
|
|
if (bomSortFunction) {
|
|
bomtable = bomtable.sort(bomSortFunction);
|
|
}
|
|
for (var i in bomtable) {
|
|
var bomentry = bomtable[i];
|
|
if (filter && !entryMatches(bomentry)) {
|
|
continue;
|
|
}
|
|
var references = null;
|
|
var netname = null;
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
var rownum = +i + 1;
|
|
tr.id = "bomrow" + rownum;
|
|
td.textContent = rownum;
|
|
tr.appendChild(td);
|
|
if (settings.bommode == "netlist") {
|
|
netname = bomentry;
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(netname ? netname : "<no net>");
|
|
tr.appendChild(td);
|
|
var color = settings.netColors[netname] || defaultNetColor;
|
|
td = document.createElement("TD");
|
|
var colorBox = document.createElement("INPUT");
|
|
colorBox.type = "color";
|
|
colorBox.value = color;
|
|
colorBox.onchange = netColorChangeHandler(netname);
|
|
colorBox.onmouseup = netColorRightClick(netname);
|
|
colorBox.oncontextmenu = (e) => e.preventDefault();
|
|
td.appendChild(colorBox);
|
|
td.classList.add("color-column");
|
|
tr.appendChild(td);
|
|
} else {
|
|
if (reflookup) {
|
|
references = findRefInEntry(bomentry);
|
|
if (references.length == 0) {
|
|
continue;
|
|
}
|
|
} else {
|
|
references = bomentry;
|
|
}
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
columns.forEach((column) => {
|
|
if (column === placeholderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
if (checkbox) {
|
|
td = document.createElement("TD");
|
|
var input = document.createElement("input");
|
|
input.type = "checkbox";
|
|
input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
|
|
setBomCheckboxState(checkbox, input, references);
|
|
if (input.checked && settings.markWhenChecked == checkbox) {
|
|
tr.classList.add("checked");
|
|
}
|
|
td.appendChild(input);
|
|
tr.appendChild(td);
|
|
}
|
|
}
|
|
} else if (column === "References") {
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
|
|
tr.appendChild(td);
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
// Quantity
|
|
td = document.createElement("TD");
|
|
td.textContent = references.length;
|
|
tr.appendChild(td);
|
|
} else {
|
|
// All the other fields
|
|
var field_index = config.fields.indexOf(column)
|
|
if (field_index < 0)
|
|
return;
|
|
var valueSet = new Set();
|
|
references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
|
|
td = document.createElement("TD");
|
|
var output = new Array();
|
|
for (let item of valueSet) {
|
|
const visible = highlightFilter(String(item));
|
|
if (typeof item === 'string' && item.match(urlRegex)) {
|
|
output.push(`<a href="${item}" target="_blank">${visible}</a>`);
|
|
} else {
|
|
output.push(visible);
|
|
}
|
|
}
|
|
td.innerHTML = output.join(", ");
|
|
tr.appendChild(td);
|
|
}
|
|
});
|
|
}
|
|
bom.appendChild(tr);
|
|
var handler = createRowHighlightHandler(tr.id, references, netname);
|
|
tr.onmousemove = handler;
|
|
highlightHandlers.push({
|
|
id: tr.id,
|
|
handler: handler,
|
|
});
|
|
if (references !== null) {
|
|
for (var refIndex of references.map(r => r[1])) {
|
|
footprintIndexToHandler[refIndex] = handler;
|
|
}
|
|
}
|
|
if (netname !== null) {
|
|
netsToHandler[netname] = handler;
|
|
}
|
|
if ((filter || reflookup) && first) {
|
|
handler();
|
|
first = false;
|
|
}
|
|
}
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
|
|
filter: filter,
|
|
reflookup: reflookup,
|
|
checkboxes: settings.checkboxes,
|
|
bommode: settings.bommode,
|
|
});
|
|
}
|
|
|
|
function highlightPreviousRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[0].id == currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
for (var i = 0; i < highlightHandlers.length - 1; i++) {
|
|
if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function highlightNextRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
for (var i = 1; i < highlightHandlers.length; i++) {
|
|
if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function populateBomTable() {
|
|
populateBomHeader();
|
|
populateBomBody();
|
|
setBomHandlers();
|
|
resizableGrid(bomhead);
|
|
}
|
|
|
|
function footprintsClicked(footprintIndexes) {
|
|
var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
|
|
for (var i = 1; i <= footprintIndexes.length; i++) {
|
|
var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
|
|
if (refIndex in footprintIndexToHandler) {
|
|
lastClicked = refIndex;
|
|
footprintIndexToHandler[refIndex]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function netClicked(net) {
|
|
if (net in netsToHandler) {
|
|
netsToHandler[net]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
} else {
|
|
clearHighlightedFootprints();
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
}
|
|
}
|
|
|
|
function updateFilter(input) {
|
|
filter = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function updateRefLookup(input) {
|
|
reflookup = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function changeCanvasLayout(layout) {
|
|
document.getElementById("fl-btn").classList.remove("depressed");
|
|
document.getElementById("fb-btn").classList.remove("depressed");
|
|
document.getElementById("bl-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'F':
|
|
document.getElementById("fl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(1);
|
|
}
|
|
break;
|
|
case 'B':
|
|
document.getElementById("bl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(0);
|
|
}
|
|
break;
|
|
default:
|
|
document.getElementById("fb-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.setSizes([50, 50]);
|
|
}
|
|
}
|
|
settings.canvaslayout = layout;
|
|
writeStorage("canvaslayout", layout);
|
|
resizeAll();
|
|
changeBomMode(settings.bommode);
|
|
}
|
|
|
|
function populateMetadata() {
|
|
document.getElementById("title").innerHTML = pcbdata.metadata.title;
|
|
document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
|
|
document.getElementById("company").innerHTML = pcbdata.metadata.company;
|
|
document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
|
|
if (pcbdata.metadata.title != "") {
|
|
document.title = pcbdata.metadata.title + " BOM";
|
|
}
|
|
// Calculate board stats
|
|
var fp_f = 0,
|
|
fp_b = 0,
|
|
pads_f = 0,
|
|
pads_b = 0,
|
|
pads_th = 0;
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.bom.skipped.includes(i)) continue;
|
|
var mod = pcbdata.footprints[i];
|
|
if (mod.layer == "F") {
|
|
fp_f++;
|
|
} else {
|
|
fp_b++;
|
|
}
|
|
for (var pad of mod.pads) {
|
|
if (pad.type == "th") {
|
|
pads_th++;
|
|
} else {
|
|
if (pad.layers.includes("F")) {
|
|
pads_f++;
|
|
}
|
|
if (pad.layers.includes("B")) {
|
|
pads_b++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById("stats-components-front").innerHTML = fp_f;
|
|
document.getElementById("stats-components-back").innerHTML = fp_b;
|
|
document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
|
|
document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
|
|
document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
|
|
document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
|
|
document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
|
|
document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
|
|
document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
|
|
document.getElementById("stats-th-pads").innerHTML = pads_th;
|
|
// Update version string
|
|
document.getElementById("github-link").innerHTML = "InteractiveHtmlBom " +
|
|
/^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
|
|
}
|
|
|
|
function changeBomLayout(layout) {
|
|
document.getElementById("bom-btn").classList.remove("depressed");
|
|
document.getElementById("lr-btn").classList.remove("depressed");
|
|
document.getElementById("tb-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'bom-only':
|
|
document.getElementById("bom-btn").classList.add("depressed");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
document.getElementById("frontcanvas").style.display = "none";
|
|
document.getElementById("backcanvas").style.display = "none";
|
|
document.getElementById("topmostdiv").style.height = "";
|
|
document.getElementById("topmostdiv").style.display = "block";
|
|
break;
|
|
case 'top-bottom':
|
|
document.getElementById("tb-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("topmostdiv").style.height = "100%";
|
|
document.getElementById("topmostdiv").style.display = "flex";
|
|
document.getElementById("bomdiv").classList.remove("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.remove("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.add("split-horizontal");
|
|
document.getElementById("backcanvas").classList.add("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
direction: "vertical",
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
onDragEnd: resizeAll
|
|
});
|
|
break;
|
|
case 'left-right':
|
|
document.getElementById("lr-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("topmostdiv").style.height = "100%";
|
|
document.getElementById("topmostdiv").style.display = "flex";
|
|
document.getElementById("bomdiv").classList.add("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.add("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.remove("split-horizontal");
|
|
document.getElementById("backcanvas").classList.remove("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
direction: "vertical",
|
|
onDragEnd: resizeAll
|
|
});
|
|
}
|
|
settings.bomlayout = layout;
|
|
writeStorage("bomlayout", layout);
|
|
changeCanvasLayout(settings.canvaslayout);
|
|
}
|
|
|
|
function changeBomMode(mode) {
|
|
document.getElementById("bom-grouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-netlist-btn").classList.remove("depressed");
|
|
var chkbxs = document.getElementsByClassName("visibility_checkbox");
|
|
|
|
switch (mode) {
|
|
case 'grouped':
|
|
document.getElementById("bom-grouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'ungrouped':
|
|
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'netlist':
|
|
document.getElementById("bom-netlist-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = true;
|
|
}
|
|
}
|
|
|
|
writeStorage("bommode", mode);
|
|
if (mode != settings.bommode) {
|
|
settings.bommode = mode;
|
|
bomSortFunction = null;
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
clearHighlightedFootprints();
|
|
}
|
|
populateBomTable();
|
|
}
|
|
|
|
function focusFilterField() {
|
|
focusInputField(document.getElementById("filter"));
|
|
}
|
|
|
|
function focusRefLookupField() {
|
|
focusInputField(document.getElementById("reflookup"));
|
|
}
|
|
|
|
function toggleBomCheckbox(bomrowid, checkboxnum) {
|
|
if (!bomrowid || checkboxnum > settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
|
|
checkbox.checked = !checkbox.checked;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function checkBomCheckbox(bomrowid, checkboxname) {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = true;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function setBomCheckboxes(value) {
|
|
writeStorage("bomCheckboxes", value);
|
|
settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
|
|
prepCheckboxes();
|
|
populateMarkWhenCheckedOptions();
|
|
setMarkWhenChecked(settings.markWhenChecked);
|
|
}
|
|
|
|
function setMarkWhenChecked(value) {
|
|
writeStorage("markWhenChecked", value);
|
|
settings.markWhenChecked = value;
|
|
markedFootprints.clear();
|
|
for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
|
|
markedFootprints.add(ref);
|
|
}
|
|
populateBomTable();
|
|
drawHighlights();
|
|
}
|
|
|
|
function prepCheckboxes() {
|
|
var table = document.getElementById("checkbox-stats");
|
|
while (table.childElementCount > 1) {
|
|
table.removeChild(table.lastChild);
|
|
}
|
|
if (settings.checkboxes.length) {
|
|
table.style.display = "";
|
|
} else {
|
|
table.style.display = "none";
|
|
}
|
|
for (var checkbox of settings.checkboxes) {
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
td.innerHTML = checkbox;
|
|
tr.appendChild(td);
|
|
td = document.createElement("TD");
|
|
td.id = "checkbox-stats-" + checkbox;
|
|
var progressbar = document.createElement("div");
|
|
progressbar.classList.add("bar");
|
|
td.appendChild(progressbar);
|
|
var text = document.createElement("div");
|
|
text.classList.add("text");
|
|
td.appendChild(text);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
updateCheckboxStats(checkbox);
|
|
}
|
|
}
|
|
|
|
function populateMarkWhenCheckedOptions() {
|
|
var container = document.getElementById("markWhenCheckedContainer");
|
|
|
|
if (settings.checkboxes.length == 0) {
|
|
container.parentElement.style.display = "none";
|
|
return;
|
|
}
|
|
|
|
container.innerHTML = '';
|
|
container.parentElement.style.display = "inline-block";
|
|
|
|
function createOption(name, displayName) {
|
|
var id = "markWhenChecked-" + name;
|
|
|
|
var div = document.createElement("div");
|
|
div.classList.add("radio-container");
|
|
|
|
var input = document.createElement("input");
|
|
input.type = "radio";
|
|
input.name = "markWhenChecked";
|
|
input.value = name;
|
|
input.id = id;
|
|
input.onchange = () => setMarkWhenChecked(name);
|
|
div.appendChild(input);
|
|
|
|
// Preserve the selected element when the checkboxes change
|
|
if (name == settings.markWhenChecked) {
|
|
input.checked = true;
|
|
}
|
|
|
|
var label = document.createElement("label");
|
|
label.innerHTML = displayName;
|
|
label.htmlFor = id;
|
|
div.appendChild(label);
|
|
|
|
container.appendChild(div);
|
|
}
|
|
createOption("", "None");
|
|
for (var checkbox of settings.checkboxes) {
|
|
createOption(checkbox, checkbox);
|
|
}
|
|
}
|
|
|
|
function updateCheckboxStats(checkbox) {
|
|
var checked = getStoredCheckboxRefs(checkbox).size;
|
|
var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
|
|
var percent = checked * 100.0 / total;
|
|
var td = document.getElementById("checkbox-stats-" + checkbox);
|
|
td.firstChild.style.width = percent + "%";
|
|
td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
|
|
}
|
|
|
|
function constrain(number, min, max){
|
|
return Math.min(Math.max(parseInt(number), min), max);
|
|
}
|
|
|
|
document.onkeydown = function (e) {
|
|
switch (e.key) {
|
|
case "n":
|
|
if (document.activeElement.type == "text") {
|
|
return;
|
|
}
|
|
if (currentHighlightedRowId !== null) {
|
|
checkBomCheckbox(currentHighlightedRowId, "placed");
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
}
|
|
break;
|
|
case "ArrowUp":
|
|
highlightPreviousRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowDown":
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowLeft":
|
|
case "ArrowRight":
|
|
if (document.activeElement.type != "text"){
|
|
e.preventDefault();
|
|
let boardRotationElement = document.getElementById("boardRotation")
|
|
settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
|
|
if (e.key == "ArrowLeft"){
|
|
settings.boardRotation += 3; // 15 degrees
|
|
}
|
|
else{
|
|
settings.boardRotation -= 3;
|
|
}
|
|
settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
|
|
boardRotationElement.value = settings.boardRotation
|
|
setBoardRotation(settings.boardRotation);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.altKey) {
|
|
switch (e.key) {
|
|
case "f":
|
|
focusFilterField();
|
|
e.preventDefault();
|
|
break;
|
|
case "r":
|
|
focusRefLookupField();
|
|
e.preventDefault();
|
|
break;
|
|
case "z":
|
|
changeBomLayout("bom-only");
|
|
e.preventDefault();
|
|
break;
|
|
case "x":
|
|
changeBomLayout("left-right");
|
|
e.preventDefault();
|
|
break;
|
|
case "c":
|
|
changeBomLayout("top-bottom");
|
|
e.preventDefault();
|
|
break;
|
|
case "v":
|
|
changeCanvasLayout("F");
|
|
e.preventDefault();
|
|
break;
|
|
case "b":
|
|
changeCanvasLayout("FB");
|
|
e.preventDefault();
|
|
break;
|
|
case "n":
|
|
changeCanvasLayout("B");
|
|
e.preventDefault();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.key >= '1' && e.key <= '9') {
|
|
toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
|
|
function hideNetlistButton() {
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
|
|
document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
|
|
document.getElementById("bom-netlist-btn").style.display = "none";
|
|
}
|
|
|
|
function topToggle() {
|
|
var top = document.getElementById("top");
|
|
var toptoggle = document.getElementById("toptoggle");
|
|
if (top.style.display === "none") {
|
|
top.style.display = "flex";
|
|
toptoggle.classList.remove("flipped");
|
|
} else {
|
|
top.style.display = "none";
|
|
toptoggle.classList.add("flipped");
|
|
}
|
|
}
|
|
|
|
window.onload = function (e) {
|
|
initUtils();
|
|
initRender();
|
|
initStorage();
|
|
initDefaults();
|
|
cleanGutters();
|
|
populateMetadata();
|
|
dbgdiv = document.getElementById("dbg");
|
|
bom = document.getElementById("bombody");
|
|
bomhead = document.getElementById("bomhead");
|
|
filter = "";
|
|
reflookup = "";
|
|
if (!("nets" in pcbdata)) {
|
|
hideNetlistButton();
|
|
}
|
|
initDone = true;
|
|
setBomCheckboxes(document.getElementById("bomCheckboxes").value);
|
|
// Triggers render
|
|
changeBomLayout(settings.bomlayout);
|
|
|
|
// Users may leave fullscreen without touching the checkbox. Uncheck.
|
|
document.addEventListener('fullscreenchange', () => {
|
|
if (!document.fullscreenElement)
|
|
document.getElementById('fullscreenCheckbox').checked = false;
|
|
});
|
|
}
|
|
|
|
window.onresize = resizeAll;
|
|
window.matchMedia("print").addListener(resizeAll);
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => {
|
|
// for(var tr of bom.childNodes) {
|
|
// tr.onclick = tr.onmousemove;
|
|
// tr.onmousemove = null;
|
|
// };
|
|
// });
|
|
|
|
///////////////////////////////////////////////
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="topmostdiv" class="topmostdiv">
|
|
<div id="top">
|
|
<div id="fileinfodiv">
|
|
<table class="fileinfo">
|
|
<tbody>
|
|
<tr>
|
|
<td id="title" class="title" style="width: 70%">
|
|
Title
|
|
</td>
|
|
<td id="revision" class="title" style="width: 30%">
|
|
Revision
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td id="company">
|
|
Company
|
|
</td>
|
|
<td id="filedate">
|
|
Date
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="bomcontrols">
|
|
<div class="hideonprint menu">
|
|
<button class="menubtn"></button>
|
|
<div class="menu-content">
|
|
<label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
|
|
<input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
|
|
Dark mode
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
|
|
Full Screen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
|
|
Fab layer
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
|
|
Silkscreen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
|
|
References
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
|
|
Values
|
|
</label>
|
|
<div id="tracksAndZonesCheckboxes">
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
|
|
Tracks
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
|
|
Zones
|
|
</label>
|
|
</div>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
|
|
Pads
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
|
|
DNP outlined
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
|
|
Continuous redraw on drag
|
|
</label>
|
|
<label class="menu-label">
|
|
Highlight first pin
|
|
<form id="highlightpin1">
|
|
<div class="flexbox">
|
|
<label>
|
|
<input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')">
|
|
None
|
|
</label>
|
|
<label>
|
|
<input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')">
|
|
All
|
|
</label>
|
|
<label>
|
|
<input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')">
|
|
Selected
|
|
</label>
|
|
</div>
|
|
</form>
|
|
</label>
|
|
<label class="menu-label">
|
|
<span>Board rotation</span>
|
|
<span style="float: right"><span id="rotationDegree">0</span>°</span>
|
|
<input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
|
|
Offset back rotation
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Bom checkboxes</div>
|
|
<input id="bomCheckboxes" class="menu-textbox" type=text
|
|
oninput="setBomCheckboxes(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Mark when checked</div>
|
|
<div id="markWhenCheckedContainer"></div>
|
|
</label>
|
|
<label class="menu-label">
|
|
<span class="shameless-plug">
|
|
<span>Created using</span>
|
|
<a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
|
|
<a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
|
|
</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="button-container hideonprint">
|
|
<button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
|
|
title="Front only">F
|
|
</button>
|
|
<button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
|
|
title="Front and Back">FB
|
|
</button>
|
|
<button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
|
|
title="Back only">B
|
|
</button>
|
|
</div>
|
|
<div class="button-container hideonprint">
|
|
<button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
|
|
title="BOM only"></button>
|
|
<button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
|
|
title="BOM left, drawings right"></button>
|
|
<button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
|
|
title="BOM top, drawings bot"></button>
|
|
</div>
|
|
<div class="button-container hideonprint">
|
|
<button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
|
|
title="Grouped BOM"></button>
|
|
<button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
|
|
title="Ungrouped BOM"></button>
|
|
<button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
|
|
title="Netlist"></button>
|
|
</div>
|
|
<div class="hideonprint menu">
|
|
<button class="statsbtn"></button>
|
|
<div class="menu-content">
|
|
<table class="stats">
|
|
<tbody>
|
|
<tr>
|
|
<td width="40%">Board stats</td>
|
|
<td>Front</td>
|
|
<td>Back</td>
|
|
<td>Total</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Components</td>
|
|
<td id="stats-components-front">~</td>
|
|
<td id="stats-components-back">~</td>
|
|
<td id="stats-components-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Groups</td>
|
|
<td id="stats-groups-front">~</td>
|
|
<td id="stats-groups-back">~</td>
|
|
<td id="stats-groups-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SMD pads</td>
|
|
<td id="stats-smd-pads-front">~</td>
|
|
<td id="stats-smd-pads-back">~</td>
|
|
<td id="stats-smd-pads-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TH pads</td>
|
|
<td colspan=3 id="stats-th-pads">~</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="stats">
|
|
<col width="40%"/><col />
|
|
<tbody id="checkbox-stats">
|
|
<tr>
|
|
<td colspan=2 style="border-top: 0">Checkboxes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="hideonprint menu">
|
|
<button class="iobtn"></button>
|
|
<div class="menu-content">
|
|
<div class="menu-label menu-label-top">
|
|
<div style="margin-left: 5px;">Save board image</div>
|
|
<div class="flexbox">
|
|
<input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
<span>X</span>
|
|
<input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
</div>
|
|
<label>
|
|
<input id="render-save-transparent" type="checkbox">
|
|
Transparent background
|
|
</label>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveImage('F')">Front</button>
|
|
<button class="savebtn" onclick="saveImage('B')">Back</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Config and checkbox state</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveSettings()">Export</button>
|
|
<button class="savebtn" onclick="loadSettings()">Import</button>
|
|
<button class="savebtn" onclick="resetSettings()">Reset</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Save bom table as</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveBomTable('csv')">csv</button>
|
|
<button class="savebtn" onclick="saveBomTable('txt')">txt</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="topdivider">
|
|
<div class="hideonprint">
|
|
<div id="toptoggle" onclick="topToggle()">︽</div>
|
|
</div>
|
|
</div>
|
|
<div id="bot" class="split" style="flex: 1 1">
|
|
<div id="bomdiv" class="split split-horizontal">
|
|
<div style="width: 100%">
|
|
<input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
|
|
oninput="updateRefLookup(this.value)">
|
|
<input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
|
|
oninput="updateFilter(this.value)">
|
|
<div class="button-container hideonprint" style="float: left; margin: 0;">
|
|
<button id="copy" title="Copy bom table to clipboard"
|
|
onclick="saveBomTable('clipboard')"></button>
|
|
</div>
|
|
</div>
|
|
<div id="dbg"></div>
|
|
<table class="bom" id="bomtable">
|
|
<thead id="bomhead">
|
|
</thead>
|
|
<tbody id="bombody">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="canvasdiv" class="split split-horizontal">
|
|
<div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
<div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|