4670 lines
395 KiB
HTML
4670 lines
395 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, "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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lrN8M9IyarK7BO0yNrMVAd7QbLOEs5qzkLNWszb9orI6sxUA3TLGshMys+mcsn0yqrLGMvaykYDDM66y432ysu6y98RvwR6yYzOes9Ps9LJLMlopHrJBs76yogXfM4MzNLIhs1KygDJ2ssizWrLIUSay2LKRsmayAzMrMj6ykYAxsgGyq2yBs6szGzOcsmsy0bPbMmoBCbIE6E6yVTLOsvGzxzMOwsmzRzPBsicyybJnMhmzFzMxsqqYKbObM5ayMrMis5cyI3UOs3myoLNOsrmyWrIuspwQ+rKkssWzibNddRKzobMPMqWzO3WRsiWystEFsymzhbPOsnmzRHWdMwiyJCiEs1Wz4bPss1qynzMJskmhYbI1/NWzqbJ6dFOBjbL/Mhmza5C1stiyj7F1szmz9bJWsqSybJWNsuLAATW2s0iyDbLYso2VcjK01Wiy8jT3MwGzobNZ3AOz53nOQEARXLKks66IvbKhswOy+jIqQb2yGLIys2OzS6wjszsof3gzs7yzY7LNKTOymQESWY9MU7N0s6GyTFgLsg5AAwBjsxUBX5mRVDEzE7Nrs6uyb1XJACuzh1SzgJuy6OTqA1uyYGW0lEuzqrKmswJBW7N2/Duye9iHsgWgR7ILGIezJ7Nzso6yohSHsueyZ7IygL/9W7O/QbKAO7KiQsIyE7Mjsk/F4gHXszggV7P3sxez9vxn8FezhPA7s1MAygFbsi+yvbJDs3GzZbOQ0Xuyt7KzsiPBe7Nvshoz77IH8K+z1oXPstyAv7Jc4c+zfjTrsp+yByxyDPuyXrO1ssQyr7Mgco+yJECGNDSzE7Ngcm+zRjNDsxOz3bMxstBycbPfs1BzwLKoskdEs7LQslSzsHJqkdwy8HKZAWMw0DIiM34yiHMUgEhz1G0wsmhzCHO3spMwhTNIczCzrIGwsohyrbNwcuhzOEETODhymHJVxWhyBHNHRfhz8HNYeIRyxHMM4URyyHLos1ozWHJSMkRzGHKzswSyJHMLs3iywHJQc7ezhjNUckNl+jKUcwuyNjIuM+Ry4oOkcqe9zjLkcnhzdlhVs52yfbKoc7eyArKMcnhyHHI0cu+yG7Nisxxz7HPcclxysHPsc3KyPHKzsvfQObLSs82ybPCZADGokzPkc8JzTHLasonMLHO3srqzMHK2M0JzrjyYgHRyJYAVM/Rzzd0HM4Mz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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>
|