mirror of
https://github.com/UzixLS/zx-sizif-128.git
synced 2025-07-19 07:11:43 +03:00
4415 lines
393 KiB
HTML
Vendored
4415 lines
393 KiB
HTML
Vendored
<!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: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.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: 5px;
|
|
}
|
|
|
|
.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: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.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 {
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: white;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
#top {
|
|
height: 78px;
|
|
border-bottom: 2px solid black;
|
|
}
|
|
|
|
.dark #top {
|
|
border-bottom: 2px solid #ccc;
|
|
}
|
|
|
|
#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;
|
|
}
|
|
|
|
|
|
</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": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* Utility functions */
|
|
|
|
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
|
|
pcbdata.metadata.revision + '__#';
|
|
var storage;
|
|
|
|
function initStorage(key) {
|
|
try {
|
|
window.localStorage.getItem("blank");
|
|
storage = window.localStorage;
|
|
} catch (e) {
|
|
// localStorage not available
|
|
}
|
|
if (!storage) {
|
|
try {
|
|
window.sessionStorage.getItem("blank");
|
|
storage = window.sessionStorage;
|
|
} catch (e) {
|
|
// sessionStorage also not available
|
|
}
|
|
}
|
|
}
|
|
|
|
function readStorage(key) {
|
|
if (storage) {
|
|
return storage.getItem(storagePrefix + key);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function writeStorage(key, value) {
|
|
if (storage) {
|
|
storage.setItem(storagePrefix + key, value);
|
|
}
|
|
}
|
|
|
|
function fancyDblClickHandler(el, onsingle, ondouble) {
|
|
return function() {
|
|
if (el.getAttribute("data-dblclick") == null) {
|
|
el.setAttribute("data-dblclick", 1);
|
|
setTimeout(function() {
|
|
if (el.getAttribute("data-dblclick") == 1) {
|
|
onsingle();
|
|
}
|
|
el.removeAttribute("data-dblclick");
|
|
}, 200);
|
|
} else {
|
|
el.removeAttribute("data-dblclick");
|
|
ondouble();
|
|
}
|
|
}
|
|
}
|
|
|
|
function smoothScrollToRow(rowid) {
|
|
document.getElementById(rowid).scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
inline: "nearest"
|
|
});
|
|
}
|
|
|
|
function focusInputField(input) {
|
|
input.scrollIntoView(false);
|
|
input.focus();
|
|
input.select();
|
|
}
|
|
|
|
function saveBomTable(output) {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
|
|
}
|
|
if (node != bomhead.childNodes[0].lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
for (var row of bombody.childNodes) {
|
|
for (var cell of row.childNodes) {
|
|
let val = '';
|
|
for (var node of cell.childNodes) {
|
|
if (node.nodeName == "INPUT") {
|
|
if (node.checked) {
|
|
val += '✓';
|
|
}
|
|
} else if (node.nodeName == "MARK") {
|
|
val += node.firstChild.nodeValue;
|
|
} else {
|
|
val += node.nodeValue;
|
|
}
|
|
}
|
|
if (output == 'csv') {
|
|
val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
|
|
if (isNumeric(val)) {
|
|
val = +val; // use number
|
|
} else {
|
|
val = `"${val}"`; // enclosed within double-quote
|
|
}
|
|
}
|
|
text += val;
|
|
if (cell != row.lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
}
|
|
|
|
if (output != 'clipboard') {
|
|
// To file: csv or txt
|
|
var blob = new Blob([text], {
|
|
type: `text/${output}`
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.${output}`, blob);
|
|
} else {
|
|
// To clipboard
|
|
var textArea = document.createElement("textarea");
|
|
textArea.classList.add('clipboard-temp');
|
|
textArea.value = text;
|
|
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
|
|
try {
|
|
if (document.execCommand('copy')) {
|
|
console.log('Bom copied to clipboard.');
|
|
}
|
|
} catch (err) {
|
|
console.log('Can not copy to clipboard.');
|
|
}
|
|
|
|
document.body.removeChild(textArea);
|
|
}
|
|
}
|
|
|
|
function isNumeric(str) {
|
|
/* https://stackoverflow.com/a/175787 */
|
|
return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
|
|
}
|
|
|
|
function removeGutterNode(node) {
|
|
for (var i = 0; i < node.childNodes.length; i++) {
|
|
if (node.childNodes[i].classList &&
|
|
node.childNodes[i].classList.contains("gutter")) {
|
|
node.removeChild(node.childNodes[i]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function cleanGutters() {
|
|
removeGutterNode(document.getElementById("bot"));
|
|
removeGutterNode(document.getElementById("canvasdiv"));
|
|
}
|
|
|
|
var units = {
|
|
prefixes: {
|
|
giga: ["G", "g", "giga", "Giga", "GIGA"],
|
|
mega: ["M", "mega", "Mega", "MEGA"],
|
|
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
|
|
milli: ["m", "milli", "Milli", "MILLI"],
|
|
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
|
|
nano: ["N", "n", "nano", "Nano", "NANO"],
|
|
pico: ["P", "p", "pico", "Pico", "PICO"],
|
|
},
|
|
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
|
|
unitsLong: [
|
|
"OHM", "Ohm", "ohm", "ohms",
|
|
"FARAD", "Farad", "farad",
|
|
"HENRY", "Henry", "henry"
|
|
],
|
|
getMultiplier: function(s) {
|
|
if (this.prefixes.giga.includes(s)) return 1e9;
|
|
if (this.prefixes.mega.includes(s)) return 1e6;
|
|
if (this.prefixes.kilo.includes(s)) return 1e3;
|
|
if (this.prefixes.milli.includes(s)) return 1e-3;
|
|
if (this.prefixes.micro.includes(s)) return 1e-6;
|
|
if (this.prefixes.nano.includes(s)) return 1e-9;
|
|
if (this.prefixes.pico.includes(s)) return 1e-12;
|
|
return 1;
|
|
},
|
|
valueRegex: null,
|
|
}
|
|
|
|
function initUtils() {
|
|
var allPrefixes = units.prefixes.giga
|
|
.concat(units.prefixes.mega)
|
|
.concat(units.prefixes.kilo)
|
|
.concat(units.prefixes.milli)
|
|
.concat(units.prefixes.micro)
|
|
.concat(units.prefixes.nano)
|
|
.concat(units.prefixes.pico);
|
|
var allUnits = units.unitsShort.concat(units.unitsLong);
|
|
units.valueRegex = new RegExp("^([0-9\.]+)" +
|
|
"\\s*(" + allPrefixes.join("|") + ")?" +
|
|
"(" + allUnits.join("|") + ")?" +
|
|
"(\\b.*)?$", "");
|
|
units.valueAltRegex = new RegExp("^([0-9]*)" +
|
|
"(" + units.unitsShort.join("|") + ")?" +
|
|
"([GgMmKkUuNnPp])?" +
|
|
"([0-9]*)" +
|
|
"(\\b.*)?$", "");
|
|
if (config.fields.includes("Value")) {
|
|
var index = config.fields.indexOf("Value");
|
|
pcbdata.bom["parsedValues"] = {};
|
|
for (var id in pcbdata.bom.fields) {
|
|
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseValue(val, ref) {
|
|
var inferUnit = (unit, ref) => {
|
|
if (unit) {
|
|
unit = unit.toLowerCase();
|
|
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
|
|
unit = 'r';
|
|
}
|
|
unit = unit[0];
|
|
} else {
|
|
ref = /^([a-z]+)\d+$/i.exec(ref);
|
|
if (ref) {
|
|
ref = ref[1].toLowerCase();
|
|
if (ref == "c") unit = 'f';
|
|
else if (ref == "l") unit = 'h';
|
|
else if (ref == "r" || ref == "rv") unit = 'r';
|
|
else unit = null;
|
|
}
|
|
}
|
|
return unit;
|
|
};
|
|
val = val.replace(/,/g, "");
|
|
var match = units.valueRegex.exec(val);
|
|
var unit;
|
|
if (match) {
|
|
val = parseFloat(match[1]);
|
|
if (match[2]) {
|
|
val = val * units.getMultiplier(match[2]);
|
|
}
|
|
unit = inferUnit(match[3], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[4],
|
|
}
|
|
}
|
|
match = units.valueAltRegex.exec(val);
|
|
if (match && (match[1] || match[4])) {
|
|
val = parseFloat(match[1] + "." + match[4]);
|
|
if (match[3]) {
|
|
val = val * units.getMultiplier(match[3]);
|
|
}
|
|
unit = inferUnit(match[2], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[5],
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function valueCompare(a, b, stra, strb) {
|
|
if (a === null && b === null) {
|
|
// Failed to parse both values, compare them as strings.
|
|
if (stra != strb) return stra > strb ? 1 : -1;
|
|
else return 0;
|
|
} else if (a === null) {
|
|
return 1;
|
|
} else if (b === null) {
|
|
return -1;
|
|
} else {
|
|
if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
|
|
else if (a.val != b.val) return a.val > b.val ? 1 : -1;
|
|
else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
|
|
function validateSaveImgDimension(element) {
|
|
var valid = false;
|
|
var intValue = 0;
|
|
if (/^[1-9]\d*$/.test(element.value)) {
|
|
intValue = parseInt(element.value);
|
|
if (intValue <= 16000) {
|
|
valid = true;
|
|
}
|
|
}
|
|
if (valid) {
|
|
element.classList.remove("invalid");
|
|
} else {
|
|
element.classList.add("invalid");
|
|
}
|
|
return intValue;
|
|
}
|
|
|
|
function saveImage(layer) {
|
|
var width = validateSaveImgDimension(document.getElementById("render-save-width"));
|
|
var height = validateSaveImgDimension(document.getElementById("render-save-height"));
|
|
var bgcolor = null;
|
|
if (!document.getElementById("render-save-transparent").checked) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
bgcolor = style.getPropertyValue("background-color");
|
|
}
|
|
if (!width || !height) return;
|
|
|
|
// Prepare image
|
|
var canvas = document.createElement("canvas");
|
|
var layerdict = {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
bg: canvas,
|
|
fab: canvas,
|
|
silk: canvas,
|
|
highlight: canvas,
|
|
layer: layer,
|
|
}
|
|
// Do the rendering
|
|
recalcLayerScale(layerdict, width, height);
|
|
prepareLayer(layerdict);
|
|
clearCanvas(canvas, bgcolor);
|
|
drawBackground(layerdict, false);
|
|
drawHighlightsOnLayer(layerdict, false);
|
|
|
|
// Save image
|
|
var imgdata = canvas.toDataURL("image/png");
|
|
|
|
var filename = pcbdata.metadata.title;
|
|
if (pcbdata.metadata.revision) {
|
|
filename += `.${pcbdata.metadata.revision}`;
|
|
}
|
|
filename += `.${layer}.png`;
|
|
saveFile(filename, dataURLtoBlob(imgdata));
|
|
}
|
|
|
|
function saveSettings() {
|
|
var data = {
|
|
type: "InteractiveHtmlBom settings",
|
|
version: 1,
|
|
pcbmetadata: pcbdata.metadata,
|
|
settings: settings,
|
|
}
|
|
var blob = new Blob([JSON.stringify(data, null, 4)], {
|
|
type: "application/json"
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
|
|
}
|
|
|
|
function loadSettings() {
|
|
var input = document.createElement("input");
|
|
input.type = "file";
|
|
input.accept = ".settings.json";
|
|
input.onchange = function(e) {
|
|
var file = e.target.files[0];
|
|
var reader = new FileReader();
|
|
reader.onload = readerEvent => {
|
|
var content = readerEvent.target.result;
|
|
var newSettings;
|
|
try {
|
|
newSettings = JSON.parse(content);
|
|
} catch (e) {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
if (newSettings.type != "InteractiveHtmlBom settings") {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
|
|
if (metadataMatches) {
|
|
for (var k in pcbdata.metadata) {
|
|
if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
|
|
metadataMatches = false;
|
|
}
|
|
}
|
|
}
|
|
if (!metadataMatches) {
|
|
var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
|
|
var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
|
|
if (!confirm(
|
|
`Settins file metadata does not match current metadata.\n\n` +
|
|
`Page metadata:\n${currentMetadata}\n\n` +
|
|
`Settings file metadata:\n${fileMetadata}\n\n` +
|
|
`Press OK if you would like to import settings anyway.`)) {
|
|
return;
|
|
}
|
|
}
|
|
overwriteSettings(newSettings.settings);
|
|
}
|
|
reader.readAsText(file, 'UTF-8');
|
|
}
|
|
input.click();
|
|
}
|
|
|
|
function overwriteSettings(newSettings) {
|
|
initDone = false;
|
|
Object.assign(settings, newSettings);
|
|
writeStorage("bomlayout", settings.bomlayout);
|
|
writeStorage("bommode", settings.bommode);
|
|
writeStorage("canvaslayout", settings.canvaslayout);
|
|
writeStorage("bomCheckboxes", settings.checkboxes.join(","));
|
|
document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
|
|
for (var checkbox of settings.checkboxes) {
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
}
|
|
writeStorage("markWhenChecked", settings.markWhenChecked);
|
|
padsVisible(settings.renderPads);
|
|
document.getElementById("padsCheckbox").checked = settings.renderPads;
|
|
fabricationVisible(settings.renderFabrication);
|
|
document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
|
|
silkscreenVisible(settings.renderSilkscreen);
|
|
document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
|
|
referencesVisible(settings.renderReferences);
|
|
document.getElementById("referencesCheckbox").checked = settings.renderReferences;
|
|
valuesVisible(settings.renderValues);
|
|
document.getElementById("valuesCheckbox").checked = settings.renderValues;
|
|
tracksVisible(settings.renderTracks);
|
|
document.getElementById("tracksCheckbox").checked = settings.renderTracks;
|
|
zonesVisible(settings.renderZones);
|
|
document.getElementById("zonesCheckbox").checked = settings.renderZones;
|
|
dnpOutline(settings.renderDnpOutline);
|
|
document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
|
|
setRedrawOnDrag(settings.redrawOnDrag);
|
|
document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
|
|
setDarkMode(settings.darkMode);
|
|
document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
|
|
setHighlightPin1(settings.highlightpin1);
|
|
document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
|
|
showFootprints(settings.show_footprints);
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
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: "default",
|
|
bomlayout: "default",
|
|
bommode: "grouped",
|
|
checkboxes: [],
|
|
checkboxStoredRefs: {},
|
|
darkMode: false,
|
|
highlightpin1: false,
|
|
redrawOnDrag: true,
|
|
boardRotation: 0,
|
|
renderPads: true,
|
|
renderReferences: true,
|
|
renderValues: true,
|
|
renderSilkscreen: true,
|
|
renderFabrication: true,
|
|
renderDnpOutline: false,
|
|
renderTracks: true,
|
|
renderZones: true,
|
|
columnOrder: [],
|
|
hiddenColumns: [],
|
|
}
|
|
|
|
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 (!["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;
|
|
|
|
settings.markWhenChecked = readStorage("markWhenChecked") || "";
|
|
populateMarkWhenCheckedOptions();
|
|
|
|
function initBooleanSetting(storageString, def, elementId, func) {
|
|
var b = readStorage(storageString);
|
|
if (b === null) {
|
|
b = def;
|
|
} else {
|
|
b = (b == "true");
|
|
}
|
|
document.getElementById(elementId).checked = b;
|
|
func(b);
|
|
}
|
|
|
|
initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
|
|
initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
|
|
initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
|
|
initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
|
|
initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
|
|
if ("tracks" in pcbdata) {
|
|
initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
|
|
initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
|
|
} else {
|
|
document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
|
|
tracksVisible(false);
|
|
zonesVisible(false);
|
|
}
|
|
initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
|
|
initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
|
|
initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
|
|
initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);
|
|
|
|
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;
|
|
}
|
|
|
|
// 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 (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
offsetx += fourSpaces - offsetx % fourSpaces;
|
|
continue;
|
|
} else if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
if (txt[i][j] != '~') {
|
|
inOverbar = !inOverbar;
|
|
}
|
|
}
|
|
var glyph = pcbdata.font_data[txt[i][j]];
|
|
if (inOverbar) {
|
|
var overbarStart = [offsetx, -text.height * 1.4 + offsety];
|
|
var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
|
|
|
|
if (!lastHadOverbar) {
|
|
overbarStart[0] += text.height * 1.4 * tilt;
|
|
lastHadOverbar = true;
|
|
}
|
|
ctx.beginPath();
|
|
ctx.moveTo(...overbarStart);
|
|
ctx.lineTo(...overbarEnd);
|
|
ctx.stroke();
|
|
} else {
|
|
lastHadOverbar = false;
|
|
}
|
|
for (var line of glyph.l) {
|
|
ctx.beginPath();
|
|
ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
|
|
for (var k = 1; k < line.length; k++) {
|
|
ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
offsetx += glyph.w * text.width;
|
|
}
|
|
offsety += interline;
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawedge(ctx, scalefactor, edge, color) {
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
if ("svgpath" in edge) {
|
|
ctx.stroke(new Path2D(edge.svgpath));
|
|
} else {
|
|
ctx.beginPath();
|
|
if (edge.type == "segment") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(...edge.end);
|
|
}
|
|
if (edge.type == "rect") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(edge.start[0], edge.end[1]);
|
|
ctx.lineTo(...edge.end);
|
|
ctx.lineTo(edge.end[0], edge.start[1]);
|
|
ctx.lineTo(...edge.start);
|
|
}
|
|
if (edge.type == "arc") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
deg2rad(edge.startangle),
|
|
deg2rad(edge.endangle));
|
|
}
|
|
if (edge.type == "circle") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
0, 2 * Math.PI);
|
|
ctx.closePath();
|
|
}
|
|
if (edge.type == "curve") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
|
|
}
|
|
if("filled" in edge && edge.filled)
|
|
ctx.fill();
|
|
else
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
|
|
// chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
|
|
var path = new Path2D();
|
|
var width = size[0];
|
|
var height = size[1];
|
|
var x = width * -0.5;
|
|
var y = height * -0.5;
|
|
var chamfOffset = Math.min(width, height) * chamfratio;
|
|
path.moveTo(x, 0);
|
|
if (chamfpos & 4) {
|
|
path.lineTo(x, y + height - chamfOffset);
|
|
path.lineTo(x + chamfOffset, y + height);
|
|
path.lineTo(0, y + height);
|
|
} else {
|
|
path.arcTo(x, y + height, x + width, y + height, radius);
|
|
}
|
|
if (chamfpos & 8) {
|
|
path.lineTo(x + width - chamfOffset, y + height);
|
|
path.lineTo(x + width, y + height - chamfOffset);
|
|
path.lineTo(x + width, 0);
|
|
} else {
|
|
path.arcTo(x + width, y + height, x + width, y, radius);
|
|
}
|
|
if (chamfpos & 2) {
|
|
path.lineTo(x + width, y + chamfOffset);
|
|
path.lineTo(x + width - chamfOffset, y);
|
|
path.lineTo(0, y);
|
|
} else {
|
|
path.arcTo(x + width, y, x, y, radius);
|
|
}
|
|
if (chamfpos & 1) {
|
|
path.lineTo(x + chamfOffset, y);
|
|
path.lineTo(x, y + chamfOffset);
|
|
path.lineTo(x, 0);
|
|
} else {
|
|
path.arcTo(x, y, x, y + height, radius);
|
|
}
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getOblongPath(size) {
|
|
return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
|
|
}
|
|
|
|
function getPolygonsPath(shape) {
|
|
if (shape.path2d) {
|
|
return shape.path2d;
|
|
}
|
|
if ("svgpath" in shape) {
|
|
shape.path2d = new Path2D(shape.svgpath);
|
|
} else {
|
|
var path = new Path2D();
|
|
for (var polygon of shape.polygons) {
|
|
path.moveTo(...polygon[0]);
|
|
for (var i = 1; i < polygon.length; i++) {
|
|
path.lineTo(...polygon[i]);
|
|
}
|
|
path.closePath();
|
|
}
|
|
shape.path2d = path;
|
|
}
|
|
return shape.path2d;
|
|
}
|
|
|
|
function drawPolygonShape(ctx, scalefactor, shape, color) {
|
|
ctx.save();
|
|
if (!("svgpath" in shape)) {
|
|
ctx.translate(...shape.pos);
|
|
ctx.rotate(deg2rad(-shape.angle));
|
|
}
|
|
if("filled" in shape && !shape.filled) {
|
|
ctx.strokeStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.stroke(getPolygonsPath(shape));
|
|
} else {
|
|
ctx.fillStyle = color;
|
|
ctx.fill(getPolygonsPath(shape));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawDrawing(ctx, scalefactor, drawing, color) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
|
|
drawedge(ctx, scalefactor, drawing, color);
|
|
} else if (drawing.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, drawing, color);
|
|
} else {
|
|
drawText(ctx, drawing, color);
|
|
}
|
|
}
|
|
|
|
function getCirclePath(radius) {
|
|
var path = new Path2D();
|
|
path.arc(0, 0, radius, 0, 2 * Math.PI);
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getCachedPadPath(pad) {
|
|
if (!pad.path2d) {
|
|
// if path2d is not set, build one and cache it on pad object
|
|
if (pad.shape == "rect") {
|
|
pad.path2d = new Path2D();
|
|
pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
|
|
} else if (pad.shape == "oval") {
|
|
pad.path2d = getOblongPath(pad.size);
|
|
} else if (pad.shape == "circle") {
|
|
pad.path2d = getCirclePath(pad.size[0] / 2);
|
|
} else if (pad.shape == "roundrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
|
|
} else if (pad.shape == "chamfrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
|
|
} else if (pad.shape == "custom") {
|
|
pad.path2d = getPolygonsPath(pad);
|
|
}
|
|
}
|
|
return pad.path2d;
|
|
}
|
|
|
|
function drawPad(ctx, pad, color, outline) {
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
if (pad.offset) {
|
|
ctx.translate(...pad.offset);
|
|
}
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
var path = getCachedPadPath(pad);
|
|
if (outline) {
|
|
ctx.stroke(path);
|
|
} else {
|
|
ctx.fill(path);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawPadHole(ctx, pad, padHoleColor) {
|
|
if (pad.type != "th") return;
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
ctx.fillStyle = padHoleColor;
|
|
if (pad.drillshape == "oblong") {
|
|
ctx.fill(getOblongPath(pad.drillsize));
|
|
} else {
|
|
ctx.fill(getCirclePath(pad.drillsize[0] / 2));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
|
|
if (highlight) {
|
|
// draw bounding box
|
|
if (footprint.layer == layer) {
|
|
ctx.save();
|
|
ctx.globalAlpha = 0.2;
|
|
ctx.translate(...footprint.bbox.pos);
|
|
ctx.rotate(deg2rad(-footprint.bbox.angle));
|
|
ctx.translate(...footprint.bbox.relpos);
|
|
ctx.fillStyle = colors.pad;
|
|
ctx.fillRect(0, 0, ...footprint.bbox.size);
|
|
ctx.globalAlpha = 1;
|
|
ctx.strokeStyle = colors.pad;
|
|
ctx.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);
|
|
}
|
|
}
|
|
// 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) {
|
|
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, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if (highlight && highlightedNet != track.net) continue;
|
|
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();
|
|
}
|
|
}
|
|
|
|
function drawZones(canvas, layer, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineJoin = "round";
|
|
for (var zone of pcbdata.zones[layer]) {
|
|
if (!zone.path2d) {
|
|
zone.path2d = getPolygonsPath(zone);
|
|
}
|
|
if (highlight && highlightedNet != zone.net) continue;
|
|
ctx.fill(zone.path2d);
|
|
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.renderTracks) {
|
|
var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
|
|
drawTracks(canvas, layer, trackColor, highlight);
|
|
}
|
|
if (settings.renderZones) {
|
|
var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
|
|
drawZones(canvas, layer, zoneColor, 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));
|
|
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) {
|
|
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));
|
|
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 bbox = applyRotation(pcbdata.edges_bbox);
|
|
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;
|
|
var flip = (layerdict.layer == "B");
|
|
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;
|
|
if (layerdict.layer == "B") {
|
|
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);
|
|
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 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();
|
|
}
|
|
|
|
function setShowBOMColumn(field, value) {
|
|
if (field === "references") {
|
|
var rl = document.getElementById("reflookup");
|
|
rl.disabled = !value;
|
|
if (!value) {
|
|
rl.value = "";
|
|
updateRefLookup("");
|
|
}
|
|
}
|
|
|
|
var n = settings.hiddenColumns.indexOf(field);
|
|
if (value) {
|
|
if (n != -1) {
|
|
settings.hiddenColumns.splice(n, 1);
|
|
}
|
|
} else {
|
|
if (n == -1) {
|
|
settings.hiddenColumns.push(field);
|
|
}
|
|
}
|
|
|
|
writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
|
|
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
|
|
function setFullscreen(value) {
|
|
if (value) {
|
|
document.documentElement.requestFullscreen();
|
|
} else {
|
|
document.exitFullscreen();
|
|
}
|
|
}
|
|
|
|
function fabricationVisible(value) {
|
|
writeStorage("fabricationVisible", value);
|
|
settings.renderFabrication = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function silkscreenVisible(value) {
|
|
writeStorage("silkscreenVisible", value);
|
|
settings.renderSilkscreen = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setHighlightPin1(value) {
|
|
writeStorage("highlightpin1", value);
|
|
settings.highlightpin1 = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function getStoredCheckboxRefs(checkbox) {
|
|
function convert(ref) {
|
|
var intref = parseInt(ref);
|
|
if (isNaN(intref)) {
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.footprints[i].ref == ref) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
} else {
|
|
return intref;
|
|
}
|
|
}
|
|
if (!(checkbox in settings.checkboxStoredRefs)) {
|
|
var val = readStorage("checkbox_" + checkbox);
|
|
settings.checkboxStoredRefs[checkbox] = val ? val : "";
|
|
}
|
|
if (!settings.checkboxStoredRefs[checkbox]) {
|
|
return new Set();
|
|
} else {
|
|
return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
|
|
}
|
|
}
|
|
|
|
function getCheckboxState(checkbox, references) {
|
|
var storedRefsSet = getStoredCheckboxRefs(checkbox);
|
|
var currentRefsSet = new Set(references.map(r => r[1]));
|
|
// Get difference of current - stored
|
|
var difference = new Set(currentRefsSet);
|
|
for (ref of storedRefsSet) {
|
|
difference.delete(ref);
|
|
}
|
|
if (difference.size == 0) {
|
|
// All the current refs are stored
|
|
return "checked";
|
|
} else if (difference.size == currentRefsSet.size) {
|
|
// None of the current refs are stored
|
|
return "unchecked";
|
|
} else {
|
|
// Some of the refs are stored
|
|
return "indeterminate";
|
|
}
|
|
}
|
|
|
|
function setBomCheckboxState(checkbox, element, references) {
|
|
var state = getCheckboxState(checkbox, references);
|
|
element.checked = (state == "checked");
|
|
element.indeterminate = (state == "indeterminate");
|
|
}
|
|
|
|
function createCheckboxChangeHandler(checkbox, references, row) {
|
|
return function () {
|
|
refsSet = getStoredCheckboxRefs(checkbox);
|
|
var markWhenChecked = settings.markWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (this.checked) {
|
|
// checkbox ticked
|
|
for (var ref of references) {
|
|
refsSet.add(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.add("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.add(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'checked';
|
|
} else {
|
|
// checkbox unticked
|
|
for (var ref of references) {
|
|
refsSet.delete(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.remove("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.delete(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'unchecked';
|
|
}
|
|
settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
updateCheckboxStats(checkbox);
|
|
EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
|
|
}
|
|
}
|
|
|
|
function clearHighlightedFootprints() {
|
|
if (currentHighlightedRowId) {
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
currentHighlightedRowId = null;
|
|
highlightedFootprints = [];
|
|
highlightedNet = null;
|
|
}
|
|
}
|
|
|
|
function createRowHighlightHandler(rowid, refs, net) {
|
|
return function () {
|
|
if (currentHighlightedRowId) {
|
|
if (currentHighlightedRowId == rowid) {
|
|
return;
|
|
}
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
}
|
|
document.getElementById(rowid).classList.add("highlighted");
|
|
currentHighlightedRowId = rowid;
|
|
highlightedFootprints = refs ? refs.map(r => r[1]) : [];
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
|
|
rowid: rowid,
|
|
refs: refs,
|
|
net: net
|
|
});
|
|
}
|
|
}
|
|
|
|
function 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 (pcbdata.bom.fields[ref[1]][i].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findRefInEntry(entry) {
|
|
return entry.filter(r => r[0].toLowerCase() == reflookup);
|
|
}
|
|
|
|
function highlightFilter(s) {
|
|
if (!filter) {
|
|
return s;
|
|
}
|
|
var parts = s.toLowerCase().split(filter);
|
|
if (parts.length == 1) {
|
|
return s;
|
|
}
|
|
var r = "";
|
|
var pos = 0;
|
|
for (var i in parts) {
|
|
if (i > 0) {
|
|
r += '<mark class="highlight">' +
|
|
s.substring(pos, pos + filter.length) +
|
|
'</mark>';
|
|
pos += filter.length;
|
|
}
|
|
r += s.substring(pos, pos + parts[i].length);
|
|
pos += parts[i].length;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function checkboxSetUnsetAllHandler(checkboxname) {
|
|
return function () {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var allset = true;
|
|
var checkbox;
|
|
var row;
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
if (!checkbox.checked || checkbox.indeterminate) {
|
|
allset = false;
|
|
break;
|
|
}
|
|
}
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = !allset;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
}
|
|
}
|
|
|
|
function createColumnHeader(name, cls, comparator, is_checkbox = false) {
|
|
var th = document.createElement("TH");
|
|
th.innerHTML = name;
|
|
th.classList.add(cls);
|
|
if (is_checkbox)
|
|
th.setAttribute("col_name", "bom-checkbox");
|
|
else
|
|
th.setAttribute("col_name", name);
|
|
var span = document.createElement("SPAN");
|
|
span.classList.add("sortmark");
|
|
span.classList.add("none");
|
|
th.appendChild(span);
|
|
var spacer = document.createElement("div");
|
|
spacer.className = "column-spacer";
|
|
th.appendChild(spacer);
|
|
spacer.onclick = function () {
|
|
if (currentSortColumn && th !== currentSortColumn) {
|
|
// Currently sorted by another column
|
|
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
if (currentSortColumn && th === currentSortColumn) {
|
|
// Already sorted by this column
|
|
if (currentSortOrder == "asc") {
|
|
// Sort by this column, descending order
|
|
bomSortFunction = function (a, b) {
|
|
return -comparator(a, b);
|
|
}
|
|
currentSortColumn.childNodes[1].classList.remove("asc");
|
|
currentSortColumn.childNodes[1].classList.add("desc");
|
|
currentSortOrder = "desc";
|
|
} else {
|
|
// Unsort
|
|
bomSortFunction = null;
|
|
currentSortColumn.childNodes[1].classList.remove("desc");
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
} else {
|
|
// Sort by this column, ascending order
|
|
bomSortFunction = comparator;
|
|
currentSortColumn = th;
|
|
currentSortColumn.childNodes[1].classList.remove("none");
|
|
currentSortColumn.childNodes[1].classList.add("asc");
|
|
currentSortOrder = "asc";
|
|
}
|
|
populateBomBody();
|
|
}
|
|
if (is_checkbox) {
|
|
spacer.onclick = fancyDblClickHandler(
|
|
spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
|
|
}
|
|
return th;
|
|
}
|
|
|
|
function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
|
|
while (bomhead.firstChild) {
|
|
bomhead.removeChild(bomhead.firstChild);
|
|
}
|
|
var tr = document.createElement("TR");
|
|
var th = document.createElement("TH");
|
|
th.classList.add("numCol");
|
|
|
|
var vismenu = document.createElement("div");
|
|
vismenu.id = "vismenu";
|
|
vismenu.classList.add("menu");
|
|
|
|
var visbutton = document.createElement("div");
|
|
visbutton.classList.add("visbtn");
|
|
visbutton.classList.add("hideonprint");
|
|
|
|
var viscontent = document.createElement("div");
|
|
viscontent.classList.add("menu-content");
|
|
viscontent.id = "vismenu-content";
|
|
|
|
settings.columnOrder.forEach(column => {
|
|
if (typeof column !== "string")
|
|
return;
|
|
|
|
// Skip empty columns
|
|
if (column === "checkboxes" && settings.checkboxes.length == 0)
|
|
return;
|
|
else if (column === "Quantity" && settings.bommode == "ungrouped")
|
|
return;
|
|
|
|
var label = document.createElement("label");
|
|
label.classList.add("menu-label");
|
|
|
|
var input = document.createElement("input");
|
|
input.classList.add("visibility_checkbox");
|
|
input.type = "checkbox";
|
|
input.onchange = function (e) {
|
|
setShowBOMColumn(column, e.target.checked)
|
|
};
|
|
input.checked = !(settings.hiddenColumns.includes(column));
|
|
|
|
label.appendChild(input);
|
|
if (column.length > 0)
|
|
label.append(column[0].toUpperCase() + column.slice(1));
|
|
|
|
viscontent.appendChild(label);
|
|
});
|
|
|
|
viscontent.childNodes[0].classList.add("menu-label-top");
|
|
|
|
vismenu.appendChild(visbutton);
|
|
if (settings.bommode != "netlist") {
|
|
vismenu.appendChild(viscontent);
|
|
th.appendChild(vismenu);
|
|
}
|
|
tr.appendChild(th);
|
|
|
|
var checkboxCompareClosure = function (checkbox) {
|
|
return (a, b) => {
|
|
var stateA = getCheckboxState(checkbox, a);
|
|
var stateB = getCheckboxState(checkbox, b);
|
|
if (stateA > stateB) return -1;
|
|
if (stateA < stateB) return 1;
|
|
return 0;
|
|
}
|
|
}
|
|
var stringFieldCompareClosure = function (fieldIndex) {
|
|
return (a, b) => {
|
|
var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
|
|
var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
|
|
if (fa != fb) return fa > fb ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
|
|
var compareRefs = (a, b) => {
|
|
var ra = referenceRegex.exec(a);
|
|
var rb = referenceRegex.exec(b);
|
|
if (ra === null || rb === null) {
|
|
if (a != b) return a > b ? 1 : -1;
|
|
return 0;
|
|
} else {
|
|
if (ra.groups.prefix != rb.groups.prefix) {
|
|
return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
|
|
}
|
|
if (ra.groups.number != rb.groups.number) {
|
|
return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
if (settings.bommode == "netlist") {
|
|
th = createColumnHeader("Net name", "bom-netname", (a, b) => {
|
|
if (a > b) return -1;
|
|
if (a < b) return 1;
|
|
return 0;
|
|
});
|
|
tr.appendChild(th);
|
|
} else {
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
var valueIndex = config.fields.indexOf("Value");
|
|
var footprintIndex = config.fields.indexOf("Footprint");
|
|
columns.forEach((column) => {
|
|
if (column === placeHolderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
th = createColumnHeader(
|
|
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
|
|
tr.appendChild(th);
|
|
}
|
|
} else if (column === "References") {
|
|
tr.appendChild(createColumnHeader("References", "references", (a, b) => {
|
|
var i = 0;
|
|
while (i < a.length && i < b.length) {
|
|
if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
|
|
i++;
|
|
}
|
|
return a.length - b.length;
|
|
}));
|
|
} else if (column === "Value") {
|
|
tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
|
|
var ra = a[0][1], rb = b[0][1];
|
|
return valueCompare(
|
|
pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
|
|
pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
|
|
}));
|
|
return;
|
|
} else if (column === "Footprint") {
|
|
tr.appendChild(createColumnHeader(
|
|
"Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
|
|
return a.length - b.length;
|
|
}));
|
|
} else {
|
|
// Other fields
|
|
var i = config.fields.indexOf(column);
|
|
if (i < 0)
|
|
return;
|
|
tr.appendChild(createColumnHeader(
|
|
column, `field${i + 1}`, stringFieldCompareClosure(i)));
|
|
}
|
|
});
|
|
}
|
|
bomhead.appendChild(tr);
|
|
}
|
|
|
|
function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
|
|
while (bom.firstChild) {
|
|
bom.removeChild(bom.firstChild);
|
|
}
|
|
highlightHandlers = [];
|
|
footprintIndexToHandler = {};
|
|
netsToHandler = {};
|
|
currentHighlightedRowId = null;
|
|
var first = true;
|
|
if (settings.bommode == "netlist") {
|
|
bomtable = pcbdata.nets.slice();
|
|
} else {
|
|
switch (settings.canvaslayout) {
|
|
case 'F':
|
|
bomtable = pcbdata.bom.F.slice();
|
|
break;
|
|
case 'FB':
|
|
bomtable = pcbdata.bom.both.slice();
|
|
break;
|
|
case 'B':
|
|
bomtable = pcbdata.bom.B.slice();
|
|
break;
|
|
}
|
|
if (settings.bommode == "ungrouped") {
|
|
// expand bom table
|
|
expandedTable = []
|
|
for (var bomentry of bomtable) {
|
|
for (var ref of bomentry) {
|
|
expandedTable.push([ref]);
|
|
}
|
|
}
|
|
bomtable = expandedTable;
|
|
}
|
|
}
|
|
if (bomSortFunction) {
|
|
bomtable = bomtable.sort(bomSortFunction);
|
|
}
|
|
for (var i in bomtable) {
|
|
var bomentry = bomtable[i];
|
|
if (filter && !entryMatches(bomentry)) {
|
|
continue;
|
|
}
|
|
var references = null;
|
|
var netname = null;
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
var rownum = +i + 1;
|
|
tr.id = "bomrow" + rownum;
|
|
td.textContent = rownum;
|
|
tr.appendChild(td);
|
|
if (settings.bommode == "netlist") {
|
|
netname = bomentry;
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(netname ? netname : "<no net>");
|
|
tr.appendChild(td);
|
|
} else {
|
|
if (reflookup) {
|
|
references = findRefInEntry(bomentry);
|
|
if (references.length == 0) {
|
|
continue;
|
|
}
|
|
} else {
|
|
references = bomentry;
|
|
}
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
columns.forEach((column) => {
|
|
if (column === placeholderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
if (checkbox) {
|
|
td = document.createElement("TD");
|
|
var input = document.createElement("input");
|
|
input.type = "checkbox";
|
|
input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
|
|
setBomCheckboxState(checkbox, input, references);
|
|
if (input.checked && settings.markWhenChecked == checkbox) {
|
|
tr.classList.add("checked");
|
|
}
|
|
td.appendChild(input);
|
|
tr.appendChild(td);
|
|
}
|
|
}
|
|
} else if (column === "References") {
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
|
|
tr.appendChild(td);
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
// Quantity
|
|
td = document.createElement("TD");
|
|
td.textContent = references.length;
|
|
tr.appendChild(td);
|
|
} else {
|
|
// All the other fields
|
|
var field_index = config.fields.indexOf(column)
|
|
if (field_index < 0)
|
|
return;
|
|
var valueSet = new Set();
|
|
references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(Array.from(valueSet).join(", "));
|
|
tr.appendChild(td);
|
|
}
|
|
});
|
|
}
|
|
bom.appendChild(tr);
|
|
var handler = createRowHighlightHandler(tr.id, references, netname);
|
|
tr.onmousemove = handler;
|
|
highlightHandlers.push({
|
|
id: tr.id,
|
|
handler: handler,
|
|
});
|
|
if (references !== null) {
|
|
for (var refIndex of references.map(r => r[1])) {
|
|
footprintIndexToHandler[refIndex] = handler;
|
|
}
|
|
}
|
|
if (netname !== null) {
|
|
netsToHandler[netname] = handler;
|
|
}
|
|
if ((filter || reflookup) && first) {
|
|
handler();
|
|
first = false;
|
|
}
|
|
}
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
|
|
filter: filter,
|
|
reflookup: reflookup,
|
|
checkboxes: settings.checkboxes,
|
|
bommode: settings.bommode,
|
|
});
|
|
}
|
|
|
|
function highlightPreviousRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[0].id == currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
for (var i = 0; i < highlightHandlers.length - 1; i++) {
|
|
if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function highlightNextRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
for (var i = 1; i < highlightHandlers.length; i++) {
|
|
if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function populateBomTable() {
|
|
populateBomHeader();
|
|
populateBomBody();
|
|
setBomHandlers();
|
|
resizableGrid(bomhead);
|
|
}
|
|
|
|
function footprintsClicked(footprintIndexes) {
|
|
var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
|
|
for (var i = 1; i <= footprintIndexes.length; i++) {
|
|
var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
|
|
if (refIndex in footprintIndexToHandler) {
|
|
lastClicked = refIndex;
|
|
footprintIndexToHandler[refIndex]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function netClicked(net) {
|
|
if (net in netsToHandler) {
|
|
netsToHandler[net]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
} else {
|
|
clearHighlightedFootprints();
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
}
|
|
}
|
|
|
|
function updateFilter(input) {
|
|
filter = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function updateRefLookup(input) {
|
|
reflookup = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function changeCanvasLayout(layout) {
|
|
document.getElementById("fl-btn").classList.remove("depressed");
|
|
document.getElementById("fb-btn").classList.remove("depressed");
|
|
document.getElementById("bl-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'F':
|
|
document.getElementById("fl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(1);
|
|
}
|
|
break;
|
|
case 'B':
|
|
document.getElementById("bl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(0);
|
|
}
|
|
break;
|
|
default:
|
|
document.getElementById("fb-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.setSizes([50, 50]);
|
|
}
|
|
}
|
|
settings.canvaslayout = layout;
|
|
writeStorage("canvaslayout", layout);
|
|
resizeAll();
|
|
changeBomMode(settings.bommode);
|
|
}
|
|
|
|
function populateMetadata() {
|
|
document.getElementById("title").innerHTML = pcbdata.metadata.title;
|
|
document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
|
|
document.getElementById("company").innerHTML = pcbdata.metadata.company;
|
|
document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
|
|
if (pcbdata.metadata.title != "") {
|
|
document.title = pcbdata.metadata.title + " BOM";
|
|
}
|
|
// Calculate board stats
|
|
var fp_f = 0,
|
|
fp_b = 0,
|
|
pads_f = 0,
|
|
pads_b = 0,
|
|
pads_th = 0;
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.bom.skipped.includes(i)) continue;
|
|
var mod = pcbdata.footprints[i];
|
|
if (mod.layer == "F") {
|
|
fp_f++;
|
|
} else {
|
|
fp_b++;
|
|
}
|
|
for (var pad of mod.pads) {
|
|
if (pad.type == "th") {
|
|
pads_th++;
|
|
} else {
|
|
if (pad.layers.includes("F")) {
|
|
pads_f++;
|
|
}
|
|
if (pad.layers.includes("B")) {
|
|
pads_b++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById("stats-components-front").innerHTML = fp_f;
|
|
document.getElementById("stats-components-back").innerHTML = fp_b;
|
|
document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
|
|
document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
|
|
document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
|
|
document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
|
|
document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
|
|
document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
|
|
document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
|
|
document.getElementById("stats-th-pads").innerHTML = pads_th;
|
|
// Update version string
|
|
document.getElementById("github-link").innerHTML = "InteractiveHtmlBom " +
|
|
/^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
|
|
}
|
|
|
|
function changeBomLayout(layout) {
|
|
document.getElementById("bom-btn").classList.remove("depressed");
|
|
document.getElementById("lr-btn").classList.remove("depressed");
|
|
document.getElementById("tb-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'bom-only':
|
|
document.getElementById("bom-btn").classList.add("depressed");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
document.getElementById("frontcanvas").style.display = "none";
|
|
document.getElementById("backcanvas").style.display = "none";
|
|
document.getElementById("bot").style.height = "";
|
|
break;
|
|
case 'top-bottom':
|
|
document.getElementById("tb-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("bot").style.height = "calc(100% - 80px)";
|
|
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("bot").style.height = "calc(100% - 80px)";
|
|
document.getElementById("bomdiv").classList.add("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.add("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.remove("split-horizontal");
|
|
document.getElementById("backcanvas").classList.remove("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
direction: "vertical",
|
|
onDragEnd: resizeAll
|
|
});
|
|
}
|
|
settings.bomlayout = layout;
|
|
writeStorage("bomlayout", layout);
|
|
changeCanvasLayout(settings.canvaslayout);
|
|
}
|
|
|
|
function changeBomMode(mode) {
|
|
document.getElementById("bom-grouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-netlist-btn").classList.remove("depressed");
|
|
var chkbxs = document.getElementsByClassName("visibility_checkbox");
|
|
|
|
switch (mode) {
|
|
case 'grouped':
|
|
document.getElementById("bom-grouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'ungrouped':
|
|
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'netlist':
|
|
document.getElementById("bom-netlist-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = true;
|
|
}
|
|
}
|
|
|
|
writeStorage("bommode", mode);
|
|
if (mode != settings.bommode) {
|
|
settings.bommode = mode;
|
|
bomSortFunction = null;
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
clearHighlightedFootprints();
|
|
}
|
|
populateBomTable();
|
|
}
|
|
|
|
function focusFilterField() {
|
|
focusInputField(document.getElementById("filter"));
|
|
}
|
|
|
|
function focusRefLookupField() {
|
|
focusInputField(document.getElementById("reflookup"));
|
|
}
|
|
|
|
function toggleBomCheckbox(bomrowid, checkboxnum) {
|
|
if (!bomrowid || checkboxnum > settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
|
|
checkbox.checked = !checkbox.checked;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function checkBomCheckbox(bomrowid, checkboxname) {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = true;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function setBomCheckboxes(value) {
|
|
writeStorage("bomCheckboxes", value);
|
|
settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
|
|
prepCheckboxes();
|
|
populateMarkWhenCheckedOptions();
|
|
setMarkWhenChecked(settings.markWhenChecked);
|
|
}
|
|
|
|
function setMarkWhenChecked(value) {
|
|
writeStorage("markWhenChecked", value);
|
|
settings.markWhenChecked = value;
|
|
markedFootprints.clear();
|
|
for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
|
|
markedFootprints.add(ref);
|
|
}
|
|
populateBomTable();
|
|
drawHighlights();
|
|
}
|
|
|
|
function prepCheckboxes() {
|
|
var table = document.getElementById("checkbox-stats");
|
|
while (table.childElementCount > 1) {
|
|
table.removeChild(table.lastChild);
|
|
}
|
|
if (settings.checkboxes.length) {
|
|
table.style.display = "";
|
|
} else {
|
|
table.style.display = "none";
|
|
}
|
|
for (var checkbox of settings.checkboxes) {
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
td.innerHTML = checkbox;
|
|
tr.appendChild(td);
|
|
td = document.createElement("TD");
|
|
td.id = "checkbox-stats-" + checkbox;
|
|
var progressbar = document.createElement("div");
|
|
progressbar.classList.add("bar");
|
|
td.appendChild(progressbar);
|
|
var text = document.createElement("div");
|
|
text.classList.add("text");
|
|
td.appendChild(text);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
updateCheckboxStats(checkbox);
|
|
}
|
|
}
|
|
|
|
function populateMarkWhenCheckedOptions() {
|
|
var container = document.getElementById("markWhenCheckedContainer");
|
|
|
|
if (settings.checkboxes.length == 0) {
|
|
container.parentElement.style.display = "none";
|
|
return;
|
|
}
|
|
|
|
container.innerHTML = '';
|
|
container.parentElement.style.display = "inline-block";
|
|
|
|
function createOption(name, displayName) {
|
|
var id = "markWhenChecked-" + name;
|
|
|
|
var div = document.createElement("div");
|
|
div.classList.add("radio-container");
|
|
|
|
var input = document.createElement("input");
|
|
input.type = "radio";
|
|
input.name = "markWhenChecked";
|
|
input.value = name;
|
|
input.id = id;
|
|
input.onchange = () => setMarkWhenChecked(name);
|
|
div.appendChild(input);
|
|
|
|
// Preserve the selected element when the checkboxes change
|
|
if (name == settings.markWhenChecked) {
|
|
input.checked = true;
|
|
}
|
|
|
|
var label = document.createElement("label");
|
|
label.innerHTML = displayName;
|
|
label.htmlFor = id;
|
|
div.appendChild(label);
|
|
|
|
container.appendChild(div);
|
|
}
|
|
createOption("", "None");
|
|
for (var checkbox of settings.checkboxes) {
|
|
createOption(checkbox, checkbox);
|
|
}
|
|
}
|
|
|
|
function updateCheckboxStats(checkbox) {
|
|
var checked = getStoredCheckboxRefs(checkbox).size;
|
|
var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
|
|
var percent = checked * 100.0 / total;
|
|
var td = document.getElementById("checkbox-stats-" + checkbox);
|
|
td.firstChild.style.width = percent + "%";
|
|
td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
|
|
}
|
|
|
|
function constrain(number, min, max){
|
|
return Math.min(Math.max(parseInt(number), min), max);
|
|
}
|
|
|
|
document.onkeydown = function (e) {
|
|
switch (e.key) {
|
|
case "n":
|
|
if (document.activeElement.type == "text") {
|
|
return;
|
|
}
|
|
if (currentHighlightedRowId !== null) {
|
|
checkBomCheckbox(currentHighlightedRowId, "placed");
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
}
|
|
break;
|
|
case "ArrowUp":
|
|
highlightPreviousRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowDown":
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowLeft":
|
|
case "ArrowRight":
|
|
if (document.activeElement.type != "text"){
|
|
e.preventDefault();
|
|
let boardRotationElement = document.getElementById("boardRotation")
|
|
settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
|
|
if (e.key == "ArrowLeft"){
|
|
settings.boardRotation += 3; // 15 degrees
|
|
}
|
|
else{
|
|
settings.boardRotation -= 3;
|
|
}
|
|
settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
|
|
boardRotationElement.value = settings.boardRotation
|
|
setBoardRotation(settings.boardRotation);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.altKey) {
|
|
switch (e.key) {
|
|
case "f":
|
|
focusFilterField();
|
|
e.preventDefault();
|
|
break;
|
|
case "r":
|
|
focusRefLookupField();
|
|
e.preventDefault();
|
|
break;
|
|
case "z":
|
|
changeBomLayout("bom-only");
|
|
e.preventDefault();
|
|
break;
|
|
case "x":
|
|
changeBomLayout("left-right");
|
|
e.preventDefault();
|
|
break;
|
|
case "c":
|
|
changeBomLayout("top-bottom");
|
|
e.preventDefault();
|
|
break;
|
|
case "v":
|
|
changeCanvasLayout("F");
|
|
e.preventDefault();
|
|
break;
|
|
case "b":
|
|
changeCanvasLayout("FB");
|
|
e.preventDefault();
|
|
break;
|
|
case "n":
|
|
changeCanvasLayout("B");
|
|
e.preventDefault();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.key >= '1' && e.key <= '9') {
|
|
toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
|
|
function hideNetlistButton() {
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
|
|
document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
|
|
document.getElementById("bom-netlist-btn").style.display = "none";
|
|
}
|
|
|
|
window.onload = function (e) {
|
|
initUtils();
|
|
initRender();
|
|
initStorage();
|
|
initDefaults();
|
|
cleanGutters();
|
|
populateMetadata();
|
|
dbgdiv = document.getElementById("dbg");
|
|
bom = document.getElementById("bombody");
|
|
bomhead = document.getElementById("bomhead");
|
|
filter = "";
|
|
reflookup = "";
|
|
if (!("nets" in pcbdata)) {
|
|
hideNetlistButton();
|
|
}
|
|
initDone = true;
|
|
setBomCheckboxes(document.getElementById("bomCheckboxes").value);
|
|
// Triggers render
|
|
changeBomLayout(settings.bomlayout);
|
|
|
|
// Users may leave fullscreen without touching the checkbox. Uncheck.
|
|
document.addEventListener('fullscreenchange', () => {
|
|
if (!document.fullscreenElement)
|
|
document.getElementById('fullscreenCheckbox').checked = false;
|
|
});
|
|
}
|
|
|
|
window.onresize = resizeAll;
|
|
window.matchMedia("print").addListener(resizeAll);
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="topmostdiv" class="topmostdiv">
|
|
<div id="top">
|
|
<div style="float: right; height: 100%;">
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<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="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
|
|
Highlight first pin
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
|
|
Continuous redraw on drag
|
|
</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">
|
|
<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"
|
|
style="float: right; position: relative; top: 8px">
|
|
<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"
|
|
style="float: right; position: relative; top: 8px">
|
|
<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"
|
|
style="float: right; position: relative; top: 8px">
|
|
<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" style="float: right; top: 8px;">
|
|
<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" style="float: right; top: 8px;">
|
|
<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>
|
|
</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 id="fileinfodiv" style="overflow: auto;">
|
|
<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>
|
|
<div id="bot" class="split" style="height: calc(100% - 80px)">
|
|
<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>
|