3683 lines
317 KiB
HTML
3683 lines
317 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;
|
|
--pin1-outline-color: #ffb629;
|
|
--pin1-outline-color-highlight: #b4ff03;
|
|
--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;
|
|
}
|
|
|
|
.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: #aaa;
|
|
}
|
|
|
|
.dark .bom tr.checked {
|
|
color: #666;
|
|
}
|
|
|
|
.bom tr {
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.bom .numCol {
|
|
width: 25px;
|
|
}
|
|
|
|
.bom .Description {
|
|
width: 10%;
|
|
}
|
|
|
|
.bom .Part {
|
|
width: 10%;
|
|
}
|
|
|
|
.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;
|
|
}
|
|
|
|
.dark .statsbtn, .dark .savebtn, .dark .menubtn, .dark .iobtn {
|
|
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 {
|
|
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;
|
|
}
|
|
|
|
|
|
</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": true, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "extra_fields": []}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
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.*)?$", "");
|
|
for (var bom_type of ["both", "F", "B"]) {
|
|
for (var row of pcbdata.bom[bom_type]) {
|
|
row.push(parseValue(row[1], row[3][0][0]));
|
|
}
|
|
}
|
|
}
|
|
|
|
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("darkenWhenChecked", settings.darkenWhenChecked);
|
|
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;
|
|
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,
|
|
}
|
|
|
|
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.darkenWhenChecked = readStorage("darkenWhenChecked") || "";
|
|
populateDarkenWhenCheckedOptions();
|
|
|
|
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);
|
|
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.lineWidth = Math.max(1 / scalefactor, edge.width);
|
|
ctx.lineCap = "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);
|
|
}
|
|
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, shape, color) {
|
|
ctx.save();
|
|
ctx.fillStyle = color;
|
|
if (!("svgpath" in shape)) {
|
|
ctx.translate(...shape.pos);
|
|
ctx.rotate(deg2rad(-shape.angle));
|
|
}
|
|
ctx.fill(getPolygonsPath(shape));
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawDrawing(ctx, scalefactor, drawing, color) {
|
|
if (["segment", "arc", "circle", "curve"].includes(drawing.type)) {
|
|
drawedge(ctx, scalefactor, drawing, color);
|
|
} else if (drawing.type == "polygon") {
|
|
drawPolygonShape(ctx, 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, padColor, padHoleColor, outlineColor, 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 = padColor;
|
|
ctx.fillRect(0, 0, ...footprint.bbox.size);
|
|
ctx.globalAlpha = 1;
|
|
ctx.strokeStyle = padColor;
|
|
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, padColor);
|
|
}
|
|
}
|
|
// draw pads
|
|
if (settings.renderPads) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, padColor, outline);
|
|
if (pad.pin1 && settings.highlightpin1) {
|
|
drawPad(ctx, pad, outlineColor, true);
|
|
}
|
|
}
|
|
}
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, padHoleColor);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawEdgeCuts(canvas, scalefactor) {
|
|
var ctx = canvas.getContext("2d");
|
|
var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
|
|
for (var edge of pcbdata.edges) {
|
|
drawedge(ctx, scalefactor, edge, edgecolor);
|
|
}
|
|
}
|
|
|
|
function drawFootprints(canvas, layer, scalefactor, highlight) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
var style = getComputedStyle(topmostdiv);
|
|
var padColor = style.getPropertyValue('--pad-color');
|
|
var padHoleColor = style.getPropertyValue('--pad-hole-color');
|
|
var outlineColor = style.getPropertyValue('--pin1-outline-color');
|
|
if (highlight) {
|
|
padColor = style.getPropertyValue('--pad-color-highlight');
|
|
outlineColor = style.getPropertyValue('--pin1-outline-color-highlight');
|
|
}
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var mod = pcbdata.footprints[i];
|
|
var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
|
|
if (!highlight || highlightedFootprints.includes(i)) {
|
|
drawFootprint(ctx, layer, scalefactor, mod, padColor, padHoleColor, outlineColor, 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, 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 {
|
|
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 (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);
|
|
|
|
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);
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* 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 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 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 darkenWhenChecked = settings.darkenWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (this.checked) {
|
|
// checkbox ticked
|
|
for (var ref of references) {
|
|
refsSet.add(ref[1]);
|
|
}
|
|
if (darkenWhenChecked) {
|
|
row.classList.add("checked");
|
|
}
|
|
eventArgs.state = 'checked';
|
|
} else {
|
|
// checkbox unticked
|
|
for (var ref of references) {
|
|
refsSet.delete(ref[1]);
|
|
}
|
|
if (darkenWhenChecked) {
|
|
row.classList.remove("checked");
|
|
}
|
|
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
|
|
for (var ref of entry[3]) {
|
|
if (ref[0].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
// check extra fields
|
|
for (var i in config.extra_fields) {
|
|
if (entry[4][i].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
// check value
|
|
if (entry[1].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
// check footprint
|
|
if (entry[2].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findRefInEntry(entry) {
|
|
return entry[3].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) {
|
|
var th = document.createElement("TH");
|
|
th.innerHTML = name;
|
|
th.classList.add(cls);
|
|
th.style.cursor = "pointer";
|
|
var span = document.createElement("SPAN");
|
|
span.classList.add("sortmark");
|
|
span.classList.add("none");
|
|
th.appendChild(span);
|
|
th.onclick = function() {
|
|
if (currentSortColumn && this !== currentSortColumn) {
|
|
// Currently sorted by another column
|
|
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
if (currentSortColumn && this === 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 = this;
|
|
currentSortColumn.childNodes[1].classList.remove("none");
|
|
currentSortColumn.childNodes[1].classList.add("asc");
|
|
currentSortOrder = "asc";
|
|
}
|
|
populateBomBody();
|
|
}
|
|
return th;
|
|
}
|
|
|
|
function populateBomHeader() {
|
|
while (bomhead.firstChild) {
|
|
bomhead.removeChild(bomhead.firstChild);
|
|
}
|
|
var tr = document.createElement("TR");
|
|
var th = document.createElement("TH");
|
|
th.classList.add("numCol");
|
|
tr.appendChild(th);
|
|
var checkboxCompareClosure = function(checkbox) {
|
|
return (a, b) => {
|
|
var stateA = getCheckboxState(checkbox, a[3]);
|
|
var stateB = getCheckboxState(checkbox, b[3]);
|
|
if (stateA > stateB) return -1;
|
|
if (stateA < stateB) return 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 {
|
|
for (var checkbox of settings.checkboxes) {
|
|
th = createColumnHeader(
|
|
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox));
|
|
th.onclick = fancyDblClickHandler(
|
|
th, th.onclick.bind(th), checkboxSetUnsetAllHandler(checkbox));
|
|
tr.appendChild(th);
|
|
}
|
|
tr.appendChild(createColumnHeader("References", "References", (a, b) => {
|
|
var i = 0;
|
|
while (i < a[3].length && i < b[3].length) {
|
|
if (a[3][i] != b[3][i]) return a[3][i] > b[3][i] ? 1 : -1;
|
|
i++;
|
|
}
|
|
return a[3].length - b[3].length;
|
|
}));
|
|
// Extra fields
|
|
if (config.extra_fields.length > 0) {
|
|
var extraFieldCompareClosure = function(fieldIndex) {
|
|
return (a, b) => {
|
|
var fa = a[4][fieldIndex];
|
|
var fb = b[4][fieldIndex];
|
|
if (fa != fb) return fa > fb ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
for (var i in config.extra_fields) {
|
|
tr.appendChild(createColumnHeader(
|
|
config.extra_fields[i], "extra", extraFieldCompareClosure(i)));
|
|
}
|
|
}
|
|
tr.appendChild(createColumnHeader("Value", "Value", (a, b) => {
|
|
return valueCompare(a[5], b[5], a[1], b[1]);
|
|
}));
|
|
tr.appendChild(createColumnHeader("Footprint", "Footprint", (a, b) => {
|
|
if (a[2] != b[2]) return a[2] > b[2] ? 1 : -1;
|
|
else return 0;
|
|
}));
|
|
if (settings.bommode == "grouped") {
|
|
tr.appendChild(createColumnHeader("Quantity", "Quantity", (a, b) => {
|
|
return a[3].length - b[3].length;
|
|
}));
|
|
}
|
|
}
|
|
bomhead.appendChild(tr);
|
|
}
|
|
|
|
function populateBomBody() {
|
|
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[3]) {
|
|
expandedTable.push([1, bomentry[1], bomentry[2], [ref], bomentry[4], bomentry[5]]);
|
|
}
|
|
}
|
|
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[3];
|
|
}
|
|
// 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.darkenWhenChecked == checkbox) {
|
|
tr.classList.add("checked");
|
|
}
|
|
td.appendChild(input);
|
|
tr.appendChild(td);
|
|
}
|
|
}
|
|
// References
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
|
|
tr.appendChild(td);
|
|
// Extra fields
|
|
for (var i in config.extra_fields) {
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(bomentry[4][i]);
|
|
tr.appendChild(td);
|
|
}
|
|
// Value
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(bomentry[1]);
|
|
tr.appendChild(td);
|
|
// Footprint
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(bomentry[2]);
|
|
tr.appendChild(td);
|
|
if (settings.bommode == "grouped") {
|
|
// Quantity
|
|
td = document.createElement("TD");
|
|
td.textContent = bomentry[3].length;
|
|
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();
|
|
}
|
|
|
|
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");
|
|
switch (mode) {
|
|
case 'grouped':
|
|
document.getElementById("bom-grouped-btn").classList.add("depressed");
|
|
break;
|
|
case 'ungrouped':
|
|
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
|
|
break;
|
|
case 'netlist':
|
|
document.getElementById("bom-netlist-btn").classList.add("depressed");
|
|
}
|
|
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(",").filter((e) => e);
|
|
prepCheckboxes();
|
|
populateBomTable();
|
|
populateDarkenWhenCheckedOptions();
|
|
}
|
|
|
|
function setDarkenWhenChecked(value) {
|
|
writeStorage("darkenWhenChecked", value);
|
|
settings.darkenWhenChecked = value;
|
|
populateBomTable();
|
|
}
|
|
|
|
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 populateDarkenWhenCheckedOptions() {
|
|
var container = document.getElementById("darkenWhenCheckedContainer");
|
|
|
|
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 = "darkenWhenChecked-" + name;
|
|
|
|
var div = document.createElement("div");
|
|
div.classList.add("radio-container");
|
|
|
|
var input = document.createElement("input");
|
|
input.type = "radio";
|
|
input.name = "darkenWhenChecked";
|
|
input.value = name;
|
|
input.id = id;
|
|
input.onchange = () => setDarkenWhenChecked(name);
|
|
div.appendChild(input);
|
|
|
|
// Preserve the selected element when the checkboxes change
|
|
if (name == settings.darkenWhenChecked) {
|
|
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;
|
|
prepCheckboxes();
|
|
// 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">Darken when checked</div>
|
|
<div id="darkenWhenCheckedContainer"></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">
|
|
<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>
|