4346 lines
377 KiB
HTML
4346 lines
377 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Interactive BOM for KiCAD</title>
|
|
<style type="text/css">
|
|
:root {
|
|
--pcb-edge-color: black;
|
|
--pad-color: #878787;
|
|
--pad-hole-color: #CCCCCC;
|
|
--pad-color-highlight: #D04040;
|
|
--pad-color-highlight-both: #D0D040;
|
|
--pad-color-highlight-marked: #44a344;
|
|
--pin1-outline-color: #ffb629;
|
|
--pin1-outline-color-highlight: #ffb629;
|
|
--pin1-outline-color-highlight-both: #fcbb39;
|
|
--pin1-outline-color-highlight-marked: #fdbe41;
|
|
--silkscreen-edge-color: #aa4;
|
|
--silkscreen-polygon-color: #4aa;
|
|
--silkscreen-text-color: #4aa;
|
|
--fabrication-edge-color: #907651;
|
|
--fabrication-polygon-color: #907651;
|
|
--fabrication-text-color: #a27c24;
|
|
--track-color: #def5f1;
|
|
--track-color-highlight: #D04040;
|
|
--zone-color: #def5f1;
|
|
--zone-color-highlight: #d0404080;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0px;
|
|
height: 100%;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark.topmostdiv {
|
|
--pcb-edge-color: #eee;
|
|
--pad-color: #808080;
|
|
--pin1-outline-color: #ffa800;
|
|
--pin1-outline-color-highlight: #ccff00;
|
|
--track-color: #42524f;
|
|
--zone-color: #42524f;
|
|
background-color: #252c30;
|
|
color: #eee;
|
|
}
|
|
|
|
button {
|
|
background-color: #eee;
|
|
border: 1px solid #888;
|
|
color: black;
|
|
height: 44px;
|
|
width: 44px;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
font-size: 14px;
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.dark button {
|
|
/* This will be inverted */
|
|
background-color: #c3b7b5;
|
|
}
|
|
|
|
button.depressed {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark button.depressed {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 0;
|
|
}
|
|
|
|
button#tb-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#lr-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#bom-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-grouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-ungrouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-netlist-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#copy {
|
|
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
|
|
background-position: 6px 6px;
|
|
background-repeat: no-repeat;
|
|
background-size: 26px 26px;
|
|
border-radius: 6px;
|
|
height: 40px;
|
|
width: 40px;
|
|
margin: 10px 5px;
|
|
}
|
|
|
|
button#copy:active {
|
|
box-shadow: inset 0px 0px 5px #6c6c6c;
|
|
}
|
|
|
|
textarea.clipboard-temp {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 2em;
|
|
height: 2em;
|
|
padding: 0;
|
|
border: None;
|
|
outline: None;
|
|
box-shadow: None;
|
|
background: transparent;
|
|
}
|
|
|
|
.left-most-button {
|
|
border-right: 0;
|
|
border-top-left-radius: 6px;
|
|
border-bottom-left-radius: 6px;
|
|
}
|
|
|
|
.middle-button {
|
|
border-right: 0;
|
|
}
|
|
|
|
.right-most-button {
|
|
border-top-right-radius: 6px;
|
|
border-bottom-right-radius: 6px;
|
|
}
|
|
|
|
.button-container {
|
|
font-size: 0;
|
|
margin: 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;
|
|
}
|
|
|
|
|
|
</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 copyToClipboard() {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
text = text + node.firstChild.nodeValue;
|
|
}
|
|
if (node != bomhead.childNodes[0].lastChild) {
|
|
text += '\t';
|
|
}
|
|
}
|
|
text += '\n';
|
|
for (var row of bombody.childNodes) {
|
|
for (var cell of row.childNodes) {
|
|
for (var node of cell.childNodes) {
|
|
if (node.nodeName == "INPUT") {
|
|
if (node.checked) {
|
|
text = text + '✓';
|
|
}
|
|
} else if (node.nodeName == "MARK") {
|
|
text = text + node.firstChild.nodeValue;
|
|
} else {
|
|
text = text + node.nodeValue;
|
|
}
|
|
}
|
|
if (cell != row.lastChild) {
|
|
text += '\t';
|
|
}
|
|
}
|
|
text += '\n';
|
|
}
|
|
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 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;
|
|
}
|
|
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);
|
|
var fontsize = 1.55;
|
|
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) + "%)";
|
|
}
|
|
|
|
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;
|
|
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>
|
|
</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>
|
|
</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="copyToClipboard()"></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>
|