4670 lines
416 KiB
HTML
4670 lines
416 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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"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* 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>
|