4710 lines
409 KiB
HTML
4710 lines
409 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;
|
|
min-height: 100%;
|
|
}
|
|
|
|
#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;
|
|
}
|
|
|
|
</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": "all", "redraw_on_drag": true, "board_rotation": 0.0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* 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) {
|
|
var name = node.firstChild.nodeValue ?? "";
|
|
text += (output == 'csv' ? `"${name}"` : name);
|
|
}
|
|
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,
|
|
valueAltRegex: 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"] = {};
|
|
var allList = getBomListByLayer('FB').flat();
|
|
for (var id in pcbdata.bom.fields) {
|
|
var ref_key = allList.find(item => item[1] == Number(id)) || [];
|
|
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index], ref_key[0] || '');
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseValue(val, ref) {
|
|
var inferUnit = (unit, ref) => {
|
|
if (unit) {
|
|
unit = unit.toLowerCase();
|
|
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
|
|
unit = 'r';
|
|
}
|
|
return unit[0];
|
|
}
|
|
|
|
var resarr = /^([a-z]+)\d+$/i.exec(ref);
|
|
switch (Array.isArray(resarr) && resarr[1].toLowerCase()) {
|
|
case "c": return 'f';
|
|
case "l": return 'h';
|
|
case "r":
|
|
case "rv": return 'r';
|
|
}
|
|
return null;
|
|
};
|
|
val = val.replace(/,/g, "");
|
|
var match = units.valueRegex.exec(val);
|
|
if (Array.isArray(match)) {
|
|
var unit = inferUnit(match[3], ref);
|
|
var val_i = parseFloat(match[1]);
|
|
if (!unit) return null;
|
|
if (match[2]) {
|
|
val_i = val_i * units.getMultiplier(match[2]);
|
|
}
|
|
return {
|
|
val: val_i,
|
|
unit: unit,
|
|
extra: match[4],
|
|
}
|
|
}
|
|
|
|
match = units.valueAltRegex.exec(val);
|
|
if (Array.isArray(match) && (match[1] || match[4])) {
|
|
var unit = inferUnit(match[2], ref);
|
|
var val_i = parseFloat(match[1] + "." + match[4]);
|
|
if (!unit) return null;
|
|
if (match[3]) {
|
|
val_i = val_i * units.getMultiplier(match[3]);
|
|
}
|
|
return {
|
|
val: val_i,
|
|
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;
|
|
setHighlightRowOnClick(settings.highlightRowOnClick);
|
|
document.getElementById("highlightRowOnClickCheckbox").checked = settings.highlightRowOnClick;
|
|
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("highlightRowOnClick", false, "highlightRowOnClickCheckbox", setHighlightRowOnClick);
|
|
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 if (pad.drillshape == "rect") {
|
|
ctx.fill(getChamferedRectPath(pad.drillsize, 0, 0, 0));
|
|
} 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 setHighlightRowOnClick(value) {
|
|
settings.highlightRowOnClick = value;
|
|
writeStorage("highlightRowOnClick", value);
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
}
|
|
|
|
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 createCheckboxHandlers(input, checkbox, references, row) {
|
|
var clickHandler = () => {
|
|
refsSet = getStoredCheckboxRefs(checkbox);
|
|
var markWhenChecked = settings.markWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (input.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);
|
|
}
|
|
|
|
return [
|
|
(e) => {
|
|
clickHandler();
|
|
},
|
|
(e) => {
|
|
e.preventDefault();
|
|
if (row.onmousemove) row.onmousemove();
|
|
},
|
|
(e) => {
|
|
e.preventDefault();
|
|
input.checked = !input.checked;
|
|
input.indeterminate = false;
|
|
clickHandler();
|
|
}
|
|
];
|
|
}
|
|
|
|
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 getBomListByLayer(layer) {
|
|
switch (layer) {
|
|
case 'F': return pcbdata.bom.F.slice();
|
|
case 'B': return pcbdata.bom.B.slice();
|
|
case 'FB': return pcbdata.bom.both.slice();
|
|
}
|
|
return [];
|
|
}
|
|
|
|
function getSelectedBomList() {
|
|
if (settings.bommode == "netlist") {
|
|
return pcbdata.nets.slice();
|
|
}
|
|
var out = getBomListByLayer(settings.canvaslayout);
|
|
|
|
if (settings.bommode == "ungrouped") {
|
|
// expand bom table
|
|
var expandedTable = [];
|
|
for (var bomentry of out) {
|
|
for (var ref of bomentry) {
|
|
expandedTable.push([ref]);
|
|
}
|
|
}
|
|
return expandedTable;
|
|
}
|
|
|
|
return out;
|
|
}
|
|
|
|
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][0] != b[i][0]) 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();
|
|
|
|
bomtable = getSelectedBomList();
|
|
|
|
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, td.ontouchstart, td.ontouchend] = createCheckboxHandlers(input, 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);
|
|
if (settings.highlightRowOnClick) {
|
|
tr.onmousedown = handler;
|
|
} else {
|
|
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 childNum = checkboxnum + settings.columnOrder.indexOf("checkboxes");
|
|
var checkbox = bomrow.childNodes[childNum].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 childNum = checkboxnum + 1 + settings.columnOrder.indexOf("checkboxes");
|
|
var checkbox = bomrow.childNodes[childNum].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) {
|
|
initRender();
|
|
initStorage();
|
|
initDefaults();
|
|
initUtils();
|
|
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);
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
</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="highlightRowOnClickCheckbox" type="checkbox" checked onchange="setHighlightRowOnClick(this.checked)">
|
|
Highlight row on click
|
|
</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>
|