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