4710 lines
421 KiB
HTML
4710 lines
421 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": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* Utility functions */
|
|
|
|
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
|
|
pcbdata.metadata.revision + '__#';
|
|
var storage;
|
|
|
|
function initStorage(key) {
|
|
try {
|
|
window.localStorage.getItem("blank");
|
|
storage = window.localStorage;
|
|
} catch (e) {
|
|
// localStorage not available
|
|
}
|
|
if (!storage) {
|
|
try {
|
|
window.sessionStorage.getItem("blank");
|
|
storage = window.sessionStorage;
|
|
} catch (e) {
|
|
// sessionStorage also not available
|
|
}
|
|
}
|
|
}
|
|
|
|
function readStorage(key) {
|
|
if (storage) {
|
|
return storage.getItem(storagePrefix + key);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function writeStorage(key, value) {
|
|
if (storage) {
|
|
storage.setItem(storagePrefix + key, value);
|
|
}
|
|
}
|
|
|
|
function fancyDblClickHandler(el, onsingle, ondouble) {
|
|
return function () {
|
|
if (el.getAttribute("data-dblclick") == null) {
|
|
el.setAttribute("data-dblclick", 1);
|
|
setTimeout(function () {
|
|
if (el.getAttribute("data-dblclick") == 1) {
|
|
onsingle();
|
|
}
|
|
el.removeAttribute("data-dblclick");
|
|
}, 200);
|
|
} else {
|
|
el.removeAttribute("data-dblclick");
|
|
ondouble();
|
|
}
|
|
}
|
|
}
|
|
|
|
function smoothScrollToRow(rowid) {
|
|
document.getElementById(rowid).scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
inline: "nearest"
|
|
});
|
|
}
|
|
|
|
function focusInputField(input) {
|
|
input.scrollIntoView(false);
|
|
input.focus();
|
|
input.select();
|
|
}
|
|
|
|
function saveBomTable(output) {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
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>
|