sfp_back2back/bom/ibom.html

3635 lines
291 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": true, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "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[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();
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 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 (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 : "&lt;no net&gt;");
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&nbsp;" +
/^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));
}
}
}
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>&#176;</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>