Files
mhardware/hp3478a-ch32-ext/bom/ibom.html
2025-11-30 04:50:53 +06:00

4710 lines
346 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive BOM for KiCAD</title>
<style type="text/css">
:root {
--pcb-edge-color: black;
--pad-color: #878787;
--pad-hole-color: #CCCCCC;
--pad-color-highlight: #D04040;
--pad-color-highlight-both: #D0D040;
--pad-color-highlight-marked: #44a344;
--pin1-outline-color: #ffb629;
--pin1-outline-color-highlight: #ffb629;
--pin1-outline-color-highlight-both: #fcbb39;
--pin1-outline-color-highlight-marked: #fdbe41;
--silkscreen-edge-color: #aa4;
--silkscreen-polygon-color: #4aa;
--silkscreen-text-color: #4aa;
--fabrication-edge-color: #907651;
--fabrication-polygon-color: #907651;
--fabrication-text-color: #a27c24;
--track-color: #def5f1;
--track-color-highlight: #D04040;
--zone-color: #def5f1;
--zone-color-highlight: #d0404080;
}
html,
body {
margin: 0px;
height: 100%;
font-family: Verdana, sans-serif;
}
.dark.topmostdiv {
--pcb-edge-color: #eee;
--pad-color: #808080;
--pin1-outline-color: #ffa800;
--pin1-outline-color-highlight: #ccff00;
--track-color: #42524f;
--zone-color: #42524f;
background-color: #252c30;
color: #eee;
}
button {
background-color: #eee;
border: 1px solid #888;
color: black;
height: 44px;
width: 44px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 14px;
font-weight: bolder;
}
.dark button {
/* This will be inverted */
background-color: #c3b7b5;
}
button.depressed {
background-color: #0a0;
color: white;
}
.dark button.depressed {
/* This will be inverted */
background-color: #b3b;
}
button:focus {
outline: 0;
}
button#tb-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}
button#lr-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}
button#bom-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-grouped-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-ungrouped-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}
button#bom-netlist-btn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}
button#copy {
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
background-position: 6px 6px;
background-repeat: no-repeat;
background-size: 26px 26px;
border-radius: 6px;
height: 40px;
width: 40px;
margin: 10px 5px;
}
button#copy:active {
box-shadow: inset 0px 0px 5px #6c6c6c;
}
textarea.clipboard-temp {
position: fixed;
top: 0;
left: 0;
width: 2em;
height: 2em;
padding: 0;
border: None;
outline: None;
box-shadow: None;
background: transparent;
}
.left-most-button {
border-right: 0;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
}
.middle-button {
border-right: 0;
}
.right-most-button {
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
}
.button-container {
font-size: 0;
margin: 0.4rem 0.4rem 0.4rem 0;
}
.dark .button-container {
filter: invert(1);
}
.button-container button {
background-size: 32px 32px;
background-position: 5px 5px;
background-repeat: no-repeat;
}
@media print {
.hideonprint {
display: none;
}
}
canvas {
cursor: crosshair;
}
canvas:active {
cursor: grabbing;
}
.fileinfo {
width: 100%;
max-width: 1000px;
border: none;
padding: 3px;
}
.fileinfo .title {
font-size: 20pt;
font-weight: bold;
}
.fileinfo td {
overflow: hidden;
white-space: nowrap;
max-width: 1px;
width: 50%;
text-overflow: ellipsis;
}
.bom {
border-collapse: collapse;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 10pt;
table-layout: fixed;
width: 100%;
margin-top: 1px;
position: relative;
}
.bom th,
.bom td {
border: 1px solid black;
padding: 5px;
word-wrap: break-word;
text-align: center;
position: relative;
}
.dark .bom th,
.dark .bom td {
border: 1px solid #777;
}
.bom th {
background-color: #CCCCCC;
background-clip: padding-box;
}
.dark .bom th {
background-color: #3b4749;
}
.bom tr.highlighted:nth-child(n) {
background-color: #cfc;
}
.dark .bom tr.highlighted:nth-child(n) {
background-color: #226022;
}
.bom tr:nth-child(even) {
background-color: #f2f2f2;
}
.dark .bom tr:nth-child(even) {
background-color: #313b40;
}
.bom tr.checked {
color: #1cb53d;
}
.dark .bom tr.checked {
color: #2cce54;
}
.bom tr {
transition: background-color 0.2s;
}
.bom .numCol {
width: 30px;
}
.bom .value {
width: 15%;
}
.bom .quantity {
width: 65px;
}
.bom th .sortmark {
position: absolute;
right: 1px;
top: 1px;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent #221 transparent;
transform-origin: 50% 85%;
transition: opacity 0.2s, transform 0.4s;
}
.dark .bom th .sortmark {
filter: invert(1);
}
.bom th .sortmark.none {
opacity: 0;
}
.bom th .sortmark.desc {
transform: rotate(180deg);
}
.bom th:hover .sortmark.none {
opacity: 0.5;
}
.bom .bom-checkbox {
width: 30px;
position: relative;
user-select: none;
-moz-user-select: none;
}
.bom .bom-checkbox:before {
content: "";
position: absolute;
border-width: 15px;
border-style: solid;
border-color: #51829f transparent transparent transparent;
visibility: hidden;
top: -15px;
}
.bom .bom-checkbox:after {
content: "Double click to set/unset all";
position: absolute;
color: white;
top: -35px;
left: -26px;
background: #51829f;
padding: 5px 15px;
border-radius: 8px;
white-space: nowrap;
visibility: hidden;
}
.bom .bom-checkbox:hover:before,
.bom .bom-checkbox:hover:after {
visibility: visible;
transition: visibility 0.2s linear 1s;
}
.split {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow-y: auto;
overflow-x: hidden;
background-color: inherit;
}
.split.split-horizontal,
.gutter.gutter-horizontal {
height: 100%;
float: left;
}
.gutter {
background-color: #ddd;
background-repeat: no-repeat;
background-position: 50%;
transition: background-color 0.3s;
}
.dark .gutter {
background-color: #777;
}
.gutter.gutter-horizontal {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
cursor: ew-resize;
width: 5px;
}
.gutter.gutter-vertical {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
cursor: ns-resize;
height: 5px;
}
.searchbox {
float: left;
height: 40px;
margin: 10px 5px;
padding: 12px 32px;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 18px;
box-sizing: border-box;
border: 1px solid #888;
border-radius: 6px;
outline: none;
background-color: #eee;
transition: background-color 0.2s, border 0.2s;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
background-position: 10px 10px;
background-repeat: no-repeat;
}
.dark .searchbox {
background-color: #111;
color: #eee;
}
.searchbox::placeholder {
color: #ccc;
}
.dark .searchbox::placeholder {
color: #666;
}
.filter {
width: calc(60% - 64px);
}
.reflookup {
width: calc(40% - 10px);
}
input[type=text]:focus {
background-color: white;
border: 1px solid #333;
}
.dark input[type=text]:focus {
background-color: #333;
border: 1px solid #ccc;
}
mark.highlight {
background-color: #5050ff;
color: #fff;
padding: 2px;
border-radius: 6px;
}
.dark mark.highlight {
background-color: #76a6da;
color: #111;
}
.menubtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
background-position: center;
background-repeat: no-repeat;
}
.statsbtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
.iobtn {
background-color: white;
border: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
}
.visbtn {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
background-position: center;
background-repeat: no-repeat;
padding: 15px;
}
#vismenu-content {
left: 0px;
font-family: Verdana, sans-serif;
}
.dark .statsbtn,
.dark .savebtn,
.dark .menubtn,
.dark .iobtn,
.dark .visbtn {
filter: invert(1);
}
.flexbox {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.savebtn {
background-color: #d6d6d6;
width: auto;
height: 30px;
flex-grow: 1;
margin: 5px;
border-radius: 4px;
}
.savebtn:active {
background-color: #0a0;
color: white;
}
.dark .savebtn:active {
/* This will be inverted */
background-color: #b3b;
}
.stats {
border-collapse: collapse;
font-size: 12pt;
table-layout: fixed;
width: 100%;
min-width: 450px;
}
.dark .stats td {
border: 1px solid #bbb;
}
.stats td {
border: 1px solid black;
padding: 5px;
word-wrap: break-word;
text-align: center;
position: relative;
}
#checkbox-stats div {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#checkbox-stats .bar {
background-color: rgba(28, 251, 0, 0.6);
}
.menu {
position: relative;
display: inline-block;
margin: 0.4rem 0.4rem 0.4rem 0;
}
.menu-content {
font-size: 12pt !important;
text-align: left !important;
font-weight: normal !important;
display: none;
position: absolute;
background-color: white;
right: 0;
min-width: 300px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 100;
padding: 8px;
}
.dark .menu-content {
background-color: #111;
}
.menu:hover .menu-content {
display: block;
}
.menu:hover .menubtn,
.menu:hover .iobtn,
.menu:hover .statsbtn {
background-color: #eee;
}
.menu-label {
display: inline-block;
padding: 8px;
border: 1px solid #ccc;
border-top: 0;
width: calc(100% - 18px);
}
.menu-label-top {
border-top: 1px solid #ccc;
}
.menu-textbox {
float: left;
height: 24px;
margin: 10px 5px;
padding: 5px 5px;
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: 14px;
box-sizing: border-box;
border: 1px solid #888;
border-radius: 4px;
outline: none;
background-color: #eee;
transition: background-color 0.2s, border 0.2s;
width: calc(100% - 10px);
}
.menu-textbox.invalid,
.dark .menu-textbox.invalid {
color: red;
}
.dark .menu-textbox {
background-color: #222;
color: #eee;
}
.radio-container {
margin: 4px;
}
.topmostdiv {
display: flex;
flex-direction: column;
width: 100%;
background-color: white;
transition: background-color 0.3s;
min-height: 100%;
}
#top {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
}
#topdivider {
border-bottom: 2px solid black;
display: flex;
justify-content: center;
align-items: center;
}
.dark #topdivider {
border-bottom: 2px solid #ccc;
}
#topdivider>div {
position: relative;
}
#toptoggle {
cursor: pointer;
user-select: none;
position: absolute;
padding: 0.1rem 0.3rem;
top: -0.4rem;
left: -1rem;
font-size: 1.4rem;
line-height: 60%;
border: 1px solid black;
border-radius: 1rem;
background-color: #fff;
z-index: 100;
}
.flipped {
transform: rotate(0.5turn);
}
.dark #toptoggle {
border: 1px solid #fff;
background-color: #222;
}
#fileinfodiv {
flex: 20rem 1 0;
overflow: auto;
}
#bomcontrols {
display: flex;
flex-direction: row-reverse;
}
#bomcontrols>* {
flex-shrink: 0;
}
#dbg {
display: block;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #aaa;
}
::-webkit-scrollbar-thumb {
background: #666;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
.slider {
-webkit-appearance: none;
width: 100%;
margin: 3px 0;
padding: 0;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
border-radius: 3px;
}
.slider:hover {
opacity: 1;
}
.slider:focus {
outline: none;
}
.slider::-webkit-slider-runnable-track {
-webkit-appearance: none;
width: 100%;
height: 8px;
background: #d3d3d3;
border-radius: 3px;
border: none;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
margin-top: -4px;
}
.dark .slider::-webkit-slider-thumb {
background: #3d3;
}
.slider::-moz-range-thumb {
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
}
.slider::-moz-range-track {
height: 8px;
background: #d3d3d3;
border-radius: 3px;
}
.dark .slider::-moz-range-thumb {
background: #3d3;
}
.slider::-ms-track {
width: 100%;
height: 8px;
border-width: 3px 0;
background: transparent;
border-color: transparent;
color: transparent;
transition: opacity .2s;
}
.slider::-ms-fill-lower {
background: #d3d3d3;
border: none;
border-radius: 3px;
}
.slider::-ms-fill-upper {
background: #d3d3d3;
border: none;
border-radius: 3px;
}
.slider::-ms-thumb {
width: 15px;
height: 15px;
border-radius: 50%;
background: #0a0;
cursor: pointer;
margin: 0;
}
.shameless-plug {
font-size: 0.8em;
text-align: center;
display: block;
}
a {
color: #0278a4;
}
.dark a {
color: #00b9fd;
}
#frontcanvas,
#backcanvas {
touch-action: none;
}
.placeholder {
border: 1px dashed #9f9fda !important;
background-color: #edf2f7 !important;
}
.dragging {
z-index: 999;
}
.dark .dragging>table>tbody>tr {
background-color: #252c30;
}
.dark .placeholder {
filter: invert(1);
}
.column-spacer {
top: 0;
left: 0;
width: calc(100% - 4px);
position: absolute;
cursor: pointer;
user-select: none;
height: 100%;
}
.column-width-handle {
top: 0;
right: 0;
width: 4px;
position: absolute;
cursor: col-resize;
user-select: none;
height: 100%;
}
.column-width-handle:hover {
background-color: #4f99bd;
}
.help-link {
border: 1px solid #0278a4;
padding-inline: 0.3rem;
border-radius: 3px;
cursor: pointer;
}
.dark .help-link {
border: 1px solid #00b9fd;
}
.bom-color {
width: 20%;
}
.color-column input {
width: 1.6rem;
height: 1rem;
border: 1px solid black;
cursor: pointer;
padding: 0;
}
/* removes default styling from input color element */
::-webkit-color-swatch {
border: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-moz-color-swatch,
::-moz-focus-inner {
border: none;
}
::-moz-focus-inner {
padding: 0;
}
</style>
<script type="text/javascript" >
///////////////////////////////////////////////
/*
Split.js - v1.3.5
MIT License
https://github.com/nathancahill/Split.js
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
///////////////////////////////////////////////
///////////////////////////////////////////////
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
// This work is free. You can redistribute it and/or modify it
// under the terms of the WTFPL, Version 2
// For more information see LICENSE.txt or http://www.wtfpl.net/
//
// For more information, the home page:
// http://pieroxy.net/blog/pages/lz-string/testing.html
//
// LZ-based compression algorithm, version 1.4.4
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
///////////////////////////////////////////////
///////////////////////////////////////////////
/*!
* PEP v0.4.3 | https://github.com/jquery/PEP
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
*/
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
for(var b=a;b.parentNode;)b=b.parentNode;
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
//
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
var b=x(a,this.findElements,this);
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
b=!1;else if("XY"===c)
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
vacuumTouches:function(a){var b=a.touches;
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
if(this.isPrimaryTouch(c)){
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
///////////////////////////////////////////////
///////////////////////////////////////////////
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
///////////////////////////////////////////////
///////////////////////////////////////////////
var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
///////////////////////////////////////////////
///////////////////////////////////////////////
/* Utility functions */
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
pcbdata.metadata.revision + '__#';
var storage;
function initStorage(key) {
try {
window.localStorage.getItem("blank");
storage = window.localStorage;
} catch (e) {
// localStorage not available
}
if (!storage) {
try {
window.sessionStorage.getItem("blank");
storage = window.sessionStorage;
} catch (e) {
// sessionStorage also not available
}
}
}
function readStorage(key) {
if (storage) {
return storage.getItem(storagePrefix + key);
} else {
return null;
}
}
function writeStorage(key, value) {
if (storage) {
storage.setItem(storagePrefix + key, value);
}
}
function fancyDblClickHandler(el, onsingle, ondouble) {
return function () {
if (el.getAttribute("data-dblclick") == null) {
el.setAttribute("data-dblclick", 1);
setTimeout(function () {
if (el.getAttribute("data-dblclick") == 1) {
onsingle();
}
el.removeAttribute("data-dblclick");
}, 200);
} else {
el.removeAttribute("data-dblclick");
ondouble();
}
}
}
function smoothScrollToRow(rowid) {
document.getElementById(rowid).scrollIntoView({
behavior: "smooth",
block: "center",
inline: "nearest"
});
}
function focusInputField(input) {
input.scrollIntoView(false);
input.focus();
input.select();
}
function saveBomTable(output) {
var text = '';
for (var node of bomhead.childNodes[0].childNodes) {
if (node.firstChild) {
var name = node.firstChild.nodeValue ?? "";
text += (output == 'csv' ? `"${name}"` : name);
}
if (node != bomhead.childNodes[0].lastChild) {
text += (output == 'csv' ? ',' : '\t');
}
}
text += '\n';
for (var row of bombody.childNodes) {
for (var cell of row.childNodes) {
let val = '';
for (var node of cell.childNodes) {
if (node.nodeName == "INPUT") {
if (node.checked) {
val += '✓';
}
} else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
val += node.firstChild.nodeValue;
} else {
val += node.nodeValue;
}
}
if (output == 'csv') {
val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
if (isNumeric(val)) {
val = +val; // use number
} else {
val = `"${val}"`; // enclosed within double-quote
}
}
text += val;
if (cell != row.lastChild) {
text += (output == 'csv' ? ',' : '\t');
}
}
text += '\n';
}
if (output != 'clipboard') {
// To file: csv or txt
var blob = new Blob([text], {
type: `text/${output}`
});
saveFile(`${pcbdata.metadata.title}.${output}`, blob);
} else {
// To clipboard
var textArea = document.createElement("textarea");
textArea.classList.add('clipboard-temp');
textArea.value = text;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
if (document.execCommand('copy')) {
console.log('Bom copied to clipboard.');
}
} catch (err) {
console.log('Can not copy to clipboard.');
}
document.body.removeChild(textArea);
}
}
function isNumeric(str) {
/* https://stackoverflow.com/a/175787 */
return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
}
function removeGutterNode(node) {
for (var i = 0; i < node.childNodes.length; i++) {
if (node.childNodes[i].classList &&
node.childNodes[i].classList.contains("gutter")) {
node.removeChild(node.childNodes[i]);
break;
}
}
}
function cleanGutters() {
removeGutterNode(document.getElementById("bot"));
removeGutterNode(document.getElementById("canvasdiv"));
}
var units = {
prefixes: {
giga: ["G", "g", "giga", "Giga", "GIGA"],
mega: ["M", "mega", "Mega", "MEGA"],
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
milli: ["m", "milli", "Milli", "MILLI"],
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
nano: ["N", "n", "nano", "Nano", "NANO"],
pico: ["P", "p", "pico", "Pico", "PICO"],
},
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
unitsLong: [
"OHM", "Ohm", "ohm", "ohms",
"FARAD", "Farad", "farad",
"HENRY", "Henry", "henry"
],
getMultiplier: function (s) {
if (this.prefixes.giga.includes(s)) return 1e9;
if (this.prefixes.mega.includes(s)) return 1e6;
if (this.prefixes.kilo.includes(s)) return 1e3;
if (this.prefixes.milli.includes(s)) return 1e-3;
if (this.prefixes.micro.includes(s)) return 1e-6;
if (this.prefixes.nano.includes(s)) return 1e-9;
if (this.prefixes.pico.includes(s)) return 1e-12;
return 1;
},
valueRegex: null,
valueAltRegex: null,
}
function initUtils() {
var allPrefixes = units.prefixes.giga
.concat(units.prefixes.mega)
.concat(units.prefixes.kilo)
.concat(units.prefixes.milli)
.concat(units.prefixes.micro)
.concat(units.prefixes.nano)
.concat(units.prefixes.pico);
var allUnits = units.unitsShort.concat(units.unitsLong);
units.valueRegex = new RegExp("^([0-9\.]+)" +
"\\s*(" + allPrefixes.join("|") + ")?" +
"(" + allUnits.join("|") + ")?" +
"(\\b.*)?$", "");
units.valueAltRegex = new RegExp("^([0-9]*)" +
"(" + units.unitsShort.join("|") + ")?" +
"([GgMmKkUuNnPp])?" +
"([0-9]*)" +
"(\\b.*)?$", "");
if (config.fields.includes("Value")) {
var index = config.fields.indexOf("Value");
pcbdata.bom["parsedValues"] = {};
var allList = getBomListByLayer('FB').flat();
for (var id in pcbdata.bom.fields) {
var ref_key = allList.find(item => item[1] == Number(id)) || [];
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index], ref_key[0] || '');
}
}
}
function parseValue(val, ref) {
var inferUnit = (unit, ref) => {
if (unit) {
unit = unit.toLowerCase();
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
unit = 'r';
}
return unit[0];
}
var resarr = /^([a-z]+)\d+$/i.exec(ref);
switch (Array.isArray(resarr) && resarr[1].toLowerCase()) {
case "c": return 'f';
case "l": return 'h';
case "r":
case "rv": return 'r';
}
return null;
};
val = val.replace(/,/g, "");
var match = units.valueRegex.exec(val);
if (Array.isArray(match)) {
var unit = inferUnit(match[3], ref);
var val_i = parseFloat(match[1]);
if (!unit) return null;
if (match[2]) {
val_i = val_i * units.getMultiplier(match[2]);
}
return {
val: val_i,
unit: unit,
extra: match[4],
}
}
match = units.valueAltRegex.exec(val);
if (Array.isArray(match) && (match[1] || match[4])) {
var unit = inferUnit(match[2], ref);
var val_i = parseFloat(match[1] + "." + match[4]);
if (!unit) return null;
if (match[3]) {
val_i = val_i * units.getMultiplier(match[3]);
}
return {
val: val_i,
unit: unit,
extra: match[5],
}
}
return null;
}
function valueCompare(a, b, stra, strb) {
if (a === null && b === null) {
// Failed to parse both values, compare them as strings.
if (stra != strb) return stra > strb ? 1 : -1;
else return 0;
} else if (a === null) {
return 1;
} else if (b === null) {
return -1;
} else {
if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
else if (a.val != b.val) return a.val > b.val ? 1 : -1;
else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
else return 0;
}
}
function validateSaveImgDimension(element) {
var valid = false;
var intValue = 0;
if (/^[1-9]\d*$/.test(element.value)) {
intValue = parseInt(element.value);
if (intValue <= 16000) {
valid = true;
}
}
if (valid) {
element.classList.remove("invalid");
} else {
element.classList.add("invalid");
}
return intValue;
}
function saveImage(layer) {
var width = validateSaveImgDimension(document.getElementById("render-save-width"));
var height = validateSaveImgDimension(document.getElementById("render-save-height"));
var bgcolor = null;
if (!document.getElementById("render-save-transparent").checked) {
var style = getComputedStyle(topmostdiv);
bgcolor = style.getPropertyValue("background-color");
}
if (!width || !height) return;
// Prepare image
var canvas = document.createElement("canvas");
var layerdict = {
transform: {
x: 0,
y: 0,
s: 1,
panx: 0,
pany: 0,
zoom: 1,
},
bg: canvas,
fab: canvas,
silk: canvas,
highlight: canvas,
layer: layer,
}
// Do the rendering
recalcLayerScale(layerdict, width, height);
prepareLayer(layerdict);
clearCanvas(canvas, bgcolor);
drawBackground(layerdict, false);
drawHighlightsOnLayer(layerdict, false);
// Save image
var imgdata = canvas.toDataURL("image/png");
var filename = pcbdata.metadata.title;
if (pcbdata.metadata.revision) {
filename += `.${pcbdata.metadata.revision}`;
}
filename += `.${layer}.png`;
saveFile(filename, dataURLtoBlob(imgdata));
}
function saveSettings() {
var data = {
type: "InteractiveHtmlBom settings",
version: 1,
pcbmetadata: pcbdata.metadata,
settings: settings,
}
var blob = new Blob([JSON.stringify(data, null, 4)], {
type: "application/json"
});
saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
}
function loadSettings() {
var input = document.createElement("input");
input.type = "file";
input.accept = ".settings.json";
input.onchange = function (e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = readerEvent => {
var content = readerEvent.target.result;
var newSettings;
try {
newSettings = JSON.parse(content);
} catch (e) {
alert("Selected file is not InteractiveHtmlBom settings file.");
return;
}
if (newSettings.type != "InteractiveHtmlBom settings") {
alert("Selected file is not InteractiveHtmlBom settings file.");
return;
}
var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
if (metadataMatches) {
for (var k in pcbdata.metadata) {
if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
metadataMatches = false;
}
}
}
if (!metadataMatches) {
var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
if (!confirm(
`Settins file metadata does not match current metadata.\n\n` +
`Page metadata:\n${currentMetadata}\n\n` +
`Settings file metadata:\n${fileMetadata}\n\n` +
`Press OK if you would like to import settings anyway.`)) {
return;
}
}
overwriteSettings(newSettings.settings);
}
reader.readAsText(file, 'UTF-8');
}
input.click();
}
function resetSettings() {
if (!confirm(
`This will reset all checkbox states and other settings.\n\n` +
`Press OK if you want to continue.`)) {
return;
}
if (storage) {
var keys = [];
for (var i = 0; i < storage.length; i++) {
var key = storage.key(i);
if (key.startsWith(storagePrefix)) keys.push(key);
}
for (var key of keys) storage.removeItem(key);
}
location.reload();
}
function overwriteSettings(newSettings) {
initDone = false;
Object.assign(settings, newSettings);
writeStorage("bomlayout", settings.bomlayout);
writeStorage("bommode", settings.bommode);
writeStorage("canvaslayout", settings.canvaslayout);
writeStorage("bomCheckboxes", settings.checkboxes.join(","));
document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
for (var checkbox of settings.checkboxes) {
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
}
writeStorage("markWhenChecked", settings.markWhenChecked);
padsVisible(settings.renderPads);
document.getElementById("padsCheckbox").checked = settings.renderPads;
fabricationVisible(settings.renderFabrication);
document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
silkscreenVisible(settings.renderSilkscreen);
document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
referencesVisible(settings.renderReferences);
document.getElementById("referencesCheckbox").checked = settings.renderReferences;
valuesVisible(settings.renderValues);
document.getElementById("valuesCheckbox").checked = settings.renderValues;
tracksVisible(settings.renderTracks);
document.getElementById("tracksCheckbox").checked = settings.renderTracks;
zonesVisible(settings.renderZones);
document.getElementById("zonesCheckbox").checked = settings.renderZones;
dnpOutline(settings.renderDnpOutline);
document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
setRedrawOnDrag(settings.redrawOnDrag);
document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
setHighlightRowOnClick(settings.highlightRowOnClick);
document.getElementById("highlightRowOnClickCheckbox").checked = settings.highlightRowOnClick;
setDarkMode(settings.darkMode);
document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
setHighlightPin1(settings.highlightpin1);
document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1;
writeStorage("boardRotation", settings.boardRotation);
document.getElementById("boardRotation").value = settings.boardRotation / 5;
document.getElementById("rotationDegree").textContent = settings.boardRotation;
setOffsetBackRotation(settings.offsetBackRotation);
document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
initDone = true;
prepCheckboxes();
changeBomLayout(settings.bomlayout);
}
function saveFile(filename, blob) {
var link = document.createElement("a");
var objurl = URL.createObjectURL(blob);
link.download = filename;
link.href = objurl;
link.click();
}
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime
});
}
var settings = {
canvaslayout: "FB",
bomlayout: "left-right",
bommode: "grouped",
checkboxes: [],
checkboxStoredRefs: {},
darkMode: false,
highlightpin1: "none",
redrawOnDrag: true,
boardRotation: 0,
offsetBackRotation: false,
renderPads: true,
renderReferences: true,
renderValues: true,
renderSilkscreen: true,
renderFabrication: true,
renderDnpOutline: false,
renderTracks: true,
renderZones: true,
columnOrder: [],
hiddenColumns: [],
netColors: {},
}
function initDefaults() {
settings.bomlayout = readStorage("bomlayout");
if (settings.bomlayout === null) {
settings.bomlayout = config.bom_view;
}
if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
settings.bomlayout = config.bom_view;
}
settings.bommode = readStorage("bommode");
if (settings.bommode === null) {
settings.bommode = "grouped";
}
if (settings.bommode == "netlist" && !pcbdata.nets) {
settings.bommode = "grouped";
}
if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
settings.bommode = "grouped";
}
settings.canvaslayout = readStorage("canvaslayout");
if (settings.canvaslayout === null) {
settings.canvaslayout = config.layer_view;
}
var bomCheckboxes = readStorage("bomCheckboxes");
if (bomCheckboxes === null) {
bomCheckboxes = config.checkboxes;
}
settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
document.getElementById("bomCheckboxes").value = bomCheckboxes;
var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1;
if (highlightpin1 === "false") highlightpin1 = "none";
if (highlightpin1 === "true") highlightpin1 = "all";
setHighlightPin1(highlightpin1);
document.forms.highlightpin1.highlightpin1.value = highlightpin1;
settings.markWhenChecked = readStorage("markWhenChecked") || "";
populateMarkWhenCheckedOptions();
function initBooleanSetting(storageString, def, elementId, func) {
var b = readStorage(storageString);
if (b === null) {
b = def;
} else {
b = (b == "true");
}
document.getElementById(elementId).checked = b;
func(b);
}
initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
if ("tracks" in pcbdata) {
initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
} else {
document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
tracksVisible(false);
zonesVisible(false);
}
initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
initBooleanSetting("highlightRowOnClick", false, "highlightRowOnClickCheckbox", setHighlightRowOnClick);
initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
var hcols = JSON.parse(readStorage("hiddenColumns"));
if (hcols === null) {
hcols = [];
}
settings.hiddenColumns = hcols.filter(e => fields.includes(e));
var cord = JSON.parse(readStorage("columnOrder"));
if (cord === null) {
cord = fields;
} else {
cord = cord.filter(e => fields.includes(e));
if (cord.length != fields.length)
cord = fields;
}
settings.columnOrder = cord;
settings.boardRotation = readStorage("boardRotation");
if (settings.boardRotation === null) {
settings.boardRotation = config.board_rotation * 5;
} else {
settings.boardRotation = parseInt(settings.boardRotation);
}
document.getElementById("boardRotation").value = settings.boardRotation / 5;
document.getElementById("rotationDegree").textContent = settings.boardRotation;
initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
settings.netColors = JSON.parse(readStorage("netColors")) || {};
}
// Helper classes for user js callbacks.
const IBOM_EVENT_TYPES = {
ALL: "all",
HIGHLIGHT_EVENT: "highlightEvent",
CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
}
const EventHandler = {
callbacks: {},
init: function () {
for (eventType of Object.values(IBOM_EVENT_TYPES))
this.callbacks[eventType] = [];
},
registerCallback: function (eventType, callback) {
this.callbacks[eventType].push(callback);
},
emitEvent: function (eventType, eventArgs) {
event = {
eventType: eventType,
args: eventArgs,
}
var callback;
for (callback of this.callbacks[eventType])
callback(event);
for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
callback(event);
}
}
EventHandler.init();
///////////////////////////////////////////////
///////////////////////////////////////////////
/* PCB rendering code */
var emptyContext2d = document.createElement("canvas").getContext("2d");
function deg2rad(deg) {
return deg * Math.PI / 180;
}
function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
var point = [
linepoint[0] * text.width + offsetx,
linepoint[1] * text.height + offsety
];
// This approximates pcbnew behavior with how text tilts depending on horizontal justification
point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
return point;
}
function drawText(ctx, text, color) {
if ("ref" in text && !settings.renderReferences) return;
if ("val" in text && !settings.renderValues) return;
ctx.save();
ctx.fillStyle = color;
ctx.strokeStyle = color;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.lineWidth = text.thickness;
if ("svgpath" in text) {
ctx.stroke(new Path2D(text.svgpath));
ctx.restore();
return;
}
if ("polygons" in text) {
ctx.fill(getPolygonsPath(text));
ctx.restore();
return;
}
ctx.translate(...text.pos);
ctx.translate(text.thickness * 0.5, 0);
var angle = -text.angle;
if (text.attr.includes("mirrored")) {
ctx.scale(-1, 1);
angle = -angle;
}
var tilt = 0;
if (text.attr.includes("italic")) {
tilt = 0.125;
}
var interline = text.height * 1.5 + text.thickness;
var txt = text.text.split("\n");
// KiCad ignores last empty line.
if (txt[txt.length - 1] == '') txt.pop();
ctx.rotate(deg2rad(angle));
var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
for (var i in txt) {
var lineWidth = text.thickness + interline / 2 * tilt;
for (var j = 0; j < txt[i].length; j++) {
if (txt[i][j] == '\t') {
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
lineWidth += fourSpaces - lineWidth % fourSpaces;
} else {
if (txt[i][j] == '~') {
j++;
if (j == txt[i].length)
break;
}
lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
}
}
var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
var inOverbar = false;
for (var j = 0; j < txt[i].length; j++) {
if (config.kicad_text_formatting) {
if (txt[i][j] == '\t') {
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
offsetx += fourSpaces - offsetx % fourSpaces;
continue;
} else if (txt[i][j] == '~') {
j++;
if (j == txt[i].length)
break;
if (txt[i][j] != '~') {
inOverbar = !inOverbar;
}
}
}
var glyph = pcbdata.font_data[txt[i][j]];
if (inOverbar) {
var overbarStart = [offsetx, -text.height * 1.4 + offsety];
var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
if (!lastHadOverbar) {
overbarStart[0] += text.height * 1.4 * tilt;
lastHadOverbar = true;
}
ctx.beginPath();
ctx.moveTo(...overbarStart);
ctx.lineTo(...overbarEnd);
ctx.stroke();
} else {
lastHadOverbar = false;
}
for (var line of glyph.l) {
ctx.beginPath();
ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
for (var k = 1; k < line.length; k++) {
ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
}
ctx.stroke();
}
offsetx += glyph.w * text.width;
}
offsety += interline;
}
ctx.restore();
}
function drawedge(ctx, scalefactor, edge, color) {
ctx.strokeStyle = color;
ctx.fillStyle = color;
ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
ctx.lineCap = "round";
ctx.lineJoin = "round";
if ("svgpath" in edge) {
ctx.stroke(new Path2D(edge.svgpath));
} else {
ctx.beginPath();
if (edge.type == "segment") {
ctx.moveTo(...edge.start);
ctx.lineTo(...edge.end);
}
if (edge.type == "rect") {
ctx.moveTo(...edge.start);
ctx.lineTo(edge.start[0], edge.end[1]);
ctx.lineTo(...edge.end);
ctx.lineTo(edge.end[0], edge.start[1]);
ctx.lineTo(...edge.start);
}
if (edge.type == "arc") {
ctx.arc(
...edge.start,
edge.radius,
deg2rad(edge.startangle),
deg2rad(edge.endangle));
}
if (edge.type == "circle") {
ctx.arc(
...edge.start,
edge.radius,
0, 2 * Math.PI);
ctx.closePath();
}
if (edge.type == "curve") {
ctx.moveTo(...edge.start);
ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
}
if("filled" in edge && edge.filled)
ctx.fill();
else
ctx.stroke();
}
}
function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
// chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
var path = new Path2D();
var width = size[0];
var height = size[1];
var x = width * -0.5;
var y = height * -0.5;
var chamfOffset = Math.min(width, height) * chamfratio;
path.moveTo(x, 0);
if (chamfpos & 4) {
path.lineTo(x, y + height - chamfOffset);
path.lineTo(x + chamfOffset, y + height);
path.lineTo(0, y + height);
} else {
path.arcTo(x, y + height, x + width, y + height, radius);
}
if (chamfpos & 8) {
path.lineTo(x + width - chamfOffset, y + height);
path.lineTo(x + width, y + height - chamfOffset);
path.lineTo(x + width, 0);
} else {
path.arcTo(x + width, y + height, x + width, y, radius);
}
if (chamfpos & 2) {
path.lineTo(x + width, y + chamfOffset);
path.lineTo(x + width - chamfOffset, y);
path.lineTo(0, y);
} else {
path.arcTo(x + width, y, x, y, radius);
}
if (chamfpos & 1) {
path.lineTo(x + chamfOffset, y);
path.lineTo(x, y + chamfOffset);
path.lineTo(x, 0);
} else {
path.arcTo(x, y, x, y + height, radius);
}
path.closePath();
return path;
}
function getOblongPath(size) {
return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
}
function getPolygonsPath(shape) {
if (shape.path2d) {
return shape.path2d;
}
if ("svgpath" in shape) {
shape.path2d = new Path2D(shape.svgpath);
} else {
var path = new Path2D();
for (var polygon of shape.polygons) {
path.moveTo(...polygon[0]);
for (var i = 1; i < polygon.length; i++) {
path.lineTo(...polygon[i]);
}
path.closePath();
}
shape.path2d = path;
}
return shape.path2d;
}
function drawPolygonShape(ctx, scalefactor, shape, color) {
ctx.save();
if (!("svgpath" in shape)) {
ctx.translate(...shape.pos);
ctx.rotate(deg2rad(-shape.angle));
}
if("filled" in shape && !shape.filled) {
ctx.strokeStyle = color;
ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.stroke(getPolygonsPath(shape));
} else {
ctx.fillStyle = color;
ctx.fill(getPolygonsPath(shape));
}
ctx.restore();
}
function drawDrawing(ctx, scalefactor, drawing, color) {
if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
drawedge(ctx, scalefactor, drawing, color);
} else if (drawing.type == "polygon") {
drawPolygonShape(ctx, scalefactor, drawing, color);
} else {
drawText(ctx, drawing, color);
}
}
function getCirclePath(radius) {
var path = new Path2D();
path.arc(0, 0, radius, 0, 2 * Math.PI);
path.closePath();
return path;
}
function getCachedPadPath(pad) {
if (!pad.path2d) {
// if path2d is not set, build one and cache it on pad object
if (pad.shape == "rect") {
pad.path2d = new Path2D();
pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
} else if (pad.shape == "oval") {
pad.path2d = getOblongPath(pad.size);
} else if (pad.shape == "circle") {
pad.path2d = getCirclePath(pad.size[0] / 2);
} else if (pad.shape == "roundrect") {
pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
} else if (pad.shape == "chamfrect") {
pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
} else if (pad.shape == "custom") {
pad.path2d = getPolygonsPath(pad);
}
}
return pad.path2d;
}
function drawPad(ctx, pad, color, outline) {
ctx.save();
ctx.translate(...pad.pos);
ctx.rotate(-deg2rad(pad.angle));
if (pad.offset) {
ctx.translate(...pad.offset);
}
ctx.fillStyle = color;
ctx.strokeStyle = color;
var path = getCachedPadPath(pad);
if (outline) {
ctx.stroke(path);
} else {
ctx.fill(path);
}
ctx.restore();
}
function drawPadHole(ctx, pad, padHoleColor) {
if (pad.type != "th") return;
ctx.save();
ctx.translate(...pad.pos);
ctx.rotate(-deg2rad(pad.angle));
ctx.fillStyle = padHoleColor;
if (pad.drillshape == "oblong") {
ctx.fill(getOblongPath(pad.drillsize));
} else if (pad.drillshape == "rect") {
ctx.fill(getChamferedRectPath(pad.drillsize, 0, 0, 0));
} else {
ctx.fill(getCirclePath(pad.drillsize[0] / 2));
}
ctx.restore();
}
function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
if (highlight) {
// draw bounding box
if (footprint.layer == layer) {
ctx.save();
ctx.globalAlpha = 0.2;
ctx.translate(...footprint.bbox.pos);
ctx.rotate(deg2rad(-footprint.bbox.angle));
ctx.translate(...footprint.bbox.relpos);
ctx.fillStyle = colors.pad;
ctx.fillRect(0, 0, ...footprint.bbox.size);
ctx.globalAlpha = 1;
ctx.strokeStyle = colors.pad;
ctx.lineWidth = 3 / scalefactor;
ctx.strokeRect(0, 0, ...footprint.bbox.size);
ctx.restore();
}
}
// draw drawings
for (var drawing of footprint.drawings) {
if (drawing.layer == layer) {
drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
}
}
ctx.lineWidth = 3 / scalefactor;
// draw pads
if (settings.renderPads) {
for (var pad of footprint.pads) {
if (pad.layers.includes(layer)) {
drawPad(ctx, pad, colors.pad, outline);
if (pad.pin1 &&
(settings.highlightpin1 == "all" ||
settings.highlightpin1 == "selected" && highlight)) {
drawPad(ctx, pad, colors.outline, true);
}
}
}
for (var pad of footprint.pads) {
drawPadHole(ctx, pad, colors.padHole);
}
}
}
function drawEdgeCuts(canvas, scalefactor) {
var ctx = canvas.getContext("2d");
var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
for (var edge of pcbdata.edges) {
drawDrawing(ctx, scalefactor, edge, edgecolor);
}
}
function drawFootprints(canvas, layer, scalefactor, highlight) {
var ctx = canvas.getContext("2d");
ctx.lineWidth = 3 / scalefactor;
var style = getComputedStyle(topmostdiv);
var colors = {
pad: style.getPropertyValue('--pad-color'),
padHole: style.getPropertyValue('--pad-hole-color'),
outline: style.getPropertyValue('--pin1-outline-color'),
}
for (var i = 0; i < pcbdata.footprints.length; i++) {
var mod = pcbdata.footprints[i];
var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
var h = highlightedFootprints.includes(i);
var d = markedFootprints.has(i);
if (highlight) {
if(h && d) {
colors.pad = style.getPropertyValue('--pad-color-highlight-both');
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
} else if (h) {
colors.pad = style.getPropertyValue('--pad-color-highlight');
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
} else if (d) {
colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
}
}
if( h || d || !highlight) {
drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
}
}
}
function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
var ctx = canvas.getContext("2d");
for (var d of pcbdata.drawings[layername][layer]) {
if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
drawedge(ctx, scalefactor, d, edgeColor);
} else if (d.type == "polygon") {
drawPolygonShape(ctx, scalefactor, d, polygonColor);
} else {
drawText(ctx, d, textColor);
}
}
}
function drawTracks(canvas, layer, defaultColor, highlight) {
ctx = canvas.getContext("2d");
ctx.lineCap = "round";
var hasHole = (track) => (
'drillsize' in track &&
track.start[0] == track.end[0] &&
track.start[1] == track.end[1]);
// First draw tracks and tented vias
for (var track of pcbdata.tracks[layer]) {
if (highlight && highlightedNet != track.net) continue;
if (!hasHole(track)) {
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
ctx.lineWidth = track.width;
ctx.beginPath();
if ('radius' in track) {
ctx.arc(
...track.center,
track.radius,
deg2rad(track.startangle),
deg2rad(track.endangle));
} else {
ctx.moveTo(...track.start);
ctx.lineTo(...track.end);
}
ctx.stroke();
}
}
// Second pass to draw untented vias
var style = getComputedStyle(topmostdiv);
var holeColor = style.getPropertyValue('--pad-hole-color')
for (var track of pcbdata.tracks[layer]) {
if (highlight && highlightedNet != track.net) continue;
if (hasHole(track)) {
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
ctx.lineWidth = track.width;
ctx.beginPath();
ctx.moveTo(...track.start);
ctx.lineTo(...track.end);
ctx.stroke();
ctx.strokeStyle = holeColor;
ctx.lineWidth = track.drillsize;
ctx.lineTo(...track.end);
ctx.stroke();
}
}
}
function drawZones(canvas, layer, defaultColor, highlight) {
ctx = canvas.getContext("2d");
ctx.lineJoin = "round";
for (var zone of pcbdata.zones[layer]) {
if (highlight && highlightedNet != zone.net) continue;
ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
if (!zone.path2d) {
zone.path2d = getPolygonsPath(zone);
}
ctx.fill(zone.path2d, zone.fillrule || "nonzero");
if (zone.width > 0) {
ctx.lineWidth = zone.width;
ctx.stroke(zone.path2d);
}
}
}
function clearCanvas(canvas, color = null) {
var ctx = canvas.getContext("2d");
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
if (color) {
ctx.fillStyle = color;
ctx.fillRect(0, 0, canvas.width, canvas.height);
} else {
if (!window.matchMedia("print").matches)
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
ctx.restore();
}
function drawNets(canvas, layer, highlight) {
var style = getComputedStyle(topmostdiv);
if (settings.renderZones) {
var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
drawZones(canvas, layer, zoneColor, highlight);
}
if (settings.renderTracks) {
var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
drawTracks(canvas, layer, trackColor, highlight);
}
if (highlight && settings.renderPads) {
var padColor = style.getPropertyValue('--pad-color-highlight');
var padHoleColor = style.getPropertyValue('--pad-hole-color');
var ctx = canvas.getContext("2d");
for (var footprint of pcbdata.footprints) {
// draw pads
var padDrawn = false;
for (var pad of footprint.pads) {
if (highlightedNet != pad.net) continue;
if (pad.layers.includes(layer)) {
drawPad(ctx, pad, padColor, false);
padDrawn = true;
}
}
if (padDrawn) {
// redraw all pad holes because some pads may overlap
for (var pad of footprint.pads) {
drawPadHole(ctx, pad, padHoleColor);
}
}
}
}
}
function drawHighlightsOnLayer(canvasdict, clear = true) {
if (clear) {
clearCanvas(canvasdict.highlight);
}
if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
drawFootprints(canvasdict.highlight, canvasdict.layer,
canvasdict.transform.s * canvasdict.transform.zoom, true);
}
if (highlightedNet !== null) {
drawNets(canvasdict.highlight, canvasdict.layer, true);
}
}
function drawHighlights() {
drawHighlightsOnLayer(allcanvas.front);
drawHighlightsOnLayer(allcanvas.back);
}
function drawBackground(canvasdict, clear = true) {
if (clear) {
clearCanvas(canvasdict.bg);
clearCanvas(canvasdict.fab);
clearCanvas(canvasdict.silk);
}
drawNets(canvasdict.bg, canvasdict.layer, false);
drawFootprints(canvasdict.bg, canvasdict.layer,
canvasdict.transform.s * canvasdict.transform.zoom, false);
drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
var style = getComputedStyle(topmostdiv);
var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
var textColor = style.getPropertyValue('--silkscreen-text-color');
if (settings.renderSilkscreen) {
drawBgLayer(
"silkscreen", canvasdict.silk, canvasdict.layer,
canvasdict.transform.s * canvasdict.transform.zoom,
edgeColor, polygonColor, textColor);
}
edgeColor = style.getPropertyValue('--fabrication-edge-color');
polygonColor = style.getPropertyValue('--fabrication-polygon-color');
textColor = style.getPropertyValue('--fabrication-text-color');
if (settings.renderFabrication) {
drawBgLayer(
"fabrication", canvasdict.fab, canvasdict.layer,
canvasdict.transform.s * canvasdict.transform.zoom,
edgeColor, polygonColor, textColor);
}
}
function prepareCanvas(canvas, flip, transform) {
var ctx = canvas.getContext("2d");
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.scale(transform.zoom, transform.zoom);
ctx.translate(transform.panx, transform.pany);
if (flip) {
ctx.scale(-1, 1);
}
ctx.translate(transform.x, transform.y);
ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
ctx.scale(transform.s, transform.s);
}
function prepareLayer(canvasdict) {
var flip = (canvasdict.layer === "B");
for (var c of ["bg", "fab", "silk", "highlight"]) {
prepareCanvas(canvasdict[c], flip, canvasdict.transform);
}
}
function rotateVector(v, angle) {
angle = deg2rad(angle);
return [
v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
];
}
function applyRotation(bbox, flip) {
var corners = [
[bbox.minx, bbox.miny],
[bbox.minx, bbox.maxy],
[bbox.maxx, bbox.miny],
[bbox.maxx, bbox.maxy],
];
corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
return {
minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
}
}
function recalcLayerScale(layerdict, width, height) {
var flip = (layerdict.layer === "B");
var bbox = applyRotation(pcbdata.edges_bbox, flip);
var scalefactor = 0.98 * Math.min(
width / (bbox.maxx - bbox.minx),
height / (bbox.maxy - bbox.miny)
);
if (scalefactor < 0.1) {
scalefactor = 1;
}
layerdict.transform.s = scalefactor;
if (flip) {
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
} else {
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
}
layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
for (var c of ["bg", "fab", "silk", "highlight"]) {
canvas = layerdict[c];
canvas.width = width;
canvas.height = height;
canvas.style.width = (width / devicePixelRatio) + "px";
canvas.style.height = (height / devicePixelRatio) + "px";
}
}
function redrawCanvas(layerdict) {
prepareLayer(layerdict);
drawBackground(layerdict);
drawHighlightsOnLayer(layerdict);
}
function resizeCanvas(layerdict) {
var canvasdivid = {
"F": "frontcanvas",
"B": "backcanvas"
} [layerdict.layer];
var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
recalcLayerScale(layerdict, width, height);
redrawCanvas(layerdict);
}
function resizeAll() {
resizeCanvas(allcanvas.front);
resizeCanvas(allcanvas.back);
}
function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
var A = x - x1;
var B = y - y1;
var C = x2 - x1;
var D = y2 - y1;
var dot = A * C + B * D;
var len_sq = C * C + D * D;
var dx, dy;
if (len_sq == 0) {
// start and end of the segment coincide
dx = x - x1;
dy = y - y1;
} else {
var param = dot / len_sq;
var xx, yy;
if (param < 0) {
xx = x1;
yy = y1;
} else if (param > 1) {
xx = x2;
yy = y2;
} else {
xx = x1 + param * C;
yy = y1 + param * D;
}
dx = x - xx;
dy = y - yy;
}
return dx * dx + dy * dy <= d * d;
}
function modulo(n, mod) {
return ((n % mod) + mod) % mod;
}
function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
var dx = x - xc;
var dy = y - yc;
var r_sq = dx * dx + dy * dy;
var rmin = Math.max(0, radius - d);
var rmax = radius + d;
if (r_sq < rmin * rmin || r_sq > rmax * rmax)
return false;
var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
var dx1 = xc + radius * Math.cos(angle1) - x;
var dy1 = yc + radius * Math.sin(angle1) - y;
if (dx1 * dx1 + dy1 * dy1 <= d * d)
return true;
var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
var dx2 = xc + radius * Math.cos(angle2) - x;
var dy2 = yc + radius * Math.sin(angle2) - y;
if (dx2 * dx2 + dy2 * dy2 <= d * d)
return true;
var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
if (angle1 > angle2)
return (angle >= angle2 || angle <= angle1);
else
return (angle >= angle1 && angle <= angle2);
}
function pointWithinPad(x, y, pad) {
var v = [x - pad.pos[0], y - pad.pos[1]];
v = rotateVector(v, pad.angle);
if (pad.offset) {
v[0] -= pad.offset[0];
v[1] -= pad.offset[1];
}
return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
}
function netHitScan(layer, x, y) {
// Check track segments
if (settings.renderTracks && pcbdata.tracks) {
for (var track of pcbdata.tracks[layer]) {
if ('radius' in track) {
if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
return track.net;
}
} else {
if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
return track.net;
}
}
}
}
// Check pads
if (settings.renderPads) {
for (var footprint of pcbdata.footprints) {
for (var pad of footprint.pads) {
if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
return pad.net;
}
}
}
}
return null;
}
function pointWithinFootprintBbox(x, y, bbox) {
var v = [x - bbox.pos[0], y - bbox.pos[1]];
v = rotateVector(v, bbox.angle);
return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
}
function bboxHitScan(layer, x, y) {
var result = [];
for (var i = 0; i < pcbdata.footprints.length; i++) {
var footprint = pcbdata.footprints[i];
if (footprint.layer == layer) {
if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
result.push(i);
}
}
}
return result;
}
function handlePointerDown(e, layerdict) {
if (e.button != 0 && e.button != 1) {
return;
}
e.preventDefault();
e.stopPropagation();
if (!e.hasOwnProperty("offsetX")) {
// The polyfill doesn't set this properly
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
e.offsetY = e.pageY - e.currentTarget.offsetTop;
}
layerdict.pointerStates[e.pointerId] = {
distanceTravelled: 0,
lastX: e.offsetX,
lastY: e.offsetY,
downTime: Date.now(),
};
}
function handleMouseClick(e, layerdict) {
if (!e.hasOwnProperty("offsetX")) {
// The polyfill doesn't set this properly
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
e.offsetY = e.pageY - e.currentTarget.offsetTop;
}
var x = e.offsetX;
var y = e.offsetY;
var t = layerdict.transform;
var flip = layerdict.layer === "B";
if (flip) {
x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
} else {
x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
}
y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
if ("nets" in pcbdata) {
var net = netHitScan(layerdict.layer, ...v);
if (net !== highlightedNet) {
netClicked(net);
}
}
if (highlightedNet === null) {
var footprints = bboxHitScan(layerdict.layer, ...v);
if (footprints.length > 0) {
footprintsClicked(footprints);
}
}
}
function handlePointerLeave(e, layerdict) {
e.preventDefault();
e.stopPropagation();
if (!settings.redrawOnDrag) {
redrawCanvas(layerdict);
}
delete layerdict.pointerStates[e.pointerId];
}
function resetTransform(layerdict) {
layerdict.transform.panx = 0;
layerdict.transform.pany = 0;
layerdict.transform.zoom = 1;
redrawCanvas(layerdict);
}
function handlePointerUp(e, layerdict) {
if (!e.hasOwnProperty("offsetX")) {
// The polyfill doesn't set this properly
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
e.offsetY = e.pageY - e.currentTarget.offsetTop;
}
e.preventDefault();
e.stopPropagation();
if (e.button == 2) {
// Reset pan and zoom on right click.
resetTransform(layerdict);
layerdict.anotherPointerTapped = false;
return;
}
// We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
var ptr = layerdict.pointerStates[e.pointerId];
ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
if (Object.keys(layerdict.pointerStates).length == 1) {
if (layerdict.anotherPointerTapped) {
// This is the second pointer coming off of a two-finger tap
resetTransform(layerdict);
} else {
// This is just a regular tap
handleMouseClick(e, layerdict);
}
layerdict.anotherPointerTapped = false;
} else {
// This is the first finger coming off of what could become a two-finger tap
layerdict.anotherPointerTapped = true;
}
} else {
if (!settings.redrawOnDrag) {
redrawCanvas(layerdict);
}
layerdict.anotherPointerTapped = false;
}
delete layerdict.pointerStates[e.pointerId];
}
function handlePointerMove(e, layerdict) {
if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
return;
}
e.preventDefault();
e.stopPropagation();
if (!e.hasOwnProperty("offsetX")) {
// The polyfill doesn't set this properly
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
e.offsetY = e.pageY - e.currentTarget.offsetTop;
}
var thisPtr = layerdict.pointerStates[e.pointerId];
var dx = e.offsetX - thisPtr.lastX;
var dy = e.offsetY - thisPtr.lastY;
// If this number is low on pointer up, we count the action as a click
thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
if (Object.keys(layerdict.pointerStates).length == 1) {
// This is a simple drag
layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
} else if (Object.keys(layerdict.pointerStates).length == 2) {
var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
var scaleFactor = newDist / oldDist;
if (scaleFactor != NaN) {
layerdict.transform.zoom *= scaleFactor;
var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
}
}
thisPtr.lastX = e.offsetX;
thisPtr.lastY = e.offsetY;
if (settings.redrawOnDrag) {
redrawCanvas(layerdict);
}
}
function handleMouseWheel(e, layerdict) {
e.preventDefault();
e.stopPropagation();
var t = layerdict.transform;
var wheeldelta = e.deltaY;
if (e.deltaMode == 1) {
// FF only, scroll by lines
wheeldelta *= 30;
} else if (e.deltaMode == 2) {
wheeldelta *= 300;
}
var m = Math.pow(1.1, -wheeldelta / 40);
// Limit amount of zoom per tick.
if (m > 2) {
m = 2;
} else if (m < 0.5) {
m = 0.5;
}
t.zoom *= m;
var zoomd = (1 - m) / t.zoom;
t.panx += devicePixelRatio * e.offsetX * zoomd;
t.pany += devicePixelRatio * e.offsetY * zoomd;
redrawCanvas(layerdict);
}
function addMouseHandlers(div, layerdict) {
div.addEventListener("pointerdown", function(e) {
handlePointerDown(e, layerdict);
});
div.addEventListener("pointermove", function(e) {
handlePointerMove(e, layerdict);
});
div.addEventListener("pointerup", function(e) {
handlePointerUp(e, layerdict);
});
var pointerleave = function(e) {
handlePointerLeave(e, layerdict);
}
div.addEventListener("pointercancel", pointerleave);
div.addEventListener("pointerleave", pointerleave);
div.addEventListener("pointerout", pointerleave);
div.onwheel = function(e) {
handleMouseWheel(e, layerdict);
}
for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
element.addEventListener("contextmenu", function(e) {
e.preventDefault();
}, false);
}
}
function setRedrawOnDrag(value) {
settings.redrawOnDrag = value;
writeStorage("redrawOnDrag", value);
}
function setBoardRotation(value) {
settings.boardRotation = value * 5;
writeStorage("boardRotation", settings.boardRotation);
document.getElementById("rotationDegree").textContent = settings.boardRotation;
resizeAll();
}
function setOffsetBackRotation(value) {
settings.offsetBackRotation = value;
writeStorage("offsetBackRotation", value);
resizeAll();
}
function initRender() {
allcanvas = {
front: {
transform: {
x: 0,
y: 0,
s: 1,
panx: 0,
pany: 0,
zoom: 1,
},
pointerStates: {},
anotherPointerTapped: false,
bg: document.getElementById("F_bg"),
fab: document.getElementById("F_fab"),
silk: document.getElementById("F_slk"),
highlight: document.getElementById("F_hl"),
layer: "F",
},
back: {
transform: {
x: 0,
y: 0,
s: 1,
panx: 0,
pany: 0,
zoom: 1,
},
pointerStates: {},
anotherPointerTapped: false,
bg: document.getElementById("B_bg"),
fab: document.getElementById("B_fab"),
silk: document.getElementById("B_slk"),
highlight: document.getElementById("B_hl"),
layer: "B",
}
};
addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
}
///////////////////////////////////////////////
///////////////////////////////////////////////
/*
* Table reordering via Drag'n'Drop
* Inspired by: https://htmldom.dev/drag-and-drop-table-column
*/
function setBomHandlers() {
const bom = document.getElementById('bomtable');
let dragName;
let placeHolderElements;
let draggingElement;
let forcePopulation;
let xOffset;
let yOffset;
let wasDragged;
const mouseUpHandler = function(e) {
// Delete dragging element
draggingElement.remove();
// Make BOM selectable again
bom.style.removeProperty("userSelect");
// Remove listeners
document.removeEventListener('mousemove', mouseMoveHandler);
document.removeEventListener('mouseup', mouseUpHandler);
if (wasDragged) {
// Redraw whole BOM
populateBomTable();
}
}
const mouseMoveHandler = function(e) {
// Notice the dragging
wasDragged = true;
// Make the dragged element visible
draggingElement.style.removeProperty("display");
// Set elements position to mouse position
draggingElement.style.left = `${e.screenX - xOffset}px`;
draggingElement.style.top = `${e.screenY - yOffset}px`;
// Forced redrawing of BOM table
if (forcePopulation) {
forcePopulation = false;
// Copy array
phe = Array.from(placeHolderElements);
// populate BOM table again
populateBomHeader(dragName, phe);
populateBomBody(dragName, phe);
}
// Set up array of hidden columns
var hiddenColumns = Array.from(settings.hiddenColumns);
// In the ungrouped mode, quantity don't exist
if (settings.bommode === "ungrouped")
hiddenColumns.push("Quantity");
// If no checkbox fields can be found, we consider them hidden
if (settings.checkboxes.length == 0)
hiddenColumns.push("checkboxes");
// Get table headers and group them into checkboxes, extrafields and normal headers
const bh = document.getElementById("bomhead");
headers = Array.from(bh.querySelectorAll("th"))
headers.shift() // numCol is not part of the columnOrder
headerGroups = []
lastCompoundClass = null;
for (i = 0; i < settings.columnOrder.length; i++) {
cElem = settings.columnOrder[i];
if (hiddenColumns.includes(cElem)) {
// Hidden columns appear as a dummy element
headerGroups.push([]);
continue;
}
elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
if (elem.classList.contains("bom-checkbox")) {
if (lastCompoundClass === "bom-checkbox") {
cbGroup = headerGroups.pop();
cbGroup.push(elem);
headerGroups.push(cbGroup);
} else {
lastCompoundClass = "bom-checkbox";
headerGroups.push([elem])
}
} else {
headerGroups.push([elem])
}
}
// Copy settings.columnOrder
var columns = Array.from(settings.columnOrder)
// Set up array with indices of hidden columns
var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
var dragIndex = columns.indexOf(dragName);
var swapIndex = dragIndex;
var swapDone = false;
// Check if the current dragged element is swapable with the left or right element
if (dragIndex > 0) {
// Get left headers boundingbox
swapIndex = dragIndex - 1;
while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
swapIndex--;
if (!hiddenIndices.includes(swapIndex)) {
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
swapElement = columns[dragIndex];
columns.splice(dragIndex, 1);
columns.splice(swapIndex, 0, swapElement);
forcePopulation = true;
swapDone = true;
}
}
}
if ((!swapDone) && dragIndex < headerGroups.length - 1) {
// Get right headers boundingbox
swapIndex = dragIndex + 1;
while (hiddenIndices.includes(swapIndex))
swapIndex++;
if (swapIndex < headerGroups.length) {
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
swapElement = columns[dragIndex];
columns.splice(dragIndex, 1);
columns.splice(swapIndex, 0, swapElement);
forcePopulation = true;
swapDone = true;
}
}
}
// Write back change to storage
if (swapDone) {
settings.columnOrder = columns
writeStorage("columnOrder", JSON.stringify(columns));
}
}
const mouseDownHandler = function(e) {
var target = e.target;
if (target.tagName.toLowerCase() != "td")
target = target.parentElement;
// Used to check if a dragging has ever happened
wasDragged = false;
// Create new element which will be displayed as the dragged column
draggingElement = document.createElement("div")
draggingElement.classList.add("dragging");
draggingElement.style.display = "none";
draggingElement.style.position = "absolute";
draggingElement.style.overflow = "hidden";
// Get bomhead and bombody elements
const bh = document.getElementById("bomhead");
const bb = document.getElementById("bombody");
// Get all compound headers for the current column
var compoundHeaders;
if (target.classList.contains("bom-checkbox")) {
compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
} else {
compoundHeaders = [target];
}
// Create new table which will display the column
var newTable = document.createElement("table");
newTable.classList.add("bom");
newTable.style.background = "white";
draggingElement.append(newTable);
// Create new header element
var newHeader = document.createElement("thead");
newTable.append(newHeader);
// Set up array for storing all placeholder elements
placeHolderElements = [];
// Add all compound headers to the new thead element and placeholders
compoundHeaders.forEach(function(h) {
clone = cloneElementWithDimensions(h);
newHeader.append(clone);
placeHolderElements.push(clone);
});
// Create new body element
var newBody = document.createElement("tbody");
newTable.append(newBody);
// Get indices for compound headers
var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
// For each row in the BOM body...
var rows = bb.querySelectorAll("tr");
rows.forEach(function(row) {
// ..get the cells for the compound column
const tds = row.querySelectorAll("td");
var copytds = idxs.map(i => tds[i]);
// Add them to the new element and the placeholders
var newRow = document.createElement("tr");
copytds.forEach(function(td) {
clone = cloneElementWithDimensions(td);
newRow.append(clone);
placeHolderElements.push(clone);
});
newBody.append(newRow);
});
// Compute width for compound header
var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
draggingElement.style.width = `${width}px`;
// Insert the new dragging element and disable selection on BOM
bom.insertBefore(draggingElement, null);
bom.style.userSelect = "none";
// Determine the mouse position offset
xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
yOffset = e.screenY - compoundHeaders[0].offsetTop;
// Get name for the column in settings.columnOrder
dragName = getColumnOrderName(target);
// Change text and class for placeholder elements
placeHolderElements = placeHolderElements.map(function(e) {
newElem = cloneElementWithDimensions(e);
newElem.textContent = "";
newElem.classList.add("placeholder");
return newElem;
});
// On next mouse move, the whole BOM needs to be redrawn to show the placeholders
forcePopulation = true;
// Add listeners for move and up on mouse
document.addEventListener('mousemove', mouseMoveHandler);
document.addEventListener('mouseup', mouseUpHandler);
}
// In netlist mode, there is nothing to reorder
if (settings.bommode === "netlist")
return;
// Add mouseDownHandler to every column except the numCol
bom.querySelectorAll("th")
.forEach(function(head) {
if (!head.classList.contains("numCol")) {
head.onmousedown = mouseDownHandler;
}
});
}
function getBoundingClientRectFromMultiple(elements) {
var elems = Array.from(elements);
if (elems.length == 0)
return null;
var box = elems.shift()
.getBoundingClientRect();
elems.forEach(function(elem) {
var elembox = elem.getBoundingClientRect();
box.left = Math.min(elembox.left, box.left);
box.top = Math.min(elembox.top, box.top);
box.width += elembox.width;
box.height = Math.max(elembox.height, box.height);
});
return box;
}
function cloneElementWithDimensions(elem) {
var newElem = elem.cloneNode(true);
newElem.style.height = window.getComputedStyle(elem).height;
newElem.style.width = window.getComputedStyle(elem).width;
return newElem;
}
function getBomTableHeaderIndex(elem) {
const bh = document.getElementById('bomhead');
const ths = Array.from(bh.querySelectorAll("th"));
return ths.indexOf(elem);
}
function getColumnOrderName(elem) {
var cname = elem.getAttribute("col_name");
if (cname === "bom-checkbox")
return "checkboxes";
else
return cname;
}
function resizableGrid(tablehead) {
var cols = tablehead.firstElementChild.children;
var rowWidth = tablehead.offsetWidth;
for (var i = 1; i < cols.length; i++) {
if (cols[i].classList.contains("bom-checkbox"))
continue;
cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
}
for (var i = 1; i < cols.length - 1; i++) {
var div = document.createElement('div');
div.className = "column-width-handle";
cols[i].appendChild(div);
setListeners(div);
}
function setListeners(div) {
var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
div.addEventListener('mousedown', function(e) {
e.preventDefault();
e.stopPropagation();
curCol = e.target.parentElement;
nxtCol = curCol.nextElementSibling;
startX = e.pageX;
var padding = paddingDiff(curCol);
rowWidth = curCol.parentElement.offsetWidth;
curColWidth = curCol.clientWidth - padding;
nxtColWidth = nxtCol.clientWidth - padding;
});
document.addEventListener('mousemove', function(e) {
if (startX) {
var diffX = e.pageX - startX;
diffX = -Math.min(-diffX, curColWidth - 20);
diffX = Math.min(diffX, nxtColWidth - 20);
curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
}
});
document.addEventListener('mouseup', function(e) {
curCol = undefined;
nxtCol = undefined;
startX = undefined;
nxtColWidth = undefined;
curColWidth = undefined
});
}
function paddingDiff(col) {
if (getStyleVal(col, 'box-sizing') == 'border-box') {
return 0;
}
var padLeft = getStyleVal(col, 'padding-left');
var padRight = getStyleVal(col, 'padding-right');
return (parseInt(padLeft) + parseInt(padRight));
}
function getStyleVal(elm, css) {
return (window.getComputedStyle(elm, null).getPropertyValue(css))
}
}
///////////////////////////////////////////////
///////////////////////////////////////////////
/* DOM manipulation and misc code */
var bomsplit;
var canvassplit;
var initDone = false;
var bomSortFunction = null;
var currentSortColumn = null;
var currentSortOrder = null;
var currentHighlightedRowId;
var highlightHandlers = [];
var footprintIndexToHandler = {};
var netsToHandler = {};
var markedFootprints = new Set();
var highlightedFootprints = [];
var highlightedNet = null;
var lastClicked;
function dbg(html) {
dbgdiv.innerHTML = html;
}
function redrawIfInitDone() {
if (initDone) {
redrawCanvas(allcanvas.front);
redrawCanvas(allcanvas.back);
}
}
function padsVisible(value) {
writeStorage("padsVisible", value);
settings.renderPads = value;
redrawIfInitDone();
}
function referencesVisible(value) {
writeStorage("referencesVisible", value);
settings.renderReferences = value;
redrawIfInitDone();
}
function valuesVisible(value) {
writeStorage("valuesVisible", value);
settings.renderValues = value;
redrawIfInitDone();
}
function tracksVisible(value) {
writeStorage("tracksVisible", value);
settings.renderTracks = value;
redrawIfInitDone();
}
function zonesVisible(value) {
writeStorage("zonesVisible", value);
settings.renderZones = value;
redrawIfInitDone();
}
function dnpOutline(value) {
writeStorage("dnpOutline", value);
settings.renderDnpOutline = value;
redrawIfInitDone();
}
function setDarkMode(value) {
if (value) {
topmostdiv.classList.add("dark");
} else {
topmostdiv.classList.remove("dark");
}
writeStorage("darkmode", value);
settings.darkMode = value;
redrawIfInitDone();
if (initDone) {
populateBomTable();
}
}
function setShowBOMColumn(field, value) {
if (field === "references") {
var rl = document.getElementById("reflookup");
rl.disabled = !value;
if (!value) {
rl.value = "";
updateRefLookup("");
}
}
var n = settings.hiddenColumns.indexOf(field);
if (value) {
if (n != -1) {
settings.hiddenColumns.splice(n, 1);
}
} else {
if (n == -1) {
settings.hiddenColumns.push(field);
}
}
writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
if (initDone) {
populateBomTable();
}
redrawIfInitDone();
}
function setFullscreen(value) {
if (value) {
document.documentElement.requestFullscreen();
} else {
document.exitFullscreen();
}
}
function fabricationVisible(value) {
writeStorage("fabricationVisible", value);
settings.renderFabrication = value;
redrawIfInitDone();
}
function silkscreenVisible(value) {
writeStorage("silkscreenVisible", value);
settings.renderSilkscreen = value;
redrawIfInitDone();
}
function setHighlightPin1(value) {
writeStorage("highlightpin1", value);
settings.highlightpin1 = value;
redrawIfInitDone();
}
function setHighlightRowOnClick(value) {
settings.highlightRowOnClick = value;
writeStorage("highlightRowOnClick", value);
if (initDone) {
populateBomTable();
}
}
function getStoredCheckboxRefs(checkbox) {
function convert(ref) {
var intref = parseInt(ref);
if (isNaN(intref)) {
for (var i = 0; i < pcbdata.footprints.length; i++) {
if (pcbdata.footprints[i].ref == ref) {
return i;
}
}
return -1;
} else {
return intref;
}
}
if (!(checkbox in settings.checkboxStoredRefs)) {
var val = readStorage("checkbox_" + checkbox);
settings.checkboxStoredRefs[checkbox] = val ? val : "";
}
if (!settings.checkboxStoredRefs[checkbox]) {
return new Set();
} else {
return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
}
}
function getCheckboxState(checkbox, references) {
var storedRefsSet = getStoredCheckboxRefs(checkbox);
var currentRefsSet = new Set(references.map(r => r[1]));
// Get difference of current - stored
var difference = new Set(currentRefsSet);
for (ref of storedRefsSet) {
difference.delete(ref);
}
if (difference.size == 0) {
// All the current refs are stored
return "checked";
} else if (difference.size == currentRefsSet.size) {
// None of the current refs are stored
return "unchecked";
} else {
// Some of the refs are stored
return "indeterminate";
}
}
function setBomCheckboxState(checkbox, element, references) {
var state = getCheckboxState(checkbox, references);
element.checked = (state == "checked");
element.indeterminate = (state == "indeterminate");
}
function createCheckboxHandlers(input, checkbox, references, row) {
var clickHandler = () => {
refsSet = getStoredCheckboxRefs(checkbox);
var markWhenChecked = settings.markWhenChecked == checkbox;
eventArgs = {
checkbox: checkbox,
refs: references,
}
if (input.checked) {
// checkbox ticked
for (var ref of references) {
refsSet.add(ref[1]);
}
if (markWhenChecked) {
row.classList.add("checked");
for (var ref of references) {
markedFootprints.add(ref[1]);
}
drawHighlights();
}
eventArgs.state = 'checked';
} else {
// checkbox unticked
for (var ref of references) {
refsSet.delete(ref[1]);
}
if (markWhenChecked) {
row.classList.remove("checked");
for (var ref of references) {
markedFootprints.delete(ref[1]);
}
drawHighlights();
}
eventArgs.state = 'unchecked';
}
settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
updateCheckboxStats(checkbox);
EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
}
return [
(e) => {
clickHandler();
},
(e) => {
e.preventDefault();
if (row.onmousemove) row.onmousemove();
},
(e) => {
e.preventDefault();
input.checked = !input.checked;
input.indeterminate = false;
clickHandler();
}
];
}
function clearHighlightedFootprints() {
if (currentHighlightedRowId) {
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
currentHighlightedRowId = null;
highlightedFootprints = [];
highlightedNet = null;
}
}
function createRowHighlightHandler(rowid, refs, net) {
return function () {
if (currentHighlightedRowId) {
if (currentHighlightedRowId == rowid) {
return;
}
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
}
document.getElementById(rowid).classList.add("highlighted");
currentHighlightedRowId = rowid;
highlightedFootprints = refs ? refs.map(r => r[1]) : [];
highlightedNet = net;
drawHighlights();
EventHandler.emitEvent(
IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
rowid: rowid,
refs: refs,
net: net
});
}
}
function updateNetColors() {
writeStorage("netColors", JSON.stringify(settings.netColors));
redrawIfInitDone();
}
function netColorChangeHandler(net) {
return (event) => {
settings.netColors[net] = event.target.value;
updateNetColors();
}
}
function netColorRightClick(net) {
return (event) => {
if (event.button == 2) {
event.preventDefault();
event.stopPropagation();
var style = getComputedStyle(topmostdiv);
var defaultNetColor = style.getPropertyValue('--track-color').trim();
event.target.value = defaultNetColor;
delete settings.netColors[net];
updateNetColors();
}
}
}
function entryMatches(entry) {
if (settings.bommode == "netlist") {
// entry is just a net name
return entry.toLowerCase().indexOf(filter) >= 0;
}
// check refs
if (!settings.hiddenColumns.includes("References")) {
for (var ref of entry) {
if (ref[0].toLowerCase().indexOf(filter) >= 0) {
return true;
}
}
}
// check fields
for (var i in config.fields) {
var f = config.fields[i];
if (!settings.hiddenColumns.includes(f)) {
for (var ref of entry) {
if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) {
return true;
}
}
}
}
return false;
}
function findRefInEntry(entry) {
return entry.filter(r => r[0].toLowerCase() == reflookup);
}
function highlightFilter(s) {
if (!filter) {
return s;
}
var parts = s.toLowerCase().split(filter);
if (parts.length == 1) {
return s;
}
var r = "";
var pos = 0;
for (var i in parts) {
if (i > 0) {
r += '<mark class="highlight">' +
s.substring(pos, pos + filter.length) +
'</mark>';
pos += filter.length;
}
r += s.substring(pos, pos + parts[i].length);
pos += parts[i].length;
}
return r;
}
function getBomListByLayer(layer) {
switch (layer) {
case 'F': return pcbdata.bom.F.slice();
case 'B': return pcbdata.bom.B.slice();
case 'FB': return pcbdata.bom.both.slice();
}
return [];
}
function getSelectedBomList() {
if (settings.bommode == "netlist") {
return pcbdata.nets.slice();
}
var out = getBomListByLayer(settings.canvaslayout);
if (settings.bommode == "ungrouped") {
// expand bom table
var expandedTable = [];
for (var bomentry of out) {
for (var ref of bomentry) {
expandedTable.push([ref]);
}
}
return expandedTable;
}
return out;
}
function checkboxSetUnsetAllHandler(checkboxname) {
return function () {
var checkboxnum = 0;
while (checkboxnum < settings.checkboxes.length &&
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
checkboxnum++;
}
if (checkboxnum >= settings.checkboxes.length) {
return;
}
var allset = true;
var checkbox;
var row;
for (row of bombody.childNodes) {
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
if (!checkbox.checked || checkbox.indeterminate) {
allset = false;
break;
}
}
for (row of bombody.childNodes) {
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
checkbox.checked = !allset;
checkbox.indeterminate = false;
checkbox.onchange();
}
}
}
function createColumnHeader(name, cls, comparator, is_checkbox = false) {
var th = document.createElement("TH");
th.innerHTML = name;
th.classList.add(cls);
if (is_checkbox)
th.setAttribute("col_name", "bom-checkbox");
else
th.setAttribute("col_name", name);
var span = document.createElement("SPAN");
span.classList.add("sortmark");
span.classList.add("none");
th.appendChild(span);
var spacer = document.createElement("div");
spacer.className = "column-spacer";
th.appendChild(spacer);
spacer.onclick = function () {
if (currentSortColumn && th !== currentSortColumn) {
// Currently sorted by another column
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
currentSortColumn.childNodes[1].classList.add("none");
currentSortColumn = null;
currentSortOrder = null;
}
if (currentSortColumn && th === currentSortColumn) {
// Already sorted by this column
if (currentSortOrder == "asc") {
// Sort by this column, descending order
bomSortFunction = function (a, b) {
return -comparator(a, b);
}
currentSortColumn.childNodes[1].classList.remove("asc");
currentSortColumn.childNodes[1].classList.add("desc");
currentSortOrder = "desc";
} else {
// Unsort
bomSortFunction = null;
currentSortColumn.childNodes[1].classList.remove("desc");
currentSortColumn.childNodes[1].classList.add("none");
currentSortColumn = null;
currentSortOrder = null;
}
} else {
// Sort by this column, ascending order
bomSortFunction = comparator;
currentSortColumn = th;
currentSortColumn.childNodes[1].classList.remove("none");
currentSortColumn.childNodes[1].classList.add("asc");
currentSortOrder = "asc";
}
populateBomBody();
}
if (is_checkbox) {
spacer.onclick = fancyDblClickHandler(
spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
}
return th;
}
function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
while (bomhead.firstChild) {
bomhead.removeChild(bomhead.firstChild);
}
var tr = document.createElement("TR");
var th = document.createElement("TH");
th.classList.add("numCol");
var vismenu = document.createElement("div");
vismenu.id = "vismenu";
vismenu.classList.add("menu");
var visbutton = document.createElement("div");
visbutton.classList.add("visbtn");
visbutton.classList.add("hideonprint");
var viscontent = document.createElement("div");
viscontent.classList.add("menu-content");
viscontent.id = "vismenu-content";
settings.columnOrder.forEach(column => {
if (typeof column !== "string")
return;
// Skip empty columns
if (column === "checkboxes" && settings.checkboxes.length == 0)
return;
else if (column === "Quantity" && settings.bommode == "ungrouped")
return;
var label = document.createElement("label");
label.classList.add("menu-label");
var input = document.createElement("input");
input.classList.add("visibility_checkbox");
input.type = "checkbox";
input.onchange = function (e) {
setShowBOMColumn(column, e.target.checked)
};
input.checked = !(settings.hiddenColumns.includes(column));
label.appendChild(input);
if (column.length > 0)
label.append(column[0].toUpperCase() + column.slice(1));
viscontent.appendChild(label);
});
viscontent.childNodes[0].classList.add("menu-label-top");
vismenu.appendChild(visbutton);
if (settings.bommode != "netlist") {
vismenu.appendChild(viscontent);
th.appendChild(vismenu);
}
tr.appendChild(th);
var checkboxCompareClosure = function (checkbox) {
return (a, b) => {
var stateA = getCheckboxState(checkbox, a);
var stateB = getCheckboxState(checkbox, b);
if (stateA > stateB) return -1;
if (stateA < stateB) return 1;
return 0;
}
}
var stringFieldCompareClosure = function (fieldIndex) {
return (a, b) => {
var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
if (fa != fb) return fa > fb ? 1 : -1;
else return 0;
}
}
var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
var compareRefs = (a, b) => {
var ra = referenceRegex.exec(a);
var rb = referenceRegex.exec(b);
if (ra === null || rb === null) {
if (a != b) return a > b ? 1 : -1;
return 0;
} else {
if (ra.groups.prefix != rb.groups.prefix) {
return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
}
if (ra.groups.number != rb.groups.number) {
return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
}
return 0;
}
}
if (settings.bommode == "netlist") {
tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => {
if (a > b) return -1;
if (a < b) return 1;
return 0;
}));
tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => {
return 0;
}));
} else {
// Filter hidden columns
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
var valueIndex = config.fields.indexOf("Value");
var footprintIndex = config.fields.indexOf("Footprint");
columns.forEach((column) => {
if (column === placeHolderColumn) {
var n = 1;
if (column === "checkboxes")
n = settings.checkboxes.length;
for (i = 0; i < n; i++) {
td = placeHolderElements.shift();
tr.appendChild(td);
}
return;
} else if (column === "checkboxes") {
for (var checkbox of settings.checkboxes) {
th = createColumnHeader(
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
tr.appendChild(th);
}
} else if (column === "References") {
tr.appendChild(createColumnHeader("References", "references", (a, b) => {
var i = 0;
while (i < a.length && i < b.length) {
if (a[i][0] != b[i][0]) return compareRefs(a[i][0], b[i][0]);
i++;
}
return a.length - b.length;
}));
} else if (column === "Value") {
tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
var ra = a[0][1], rb = b[0][1];
return valueCompare(
pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
}));
return;
} else if (column === "Footprint") {
tr.appendChild(createColumnHeader(
"Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
} else if (column === "Quantity" && settings.bommode == "grouped") {
tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
return a.length - b.length;
}));
} else {
// Other fields
var i = config.fields.indexOf(column);
if (i < 0)
return;
tr.appendChild(createColumnHeader(
column, `field${i + 1}`, stringFieldCompareClosure(i)));
}
});
}
bomhead.appendChild(tr);
}
function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
while (bom.firstChild) {
bom.removeChild(bom.firstChild);
}
highlightHandlers = [];
footprintIndexToHandler = {};
netsToHandler = {};
currentHighlightedRowId = null;
var first = true;
var style = getComputedStyle(topmostdiv);
var defaultNetColor = style.getPropertyValue('--track-color').trim();
bomtable = getSelectedBomList();
if (bomSortFunction) {
bomtable = bomtable.sort(bomSortFunction);
}
for (var i in bomtable) {
var bomentry = bomtable[i];
if (filter && !entryMatches(bomentry)) {
continue;
}
var references = null;
var netname = null;
var tr = document.createElement("TR");
var td = document.createElement("TD");
var rownum = +i + 1;
tr.id = "bomrow" + rownum;
td.textContent = rownum;
tr.appendChild(td);
if (settings.bommode == "netlist") {
netname = bomentry;
td = document.createElement("TD");
td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
tr.appendChild(td);
var color = settings.netColors[netname] || defaultNetColor;
td = document.createElement("TD");
var colorBox = document.createElement("INPUT");
colorBox.type = "color";
colorBox.value = color;
colorBox.onchange = netColorChangeHandler(netname);
colorBox.onmouseup = netColorRightClick(netname);
colorBox.oncontextmenu = (e) => e.preventDefault();
td.appendChild(colorBox);
td.classList.add("color-column");
tr.appendChild(td);
} else {
if (reflookup) {
references = findRefInEntry(bomentry);
if (references.length == 0) {
continue;
}
} else {
references = bomentry;
}
// Filter hidden columns
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
columns.forEach((column) => {
if (column === placeholderColumn) {
var n = 1;
if (column === "checkboxes")
n = settings.checkboxes.length;
for (i = 0; i < n; i++) {
td = placeHolderElements.shift();
tr.appendChild(td);
}
return;
} else if (column === "checkboxes") {
for (var checkbox of settings.checkboxes) {
if (checkbox) {
td = document.createElement("TD");
var input = document.createElement("input");
input.type = "checkbox";
[input.onchange, td.ontouchstart, td.ontouchend] = createCheckboxHandlers(input, checkbox, references, tr);
setBomCheckboxState(checkbox, input, references);
if (input.checked && settings.markWhenChecked == checkbox) {
tr.classList.add("checked");
}
td.appendChild(input);
tr.appendChild(td);
}
}
} else if (column === "References") {
td = document.createElement("TD");
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
tr.appendChild(td);
} else if (column === "Quantity" && settings.bommode == "grouped") {
// Quantity
td = document.createElement("TD");
td.textContent = references.length;
tr.appendChild(td);
} else {
// All the other fields
var field_index = config.fields.indexOf(column)
if (field_index < 0)
return;
var valueSet = new Set();
references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
td = document.createElement("TD");
var output = new Array();
for (let item of valueSet) {
const visible = highlightFilter(String(item));
if (typeof item === 'string' && item.match(urlRegex)) {
output.push(`<a href="${item}" target="_blank">${visible}</a>`);
} else {
output.push(visible);
}
}
td.innerHTML = output.join(", ");
tr.appendChild(td);
}
});
}
bom.appendChild(tr);
var handler = createRowHighlightHandler(tr.id, references, netname);
if (settings.highlightRowOnClick) {
tr.onmousedown = handler;
} else {
tr.onmousemove = handler;
}
highlightHandlers.push({
id: tr.id,
handler: handler,
});
if (references !== null) {
for (var refIndex of references.map(r => r[1])) {
footprintIndexToHandler[refIndex] = handler;
}
}
if (netname !== null) {
netsToHandler[netname] = handler;
}
if ((filter || reflookup) && first) {
handler();
first = false;
}
}
EventHandler.emitEvent(
IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
filter: filter,
reflookup: reflookup,
checkboxes: settings.checkboxes,
bommode: settings.bommode,
});
}
function highlightPreviousRow() {
if (!currentHighlightedRowId) {
highlightHandlers[highlightHandlers.length - 1].handler();
} else {
if (highlightHandlers.length > 1 &&
highlightHandlers[0].id == currentHighlightedRowId) {
highlightHandlers[highlightHandlers.length - 1].handler();
} else {
for (var i = 0; i < highlightHandlers.length - 1; i++) {
if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
highlightHandlers[i].handler();
break;
}
}
}
}
smoothScrollToRow(currentHighlightedRowId);
}
function highlightNextRow() {
if (!currentHighlightedRowId) {
highlightHandlers[0].handler();
} else {
if (highlightHandlers.length > 1 &&
highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
highlightHandlers[0].handler();
} else {
for (var i = 1; i < highlightHandlers.length; i++) {
if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
highlightHandlers[i].handler();
break;
}
}
}
}
smoothScrollToRow(currentHighlightedRowId);
}
function populateBomTable() {
populateBomHeader();
populateBomBody();
setBomHandlers();
resizableGrid(bomhead);
}
function footprintsClicked(footprintIndexes) {
var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
for (var i = 1; i <= footprintIndexes.length; i++) {
var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
if (refIndex in footprintIndexToHandler) {
lastClicked = refIndex;
footprintIndexToHandler[refIndex]();
smoothScrollToRow(currentHighlightedRowId);
break;
}
}
}
function netClicked(net) {
if (net in netsToHandler) {
netsToHandler[net]();
smoothScrollToRow(currentHighlightedRowId);
} else {
clearHighlightedFootprints();
highlightedNet = net;
drawHighlights();
}
}
function updateFilter(input) {
filter = input.toLowerCase();
populateBomTable();
}
function updateRefLookup(input) {
reflookup = input.toLowerCase();
populateBomTable();
}
function changeCanvasLayout(layout) {
document.getElementById("fl-btn").classList.remove("depressed");
document.getElementById("fb-btn").classList.remove("depressed");
document.getElementById("bl-btn").classList.remove("depressed");
switch (layout) {
case 'F':
document.getElementById("fl-btn").classList.add("depressed");
if (settings.bomlayout != "bom-only") {
canvassplit.collapse(1);
}
break;
case 'B':
document.getElementById("bl-btn").classList.add("depressed");
if (settings.bomlayout != "bom-only") {
canvassplit.collapse(0);
}
break;
default:
document.getElementById("fb-btn").classList.add("depressed");
if (settings.bomlayout != "bom-only") {
canvassplit.setSizes([50, 50]);
}
}
settings.canvaslayout = layout;
writeStorage("canvaslayout", layout);
resizeAll();
changeBomMode(settings.bommode);
}
function populateMetadata() {
document.getElementById("title").innerHTML = pcbdata.metadata.title;
document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
document.getElementById("company").innerHTML = pcbdata.metadata.company;
document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
if (pcbdata.metadata.title != "") {
document.title = pcbdata.metadata.title + " BOM";
}
// Calculate board stats
var fp_f = 0,
fp_b = 0,
pads_f = 0,
pads_b = 0,
pads_th = 0;
for (var i = 0; i < pcbdata.footprints.length; i++) {
if (pcbdata.bom.skipped.includes(i)) continue;
var mod = pcbdata.footprints[i];
if (mod.layer == "F") {
fp_f++;
} else {
fp_b++;
}
for (var pad of mod.pads) {
if (pad.type == "th") {
pads_th++;
} else {
if (pad.layers.includes("F")) {
pads_f++;
}
if (pad.layers.includes("B")) {
pads_b++;
}
}
}
}
document.getElementById("stats-components-front").innerHTML = fp_f;
document.getElementById("stats-components-back").innerHTML = fp_b;
document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
document.getElementById("stats-th-pads").innerHTML = pads_th;
// Update version string
document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&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("topmostdiv").style.height = "";
document.getElementById("topmostdiv").style.display = "block";
break;
case 'top-bottom':
document.getElementById("tb-btn").classList.add("depressed");
document.getElementById("frontcanvas").style.display = "";
document.getElementById("backcanvas").style.display = "";
document.getElementById("topmostdiv").style.height = "100%";
document.getElementById("topmostdiv").style.display = "flex";
document.getElementById("bomdiv").classList.remove("split-horizontal");
document.getElementById("canvasdiv").classList.remove("split-horizontal");
document.getElementById("frontcanvas").classList.add("split-horizontal");
document.getElementById("backcanvas").classList.add("split-horizontal");
if (bomsplit) {
bomsplit.destroy();
bomsplit = null;
canvassplit.destroy();
canvassplit = null;
}
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
sizes: [50, 50],
onDragEnd: resizeAll,
direction: "vertical",
gutterSize: 5
});
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
sizes: [50, 50],
gutterSize: 5,
onDragEnd: resizeAll
});
break;
case 'left-right':
document.getElementById("lr-btn").classList.add("depressed");
document.getElementById("frontcanvas").style.display = "";
document.getElementById("backcanvas").style.display = "";
document.getElementById("topmostdiv").style.height = "100%";
document.getElementById("topmostdiv").style.display = "flex";
document.getElementById("bomdiv").classList.add("split-horizontal");
document.getElementById("canvasdiv").classList.add("split-horizontal");
document.getElementById("frontcanvas").classList.remove("split-horizontal");
document.getElementById("backcanvas").classList.remove("split-horizontal");
if (bomsplit) {
bomsplit.destroy();
bomsplit = null;
canvassplit.destroy();
canvassplit = null;
}
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
sizes: [50, 50],
onDragEnd: resizeAll,
gutterSize: 5
});
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
sizes: [50, 50],
gutterSize: 5,
direction: "vertical",
onDragEnd: resizeAll
});
}
settings.bomlayout = layout;
writeStorage("bomlayout", layout);
changeCanvasLayout(settings.canvaslayout);
}
function changeBomMode(mode) {
document.getElementById("bom-grouped-btn").classList.remove("depressed");
document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
document.getElementById("bom-netlist-btn").classList.remove("depressed");
var chkbxs = document.getElementsByClassName("visibility_checkbox");
switch (mode) {
case 'grouped':
document.getElementById("bom-grouped-btn").classList.add("depressed");
for (var i = 0; i < chkbxs.length; i++) {
chkbxs[i].disabled = false;
}
break;
case 'ungrouped':
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
for (var i = 0; i < chkbxs.length; i++) {
chkbxs[i].disabled = false;
}
break;
case 'netlist':
document.getElementById("bom-netlist-btn").classList.add("depressed");
for (var i = 0; i < chkbxs.length; i++) {
chkbxs[i].disabled = true;
}
}
writeStorage("bommode", mode);
if (mode != settings.bommode) {
settings.bommode = mode;
bomSortFunction = null;
currentSortColumn = null;
currentSortOrder = null;
clearHighlightedFootprints();
}
populateBomTable();
}
function focusFilterField() {
focusInputField(document.getElementById("filter"));
}
function focusRefLookupField() {
focusInputField(document.getElementById("reflookup"));
}
function toggleBomCheckbox(bomrowid, checkboxnum) {
if (!bomrowid || checkboxnum > settings.checkboxes.length) {
return;
}
var bomrow = document.getElementById(bomrowid);
var childNum = checkboxnum + settings.columnOrder.indexOf("checkboxes");
var checkbox = bomrow.childNodes[childNum].childNodes[0];
checkbox.checked = !checkbox.checked;
checkbox.indeterminate = false;
checkbox.onchange();
}
function checkBomCheckbox(bomrowid, checkboxname) {
var checkboxnum = 0;
while (checkboxnum < settings.checkboxes.length &&
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
checkboxnum++;
}
if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
return;
}
var bomrow = document.getElementById(bomrowid);
var childNum = checkboxnum + 1 + settings.columnOrder.indexOf("checkboxes");
var checkbox = bomrow.childNodes[childNum].childNodes[0];
checkbox.checked = true;
checkbox.indeterminate = false;
checkbox.onchange();
}
function setBomCheckboxes(value) {
writeStorage("bomCheckboxes", value);
settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
prepCheckboxes();
populateMarkWhenCheckedOptions();
setMarkWhenChecked(settings.markWhenChecked);
}
function setMarkWhenChecked(value) {
writeStorage("markWhenChecked", value);
settings.markWhenChecked = value;
markedFootprints.clear();
for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
markedFootprints.add(ref);
}
populateBomTable();
drawHighlights();
}
function prepCheckboxes() {
var table = document.getElementById("checkbox-stats");
while (table.childElementCount > 1) {
table.removeChild(table.lastChild);
}
if (settings.checkboxes.length) {
table.style.display = "";
} else {
table.style.display = "none";
}
for (var checkbox of settings.checkboxes) {
var tr = document.createElement("TR");
var td = document.createElement("TD");
td.innerHTML = checkbox;
tr.appendChild(td);
td = document.createElement("TD");
td.id = "checkbox-stats-" + checkbox;
var progressbar = document.createElement("div");
progressbar.classList.add("bar");
td.appendChild(progressbar);
var text = document.createElement("div");
text.classList.add("text");
td.appendChild(text);
tr.appendChild(td);
table.appendChild(tr);
updateCheckboxStats(checkbox);
}
}
function populateMarkWhenCheckedOptions() {
var container = document.getElementById("markWhenCheckedContainer");
if (settings.checkboxes.length == 0) {
container.parentElement.style.display = "none";
return;
}
container.innerHTML = '';
container.parentElement.style.display = "inline-block";
function createOption(name, displayName) {
var id = "markWhenChecked-" + name;
var div = document.createElement("div");
div.classList.add("radio-container");
var input = document.createElement("input");
input.type = "radio";
input.name = "markWhenChecked";
input.value = name;
input.id = id;
input.onchange = () => setMarkWhenChecked(name);
div.appendChild(input);
// Preserve the selected element when the checkboxes change
if (name == settings.markWhenChecked) {
input.checked = true;
}
var label = document.createElement("label");
label.innerHTML = displayName;
label.htmlFor = id;
div.appendChild(label);
container.appendChild(div);
}
createOption("", "None");
for (var checkbox of settings.checkboxes) {
createOption(checkbox, checkbox);
}
}
function updateCheckboxStats(checkbox) {
var checked = getStoredCheckboxRefs(checkbox).size;
var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
var percent = checked * 100.0 / total;
var td = document.getElementById("checkbox-stats-" + checkbox);
td.firstChild.style.width = percent + "%";
td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
}
function constrain(number, min, max) {
return Math.min(Math.max(parseInt(number), min), max);
}
document.onkeydown = function (e) {
switch (e.key) {
case "n":
if (document.activeElement.type == "text") {
return;
}
if (currentHighlightedRowId !== null) {
checkBomCheckbox(currentHighlightedRowId, "placed");
highlightNextRow();
e.preventDefault();
}
break;
case "ArrowUp":
highlightPreviousRow();
e.preventDefault();
break;
case "ArrowDown":
highlightNextRow();
e.preventDefault();
break;
case "ArrowLeft":
case "ArrowRight":
if (document.activeElement.type != "text") {
e.preventDefault();
let boardRotationElement = document.getElementById("boardRotation")
settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
if (e.key == "ArrowLeft") {
settings.boardRotation += 3; // 15 degrees
}
else {
settings.boardRotation -= 3;
}
settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
boardRotationElement.value = settings.boardRotation
setBoardRotation(settings.boardRotation);
}
break;
default:
break;
}
if (e.altKey) {
switch (e.key) {
case "f":
focusFilterField();
e.preventDefault();
break;
case "r":
focusRefLookupField();
e.preventDefault();
break;
case "z":
changeBomLayout("bom-only");
e.preventDefault();
break;
case "x":
changeBomLayout("left-right");
e.preventDefault();
break;
case "c":
changeBomLayout("top-bottom");
e.preventDefault();
break;
case "v":
changeCanvasLayout("F");
e.preventDefault();
break;
case "b":
changeCanvasLayout("FB");
e.preventDefault();
break;
case "n":
changeCanvasLayout("B");
e.preventDefault();
break;
default:
break;
}
if (e.key >= '1' && e.key <= '9') {
toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
e.preventDefault();
}
}
}
function hideNetlistButton() {
document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
document.getElementById("bom-netlist-btn").style.display = "none";
}
function topToggle() {
var top = document.getElementById("top");
var toptoggle = document.getElementById("toptoggle");
if (top.style.display === "none") {
top.style.display = "flex";
toptoggle.classList.remove("flipped");
} else {
top.style.display = "none";
toptoggle.classList.add("flipped");
}
}
window.onload = function (e) {
initRender();
initStorage();
initDefaults();
initUtils();
cleanGutters();
populateMetadata();
dbgdiv = document.getElementById("dbg");
bom = document.getElementById("bombody");
bomhead = document.getElementById("bomhead");
filter = "";
reflookup = "";
if (!("nets" in pcbdata)) {
hideNetlistButton();
}
initDone = true;
setBomCheckboxes(document.getElementById("bomCheckboxes").value);
// Triggers render
changeBomLayout(settings.bomlayout);
// Users may leave fullscreen without touching the checkbox. Uncheck.
document.addEventListener('fullscreenchange', () => {
if (!document.fullscreenElement)
document.getElementById('fullscreenCheckbox').checked = false;
});
}
window.onresize = resizeAll;
window.matchMedia("print").addListener(resizeAll);
///////////////////////////////////////////////
///////////////////////////////////////////////
///////////////////////////////////////////////
</script>
</head>
<body>
<div id="topmostdiv" class="topmostdiv">
<div id="top">
<div id="fileinfodiv">
<table class="fileinfo">
<tbody>
<tr>
<td id="title" class="title" style="width: 70%">
Title
</td>
<td id="revision" class="title" style="width: 30%">
Revision
</td>
</tr>
<tr>
<td id="company">
Company
</td>
<td id="filedate">
Date
</td>
</tr>
</tbody>
</table>
</div>
<div id="bomcontrols">
<div class="hideonprint menu">
<button class="menubtn"></button>
<div class="menu-content">
<label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
<input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
Dark mode
</label><!-- This comment eats space! All of it!
--><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
<input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
Full Screen
</label>
<label class="menu-label" style="width: calc(50% - 18px)">
<input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
Fab layer
</label><!-- This comment eats space! All of it!
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
<input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
Silkscreen
</label>
<label class="menu-label" style="width: calc(50% - 18px)">
<input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
References
</label><!-- This comment eats space! All of it!
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
<input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
Values
</label>
<div id="tracksAndZonesCheckboxes">
<label class="menu-label" style="width: calc(50% - 18px)">
<input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
Tracks
</label><!-- This comment eats space! All of it!
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
<input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
Zones
</label>
</div>
<label class="menu-label" style="width: calc(50% - 18px)">
<input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
Pads
</label><!-- This comment eats space! All of it!
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
<input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
DNP outlined
</label>
<label class="menu-label">
<input id="highlightRowOnClickCheckbox" type="checkbox" checked onchange="setHighlightRowOnClick(this.checked)">
Highlight row on click
</label>
<label class="menu-label">
<input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
Continuous redraw on drag
</label>
<label class="menu-label">
Highlight first pin
<form id="highlightpin1">
<div class="flexbox">
<label>
<input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')">
None
</label>
<label>
<input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')">
All
</label>
<label>
<input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')">
Selected
</label>
</div>
</form>
</label>
<label class="menu-label">
<span>Board rotation</span>
<span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
<input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
</label>
<label class="menu-label">
<input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
Offset back rotation
</label>
<label class="menu-label">
<div style="margin-left: 5px">Bom checkboxes</div>
<input id="bomCheckboxes" class="menu-textbox" type=text
oninput="setBomCheckboxes(this.value)">
</label>
<label class="menu-label">
<div style="margin-left: 5px">Mark when checked</div>
<div id="markWhenCheckedContainer"></div>
</label>
<label class="menu-label">
<span class="shameless-plug">
<span>Created using</span>
<a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
<a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
</span>
</label>
</div>
</div>
<div class="button-container hideonprint">
<button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
title="Front only">F
</button>
<button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
title="Front and Back">FB
</button>
<button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
title="Back only">B
</button>
</div>
<div class="button-container hideonprint">
<button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
title="BOM only"></button>
<button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
title="BOM left, drawings right"></button>
<button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
title="BOM top, drawings bot"></button>
</div>
<div class="button-container hideonprint">
<button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
title="Grouped BOM"></button>
<button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
title="Ungrouped BOM"></button>
<button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
title="Netlist"></button>
</div>
<div class="hideonprint menu">
<button class="statsbtn"></button>
<div class="menu-content">
<table class="stats">
<tbody>
<tr>
<td width="40%">Board stats</td>
<td>Front</td>
<td>Back</td>
<td>Total</td>
</tr>
<tr>
<td>Components</td>
<td id="stats-components-front">~</td>
<td id="stats-components-back">~</td>
<td id="stats-components-total">~</td>
</tr>
<tr>
<td>Groups</td>
<td id="stats-groups-front">~</td>
<td id="stats-groups-back">~</td>
<td id="stats-groups-total">~</td>
</tr>
<tr>
<td>SMD pads</td>
<td id="stats-smd-pads-front">~</td>
<td id="stats-smd-pads-back">~</td>
<td id="stats-smd-pads-total">~</td>
</tr>
<tr>
<td>TH pads</td>
<td colspan=3 id="stats-th-pads">~</td>
</tr>
</tbody>
</table>
<table class="stats">
<col width="40%"/><col />
<tbody id="checkbox-stats">
<tr>
<td colspan=2 style="border-top: 0">Checkboxes</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="hideonprint menu">
<button class="iobtn"></button>
<div class="menu-content">
<div class="menu-label menu-label-top">
<div style="margin-left: 5px;">Save board image</div>
<div class="flexbox">
<input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
<span>X</span>
<input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
</div>
<label>
<input id="render-save-transparent" type="checkbox">
Transparent background
</label>
<div class="flexbox">
<button class="savebtn" onclick="saveImage('F')">Front</button>
<button class="savebtn" onclick="saveImage('B')">Back</button>
</div>
</div>
<div class="menu-label">
<span style="margin-left: 5px;">Config and checkbox state</span>
<div class="flexbox">
<button class="savebtn" onclick="saveSettings()">Export</button>
<button class="savebtn" onclick="loadSettings()">Import</button>
<button class="savebtn" onclick="resetSettings()">Reset</button>
</div>
</div>
<div class="menu-label">
<span style="margin-left: 5px;">Save bom table as</span>
<div class="flexbox">
<button class="savebtn" onclick="saveBomTable('csv')">csv</button>
<button class="savebtn" onclick="saveBomTable('txt')">txt</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="topdivider">
<div class="hideonprint">
<div id="toptoggle" onclick="topToggle()"></div>
</div>
</div>
<div id="bot" class="split" style="flex: 1 1">
<div id="bomdiv" class="split split-horizontal">
<div style="width: 100%">
<input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
oninput="updateRefLookup(this.value)">
<input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
oninput="updateFilter(this.value)">
<div class="button-container hideonprint" style="float: left; margin: 0;">
<button id="copy" title="Copy bom table to clipboard"
onclick="saveBomTable('clipboard')"></button>
</div>
</div>
<div id="dbg"></div>
<table class="bom" id="bomtable">
<thead id="bomhead">
</thead>
<tbody id="bombody">
</tbody>
</table>
</div>
<div id="canvasdiv" class="split split-horizontal">
<div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
<div style="position: relative; width: 100%; height: 100%;">
<canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
<canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
<canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
<canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
</div>
</div>
<div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
<div style="position: relative; width: 100%; height: 100%;">
<canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
<canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
<canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
<canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
</div>
</div>
</div>
</div>
</div>
</body>
</html>