diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle index 16c1e34b7538718432246d3e91a7efd3cc9a38fe..81aeb7372806655afe1ef9ca583ec85f29574f33 100644 Binary files a/doc/build/doctrees/environment.pickle and b/doc/build/doctrees/environment.pickle differ diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree index a98499a787cf94786d99d48ca7fc1e3bdc001191..54285dd8c588dc0c2b52c9e1d9448d3d6d24bd0e 100644 Binary files a/doc/build/doctrees/index.doctree and b/doc/build/doctrees/index.doctree differ diff --git a/doc/build/doctrees/source_rst/Ohmpi.doctree b/doc/build/doctrees/source_rst/Ohmpi.doctree index a352807bd8aad34980fd84ac59963779ce5ea17f..2b9b21417ac82360bb7f7199d021ea371c44c24d 100644 Binary files a/doc/build/doctrees/source_rst/Ohmpi.doctree and b/doc/build/doctrees/source_rst/Ohmpi.doctree differ diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree index c950f2c7fb3c639e18b23bba016cc754b876ef7c..c7cc355c1237dec4fae4040cbed3c1ea1b8ef6f4 100644 Binary files a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree and b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree differ diff --git a/doc/build/doctrees/source_rst/api.doctree b/doc/build/doctrees/source_rst/api.doctree index c1b52b8123fc845e5ac3d93413eb697d7432fe19..b8ba3861736e5e253badcf9654cac3e59c0f826f 100644 Binary files a/doc/build/doctrees/source_rst/api.doctree and b/doc/build/doctrees/source_rst/api.doctree differ diff --git a/doc/build/doctrees/source_rst/archived_version.doctree b/doc/build/doctrees/source_rst/archived_version.doctree index c5be1642f456d817761a31b36609853beef3b04c..0ad051506c0d018dd0e20e3ca84e9bb704a8cefa 100644 Binary files a/doc/build/doctrees/source_rst/archived_version.doctree and b/doc/build/doctrees/source_rst/archived_version.doctree differ diff --git a/doc/build/doctrees/source_rst/developing_hardware_components.doctree b/doc/build/doctrees/source_rst/developing_hardware_components.doctree index b12600c989698c71f5a68b52c06f4bd49b6d9e74..4b691f50d53e658f7d306d17b6012239a860634a 100644 Binary files a/doc/build/doctrees/source_rst/developing_hardware_components.doctree and b/doc/build/doctrees/source_rst/developing_hardware_components.doctree differ diff --git a/doc/build/doctrees/source_rst/gallery.doctree b/doc/build/doctrees/source_rst/gallery.doctree index d663705cd4b02d80b3c78807d3810bf7e01c53e9..914a38c75a669fb84800dd444fc616ebce58aa20 100644 Binary files a/doc/build/doctrees/source_rst/gallery.doctree and b/doc/build/doctrees/source_rst/gallery.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware.doctree b/doc/build/doctrees/source_rst/hardware.doctree index f83f4f8a6b257ef21472b077389fc9696727d547..6c5a06e90a54fa545a86a96840c1ec7c804bba10 100644 Binary files a/doc/build/doctrees/source_rst/hardware.doctree and b/doc/build/doctrees/source_rst/hardware.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/assembling.doctree b/doc/build/doctrees/source_rst/hardware/assembling.doctree index 97a7712e91dc6cea7db4f0ace0283f8c6e942849..8e4d3460d02423cc4639bdfa49240bf7cff5cfa0 100644 Binary files a/doc/build/doctrees/source_rst/hardware/assembling.doctree and b/doc/build/doctrees/source_rst/hardware/assembling.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/hw_info.doctree b/doc/build/doctrees/source_rst/hardware/hw_info.doctree index 934313bca5a5809e9bfb1cf8d2f04036ebc2929f..7c2bb5673ed3cb2c9110b0adb04b1f3cf94168f0 100644 Binary files a/doc/build/doctrees/source_rst/hardware/hw_info.doctree and b/doc/build/doctrees/source_rst/hardware/hw_info.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/hw_pwr.doctree b/doc/build/doctrees/source_rst/hardware/hw_pwr.doctree index 4144b00996e230dfc247fdd22afec4cbf3201fb0..eb863990f7209baf929d9381374aee3497a7ac75 100644 Binary files a/doc/build/doctrees/source_rst/hardware/hw_pwr.doctree and b/doc/build/doctrees/source_rst/hardware/hw_pwr.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/hw_rpi.doctree b/doc/build/doctrees/source_rst/hardware/hw_rpi.doctree index 36c36d07390c96dec83fb62642cbac221bd4b2aa..28f797ad9f1ffef1de8785e910de94760222ad61 100644 Binary files a/doc/build/doctrees/source_rst/hardware/hw_rpi.doctree and b/doc/build/doctrees/source_rst/hardware/hw_rpi.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/mb.doctree b/doc/build/doctrees/source_rst/hardware/mb.doctree index 89d2791f1af5ade131e6a816a9ef67faa471edd5..9f9fb59fa06e6da729f60fce3c04aeb1dfaa1f4d 100644 Binary files a/doc/build/doctrees/source_rst/hardware/mb.doctree and b/doc/build/doctrees/source_rst/hardware/mb.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/mb/mb_2023.doctree b/doc/build/doctrees/source_rst/hardware/mb/mb_2023.doctree index 37e27c02a6f77d86f8784571f8b6c4200fca623e..4924cd432bd59714256167907f7310af352e8409 100644 Binary files a/doc/build/doctrees/source_rst/hardware/mb/mb_2023.doctree and b/doc/build/doctrees/source_rst/hardware/mb/mb_2023.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/mb/mb_2024.doctree b/doc/build/doctrees/source_rst/hardware/mb/mb_2024.doctree index 45ce3167b8b3f06afb90435df9ac84febd19bece..cbd5e17c02f59240a85fa796b66c99dcb1f31302 100644 Binary files a/doc/build/doctrees/source_rst/hardware/mb/mb_2024.doctree and b/doc/build/doctrees/source_rst/hardware/mb/mb_2024.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/mux_2023.doctree b/doc/build/doctrees/source_rst/hardware/mux_2023.doctree index 513b02225cde6cea25a2593a56760fbf34c62fb0..90078e4523a30884c4534a193e227ae30bf4b4f4 100644 Binary files a/doc/build/doctrees/source_rst/hardware/mux_2023.doctree and b/doc/build/doctrees/source_rst/hardware/mux_2023.doctree differ diff --git a/doc/build/doctrees/source_rst/hardware/mux_2024.doctree b/doc/build/doctrees/source_rst/hardware/mux_2024.doctree index 10b1c293ed7c975f71e251b6fc06febbb7a59e2d..b12c4cfb8c54aa86765b84cc4b3928cd3872e6ec 100644 Binary files a/doc/build/doctrees/source_rst/hardware/mux_2024.doctree and b/doc/build/doctrees/source_rst/hardware/mux_2024.doctree differ diff --git a/doc/build/doctrees/source_rst/software.doctree b/doc/build/doctrees/source_rst/software.doctree index 85ce1db6a4efc944b4b837cfcf6b42a7179803a3..d09ce192481578df04c1dba564f616bb88d30f48 100644 Binary files a/doc/build/doctrees/source_rst/software.doctree and b/doc/build/doctrees/source_rst/software.doctree differ diff --git a/doc/build/doctrees/source_rst/troubleshooting.doctree b/doc/build/doctrees/source_rst/troubleshooting.doctree index 3d64edea4630187659c3bb4ddb146cb871407539..f8cd401478c258d82ded171339ffc5a1ef642ecf 100644 Binary files a/doc/build/doctrees/source_rst/troubleshooting.doctree and b/doc/build/doctrees/source_rst/troubleshooting.doctree differ diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree index 4a305eafb9c4da53e29df1ae64af431280d37022..6aa173601c23942ebeea70557206f5222003cb8c 100644 Binary files a/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree and b/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree differ diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree index 6f821c24e3ed3e5d20d40b7e0ed04357898711f7..735849fa6ec24e5da69a5e4eeb7381a106a3d1e5 100644 Binary files a/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree and b/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree differ diff --git a/doc/build/html/.buildinfo b/doc/build/html/.buildinfo index 9bcdd9d7a1836bfa697cb1faf3274b4087ba5690..1b7356876373e52a23a2521b04950b403394e058 100644 --- a/doc/build/html/.buildinfo +++ b/doc/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 93dd0a18ee39a36706df66d2b2d5e1fa +config: ce90ea12528984e50e8900dad56cd1de tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/doc/build/html/_images/32.jpg b/doc/build/html/_images/32.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ce6e1fb46678a310ac48f4bc7d9bb516f33bcbe Binary files /dev/null and b/doc/build/html/_images/32.jpg differ diff --git a/doc/build/html/_sources/index.rst.txt b/doc/build/html/_sources/index.rst.txt index 0f29794bd149093f08fd285833aeb1250f1a2387..ab0cf9d46cac975dc549e4bbeead8ac098baa69c 100644 --- a/doc/build/html/_sources/index.rst.txt +++ b/doc/build/html/_sources/index.rst.txt @@ -41,6 +41,7 @@ Contents: source_rst/gallery source_rst/developing_hardware_components source_rst/archived_version + source_rst/ibom.html diff --git a/doc/build/html/_sources/source_rst/hardware/mb.rst.txt b/doc/build/html/_sources/source_rst/hardware/mb.rst.txt index 3a91aa6d6978d1d92f1381cb1066ab1a02720565..6f8cff3989afde26665663330af1af35b9f11e23 100644 --- a/doc/build/html/_sources/source_rst/hardware/mb.rst.txt +++ b/doc/build/html/_sources/source_rst/hardware/mb.rst.txt @@ -51,7 +51,8 @@ Specifications -Contents: +Assemble you measurement board: +------------------------------- .. toctree:: :maxdepth: 2 diff --git a/doc/build/html/_sources/source_rst/hardware/mb/mb_2023.rst.txt b/doc/build/html/_sources/source_rst/hardware/mb/mb_2023.rst.txt index 66fc82328ef8aa217afd24e369e4b10840e8ed95..84509fa1c630719b77f267a23dbba1c5782b8c07 100644 --- a/doc/build/html/_sources/source_rst/hardware/mb/mb_2023.rst.txt +++ b/doc/build/html/_sources/source_rst/hardware/mb/mb_2023.rst.txt @@ -4,38 +4,8 @@ Measurement board v2023 ********************************************** -Specifications -============== - -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -| **Parameter** | **V1.0x** | Units | **v2023** | Units | -+===============================+=======================+===========+=======================+===========+ -|Electrodes |32 | |64 to 128 | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Operating temperature |-0 to 50 |°c |-25 to 50 |°C | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Power consumption of CPU and |18.5 |W |18.5 |W | -|control system | | | | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Voltage injection |12 |V |12 |V | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Battery |9 |V |12 |V | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Current |0 to 40 |mA |0 to 40 |mA | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Min pulse duration |150 |ms |150 |ms | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Input impedance |80 |MOhm |80 |MOhm | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Data storage |micro SD card | |micro SD card | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Resolution |0.01 |Ohm |0.01 |Ohm | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ - - - **PART A** Assembly of the measurement board -====================================================== +============================================== Required components diff --git a/doc/build/html/_sources/source_rst/hardware/mb/mb_2024.rst.txt b/doc/build/html/_sources/source_rst/hardware/mb/mb_2024.rst.txt index 65656c363896e2a6324e42d5bd3ed89fd0f61b23..45d2242c6741a33b326f5884f230c7b5316f9e5d 100644 --- a/doc/build/html/_sources/source_rst/hardware/mb/mb_2024.rst.txt +++ b/doc/build/html/_sources/source_rst/hardware/mb/mb_2024.rst.txt @@ -2,14 +2,49 @@ **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.** -Measurement board v2024 -======================= +Measurement board 2024.0.2 +=========================== + +The 2024.0.2 measurement board has been developed to replace the 2023.0.1 measurement board. It offers superior performance compared to its predecessor. +The current measurement component has not evolved and presents no major differences. However, the major upgrade is the Mikroe-1887 module. Specifically, +it provides electrical isolation for the Vmn measurement set. This isolation allows for injection voltages (Vab) up to 200V + + +**PART A** Assembly of the measurement board +-------------------------------------------- + +Required components +------------------- + +`Interactive BOM list <ibom.html>`_ + + +.. figure:: ../../../img/mb.2024.x.x/32.jpg + :width: 700px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + + + + +.. csv-table:: List of components + :file: ../../../img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv + :widths: 30, 70, 70, 70, 70, 35, 35 + :header-rows: 1 + + + +.. toctree:: + :maxdepth: 2 + + bom/ibom.html + bom/ibom.html + -You can also include a file directly: -.. raw:: html - :file: ../../../bomlist/ibom.html diff --git a/doc/build/html/_static/_sphinx_javascript_frameworks_compat.js b/doc/build/html/_static/_sphinx_javascript_frameworks_compat.js index 8549469dc29fac0cbf16d10355e3313897cb3752..81415803ec2750c82251e896e7eb7b0ac842dac1 100644 --- a/doc/build/html/_static/_sphinx_javascript_frameworks_compat.js +++ b/doc/build/html/_static/_sphinx_javascript_frameworks_compat.js @@ -1,20 +1,9 @@ -/* - * _sphinx_javascript_frameworks_compat.js - * ~~~~~~~~~~ - * - * Compatability shim for jQuery and underscores.js. - * - * WILL BE REMOVED IN Sphinx 6.0 - * xref RemovedInSphinx60Warning +/* Compatability shim for jQuery and underscores.js. * + * Copyright Sphinx contributors + * Released under the two clause BSD licence */ -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - - /** * small helper function to urldecode strings * diff --git a/doc/build/html/_static/basic.css b/doc/build/html/_static/basic.css index 088967717207949a5bf50138c5f253fd839b831f..30fee9d0f76a47aec5ef23e46adbf6bab4671eac 100644 --- a/doc/build/html/_static/basic.css +++ b/doc/build/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -324,17 +328,17 @@ aside.sidebar { p.sidebar-title { font-weight: bold; } + nav.contents, aside.topic, - div.admonition, div.topic, blockquote { clear: left; } /* -- topics ---------------------------------------------------------------- */ + nav.contents, aside.topic, - div.topic { border: 1px solid #ccc; padding: 7px; @@ -375,7 +379,6 @@ div.sidebar > :last-child, aside.sidebar > :last-child, nav.contents > :last-child, aside.topic > :last-child, - div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; @@ -385,7 +388,6 @@ div.sidebar::after, aside.sidebar::after, nav.contents::after, aside.topic::after, - div.topic::after, div.admonition::after, blockquote::after { @@ -611,25 +613,6 @@ ul.simple p { margin-bottom: 0; } -/* Docutils 0.17 and older (footnotes & citations) */ -dl.footnote > dt, -dl.citation > dt { - float: left; - margin-right: 0.5em; -} - -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; -} - -dl.footnote > dd:after, -dl.citation > dd:after { - content: ""; - clear: both; -} - -/* Docutils 0.18+ (footnotes & citations) */ aside.footnote > span, div.citation > span { float: left; @@ -654,8 +637,6 @@ div.citation > p:last-of-type:after { clear: both; } -/* Footnotes & citations ends */ - dl.field-list { display: grid; grid-template-columns: fit-content(30%) auto; @@ -668,10 +649,6 @@ dl.field-list > dt { padding-right: 5px; } -dl.field-list > dt:after { - content: ":"; -} - dl.field-list > dd { padding-left: 0.5em; margin-top: 0em; @@ -697,6 +674,16 @@ dd { margin-left: 30px; } +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + dl > dd:last-child, dl > dd:last-child > :last-child { margin-bottom: 0; @@ -765,6 +752,14 @@ abbr, acronym { cursor: help; } +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + /* -- code displays --------------------------------------------------------- */ pre { diff --git a/doc/build/html/_static/doctools.js b/doc/build/html/_static/doctools.js index c3db08d1c3896f616576ba6e6b96dc80fcfc50b9..d06a71d7518041301a303697d2a3c372648eb7bf 100644 --- a/doc/build/html/_static/doctools.js +++ b/doc/build/html/_static/doctools.js @@ -4,12 +4,19 @@ * * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '<p class="highlight-link">' + - '<a href="javascript:Documentation.hideSearchWords()">' + - Documentation.gettext("Hide Search Matches") + - "</a></p>" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/doc/build/html/_static/documentation_options.js b/doc/build/html/_static/documentation_options.js index bf1a4d347cdd3c1589a1ce21780f69dc350eaf21..dadb7b3c95b3d3f01295fe6b69018da8111b26cb 100644 --- a/doc/build/html/_static/documentation_options.js +++ b/doc/build/html/_static/documentation_options.js @@ -1,5 +1,4 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), +const DOCUMENTATION_OPTIONS = { VERSION: 'v2024rc', LANGUAGE: 'en', COLLAPSE_INDEX: false, @@ -10,5 +9,5 @@ var DOCUMENTATION_OPTIONS = { SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: false, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/doc/build/html/_static/ibom.html b/doc/build/html/_static/ibom.html new file mode 100644 index 0000000000000000000000000000000000000000..a2fef3a0acd2f01fe70593e855f1a0ad54523001 --- /dev/null +++ b/doc/build/html/_static/ibom.html @@ -0,0 +1,4669 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Interactive BOM for KiCAD</title> + <style type="text/css"> +:root { + --pcb-edge-color: black; + --pad-color: #878787; + --pad-hole-color: #CCCCCC; + --pad-color-highlight: #D04040; + --pad-color-highlight-both: #D0D040; + --pad-color-highlight-marked: #44a344; + --pin1-outline-color: #ffb629; + --pin1-outline-color-highlight: #ffb629; + --pin1-outline-color-highlight-both: #fcbb39; + --pin1-outline-color-highlight-marked: #fdbe41; + --silkscreen-edge-color: #aa4; + --silkscreen-polygon-color: #4aa; + --silkscreen-text-color: #4aa; + --fabrication-edge-color: #907651; + --fabrication-polygon-color: #907651; + --fabrication-text-color: #a27c24; + --track-color: #def5f1; + --track-color-highlight: #D04040; + --zone-color: #def5f1; + --zone-color-highlight: #d0404080; +} + +html, +body { + margin: 0px; + height: 100%; + font-family: Verdana, sans-serif; +} + +.dark.topmostdiv { + --pcb-edge-color: #eee; + --pad-color: #808080; + --pin1-outline-color: #ffa800; + --pin1-outline-color-highlight: #ccff00; + --track-color: #42524f; + --zone-color: #42524f; + background-color: #252c30; + color: #eee; +} + +button { + background-color: #eee; + border: 1px solid #888; + color: black; + height: 44px; + width: 44px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 14px; + font-weight: bolder; +} + +.dark button { + /* This will be inverted */ + background-color: #c3b7b5; +} + +button.depressed { + background-color: #0a0; + color: white; +} + +.dark button.depressed { + /* This will be inverted */ + background-color: #b3b; +} + +button:focus { + outline: 0; +} + +button#tb-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#lr-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#bom-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-grouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-ungrouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-netlist-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#copy { + background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E"); + background-position: 6px 6px; + background-repeat: no-repeat; + background-size: 26px 26px; + border-radius: 6px; + height: 40px; + width: 40px; + margin: 10px 5px; +} + +button#copy:active { + box-shadow: inset 0px 0px 5px #6c6c6c; +} + +textarea.clipboard-temp { + position: fixed; + top: 0; + left: 0; + width: 2em; + height: 2em; + padding: 0; + border: None; + outline: None; + box-shadow: None; + background: transparent; +} + +.left-most-button { + border-right: 0; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.middle-button { + border-right: 0; +} + +.right-most-button { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.button-container { + font-size: 0; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.dark .button-container { + filter: invert(1); +} + +.button-container button { + background-size: 32px 32px; + background-position: 5px 5px; + background-repeat: no-repeat; +} + +@media print { + .hideonprint { + display: none; + } +} + +canvas { + cursor: crosshair; +} + +canvas:active { + cursor: grabbing; +} + +.fileinfo { + width: 100%; + max-width: 1000px; + border: none; + padding: 3px; +} + +.fileinfo .title { + font-size: 20pt; + font-weight: bold; +} + +.fileinfo td { + overflow: hidden; + white-space: nowrap; + max-width: 1px; + width: 50%; + text-overflow: ellipsis; +} + +.bom { + border-collapse: collapse; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 10pt; + table-layout: fixed; + width: 100%; + margin-top: 1px; + position: relative; +} + +.bom th, +.bom td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +.dark .bom th, +.dark .bom td { + border: 1px solid #777; +} + +.bom th { + background-color: #CCCCCC; + background-clip: padding-box; +} + +.dark .bom th { + background-color: #3b4749; +} + +.bom tr.highlighted:nth-child(n) { + background-color: #cfc; +} + +.dark .bom tr.highlighted:nth-child(n) { + background-color: #226022; +} + +.bom tr:nth-child(even) { + background-color: #f2f2f2; +} + +.dark .bom tr:nth-child(even) { + background-color: #313b40; +} + +.bom tr.checked { + color: #1cb53d; +} + +.dark .bom tr.checked { + color: #2cce54; +} + +.bom tr { + transition: background-color 0.2s; +} + +.bom .numCol { + width: 30px; +} + +.bom .value { + width: 15%; +} + +.bom .quantity { + width: 65px; +} + +.bom th .sortmark { + position: absolute; + right: 1px; + top: 1px; + margin-top: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent #221 transparent; + transform-origin: 50% 85%; + transition: opacity 0.2s, transform 0.4s; +} + +.dark .bom th .sortmark { + filter: invert(1); +} + +.bom th .sortmark.none { + opacity: 0; +} + +.bom th .sortmark.desc { + transform: rotate(180deg); +} + +.bom th:hover .sortmark.none { + opacity: 0.5; +} + +.bom .bom-checkbox { + width: 30px; + position: relative; + user-select: none; + -moz-user-select: none; +} + +.bom .bom-checkbox:before { + content: ""; + position: absolute; + border-width: 15px; + border-style: solid; + border-color: #51829f transparent transparent transparent; + visibility: hidden; + top: -15px; +} + +.bom .bom-checkbox:after { + content: "Double click to set/unset all"; + position: absolute; + color: white; + top: -35px; + left: -26px; + background: #51829f; + padding: 5px 15px; + border-radius: 8px; + white-space: nowrap; + visibility: hidden; +} + +.bom .bom-checkbox:hover:before, +.bom .bom-checkbox:hover:after { + visibility: visible; + transition: visibility 0.2s linear 1s; +} + +.split { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; + background-color: inherit; +} + +.split.split-horizontal, +.gutter.gutter-horizontal { + height: 100%; + float: left; +} + +.gutter { + background-color: #ddd; + background-repeat: no-repeat; + background-position: 50%; + transition: background-color 0.3s; +} + +.dark .gutter { + background-color: #777; +} + +.gutter.gutter-horizontal { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg=='); + cursor: ew-resize; + width: 5px; +} + +.gutter.gutter-vertical { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); + cursor: ns-resize; + height: 5px; +} + +.searchbox { + float: left; + height: 40px; + margin: 10px 5px; + padding: 12px 32px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 18px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 6px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg=='); + background-position: 10px 10px; + background-repeat: no-repeat; +} + +.dark .searchbox { + background-color: #111; + color: #eee; +} + +.searchbox::placeholder { + color: #ccc; +} + +.dark .searchbox::placeholder { + color: #666; +} + +.filter { + width: calc(60% - 64px); +} + +.reflookup { + width: calc(40% - 10px); +} + +input[type=text]:focus { + background-color: white; + border: 1px solid #333; +} + +.dark input[type=text]:focus { + background-color: #333; + border: 1px solid #ccc; +} + +mark.highlight { + background-color: #5050ff; + color: #fff; + padding: 2px; + border-radius: 6px; +} + +.dark mark.highlight { + background-color: #76a6da; + color: #111; +} + +.menubtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A"); + background-position: center; + background-repeat: no-repeat; +} + +.statsbtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.iobtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.visbtn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; + padding: 15px; +} + +#vismenu-content { + left: 0px; + font-family: Verdana, sans-serif; +} + +.dark .statsbtn, +.dark .savebtn, +.dark .menubtn, +.dark .iobtn, +.dark .visbtn { + filter: invert(1); +} + +.flexbox { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.savebtn { + background-color: #d6d6d6; + width: auto; + height: 30px; + flex-grow: 1; + margin: 5px; + border-radius: 4px; +} + +.savebtn:active { + background-color: #0a0; + color: white; +} + +.dark .savebtn:active { + /* This will be inverted */ + background-color: #b3b; +} + +.stats { + border-collapse: collapse; + font-size: 12pt; + table-layout: fixed; + width: 100%; + min-width: 450px; +} + +.dark .stats td { + border: 1px solid #bbb; +} + +.stats td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +#checkbox-stats div { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +#checkbox-stats .bar { + background-color: rgba(28, 251, 0, 0.6); +} + +.menu { + position: relative; + display: inline-block; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.menu-content { + font-size: 12pt !important; + text-align: left !important; + font-weight: normal !important; + display: none; + position: absolute; + background-color: white; + right: 0; + min-width: 300px; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 100; + padding: 8px; +} + +.dark .menu-content { + background-color: #111; +} + +.menu:hover .menu-content { + display: block; +} + +.menu:hover .menubtn, +.menu:hover .iobtn, +.menu:hover .statsbtn { + background-color: #eee; +} + +.menu-label { + display: inline-block; + padding: 8px; + border: 1px solid #ccc; + border-top: 0; + width: calc(100% - 18px); +} + +.menu-label-top { + border-top: 1px solid #ccc; +} + +.menu-textbox { + float: left; + height: 24px; + margin: 10px 5px; + padding: 5px 5px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 14px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 4px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + width: calc(100% - 10px); +} + +.menu-textbox.invalid, +.dark .menu-textbox.invalid { + color: red; +} + +.dark .menu-textbox { + background-color: #222; + color: #eee; +} + +.radio-container { + margin: 4px; +} + +.topmostdiv { + display: flex; + flex-direction: column; + width: 100%; + background-color: white; + transition: background-color 0.3s; +} + +#top { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + align-items: center; +} + +#topdivider { + border-bottom: 2px solid black; + display: flex; + justify-content: center; + align-items: center; +} + +.dark #topdivider { + border-bottom: 2px solid #ccc; +} + +#topdivider>div { + position: relative; +} + +#toptoggle { + cursor: pointer; + user-select: none; + position: absolute; + padding: 0.1rem 0.3rem; + top: -0.4rem; + left: -1rem; + font-size: 1.4rem; + line-height: 60%; + border: 1px solid black; + border-radius: 1rem; + background-color: #fff; + z-index: 100; +} + +.flipped { + transform: rotate(0.5turn); +} + +.dark #toptoggle { + border: 1px solid #fff; + background-color: #222; +} + +#fileinfodiv { + flex: 20rem 1 0; + overflow: auto; +} + +#bomcontrols { + display: flex; + flex-direction: row-reverse; +} + +#bomcontrols>* { + flex-shrink: 0; +} + +#dbg { + display: block; +} + +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #aaa; +} + +::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +.slider { + -webkit-appearance: none; + width: 100%; + margin: 3px 0; + padding: 0; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + border-radius: 3px; +} + +.slider:hover { + opacity: 1; +} + +.slider:focus { + outline: none; +} + +.slider::-webkit-slider-runnable-track { + -webkit-appearance: none; + width: 100%; + height: 8px; + background: #d3d3d3; + border-radius: 3px; + border: none; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin-top: -4px; +} + +.dark .slider::-webkit-slider-thumb { + background: #3d3; +} + +.slider::-moz-range-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; +} + +.slider::-moz-range-track { + height: 8px; + background: #d3d3d3; + border-radius: 3px; +} + +.dark .slider::-moz-range-thumb { + background: #3d3; +} + +.slider::-ms-track { + width: 100%; + height: 8px; + border-width: 3px 0; + background: transparent; + border-color: transparent; + color: transparent; + transition: opacity .2s; +} + +.slider::-ms-fill-lower { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-fill-upper { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin: 0; +} + +.shameless-plug { + font-size: 0.8em; + text-align: center; + display: block; +} + +a { + color: #0278a4; +} + +.dark a { + color: #00b9fd; +} + +#frontcanvas, +#backcanvas { + touch-action: none; +} + +.placeholder { + border: 1px dashed #9f9fda !important; + background-color: #edf2f7 !important; +} + +.dragging { + z-index: 999; +} + +.dark .dragging>table>tbody>tr { + background-color: #252c30; +} + +.dark .placeholder { + filter: invert(1); +} + +.column-spacer { + top: 0; + left: 0; + width: calc(100% - 4px); + position: absolute; + cursor: pointer; + user-select: none; + height: 100%; +} + +.column-width-handle { + top: 0; + right: 0; + width: 4px; + position: absolute; + cursor: col-resize; + user-select: none; + height: 100%; +} + +.column-width-handle:hover { + background-color: #4f99bd; +} + +.help-link { + border: 1px solid #0278a4; + padding-inline: 0.3rem; + border-radius: 3px; + cursor: pointer; +} + +.dark .help-link { + border: 1px solid #00b9fd; +} + +.bom-color { + width: 20%; +} + +.color-column input { + width: 1.6rem; + height: 1rem; + border: 1px solid black; + cursor: pointer; + padding: 0; +} + +/* removes default styling from input color element */ +::-webkit-color-swatch { + border: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-moz-color-swatch, +::-moz-focus-inner { + border: none; +} + +::-moz-focus-inner { + padding: 0; +} +/* #bomhead { + position: sticky; + top: 0px; + z-index: 1; +} */ + </style> + <script type="text/javascript" > +/////////////////////////////////////////////// +/* + Split.js - v1.3.5 + MIT License + https://github.com/nathancahill/Split.js +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net> +// This work is free. You can redistribute it and/or modify it +// under the terms of the WTFPL, Version 2 +// For more information see LICENSE.txt or http://www.wtfpl.net/ +// +// For more information, the home page: +// http://pieroxy.net/blog/pages/lz-string/testing.html +// +// LZ-based compression algorithm, version 1.4.4 +var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/*! + * PEP v0.4.3 | https://github.com/jquery/PEP + * Copyright jQuery Foundation and other contributors | http://jquery.org/license + */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1); +for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0; +var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})} +var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){ +for(var b=a;b.parentNode;)b=b.parentNode; +return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target); +return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){ +// +this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))}, +installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){ +var b=x(a,this.findElements,this); +return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){} +var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[], +isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){ +var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID); +0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button]; +c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a), +c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events), +Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events), +Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b); +d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){ +(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE, +c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey; +var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))}, +shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c) +b=!1;else if("XY"===c) +b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]); +b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0}, +vacuumTouches:function(a){var b=a.touches; +if(R.size>=b.length){var c=[];R.forEach(function(a,d){ +if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId); +if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e, +d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):( +b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)}, +dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0]; +if(this.isPrimaryTouch(c)){ +var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint", "Description"]} +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var pcbdata = JSON.parse(LZString.decompressFromBase64("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")) +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* Utility functions */ + +var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' + + pcbdata.metadata.revision + '__#'; +var storage; + +function initStorage(key) { + try { + window.localStorage.getItem("blank"); + storage = window.localStorage; + } catch (e) { + // localStorage not available + } + if (!storage) { + try { + window.sessionStorage.getItem("blank"); + storage = window.sessionStorage; + } catch (e) { + // sessionStorage also not available + } + } +} + +function readStorage(key) { + if (storage) { + return storage.getItem(storagePrefix + key); + } else { + return null; + } +} + +function writeStorage(key, value) { + if (storage) { + storage.setItem(storagePrefix + key, value); + } +} + +function fancyDblClickHandler(el, onsingle, ondouble) { + return function () { + if (el.getAttribute("data-dblclick") == null) { + el.setAttribute("data-dblclick", 1); + setTimeout(function () { + if (el.getAttribute("data-dblclick") == 1) { + onsingle(); + } + el.removeAttribute("data-dblclick"); + }, 200); + } else { + el.removeAttribute("data-dblclick"); + ondouble(); + } + } +} + +function smoothScrollToRow(rowid) { + document.getElementById(rowid).scrollIntoView({ + behavior: "smooth", + block: "center", + inline: "nearest" + }); +} + +function focusInputField(input) { + input.scrollIntoView(false); + input.focus(); + input.select(); +} + +function saveBomTable(output) { + var text = ''; + for (var node of bomhead.childNodes[0].childNodes) { + if (node.firstChild) { + text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue); + } + if (node != bomhead.childNodes[0].lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + for (var row of bombody.childNodes) { + for (var cell of row.childNodes) { + let val = ''; + for (var node of cell.childNodes) { + if (node.nodeName == "INPUT") { + if (node.checked) { + val += '✓'; + } + } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) { + val += node.firstChild.nodeValue; + } else { + val += node.nodeValue; + } + } + if (output == 'csv') { + val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters + if (isNumeric(val)) { + val = +val; // use number + } else { + val = `"${val}"`; // enclosed within double-quote + } + } + text += val; + if (cell != row.lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + } + + if (output != 'clipboard') { + // To file: csv or txt + var blob = new Blob([text], { + type: `text/${output}` + }); + saveFile(`${pcbdata.metadata.title}.${output}`, blob); + } else { + // To clipboard + var textArea = document.createElement("textarea"); + textArea.classList.add('clipboard-temp'); + textArea.value = text; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + if (document.execCommand('copy')) { + console.log('Bom copied to clipboard.'); + } + } catch (err) { + console.log('Can not copy to clipboard.'); + } + + document.body.removeChild(textArea); + } +} + +function isNumeric(str) { + /* https://stackoverflow.com/a/175787 */ + return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str))); +} + +function removeGutterNode(node) { + for (var i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].classList && + node.childNodes[i].classList.contains("gutter")) { + node.removeChild(node.childNodes[i]); + break; + } + } +} + +function cleanGutters() { + removeGutterNode(document.getElementById("bot")); + removeGutterNode(document.getElementById("canvasdiv")); +} + +var units = { + prefixes: { + giga: ["G", "g", "giga", "Giga", "GIGA"], + mega: ["M", "mega", "Mega", "MEGA"], + kilo: ["K", "k", "kilo", "Kilo", "KILO"], + milli: ["m", "milli", "Milli", "MILLI"], + micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ + nano: ["N", "n", "nano", "Nano", "NANO"], + pico: ["P", "p", "pico", "Pico", "PICO"], + }, + unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"], + unitsLong: [ + "OHM", "Ohm", "ohm", "ohms", + "FARAD", "Farad", "farad", + "HENRY", "Henry", "henry" + ], + getMultiplier: function (s) { + if (this.prefixes.giga.includes(s)) return 1e9; + if (this.prefixes.mega.includes(s)) return 1e6; + if (this.prefixes.kilo.includes(s)) return 1e3; + if (this.prefixes.milli.includes(s)) return 1e-3; + if (this.prefixes.micro.includes(s)) return 1e-6; + if (this.prefixes.nano.includes(s)) return 1e-9; + if (this.prefixes.pico.includes(s)) return 1e-12; + return 1; + }, + valueRegex: null, +} + +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 resetSettings() { + if (!confirm( + `This will reset all checkbox states and other settings.\n\n` + + `Press OK if you want to continue.`)) { + return; + } + if (storage) { + var keys = []; + for (var i = 0; i < storage.length; i++) { + var key = storage.key(i); + if (key.startsWith(storagePrefix)) keys.push(key); + } + for (var key of keys) storage.removeItem(key); + } + location.reload(); +} + +function overwriteSettings(newSettings) { + initDone = false; + Object.assign(settings, newSettings); + writeStorage("bomlayout", settings.bomlayout); + writeStorage("bommode", settings.bommode); + writeStorage("canvaslayout", settings.canvaslayout); + writeStorage("bomCheckboxes", settings.checkboxes.join(",")); + document.getElementById("bomCheckboxes").value = settings.checkboxes.join(","); + for (var checkbox of settings.checkboxes) { + writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]); + } + writeStorage("markWhenChecked", settings.markWhenChecked); + padsVisible(settings.renderPads); + document.getElementById("padsCheckbox").checked = settings.renderPads; + fabricationVisible(settings.renderFabrication); + document.getElementById("fabricationCheckbox").checked = settings.renderFabrication; + silkscreenVisible(settings.renderSilkscreen); + document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen; + referencesVisible(settings.renderReferences); + document.getElementById("referencesCheckbox").checked = settings.renderReferences; + valuesVisible(settings.renderValues); + document.getElementById("valuesCheckbox").checked = settings.renderValues; + tracksVisible(settings.renderTracks); + document.getElementById("tracksCheckbox").checked = settings.renderTracks; + zonesVisible(settings.renderZones); + document.getElementById("zonesCheckbox").checked = settings.renderZones; + dnpOutline(settings.renderDnpOutline); + document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline; + setRedrawOnDrag(settings.redrawOnDrag); + document.getElementById("dragCheckbox").checked = settings.redrawOnDrag; + setDarkMode(settings.darkMode); + document.getElementById("darkmodeCheckbox").checked = settings.darkMode; + setHighlightPin1(settings.highlightpin1); + document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + setOffsetBackRotation(settings.offsetBackRotation); + document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation; + initDone = true; + prepCheckboxes(); + changeBomLayout(settings.bomlayout); +} + +function saveFile(filename, blob) { + var link = document.createElement("a"); + var objurl = URL.createObjectURL(blob); + link.download = filename; + link.href = objurl; + link.click(); +} + +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); +} + +var settings = { + canvaslayout: "FB", + bomlayout: "left-right", + bommode: "grouped", + checkboxes: [], + checkboxStoredRefs: {}, + darkMode: false, + highlightpin1: "none", + redrawOnDrag: true, + boardRotation: 0, + offsetBackRotation: false, + renderPads: true, + renderReferences: true, + renderValues: true, + renderSilkscreen: true, + renderFabrication: true, + renderDnpOutline: false, + renderTracks: true, + renderZones: true, + columnOrder: [], + hiddenColumns: [], + netColors: {}, +} + +function initDefaults() { + settings.bomlayout = readStorage("bomlayout"); + if (settings.bomlayout === null) { + settings.bomlayout = config.bom_view; + } + if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) { + settings.bomlayout = config.bom_view; + } + settings.bommode = readStorage("bommode"); + if (settings.bommode === null) { + settings.bommode = "grouped"; + } + if (settings.bommode == "netlist" && !pcbdata.nets) { + settings.bommode = "grouped"; + } + if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) { + settings.bommode = "grouped"; + } + settings.canvaslayout = readStorage("canvaslayout"); + if (settings.canvaslayout === null) { + settings.canvaslayout = config.layer_view; + } + var bomCheckboxes = readStorage("bomCheckboxes"); + if (bomCheckboxes === null) { + bomCheckboxes = config.checkboxes; + } + settings.checkboxes = bomCheckboxes.split(",").filter((e) => e); + document.getElementById("bomCheckboxes").value = bomCheckboxes; + + var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1; + if (highlightpin1 === "false") highlightpin1 = "none"; + if (highlightpin1 === "true") highlightpin1 = "all"; + setHighlightPin1(highlightpin1); + document.forms.highlightpin1.highlightpin1.value = highlightpin1; + + settings.markWhenChecked = readStorage("markWhenChecked") || ""; + populateMarkWhenCheckedOptions(); + + function initBooleanSetting(storageString, def, elementId, func) { + var b = readStorage(storageString); + if (b === null) { + b = def; + } else { + b = (b == "true"); + } + document.getElementById(elementId).checked = b; + func(b); + } + + initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible); + initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible); + initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible); + initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible); + initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible); + if ("tracks" in pcbdata) { + initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible); + initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible); + } else { + document.getElementById("tracksAndZonesCheckboxes").style.display = "none"; + tracksVisible(false); + zonesVisible(false); + } + initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline); + initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag); + initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode); + + var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]); + var hcols = JSON.parse(readStorage("hiddenColumns")); + if (hcols === null) { + hcols = []; + } + settings.hiddenColumns = hcols.filter(e => fields.includes(e)); + + var cord = JSON.parse(readStorage("columnOrder")); + if (cord === null) { + cord = fields; + } else { + cord = cord.filter(e => fields.includes(e)); + if (cord.length != fields.length) + cord = fields; + } + settings.columnOrder = cord; + + settings.boardRotation = readStorage("boardRotation"); + if (settings.boardRotation === null) { + settings.boardRotation = config.board_rotation * 5; + } else { + settings.boardRotation = parseInt(settings.boardRotation); + } + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation); + + settings.netColors = JSON.parse(readStorage("netColors")) || {}; +} + +// Helper classes for user js callbacks. + +const IBOM_EVENT_TYPES = { + ALL: "all", + HIGHLIGHT_EVENT: "highlightEvent", + CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent", + BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent", +} + +const EventHandler = { + callbacks: {}, + init: function () { + for (eventType of Object.values(IBOM_EVENT_TYPES)) + this.callbacks[eventType] = []; + }, + registerCallback: function (eventType, callback) { + this.callbacks[eventType].push(callback); + }, + emitEvent: function (eventType, eventArgs) { + event = { + eventType: eventType, + args: eventArgs, + } + var callback; + for (callback of this.callbacks[eventType]) + callback(event); + for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL]) + callback(event); + } +} +EventHandler.init(); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* PCB rendering code */ + +var emptyContext2d = document.createElement("canvas").getContext("2d"); + +function deg2rad(deg) { + return deg * Math.PI / 180; +} + +function calcFontPoint(linepoint, text, offsetx, offsety, tilt) { + var point = [ + linepoint[0] * text.width + offsetx, + linepoint[1] * text.height + offsety + ]; + // This approximates pcbnew behavior with how text tilts depending on horizontal justification + point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt; + return point; +} + +function drawText(ctx, text, color) { + if ("ref" in text && !settings.renderReferences) return; + if ("val" in text && !settings.renderValues) return; + ctx.save(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.lineWidth = text.thickness; + if ("svgpath" in text) { + ctx.stroke(new Path2D(text.svgpath)); + ctx.restore(); + return; + } + if ("polygons" in text) { + ctx.fill(getPolygonsPath(text)); + ctx.restore(); + return; + } + ctx.translate(...text.pos); + ctx.translate(text.thickness * 0.5, 0); + var angle = -text.angle; + if (text.attr.includes("mirrored")) { + ctx.scale(-1, 1); + angle = -angle; + } + var tilt = 0; + if (text.attr.includes("italic")) { + tilt = 0.125; + } + var interline = text.height * 1.5 + text.thickness; + var txt = text.text.split("\n"); + // KiCad ignores last empty line. + if (txt[txt.length - 1] == '') txt.pop(); + ctx.rotate(deg2rad(angle)); + var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset + offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset + for (var i in txt) { + var lineWidth = text.thickness + interline / 2 * tilt; + for (var j = 0; j < txt[i].length; j++) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + lineWidth += fourSpaces - lineWidth % fourSpaces; + } else { + if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + } + lineWidth += pcbdata.font_data[txt[i][j]].w * text.width; + } + } + var offsetx = -lineWidth * (text.justify[0] + 1) / 2; + var inOverbar = false; + for (var j = 0; j < txt[i].length; j++) { + if (config.kicad_text_formatting) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + offsetx += fourSpaces - offsetx % fourSpaces; + continue; + } else if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + if (txt[i][j] != '~') { + inOverbar = !inOverbar; + } + } + } + var glyph = pcbdata.font_data[txt[i][j]]; + if (inOverbar) { + var overbarStart = [offsetx, -text.height * 1.4 + offsety]; + var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]]; + + if (!lastHadOverbar) { + overbarStart[0] += text.height * 1.4 * tilt; + lastHadOverbar = true; + } + ctx.beginPath(); + ctx.moveTo(...overbarStart); + ctx.lineTo(...overbarEnd); + ctx.stroke(); + } else { + lastHadOverbar = false; + } + for (var line of glyph.l) { + ctx.beginPath(); + ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt)); + for (var k = 1; k < line.length; k++) { + ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt)); + } + ctx.stroke(); + } + offsetx += glyph.w * text.width; + } + offsety += interline; + } + ctx.restore(); +} + +function drawedge(ctx, scalefactor, edge, color) { + ctx.strokeStyle = color; + ctx.fillStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, edge.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + if ("svgpath" in edge) { + ctx.stroke(new Path2D(edge.svgpath)); + } else { + ctx.beginPath(); + if (edge.type == "segment") { + ctx.moveTo(...edge.start); + ctx.lineTo(...edge.end); + } + if (edge.type == "rect") { + ctx.moveTo(...edge.start); + ctx.lineTo(edge.start[0], edge.end[1]); + ctx.lineTo(...edge.end); + ctx.lineTo(edge.end[0], edge.start[1]); + ctx.lineTo(...edge.start); + } + if (edge.type == "arc") { + ctx.arc( + ...edge.start, + edge.radius, + deg2rad(edge.startangle), + deg2rad(edge.endangle)); + } + if (edge.type == "circle") { + ctx.arc( + ...edge.start, + edge.radius, + 0, 2 * Math.PI); + ctx.closePath(); + } + if (edge.type == "curve") { + ctx.moveTo(...edge.start); + ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end); + } + if("filled" in edge && edge.filled) + ctx.fill(); + else + ctx.stroke(); + } +} + +function getChamferedRectPath(size, radius, chamfpos, chamfratio) { + // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8 + var path = new Path2D(); + var width = size[0]; + var height = size[1]; + var x = width * -0.5; + var y = height * -0.5; + var chamfOffset = Math.min(width, height) * chamfratio; + path.moveTo(x, 0); + if (chamfpos & 4) { + path.lineTo(x, y + height - chamfOffset); + path.lineTo(x + chamfOffset, y + height); + path.lineTo(0, y + height); + } else { + path.arcTo(x, y + height, x + width, y + height, radius); + } + if (chamfpos & 8) { + path.lineTo(x + width - chamfOffset, y + height); + path.lineTo(x + width, y + height - chamfOffset); + path.lineTo(x + width, 0); + } else { + path.arcTo(x + width, y + height, x + width, y, radius); + } + if (chamfpos & 2) { + path.lineTo(x + width, y + chamfOffset); + path.lineTo(x + width - chamfOffset, y); + path.lineTo(0, y); + } else { + path.arcTo(x + width, y, x, y, radius); + } + if (chamfpos & 1) { + path.lineTo(x + chamfOffset, y); + path.lineTo(x, y + chamfOffset); + path.lineTo(x, 0); + } else { + path.arcTo(x, y, x, y + height, radius); + } + path.closePath(); + return path; +} + +function getOblongPath(size) { + return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0); +} + +function getPolygonsPath(shape) { + if (shape.path2d) { + return shape.path2d; + } + if ("svgpath" in shape) { + shape.path2d = new Path2D(shape.svgpath); + } else { + var path = new Path2D(); + for (var polygon of shape.polygons) { + path.moveTo(...polygon[0]); + for (var i = 1; i < polygon.length; i++) { + path.lineTo(...polygon[i]); + } + path.closePath(); + } + shape.path2d = path; + } + return shape.path2d; +} + +function drawPolygonShape(ctx, scalefactor, shape, color) { + ctx.save(); + if (!("svgpath" in shape)) { + ctx.translate(...shape.pos); + ctx.rotate(deg2rad(-shape.angle)); + } + if("filled" in shape && !shape.filled) { + ctx.strokeStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, shape.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.stroke(getPolygonsPath(shape)); + } else { + ctx.fillStyle = color; + ctx.fill(getPolygonsPath(shape)); + } + ctx.restore(); +} + +function drawDrawing(ctx, scalefactor, drawing, color) { + if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) { + drawedge(ctx, scalefactor, drawing, color); + } else if (drawing.type == "polygon") { + drawPolygonShape(ctx, scalefactor, drawing, color); + } else { + drawText(ctx, drawing, color); + } +} + +function getCirclePath(radius) { + var path = new Path2D(); + path.arc(0, 0, radius, 0, 2 * Math.PI); + path.closePath(); + return path; +} + +function getCachedPadPath(pad) { + if (!pad.path2d) { + // if path2d is not set, build one and cache it on pad object + if (pad.shape == "rect") { + pad.path2d = new Path2D(); + pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size); + } else if (pad.shape == "oval") { + pad.path2d = getOblongPath(pad.size); + } else if (pad.shape == "circle") { + pad.path2d = getCirclePath(pad.size[0] / 2); + } else if (pad.shape == "roundrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0); + } else if (pad.shape == "chamfrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio) + } else if (pad.shape == "custom") { + pad.path2d = getPolygonsPath(pad); + } + } + return pad.path2d; +} + +function drawPad(ctx, pad, color, outline) { + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + if (pad.offset) { + ctx.translate(...pad.offset); + } + ctx.fillStyle = color; + ctx.strokeStyle = color; + var path = getCachedPadPath(pad); + if (outline) { + ctx.stroke(path); + } else { + ctx.fill(path); + } + ctx.restore(); +} + +function drawPadHole(ctx, pad, padHoleColor) { + if (pad.type != "th") return; + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + ctx.fillStyle = padHoleColor; + if (pad.drillshape == "oblong") { + ctx.fill(getOblongPath(pad.drillsize)); + } else { + ctx.fill(getCirclePath(pad.drillsize[0] / 2)); + } + ctx.restore(); +} + +function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) { + if (highlight) { + // draw bounding box + if (footprint.layer == layer) { + ctx.save(); + ctx.globalAlpha = 0.2; + ctx.translate(...footprint.bbox.pos); + ctx.rotate(deg2rad(-footprint.bbox.angle)); + ctx.translate(...footprint.bbox.relpos); + ctx.fillStyle = colors.pad; + ctx.fillRect(0, 0, ...footprint.bbox.size); + ctx.globalAlpha = 1; + ctx.strokeStyle = colors.pad; + ctx.lineWidth = 3 / scalefactor; + ctx.strokeRect(0, 0, ...footprint.bbox.size); + ctx.restore(); + } + } + // draw drawings + for (var drawing of footprint.drawings) { + if (drawing.layer == layer) { + drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad); + } + } + ctx.lineWidth = 3 / scalefactor; + // draw pads + if (settings.renderPads) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, colors.pad, outline); + if (pad.pin1 && + (settings.highlightpin1 == "all" || + settings.highlightpin1 == "selected" && highlight)) { + drawPad(ctx, pad, colors.outline, true); + } + } + } + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, colors.padHole); + } + } +} + +function drawEdgeCuts(canvas, scalefactor) { + var ctx = canvas.getContext("2d"); + var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color'); + for (var edge of pcbdata.edges) { + drawDrawing(ctx, scalefactor, edge, edgecolor); + } +} + +function drawFootprints(canvas, layer, scalefactor, highlight) { + var ctx = canvas.getContext("2d"); + ctx.lineWidth = 3 / scalefactor; + var style = getComputedStyle(topmostdiv); + + var colors = { + pad: style.getPropertyValue('--pad-color'), + padHole: style.getPropertyValue('--pad-hole-color'), + outline: style.getPropertyValue('--pin1-outline-color'), + } + + for (var i = 0; i < pcbdata.footprints.length; i++) { + var mod = pcbdata.footprints[i]; + var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i); + var h = highlightedFootprints.includes(i); + var d = markedFootprints.has(i); + if (highlight) { + if(h && d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-both'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both'); + } else if (h) { + colors.pad = style.getPropertyValue('--pad-color-highlight'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight'); + } else if (d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-marked'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked'); + } + } + if( h || d || !highlight) { + drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline); + } + } +} + +function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) { + var ctx = canvas.getContext("2d"); + for (var d of pcbdata.drawings[layername][layer]) { + if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) { + drawedge(ctx, scalefactor, d, edgeColor); + } else if (d.type == "polygon") { + drawPolygonShape(ctx, scalefactor, d, polygonColor); + } else { + drawText(ctx, d, textColor); + } + } +} + +function drawTracks(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineCap = "round"; + + var hasHole = (track) => ( + 'drillsize' in track && + track.start[0] == track.end[0] && + track.start[1] == track.end[1]); + + // First draw tracks and tented vias + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (!hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + if ('radius' in track) { + ctx.arc( + ...track.center, + track.radius, + deg2rad(track.startangle), + deg2rad(track.endangle)); + } else { + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + } + ctx.stroke(); + } + } + // Second pass to draw untented vias + var style = getComputedStyle(topmostdiv); + var holeColor = style.getPropertyValue('--pad-hole-color') + + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + ctx.stroke(); + ctx.strokeStyle = holeColor; + ctx.lineWidth = track.drillsize; + ctx.lineTo(...track.end); + ctx.stroke(); + } + } +} + +function drawZones(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineJoin = "round"; + for (var zone of pcbdata.zones[layer]) { + if (highlight && highlightedNet != zone.net) continue; + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + if (!zone.path2d) { + zone.path2d = getPolygonsPath(zone); + } + ctx.fill(zone.path2d, zone.fillrule || "nonzero"); + if (zone.width > 0) { + ctx.lineWidth = zone.width; + ctx.stroke(zone.path2d); + } + } +} + +function clearCanvas(canvas, color = null) { + var ctx = canvas.getContext("2d"); + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + if (color) { + ctx.fillStyle = color; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } else { + if (!window.matchMedia("print").matches) + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + ctx.restore(); +} + +function drawNets(canvas, layer, highlight) { + var style = getComputedStyle(topmostdiv); + if (settings.renderZones) { + var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color'); + drawZones(canvas, layer, zoneColor, highlight); + } + if (settings.renderTracks) { + var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color'); + drawTracks(canvas, layer, trackColor, highlight); + } + if (highlight && settings.renderPads) { + var padColor = style.getPropertyValue('--pad-color-highlight'); + var padHoleColor = style.getPropertyValue('--pad-hole-color'); + var ctx = canvas.getContext("2d"); + for (var footprint of pcbdata.footprints) { + // draw pads + var padDrawn = false; + for (var pad of footprint.pads) { + if (highlightedNet != pad.net) continue; + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, padColor, false); + padDrawn = true; + } + } + if (padDrawn) { + // redraw all pad holes because some pads may overlap + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, padHoleColor); + } + } + } + } +} + +function drawHighlightsOnLayer(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.highlight); + } + if (markedFootprints.size > 0 || highlightedFootprints.length > 0) { + drawFootprints(canvasdict.highlight, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, true); + } + if (highlightedNet !== null) { + drawNets(canvasdict.highlight, canvasdict.layer, true); + } +} + +function drawHighlights() { + drawHighlightsOnLayer(allcanvas.front); + drawHighlightsOnLayer(allcanvas.back); +} + +function drawBackground(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.bg); + clearCanvas(canvasdict.fab); + clearCanvas(canvasdict.silk); + } + + drawNets(canvasdict.bg, canvasdict.layer, false); + drawFootprints(canvasdict.bg, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, false); + + drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom); + + var style = getComputedStyle(topmostdiv); + var edgeColor = style.getPropertyValue('--silkscreen-edge-color'); + var polygonColor = style.getPropertyValue('--silkscreen-polygon-color'); + var textColor = style.getPropertyValue('--silkscreen-text-color'); + if (settings.renderSilkscreen) { + drawBgLayer( + "silkscreen", canvasdict.silk, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } + edgeColor = style.getPropertyValue('--fabrication-edge-color'); + polygonColor = style.getPropertyValue('--fabrication-polygon-color'); + textColor = style.getPropertyValue('--fabrication-text-color'); + if (settings.renderFabrication) { + drawBgLayer( + "fabrication", canvasdict.fab, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } +} + +function prepareCanvas(canvas, flip, transform) { + var ctx = canvas.getContext("2d"); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.scale(transform.zoom, transform.zoom); + ctx.translate(transform.panx, transform.pany); + if (flip) { + ctx.scale(-1, 1); + } + ctx.translate(transform.x, transform.y); + ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + ctx.scale(transform.s, transform.s); +} + +function prepareLayer(canvasdict) { + var flip = (canvasdict.layer === "B"); + for (var c of ["bg", "fab", "silk", "highlight"]) { + prepareCanvas(canvasdict[c], flip, canvasdict.transform); + } +} + +function rotateVector(v, angle) { + angle = deg2rad(angle); + return [ + v[0] * Math.cos(angle) - v[1] * Math.sin(angle), + v[0] * Math.sin(angle) + v[1] * Math.cos(angle) + ]; +} + +function applyRotation(bbox, flip) { + var corners = [ + [bbox.minx, bbox.miny], + [bbox.minx, bbox.maxy], + [bbox.maxx, bbox.miny], + [bbox.maxx, bbox.maxy], + ]; + corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + return { + minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity), + miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity), + maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity), + maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity), + } +} + +function recalcLayerScale(layerdict, width, height) { + var flip = (layerdict.layer === "B"); + var bbox = applyRotation(pcbdata.edges_bbox, flip); + var scalefactor = 0.98 * Math.min( + width / (bbox.maxx - bbox.minx), + height / (bbox.maxy - bbox.miny) + ); + if (scalefactor < 0.1) { + scalefactor = 1; + } + layerdict.transform.s = scalefactor; + if (flip) { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5; + } else { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5; + } + layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5; + for (var c of ["bg", "fab", "silk", "highlight"]) { + canvas = layerdict[c]; + canvas.width = width; + canvas.height = height; + canvas.style.width = (width / devicePixelRatio) + "px"; + canvas.style.height = (height / devicePixelRatio) + "px"; + } +} + +function redrawCanvas(layerdict) { + prepareLayer(layerdict); + drawBackground(layerdict); + drawHighlightsOnLayer(layerdict); +} + +function resizeCanvas(layerdict) { + var canvasdivid = { + "F": "frontcanvas", + "B": "backcanvas" + } [layerdict.layer]; + var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio; + var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio; + recalcLayerScale(layerdict, width, height); + redrawCanvas(layerdict); +} + +function resizeAll() { + resizeCanvas(allcanvas.front); + resizeCanvas(allcanvas.back); +} + +function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) { + var A = x - x1; + var B = y - y1; + var C = x2 - x1; + var D = y2 - y1; + + var dot = A * C + B * D; + var len_sq = C * C + D * D; + var dx, dy; + if (len_sq == 0) { + // start and end of the segment coincide + dx = x - x1; + dy = y - y1; + } else { + var param = dot / len_sq; + var xx, yy; + if (param < 0) { + xx = x1; + yy = y1; + } else if (param > 1) { + xx = x2; + yy = y2; + } else { + xx = x1 + param * C; + yy = y1 + param * D; + } + dx = x - xx; + dy = y - yy; + } + return dx * dx + dy * dy <= d * d; +} + +function modulo(n, mod) { + return ((n % mod) + mod) % mod; +} + +function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) { + var dx = x - xc; + var dy = y - yc; + var r_sq = dx * dx + dy * dy; + var rmin = Math.max(0, radius - d); + var rmax = radius + d; + + if (r_sq < rmin * rmin || r_sq > rmax * rmax) + return false; + + var angle1 = modulo(deg2rad(startangle), 2 * Math.PI); + var dx1 = xc + radius * Math.cos(angle1) - x; + var dy1 = yc + radius * Math.sin(angle1) - y; + if (dx1 * dx1 + dy1 * dy1 <= d * d) + return true; + + var angle2 = modulo(deg2rad(endangle), 2 * Math.PI); + var dx2 = xc + radius * Math.cos(angle2) - x; + var dy2 = yc + radius * Math.sin(angle2) - y; + if (dx2 * dx2 + dy2 * dy2 <= d * d) + return true; + + var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI); + if (angle1 > angle2) + return (angle >= angle2 || angle <= angle1); + else + return (angle >= angle1 && angle <= angle2); +} + +function pointWithinPad(x, y, pad) { + var v = [x - pad.pos[0], y - pad.pos[1]]; + v = rotateVector(v, pad.angle); + if (pad.offset) { + v[0] -= pad.offset[0]; + v[1] -= pad.offset[1]; + } + return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v); +} + +function netHitScan(layer, x, y) { + // Check track segments + if (settings.renderTracks && pcbdata.tracks) { + for (var track of pcbdata.tracks[layer]) { + if ('radius' in track) { + if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) { + return track.net; + } + } else { + if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) { + return track.net; + } + } + } + } + // Check pads + if (settings.renderPads) { + for (var footprint of pcbdata.footprints) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) { + return pad.net; + } + } + } + } + return null; +} + +function pointWithinFootprintBbox(x, y, bbox) { + var v = [x - bbox.pos[0], y - bbox.pos[1]]; + v = rotateVector(v, bbox.angle); + return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] && + bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1]; +} + +function bboxHitScan(layer, x, y) { + var result = []; + for (var i = 0; i < pcbdata.footprints.length; i++) { + var footprint = pcbdata.footprints[i]; + if (footprint.layer == layer) { + if (pointWithinFootprintBbox(x, y, footprint.bbox)) { + result.push(i); + } + } + } + return result; +} + +function handlePointerDown(e, layerdict) { + if (e.button != 0 && e.button != 1) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + layerdict.pointerStates[e.pointerId] = { + distanceTravelled: 0, + lastX: e.offsetX, + lastY: e.offsetY, + downTime: Date.now(), + }; +} + +function handleMouseClick(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var x = e.offsetX; + var y = e.offsetY; + var t = layerdict.transform; + var flip = layerdict.layer === "B"; + if (flip) { + x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s; + } else { + x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s; + } + y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s; + var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)); + if ("nets" in pcbdata) { + var net = netHitScan(layerdict.layer, ...v); + if (net !== highlightedNet) { + netClicked(net); + } + } + if (highlightedNet === null) { + var footprints = bboxHitScan(layerdict.layer, ...v); + if (footprints.length > 0) { + footprintsClicked(footprints); + } + } +} + +function handlePointerLeave(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function resetTransform(layerdict) { + layerdict.transform.panx = 0; + layerdict.transform.pany = 0; + layerdict.transform.zoom = 1; + redrawCanvas(layerdict); +} + +function handlePointerUp(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + e.preventDefault(); + e.stopPropagation(); + + if (e.button == 2) { + // Reset pan and zoom on right click. + resetTransform(layerdict); + layerdict.anotherPointerTapped = false; + return; + } + + // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now + var ptr = layerdict.pointerStates[e.pointerId]; + ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY); + + if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) { + if (Object.keys(layerdict.pointerStates).length == 1) { + if (layerdict.anotherPointerTapped) { + // This is the second pointer coming off of a two-finger tap + resetTransform(layerdict); + } else { + // This is just a regular tap + handleMouseClick(e, layerdict); + } + layerdict.anotherPointerTapped = false; + } else { + // This is the first finger coming off of what could become a two-finger tap + layerdict.anotherPointerTapped = true; + } + } else { + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + layerdict.anotherPointerTapped = false; + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function handlePointerMove(e, layerdict) { + if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var thisPtr = layerdict.pointerStates[e.pointerId]; + + var dx = e.offsetX - thisPtr.lastX; + var dy = e.offsetY - thisPtr.lastY; + + // If this number is low on pointer up, we count the action as a click + thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy); + + if (Object.keys(layerdict.pointerStates).length == 1) { + // This is a simple drag + layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom; + layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom; + } else if (Object.keys(layerdict.pointerStates).length == 2) { + var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0]; + + var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2)); + var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2)); + + var scaleFactor = newDist / oldDist; + + if (scaleFactor != NaN) { + layerdict.transform.zoom *= scaleFactor; + + var zoomd = (1 - scaleFactor) / layerdict.transform.zoom; + layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd; + layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd; + } + } + + thisPtr.lastX = e.offsetX; + thisPtr.lastY = e.offsetY; + + if (settings.redrawOnDrag) { + redrawCanvas(layerdict); + } +} + +function handleMouseWheel(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + var t = layerdict.transform; + var wheeldelta = e.deltaY; + if (e.deltaMode == 1) { + // FF only, scroll by lines + wheeldelta *= 30; + } else if (e.deltaMode == 2) { + wheeldelta *= 300; + } + var m = Math.pow(1.1, -wheeldelta / 40); + // Limit amount of zoom per tick. + if (m > 2) { + m = 2; + } else if (m < 0.5) { + m = 0.5; + } + t.zoom *= m; + var zoomd = (1 - m) / t.zoom; + t.panx += devicePixelRatio * e.offsetX * zoomd; + t.pany += devicePixelRatio * e.offsetY * zoomd; + redrawCanvas(layerdict); +} + +function addMouseHandlers(div, layerdict) { + div.addEventListener("pointerdown", function(e) { + handlePointerDown(e, layerdict); + }); + div.addEventListener("pointermove", function(e) { + handlePointerMove(e, layerdict); + }); + div.addEventListener("pointerup", function(e) { + handlePointerUp(e, layerdict); + }); + var pointerleave = function(e) { + handlePointerLeave(e, layerdict); + } + div.addEventListener("pointercancel", pointerleave); + div.addEventListener("pointerleave", pointerleave); + div.addEventListener("pointerout", pointerleave); + + div.onwheel = function(e) { + handleMouseWheel(e, layerdict); + } + for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) { + element.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }, false); + } +} + +function setRedrawOnDrag(value) { + settings.redrawOnDrag = value; + writeStorage("redrawOnDrag", value); +} + +function setBoardRotation(value) { + settings.boardRotation = value * 5; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("rotationDegree").textContent = settings.boardRotation; + resizeAll(); +} + +function setOffsetBackRotation(value) { + settings.offsetBackRotation = value; + writeStorage("offsetBackRotation", value); + resizeAll(); +} + +function initRender() { + allcanvas = { + front: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("F_bg"), + fab: document.getElementById("F_fab"), + silk: document.getElementById("F_slk"), + highlight: document.getElementById("F_hl"), + layer: "F", + }, + back: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("B_bg"), + fab: document.getElementById("B_fab"), + silk: document.getElementById("B_slk"), + highlight: document.getElementById("B_hl"), + layer: "B", + } + }; + addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front); + addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back); +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* + * Table reordering via Drag'n'Drop + * Inspired by: https://htmldom.dev/drag-and-drop-table-column + */ + +function setBomHandlers() { + + const bom = document.getElementById('bomtable'); + + let dragName; + let placeHolderElements; + let draggingElement; + let forcePopulation; + let xOffset; + let yOffset; + let wasDragged; + + const mouseUpHandler = function(e) { + // Delete dragging element + draggingElement.remove(); + + // Make BOM selectable again + bom.style.removeProperty("userSelect"); + + // Remove listeners + document.removeEventListener('mousemove', mouseMoveHandler); + document.removeEventListener('mouseup', mouseUpHandler); + + if (wasDragged) { + // Redraw whole BOM + populateBomTable(); + } + } + + const mouseMoveHandler = function(e) { + // Notice the dragging + wasDragged = true; + + // Make the dragged element visible + draggingElement.style.removeProperty("display"); + + // Set elements position to mouse position + draggingElement.style.left = `${e.screenX - xOffset}px`; + draggingElement.style.top = `${e.screenY - yOffset}px`; + + // Forced redrawing of BOM table + if (forcePopulation) { + forcePopulation = false; + // Copy array + phe = Array.from(placeHolderElements); + // populate BOM table again + populateBomHeader(dragName, phe); + populateBomBody(dragName, phe); + } + + // Set up array of hidden columns + var hiddenColumns = Array.from(settings.hiddenColumns); + // In the ungrouped mode, quantity don't exist + if (settings.bommode === "ungrouped") + hiddenColumns.push("Quantity"); + // If no checkbox fields can be found, we consider them hidden + if (settings.checkboxes.length == 0) + hiddenColumns.push("checkboxes"); + + // Get table headers and group them into checkboxes, extrafields and normal headers + const bh = document.getElementById("bomhead"); + headers = Array.from(bh.querySelectorAll("th")) + headers.shift() // numCol is not part of the columnOrder + headerGroups = [] + lastCompoundClass = null; + for (i = 0; i < settings.columnOrder.length; i++) { + cElem = settings.columnOrder[i]; + if (hiddenColumns.includes(cElem)) { + // Hidden columns appear as a dummy element + headerGroups.push([]); + continue; + } + elem = headers.filter(e => getColumnOrderName(e) === cElem)[0]; + if (elem.classList.contains("bom-checkbox")) { + if (lastCompoundClass === "bom-checkbox") { + cbGroup = headerGroups.pop(); + cbGroup.push(elem); + headerGroups.push(cbGroup); + } else { + lastCompoundClass = "bom-checkbox"; + headerGroups.push([elem]) + } + } else { + headerGroups.push([elem]) + } + } + + // Copy settings.columnOrder + var columns = Array.from(settings.columnOrder) + + // Set up array with indices of hidden columns + var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e)); + var dragIndex = columns.indexOf(dragName); + var swapIndex = dragIndex; + var swapDone = false; + + // Check if the current dragged element is swapable with the left or right element + if (dragIndex > 0) { + // Get left headers boundingbox + swapIndex = dragIndex - 1; + while (hiddenIndices.includes(swapIndex) && swapIndex > 0) + swapIndex--; + if (!hiddenIndices.includes(swapIndex)) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX < box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + if ((!swapDone) && dragIndex < headerGroups.length - 1) { + // Get right headers boundingbox + swapIndex = dragIndex + 1; + while (hiddenIndices.includes(swapIndex)) + swapIndex++; + if (swapIndex < headerGroups.length) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX > box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + + // Write back change to storage + if (swapDone) { + settings.columnOrder = columns + writeStorage("columnOrder", JSON.stringify(columns)); + } + + } + + const mouseDownHandler = function(e) { + var target = e.target; + if (target.tagName.toLowerCase() != "td") + target = target.parentElement; + + // Used to check if a dragging has ever happened + wasDragged = false; + + // Create new element which will be displayed as the dragged column + draggingElement = document.createElement("div") + draggingElement.classList.add("dragging"); + draggingElement.style.display = "none"; + draggingElement.style.position = "absolute"; + draggingElement.style.overflow = "hidden"; + + // Get bomhead and bombody elements + const bh = document.getElementById("bomhead"); + const bb = document.getElementById("bombody"); + + // Get all compound headers for the current column + var compoundHeaders; + if (target.classList.contains("bom-checkbox")) { + compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox")); + } else { + compoundHeaders = [target]; + } + + // Create new table which will display the column + var newTable = document.createElement("table"); + newTable.classList.add("bom"); + newTable.style.background = "white"; + draggingElement.append(newTable); + + // Create new header element + var newHeader = document.createElement("thead"); + newTable.append(newHeader); + + // Set up array for storing all placeholder elements + placeHolderElements = []; + + // Add all compound headers to the new thead element and placeholders + compoundHeaders.forEach(function(h) { + clone = cloneElementWithDimensions(h); + newHeader.append(clone); + placeHolderElements.push(clone); + }); + + // Create new body element + var newBody = document.createElement("tbody"); + newTable.append(newBody); + + // Get indices for compound headers + var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e)); + + // For each row in the BOM body... + var rows = bb.querySelectorAll("tr"); + rows.forEach(function(row) { + // ..get the cells for the compound column + const tds = row.querySelectorAll("td"); + var copytds = idxs.map(i => tds[i]); + // Add them to the new element and the placeholders + var newRow = document.createElement("tr"); + copytds.forEach(function(td) { + clone = cloneElementWithDimensions(td); + newRow.append(clone); + placeHolderElements.push(clone); + }); + newBody.append(newRow); + }); + + // Compute width for compound header + var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0); + draggingElement.style.width = `${width}px`; + + // Insert the new dragging element and disable selection on BOM + bom.insertBefore(draggingElement, null); + bom.style.userSelect = "none"; + + // Determine the mouse position offset + xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft); + yOffset = e.screenY - compoundHeaders[0].offsetTop; + + // Get name for the column in settings.columnOrder + dragName = getColumnOrderName(target); + + // Change text and class for placeholder elements + placeHolderElements = placeHolderElements.map(function(e) { + newElem = cloneElementWithDimensions(e); + newElem.textContent = ""; + newElem.classList.add("placeholder"); + return newElem; + }); + + // On next mouse move, the whole BOM needs to be redrawn to show the placeholders + forcePopulation = true; + + // Add listeners for move and up on mouse + document.addEventListener('mousemove', mouseMoveHandler); + document.addEventListener('mouseup', mouseUpHandler); + } + + // In netlist mode, there is nothing to reorder + if (settings.bommode === "netlist") + return; + + // Add mouseDownHandler to every column except the numCol + bom.querySelectorAll("th") + .forEach(function(head) { + if (!head.classList.contains("numCol")) { + head.onmousedown = mouseDownHandler; + } + }); + +} + +function getBoundingClientRectFromMultiple(elements) { + var elems = Array.from(elements); + + if (elems.length == 0) + return null; + + var box = elems.shift() + .getBoundingClientRect(); + + elems.forEach(function(elem) { + var elembox = elem.getBoundingClientRect(); + box.left = Math.min(elembox.left, box.left); + box.top = Math.min(elembox.top, box.top); + box.width += elembox.width; + box.height = Math.max(elembox.height, box.height); + }); + + return box; +} + +function cloneElementWithDimensions(elem) { + var newElem = elem.cloneNode(true); + newElem.style.height = window.getComputedStyle(elem).height; + newElem.style.width = window.getComputedStyle(elem).width; + return newElem; +} + +function getBomTableHeaderIndex(elem) { + const bh = document.getElementById('bomhead'); + const ths = Array.from(bh.querySelectorAll("th")); + return ths.indexOf(elem); +} + +function getColumnOrderName(elem) { + var cname = elem.getAttribute("col_name"); + if (cname === "bom-checkbox") + return "checkboxes"; + else + return cname; +} + +function resizableGrid(tablehead) { + var cols = tablehead.firstElementChild.children; + var rowWidth = tablehead.offsetWidth; + + for (var i = 1; i < cols.length; i++) { + if (cols[i].classList.contains("bom-checkbox")) + continue; + cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%'; + } + + for (var i = 1; i < cols.length - 1; i++) { + var div = document.createElement('div'); + div.className = "column-width-handle"; + cols[i].appendChild(div); + setListeners(div); + } + + function setListeners(div) { + var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth; + + div.addEventListener('mousedown', function(e) { + e.preventDefault(); + e.stopPropagation(); + + curCol = e.target.parentElement; + nxtCol = curCol.nextElementSibling; + startX = e.pageX; + + var padding = paddingDiff(curCol); + + rowWidth = curCol.parentElement.offsetWidth; + curColWidth = curCol.clientWidth - padding; + nxtColWidth = nxtCol.clientWidth - padding; + }); + + document.addEventListener('mousemove', function(e) { + if (startX) { + var diffX = e.pageX - startX; + diffX = -Math.min(-diffX, curColWidth - 20); + diffX = Math.min(diffX, nxtColWidth - 20); + + curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%'; + nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%'; + console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`); + } + }); + + document.addEventListener('mouseup', function(e) { + curCol = undefined; + nxtCol = undefined; + startX = undefined; + nxtColWidth = undefined; + curColWidth = undefined + }); + } + + function paddingDiff(col) { + + if (getStyleVal(col, 'box-sizing') == 'border-box') { + return 0; + } + + var padLeft = getStyleVal(col, 'padding-left'); + var padRight = getStyleVal(col, 'padding-right'); + return (parseInt(padLeft) + parseInt(padRight)); + + } + + function getStyleVal(elm, css) { + return (window.getComputedStyle(elm, null).getPropertyValue(css)) + } +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* DOM manipulation and misc code */ + +var bomsplit; +var canvassplit; +var initDone = false; +var bomSortFunction = null; +var currentSortColumn = null; +var currentSortOrder = null; +var currentHighlightedRowId; +var highlightHandlers = []; +var footprintIndexToHandler = {}; +var netsToHandler = {}; +var markedFootprints = new Set(); +var highlightedFootprints = []; +var highlightedNet = null; +var lastClicked; + +function dbg(html) { + dbgdiv.innerHTML = html; +} + +function redrawIfInitDone() { + if (initDone) { + redrawCanvas(allcanvas.front); + redrawCanvas(allcanvas.back); + } +} + +function padsVisible(value) { + writeStorage("padsVisible", value); + settings.renderPads = value; + redrawIfInitDone(); +} + +function referencesVisible(value) { + writeStorage("referencesVisible", value); + settings.renderReferences = value; + redrawIfInitDone(); +} + +function valuesVisible(value) { + writeStorage("valuesVisible", value); + settings.renderValues = value; + redrawIfInitDone(); +} + +function tracksVisible(value) { + writeStorage("tracksVisible", value); + settings.renderTracks = value; + redrawIfInitDone(); +} + +function zonesVisible(value) { + writeStorage("zonesVisible", value); + settings.renderZones = value; + redrawIfInitDone(); +} + +function dnpOutline(value) { + writeStorage("dnpOutline", value); + settings.renderDnpOutline = value; + redrawIfInitDone(); +} + +function setDarkMode(value) { + if (value) { + topmostdiv.classList.add("dark"); + } else { + topmostdiv.classList.remove("dark"); + } + writeStorage("darkmode", value); + settings.darkMode = value; + redrawIfInitDone(); + if (initDone) { + populateBomTable(); + } +} + +function setShowBOMColumn(field, value) { + if (field === "references") { + var rl = document.getElementById("reflookup"); + rl.disabled = !value; + if (!value) { + rl.value = ""; + updateRefLookup(""); + } + } + + var n = settings.hiddenColumns.indexOf(field); + if (value) { + if (n != -1) { + settings.hiddenColumns.splice(n, 1); + } + } else { + if (n == -1) { + settings.hiddenColumns.push(field); + } + } + + writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns)); + + if (initDone) { + populateBomTable(); + } + + redrawIfInitDone(); +} + + +function setFullscreen(value) { + if (value) { + document.documentElement.requestFullscreen(); + } else { + document.exitFullscreen(); + } +} + +function fabricationVisible(value) { + writeStorage("fabricationVisible", value); + settings.renderFabrication = value; + redrawIfInitDone(); +} + +function silkscreenVisible(value) { + writeStorage("silkscreenVisible", value); + settings.renderSilkscreen = value; + redrawIfInitDone(); +} + +function setHighlightPin1(value) { + writeStorage("highlightpin1", value); + settings.highlightpin1 = value; + redrawIfInitDone(); +} + +function 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 updateNetColors() { + writeStorage("netColors", JSON.stringify(settings.netColors)); + redrawIfInitDone(); +} + +function netColorChangeHandler(net) { + return (event) => { + settings.netColors[net] = event.target.value; + updateNetColors(); + } +} + +function netColorRightClick(net) { + return (event) => { + if(event.button == 2) { + event.preventDefault(); + event.stopPropagation(); + + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + event.target.value = defaultNetColor; + delete settings.netColors[net]; + updateNetColors(); + } + } +} + +function entryMatches(entry) { + if (settings.bommode == "netlist") { + // entry is just a net name + return entry.toLowerCase().indexOf(filter) >= 0; + } + // check refs + if (!settings.hiddenColumns.includes("references")) { + for (var ref of entry) { + if (ref[0].toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + // check fields + for (var i in config.fields) { + var f = config.fields[i]; + if (!settings.hiddenColumns.includes(f)) { + for (var ref of entry) { + if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + } + return false; +} + +function findRefInEntry(entry) { + return entry.filter(r => r[0].toLowerCase() == reflookup); +} + +function highlightFilter(s) { + if (!filter) { + return s; + } + var parts = s.toLowerCase().split(filter); + if (parts.length == 1) { + return s; + } + var r = ""; + var pos = 0; + for (var i in parts) { + if (i > 0) { + r += '<mark class="highlight">' + + s.substring(pos, pos + filter.length) + + '</mark>'; + pos += filter.length; + } + r += s.substring(pos, pos + parts[i].length); + pos += parts[i].length; + } + return r; +} + +function checkboxSetUnsetAllHandler(checkboxname) { + return function () { + var checkboxnum = 0; + while (checkboxnum < settings.checkboxes.length && + settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) { + checkboxnum++; + } + if (checkboxnum >= settings.checkboxes.length) { + return; + } + var allset = true; + var checkbox; + var row; + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + if (!checkbox.checked || checkbox.indeterminate) { + allset = false; + break; + } + } + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + checkbox.checked = !allset; + checkbox.indeterminate = false; + checkbox.onchange(); + } + } +} + +function createColumnHeader(name, cls, comparator, is_checkbox = false) { + var th = document.createElement("TH"); + th.innerHTML = name; + th.classList.add(cls); + if (is_checkbox) + th.setAttribute("col_name", "bom-checkbox"); + else + th.setAttribute("col_name", name); + var span = document.createElement("SPAN"); + span.classList.add("sortmark"); + span.classList.add("none"); + th.appendChild(span); + var spacer = document.createElement("div"); + spacer.className = "column-spacer"; + th.appendChild(spacer); + spacer.onclick = function () { + if (currentSortColumn && th !== currentSortColumn) { + // Currently sorted by another column + currentSortColumn.childNodes[1].classList.remove(currentSortOrder); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + if (currentSortColumn && th === currentSortColumn) { + // Already sorted by this column + if (currentSortOrder == "asc") { + // Sort by this column, descending order + bomSortFunction = function (a, b) { + return -comparator(a, b); + } + currentSortColumn.childNodes[1].classList.remove("asc"); + currentSortColumn.childNodes[1].classList.add("desc"); + currentSortOrder = "desc"; + } else { + // Unsort + bomSortFunction = null; + currentSortColumn.childNodes[1].classList.remove("desc"); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + } else { + // Sort by this column, ascending order + bomSortFunction = comparator; + currentSortColumn = th; + currentSortColumn.childNodes[1].classList.remove("none"); + currentSortColumn.childNodes[1].classList.add("asc"); + currentSortOrder = "asc"; + } + populateBomBody(); + } + if (is_checkbox) { + spacer.onclick = fancyDblClickHandler( + spacer, spacer.onclick, checkboxSetUnsetAllHandler(name)); + } + return th; +} + +function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) { + while (bomhead.firstChild) { + bomhead.removeChild(bomhead.firstChild); + } + var tr = document.createElement("TR"); + var th = document.createElement("TH"); + th.classList.add("numCol"); + + var vismenu = document.createElement("div"); + vismenu.id = "vismenu"; + vismenu.classList.add("menu"); + + var visbutton = document.createElement("div"); + visbutton.classList.add("visbtn"); + visbutton.classList.add("hideonprint"); + + var viscontent = document.createElement("div"); + viscontent.classList.add("menu-content"); + viscontent.id = "vismenu-content"; + + settings.columnOrder.forEach(column => { + if (typeof column !== "string") + return; + + // Skip empty columns + if (column === "checkboxes" && settings.checkboxes.length == 0) + return; + else if (column === "Quantity" && settings.bommode == "ungrouped") + return; + + var label = document.createElement("label"); + label.classList.add("menu-label"); + + var input = document.createElement("input"); + input.classList.add("visibility_checkbox"); + input.type = "checkbox"; + input.onchange = function (e) { + setShowBOMColumn(column, e.target.checked) + }; + input.checked = !(settings.hiddenColumns.includes(column)); + + label.appendChild(input); + if (column.length > 0) + label.append(column[0].toUpperCase() + column.slice(1)); + + viscontent.appendChild(label); + }); + + viscontent.childNodes[0].classList.add("menu-label-top"); + + vismenu.appendChild(visbutton); + if (settings.bommode != "netlist") { + vismenu.appendChild(viscontent); + th.appendChild(vismenu); + } + tr.appendChild(th); + + var checkboxCompareClosure = function (checkbox) { + return (a, b) => { + var stateA = getCheckboxState(checkbox, a); + var stateB = getCheckboxState(checkbox, b); + if (stateA > stateB) return -1; + if (stateA < stateB) return 1; + return 0; + } + } + var stringFieldCompareClosure = function (fieldIndex) { + return (a, b) => { + var fa = pcbdata.bom.fields[a[0][1]][fieldIndex]; + var fb = pcbdata.bom.fields[b[0][1]][fieldIndex]; + if (fa != fb) return fa > fb ? 1 : -1; + else return 0; + } + } + var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/; + var compareRefs = (a, b) => { + var ra = referenceRegex.exec(a); + var rb = referenceRegex.exec(b); + if (ra === null || rb === null) { + if (a != b) return a > b ? 1 : -1; + return 0; + } else { + if (ra.groups.prefix != rb.groups.prefix) { + return ra.groups.prefix > rb.groups.prefix ? 1 : -1; + } + if (ra.groups.number != rb.groups.number) { + return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1; + } + return 0; + } + } + if (settings.bommode == "netlist") { + tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => { + if (a > b) return -1; + if (a < b) return 1; + return 0; + })); + tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => { + return 0; + })); + } else { + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + var valueIndex = config.fields.indexOf("Value"); + var footprintIndex = config.fields.indexOf("Footprint"); + columns.forEach((column) => { + if (column === placeHolderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + th = createColumnHeader( + checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true); + tr.appendChild(th); + } + } else if (column === "References") { + tr.appendChild(createColumnHeader("References", "references", (a, b) => { + var i = 0; + while (i < a.length && i < b.length) { + if (a[i] != 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) { + const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/; + while (bom.firstChild) { + bom.removeChild(bom.firstChild); + } + highlightHandlers = []; + footprintIndexToHandler = {}; + netsToHandler = {}; + currentHighlightedRowId = null; + var first = true; + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + 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); + var color = settings.netColors[netname] || defaultNetColor; + td = document.createElement("TD"); + var colorBox = document.createElement("INPUT"); + colorBox.type = "color"; + colorBox.value = color; + colorBox.onchange = netColorChangeHandler(netname); + colorBox.onmouseup = netColorRightClick(netname); + colorBox.oncontextmenu = (e) => e.preventDefault(); + td.appendChild(colorBox); + td.classList.add("color-column"); + tr.appendChild(td); + } else { + if (reflookup) { + references = findRefInEntry(bomentry); + if (references.length == 0) { + continue; + } + } else { + references = bomentry; + } + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + columns.forEach((column) => { + if (column === placeholderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + if (checkbox) { + td = document.createElement("TD"); + var input = document.createElement("input"); + input.type = "checkbox"; + input.onchange = 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"); + var output = new Array(); + for (let item of valueSet) { + const visible = highlightFilter(String(item)); + if (typeof item === 'string' && item.match(urlRegex)) { + output.push(`<a href="${item}" target="_blank">${visible}</a>`); + } else { + output.push(visible); + } + } + td.innerHTML = output.join(", "); + tr.appendChild(td); + } + }); + } + bom.appendChild(tr); + var handler = createRowHighlightHandler(tr.id, references, netname); + 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("topmostdiv").style.height = ""; + document.getElementById("topmostdiv").style.display = "block"; + break; + case 'top-bottom': + document.getElementById("tb-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.remove("split-horizontal"); + document.getElementById("canvasdiv").classList.remove("split-horizontal"); + document.getElementById("frontcanvas").classList.add("split-horizontal"); + document.getElementById("backcanvas").classList.add("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + direction: "vertical", + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + onDragEnd: resizeAll + }); + break; + case 'left-right': + document.getElementById("lr-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.add("split-horizontal"); + document.getElementById("canvasdiv").classList.add("split-horizontal"); + document.getElementById("frontcanvas").classList.remove("split-horizontal"); + document.getElementById("backcanvas").classList.remove("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + direction: "vertical", + onDragEnd: resizeAll + }); + } + settings.bomlayout = layout; + writeStorage("bomlayout", layout); + changeCanvasLayout(settings.canvaslayout); +} + +function changeBomMode(mode) { + document.getElementById("bom-grouped-btn").classList.remove("depressed"); + document.getElementById("bom-ungrouped-btn").classList.remove("depressed"); + document.getElementById("bom-netlist-btn").classList.remove("depressed"); + var chkbxs = document.getElementsByClassName("visibility_checkbox"); + + switch (mode) { + case 'grouped': + document.getElementById("bom-grouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'ungrouped': + document.getElementById("bom-ungrouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'netlist': + document.getElementById("bom-netlist-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = true; + } + } + + writeStorage("bommode", mode); + if (mode != settings.bommode) { + settings.bommode = mode; + bomSortFunction = null; + currentSortColumn = null; + currentSortOrder = null; + clearHighlightedFootprints(); + } + populateBomTable(); +} + +function focusFilterField() { + focusInputField(document.getElementById("filter")); +} + +function focusRefLookupField() { + focusInputField(document.getElementById("reflookup")); +} + +function toggleBomCheckbox(bomrowid, checkboxnum) { + if (!bomrowid || checkboxnum > settings.checkboxes.length) { + return; + } + var bomrow = document.getElementById(bomrowid); + var 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) + "%)"; +} + +function constrain(number, min, max){ + return Math.min(Math.max(parseInt(number), min), max); +} + +document.onkeydown = function (e) { + switch (e.key) { + case "n": + if (document.activeElement.type == "text") { + return; + } + if (currentHighlightedRowId !== null) { + checkBomCheckbox(currentHighlightedRowId, "placed"); + highlightNextRow(); + e.preventDefault(); + } + break; + case "ArrowUp": + highlightPreviousRow(); + e.preventDefault(); + break; + case "ArrowDown": + highlightNextRow(); + e.preventDefault(); + break; + case "ArrowLeft": + case "ArrowRight": + if (document.activeElement.type != "text"){ + e.preventDefault(); + let boardRotationElement = document.getElementById("boardRotation") + settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5 + if (e.key == "ArrowLeft"){ + settings.boardRotation += 3; // 15 degrees + } + else{ + settings.boardRotation -= 3; + } + settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max); + boardRotationElement.value = settings.boardRotation + setBoardRotation(settings.boardRotation); + } + break; + default: + break; + } + if (e.altKey) { + switch (e.key) { + case "f": + focusFilterField(); + e.preventDefault(); + break; + case "r": + focusRefLookupField(); + e.preventDefault(); + break; + case "z": + changeBomLayout("bom-only"); + e.preventDefault(); + break; + case "x": + changeBomLayout("left-right"); + e.preventDefault(); + break; + case "c": + changeBomLayout("top-bottom"); + e.preventDefault(); + break; + case "v": + changeCanvasLayout("F"); + e.preventDefault(); + break; + case "b": + changeCanvasLayout("FB"); + e.preventDefault(); + break; + case "n": + changeCanvasLayout("B"); + e.preventDefault(); + break; + default: + break; + } + if (e.key >= '1' && e.key <= '9') { + toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key)); + e.preventDefault(); + } + } +} + +function hideNetlistButton() { + document.getElementById("bom-ungrouped-btn").classList.remove("middle-button"); + document.getElementById("bom-ungrouped-btn").classList.add("right-most-button"); + document.getElementById("bom-netlist-btn").style.display = "none"; +} + +function topToggle() { + var top = document.getElementById("top"); + var toptoggle = document.getElementById("toptoggle"); + if (top.style.display === "none") { + top.style.display = "flex"; + toptoggle.classList.remove("flipped"); + } else { + top.style.display = "none"; + toptoggle.classList.add("flipped"); + } +} + +window.onload = function (e) { + 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); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => { +// for(var tr of bom.childNodes) { +// tr.onclick = tr.onmousemove; +// tr.onmousemove = null; +// }; +// }); + +/////////////////////////////////////////////// + </script> +</head> + +<body> + +<div id="topmostdiv" class="topmostdiv"> + <div id="top"> + <div id="fileinfodiv"> + <table class="fileinfo"> + <tbody> + <tr> + <td id="title" class="title" style="width: 70%"> + Title + </td> + <td id="revision" class="title" style="width: 30%"> + Revision + </td> + </tr> + <tr> + <td id="company"> + Company + </td> + <td id="filedate"> + Date + </td> + </tr> + </tbody> + </table> + </div> + <div id="bomcontrols"> + <div class="hideonprint menu"> + <button class="menubtn"></button> + <div class="menu-content"> + <label class="menu-label menu-label-top" style="width: calc(50% - 18px)"> + <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)"> + Dark mode + </label><!-- This comment eats space! All of it! + --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;"> + <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)"> + Full Screen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)"> + Fab layer + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)"> + Silkscreen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)"> + References + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)"> + Values + </label> + <div id="tracksAndZonesCheckboxes"> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)"> + Tracks + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)"> + Zones + </label> + </div> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)"> + Pads + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)"> + DNP outlined + </label> + <label class="menu-label"> + <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)"> + Continuous redraw on drag + </label> + <label class="menu-label"> + Highlight first pin + <form id="highlightpin1"> + <div class="flexbox"> + <label> + <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')"> + None + </label> + <label> + <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')"> + All + </label> + <label> + <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')"> + Selected + </label> + </div> + </form> + </label> + <label class="menu-label"> + <span>Board rotation</span> + <span style="float: right"><span id="rotationDegree">0</span>°</span> + <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)"> + </label> + <label class="menu-label"> + <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)"> + Offset back rotation + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Bom checkboxes</div> + <input id="bomCheckboxes" class="menu-textbox" type=text + oninput="setBomCheckboxes(this.value)"> + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Mark when checked</div> + <div id="markWhenCheckedContainer"></div> + </label> + <label class="menu-label"> + <span class="shameless-plug"> + <span>Created using</span> + <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a> + <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a> + </span> + </label> + </div> + </div> + <div class="button-container hideonprint"> + <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')" + title="Front only">F + </button> + <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')" + title="Front and Back">FB + </button> + <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')" + title="Back only">B + </button> + </div> + <div class="button-container hideonprint"> + <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')" + title="BOM only"></button> + <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')" + title="BOM left, drawings right"></button> + <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')" + title="BOM top, drawings bot"></button> + </div> + <div class="button-container hideonprint"> + <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')" + title="Grouped BOM"></button> + <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')" + title="Ungrouped BOM"></button> + <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')" + title="Netlist"></button> + </div> + <div class="hideonprint menu"> + <button class="statsbtn"></button> + <div class="menu-content"> + <table class="stats"> + <tbody> + <tr> + <td width="40%">Board stats</td> + <td>Front</td> + <td>Back</td> + <td>Total</td> + </tr> + <tr> + <td>Components</td> + <td id="stats-components-front">~</td> + <td id="stats-components-back">~</td> + <td id="stats-components-total">~</td> + </tr> + <tr> + <td>Groups</td> + <td id="stats-groups-front">~</td> + <td id="stats-groups-back">~</td> + <td id="stats-groups-total">~</td> + </tr> + <tr> + <td>SMD pads</td> + <td id="stats-smd-pads-front">~</td> + <td id="stats-smd-pads-back">~</td> + <td id="stats-smd-pads-total">~</td> + </tr> + <tr> + <td>TH pads</td> + <td colspan=3 id="stats-th-pads">~</td> + </tr> + </tbody> + </table> + <table class="stats"> + <col width="40%"/><col /> + <tbody id="checkbox-stats"> + <tr> + <td colspan=2 style="border-top: 0">Checkboxes</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="hideonprint menu"> + <button class="iobtn"></button> + <div class="menu-content"> + <div class="menu-label menu-label-top"> + <div style="margin-left: 5px;">Save board image</div> + <div class="flexbox"> + <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + <span>X</span> + <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + </div> + <label> + <input id="render-save-transparent" type="checkbox"> + Transparent background + </label> + <div class="flexbox"> + <button class="savebtn" onclick="saveImage('F')">Front</button> + <button class="savebtn" onclick="saveImage('B')">Back</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Config and checkbox state</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveSettings()">Export</button> + <button class="savebtn" onclick="loadSettings()">Import</button> + <button class="savebtn" onclick="resetSettings()">Reset</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Save bom table as</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveBomTable('csv')">csv</button> + <button class="savebtn" onclick="saveBomTable('txt')">txt</button> + </div> + </div> + </div> + </div> + </div> + </div> + <div id="topdivider"> + <div class="hideonprint"> + <div id="toptoggle" onclick="topToggle()">︽</div> + </div> + </div> + <div id="bot" class="split" style="flex: 1 1"> + <div id="bomdiv" class="split split-horizontal"> + <div style="width: 100%"> + <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup" + oninput="updateRefLookup(this.value)"> + <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter" + oninput="updateFilter(this.value)"> + <div class="button-container hideonprint" style="float: left; margin: 0;"> + <button id="copy" title="Copy bom table to clipboard" + onclick="saveBomTable('clipboard')"></button> + </div> + </div> + <div id="dbg"></div> + <table class="bom" id="bomtable"> + <thead id="bomhead"> + </thead> + <tbody id="bombody"> + </tbody> + </table> + </div> + <div id="canvasdiv" class="split split-horizontal"> + <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + </div> + </div> +</div> + +</body> + +</html> diff --git a/doc/build/html/_static/language_data.js b/doc/build/html/_static/language_data.js index 2e22b06ab13bec689de4d1530b8b625bc6d69ae8..250f5665fa64b70c822190199b3b804b10f8b9d8 100644 --- a/doc/build/html/_static/language_data.js +++ b/doc/build/html/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/doc/build/html/_static/pygments.css b/doc/build/html/_static/pygments.css index 08bec689d3306e6c13d1973f61a01bee9a307e87..84ab3030a9329e5598877502bfa7f8a999af8535 100644 --- a/doc/build/html/_static/pygments.css +++ b/doc/build/html/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #E40000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #008400 } /* Generic.Inserted */ diff --git a/doc/build/html/_static/searchtools.js b/doc/build/html/_static/searchtools.js index ac4d5861f95f5c6161b846522d572532725aa275..7918c3fab3116026a6626a50bdc8966abc24b0b3 100644 --- a/doc/build/html/_static/searchtools.js +++ b/doc/build/html/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -75,29 +75,35 @@ const _displayItem = (item, highlightTerms, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) - listItem.appendChild(document.createElement("span")).innerText = + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -116,15 +122,15 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, + searchTerms, highlightTerms, - searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } @@ -155,10 +161,8 @@ const Search = { _pulse_status: -1, htmlToText: (htmlString) => { - const htmlElement = document - .createRange() - .createContextualFragment(htmlString); - _removeChildren(htmlElement.querySelectorAll(".headerlink")); + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); const docContent = htmlElement.querySelector('[role="main"]'); if (docContent !== undefined) return docContent.textContent; console.warn( @@ -239,6 +243,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -266,6 +276,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -274,6 +288,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -320,7 +368,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** @@ -401,8 +449,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -499,16 +547,15 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { - const text = Search.htmlToText(htmlText).toLowerCase(); + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); if (text === "") return null; + const textLower = text.toLowerCase(); const actualStartPosition = [...keywords] - .map((k) => text.indexOf(k.toLowerCase())) + .map((k) => textLower.indexOf(k.toLowerCase())) .filter((i) => i > -1) .slice(-1)[0]; const startWithContext = Math.max(actualStartPosition - 120, 0); @@ -516,13 +563,9 @@ const Search = { const top = startWithContext === 0 ? "" : "..."; const tail = startWithContext + 240 < text.length ? "..." : ""; - let summary = document.createElement("div"); + let summary = document.createElement("p"); summary.classList.add("context"); - summary.innerText = top + text.substr(startWithContext, 240).trim() + tail; - - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; return summary; }, diff --git a/doc/build/html/_static/sphinx_highlight.js b/doc/build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000000000000000000000000000000000000..8a96c69a1942318413af68fd459122b56edd8d69 --- /dev/null +++ b/doc/build/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '<p class="highlight-link">' + + '<a href="javascript:SphinxHighlight.hideSearchWords()">' + + _("Hide Search Matches") + + "</a></p>" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html index 95270a56197dc7c1c076101860379a69fa0c7f9d..57f3a9b73cfe0c19a0c081d93d5eda619eefb4fc 100644 --- a/doc/build/html/genindex.html +++ b/doc/build/html/genindex.html @@ -1,20 +1,22 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="./"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Index — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> - <script src="_static/jquery.js"></script> - <script src="_static/underscore.js"></script> - <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="_static/doctools.js"></script> + <script src="_static/jquery.js?v=5d32c60e"></script> + <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="_static/documentation_options.js?v=1eb482ec"></script> + <script src="_static/doctools.js?v=888ff710"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <script src="_static/js/theme.js"></script> <link rel="index" title="Index" href="#" /> <link rel="search" title="Search" href="search.html" /> diff --git a/doc/build/html/index.html b/doc/build/html/index.html index 9d8031603d36bc482485675e7ac48fdaa9c6a55c..5f97ffefd8db934e39f7ab247474823ebb32bc45 100644 --- a/doc/build/html/index.html +++ b/doc/build/html/index.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="./"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>OHMPI: Open source and open hardware resistivity-meter — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> - <script src="_static/jquery.js"></script> - <script src="_static/underscore.js"></script> - <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="_static/doctools.js"></script> + <script src="_static/jquery.js?v=5d32c60e"></script> + <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="_static/documentation_options.js?v=1eb482ec"></script> + <script src="_static/doctools.js?v=888ff710"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <script src="_static/js/theme.js"></script> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> @@ -77,7 +79,7 @@ <div itemprop="articleBody"> <section id="ohmpi-open-source-and-open-hardware-resistivity-meter"> -<h1>OHMPI: Open source and open hardware resistivity-meter<a class="headerlink" href="#ohmpi-open-source-and-open-hardware-resistivity-meter" title="Permalink to this heading">ïƒ</a></h1> +<h1>OHMPI: Open source and open hardware resistivity-meter<a class="headerlink" href="#ohmpi-open-source-and-open-hardware-resistivity-meter" title="Link to this heading">ïƒ</a></h1> <aside class="sidebar"> <p class="sidebar-title">Summary</p> <dl class="field-list simple"> @@ -85,7 +87,7 @@ <dd class="field-odd"><p>v2024rc</p> </dd> <dt class="field-even">Date<span class="colon">:</span></dt> -<dd class="field-even"><p>Dec 03, 2023</p> +<dd class="field-even"><p>Dec 12, 2023</p> </dd> <dt class="field-odd">Date start<span class="colon">:</span></dt> <dd class="field-odd"><p>July 2016</p> diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv index 00cc0ba711373ba5253a56bacd76e57527434e3e..10e837aff9e127334118bdc6dcd095bfbc428f83 100644 Binary files a/doc/build/html/objects.inv and b/doc/build/html/objects.inv differ diff --git a/doc/build/html/search.html b/doc/build/html/search.html index 73ec2302a5e249c19aa427a9aedfef74f636aade..e8eac7fba7a8f4106f90d0cc207287ab9f6ff208 100644 --- a/doc/build/html/search.html +++ b/doc/build/html/search.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="./"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Search — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> - <script src="_static/jquery.js"></script> - <script src="_static/underscore.js"></script> - <script src="_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="_static/doctools.js"></script> + <script src="_static/jquery.js?v=5d32c60e"></script> + <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="_static/documentation_options.js?v=1eb482ec"></script> + <script src="_static/doctools.js?v=888ff710"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <script src="_static/js/theme.js"></script> <script src="_static/searchtools.js"></script> <script src="_static/language_data.js"></script> diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js index 7d35f33402718ed8ade8b424c34f28b1e99f5115..62fe732e16cc433c67991f6196abec223dcd2a7b 100644 --- a/doc/build/html/searchindex.js +++ b/doc/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "source_rst/Ohmpi", "source_rst/V2023.x.x/V2023_step_03", "source_rst/api", "source_rst/archived_version", "source_rst/developing_hardware_components", "source_rst/gallery", "source_rst/hardware", "source_rst/hardware/assembling", "source_rst/hardware/hw_info", "source_rst/hardware/hw_pwr", "source_rst/hardware/hw_rpi", "source_rst/hardware/mb", "source_rst/hardware/mb/mb_2023", "source_rst/hardware/mb/mb_2024", "source_rst/hardware/mux_2023", "source_rst/hardware/mux_2024", "source_rst/software", "source_rst/troubleshooting", "source_rst/v1.xx/V1_01", "source_rst/v1.xx/V1_02"], "filenames": ["index.rst", "source_rst\\Ohmpi.rst", "source_rst\\V2023.x.x\\V2023_step_03.rst", "source_rst\\api.rst", "source_rst\\archived_version.rst", "source_rst\\developing_hardware_components.rst", "source_rst\\gallery.rst", "source_rst\\hardware.rst", "source_rst\\hardware\\assembling.rst", "source_rst\\hardware\\hw_info.rst", "source_rst\\hardware\\hw_pwr.rst", "source_rst\\hardware\\hw_rpi.rst", "source_rst\\hardware\\mb.rst", "source_rst\\hardware\\mb\\mb_2023.rst", "source_rst\\hardware\\mb\\mb_2024.rst", "source_rst\\hardware\\mux_2023.rst", "source_rst\\hardware\\mux_2024.rst", "source_rst\\software.rst", "source_rst\\troubleshooting.rst", "source_rst\\v1.xx\\V1_01.rst", "source_rst\\v1.xx\\V1_02.rst"], "titles": ["OHMPI: Open source and open hardware resistivity-meter", "OhmPi project", "<strong>STEP n\u00b03:</strong> MUX board", "API reference", "Archived versions", "Software interface to new hardware components", "Examples of applications", "Hardware", "Assembling the OhmPi", "OhmPi electronic design", "Power supply", "Raspberry Pi configuration", "Measurement board", "Measurement board v2023", "Measurement board v2024", "MUX board v2023", "MUX board v2024", "Software and operation", "Troubleshooting", "OhmPi V 1.01 (limited to 32 electrodes)", "OhmPi V 1.02 (limited to 32 electrodes)"], "terms": {"releas": [0, 17], "date": [0, 19, 20], "nov": [], "29": [8, 19, 20], "2023": 0, "start": [0, 2, 5, 11, 12, 15, 16, 17, 19, 20], "juli": 0, "2016": 0, "author": [0, 11, 19, 20], "r\u00e9mi": [0, 1], "clement": [0, 1], "nicola": [0, 1], "forquet": [0, 1], "yannick": [0, 1], "fargier": [0, 1], "vivien": [0, 1], "duboi": [0, 1], "h\u00e9l\u00e8ne": [0, 1], "guyard": [0, 1], "olivi": [0, 1], "kaufmann": [0, 1], "guillaum": [0, 1], "blanchi": [0, 1], "arnaud": [0, 1], "watlet": [0, 1], "target": 0, "user": [0, 11, 17, 19, 20], "research": 0, "develop": [0, 1, 5, 11, 13, 19, 20], "statu": 0, "some": [0, 5, 9, 17, 19, 20], "matur": 0, "progress": 0, "offici": 0, "guidelin": 0, "gener": [0, 2, 7, 9, 13, 15, 16, 17, 19, 20], "tutori": 0, "content": [0, 12], "project": [0, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "partner": 0, "cite": 0, "introduct": 0, "electron": [0, 1, 2, 7, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20], "design": [0, 5, 7, 17, 19, 20], "measur": [0, 1, 2, 7, 8, 11, 15, 16, 17, 18], "board": [0, 5, 7, 8, 11, 18], "v2023": [0, 7, 9, 12, 17, 18], "v2024": [0, 7, 9, 12, 18], "mux": [0, 7, 8, 19, 20], "power": [0, 2, 7, 8, 12, 13, 15, 16, 19, 20], "suppli": [0, 2, 7, 8, 12, 13, 15, 16, 19, 20], "raspberri": [0, 2, 7, 8, 13, 15, 16, 17], "pi": [0, 7, 8, 13, 17], "configur": [0, 5, 7, 9], "assembl": [0, 1, 7, 11, 12, 14, 17], "softwar": [0, 11, 19, 20], "oper": [0, 5, 8, 9, 11, 12, 13], "system": [0, 5, 11, 13, 19, 20], "architectur": 0, "logger": [0, 1, 19, 20], "file": [0, 5, 7, 11, 13, 14, 19, 20], "interfac": 0, "applic": [0, 1, 5, 7, 9], "api": [0, 17], "refer": [0, 8, 13, 15, 16, 17, 19, 20], "troubleshoot": 0, "exampl": [0, 2, 8, 13, 15, 16, 17, 19, 20], "new": [0, 11, 17, 18, 19, 20], "compon": [0, 9, 11, 17], "archiv": 0, "version": [0, 5, 7, 11, 13, 17, 19, 20], "v": [0, 4, 8, 9, 10, 13, 15, 16, 18], "1": [0, 2, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17], "01": [0, 4, 13, 20], "limit": [0, 4, 13], "32": [0, 4, 8, 11, 13], "electrod": [0, 1, 2, 4, 7, 8, 9, 10, 13, 15, 16, 18], "02": [0, 4, 13, 19], "inra": [1, 6], "reversa": [1, 19, 20], "villeurbann": 1, "franc": 1, "universit\u00e9": 1, "de": 1, "mon": 1, "belgium": 1, "ger": 1, "rro": 1, "univ": 1, "gustav": 1, "eiffel": 1, "ifsttar": 1, "lyon": 1, "ig": 1, "grenobl": 1, "alp": 1, "ilvo": 1, "merelbek": 1, "julien": 1, "ganc": 1, "emil": 1, "gro": 1, "et": [1, 13], "al": 1, "an": [1, 2, 5, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19, 20], "open": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "sourc": [1, 5, 10, 11, 19, 20], "data": [1, 9, 13, 17], "dedic": [1, 17], "electr": [1, 13], "resist": [1, 8, 9, 13, 17, 18], "imag": [1, 11], "small": [1, 8, 9, 13, 17, 19, 20], "laboratori": [1, 8, 12, 19, 20], "scale": [1, 9], "hardwarex": 1, "elsevi": 1, "2020": 1, "8": [1, 2, 8, 9, 11, 13, 15, 16, 17, 19, 20], "24": [1, 8, 12, 13, 16, 19, 20], "p": [1, 13, 15, 16], "ff10": 1, "1016": 1, "j": 1, "ohx": 1, "e00122ff": 1, "particip": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "all": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "requir": [1, 5, 8, 11, 14, 17, 19, 20], "skill": [1, 2, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20], "respect": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "safeti": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "rule": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "must": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "profession": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "context": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "peopl": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "compet": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "The": [1, 2, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18], "team": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "cannot": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "held": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "respons": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "ani": [1, 2, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "materi": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "human": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "damag": [1, 2, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "which": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "would": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "associ": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "us": [1, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "equip": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "doe": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "work": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "after": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "you": [1, 2, 5, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "mai": [1, 11, 17, 18, 19, 20], "redistribut": 1, "modifi": [1, 5, 19, 20], "thi": [1, 2, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20], "document": [1, 7, 17, 19], "make": [1, 2, 5, 9, 15, 16, 17, 19, 20], "product": [1, 13, 15, 16], "under": [1, 8, 19, 20], "term": [1, 5], "cern": 1, "ohl": 1, "v2": 1, "distribut": [1, 9], "without": [1, 2, 9, 15, 16, 18, 19, 20], "express": [1, 5], "OR": 1, "impli": [1, 2, 15, 16], "warranti": 1, "includ": [1, 2, 5, 11, 14, 15, 16, 17, 19, 20], "OF": 1, "merchant": 1, "satisfactori": 1, "qualiti": 1, "AND": 1, "fit": 1, "FOR": 1, "A": [0, 1, 5, 7, 8, 9, 10, 12, 17, 19, 20], "particular": 1, "purpos": [1, 8, 19, 20], "pleas": [1, 8, 17, 19, 20], "see": [1, 9, 17, 18, 19, 20], "condit": 1, "present": [1, 2, 5, 8, 15, 16, 19, 20], "low": [1, 19, 20], "cost": [1, 5, 13, 15, 16, 19, 20], "hardwar": [1, 17, 19, 20], "meter": [1, 8, 19, 20], "provid": [1, 12, 17, 19, 20], "scientif": 1, "commun": [0, 1, 9, 17], "robust": [1, 18, 19, 20], "flexibl": 1, "tool": 1, "experi": [1, 17, 18, 19, 20], "call": [1, 2, 8, 9, 11, 15, 16, 17], "basic": [1, 5], "meterfeatur": 1, "current": [1, 7, 9, 10, 12, 13, 17, 18], "inject": [1, 7, 9, 10, 13, 17], "function": [1, 5, 17, 19, 20], "multiplex": [1, 2, 7, 8, 15, 16], "allow": [1, 2, 13, 15, 16, 17, 19, 20], "perform": [1, 5, 11, 19, 20], "automat": [1, 17, 19, 20], "up": [1, 2, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20], "64": [1, 2, 13, 15, 16, 19, 20], "s": [1, 2, 13, 15, 16, 17, 18, 19, 20], "philosophi": 1, "fulli": 1, "toolto": 1, "surfac": 1, "anyon": 1, "who": 1, "want": [1, 20], "get": [1, 11, 13, 17, 19, 20], "involv": [1, 17], "welcom": [1, 5], "join": 1, "ohmpi": [2, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18], "quantiti": [11, 19, 20], "4": [2, 8, 9, 11, 13, 15, 16, 17, 18, 19, 20], "model": [9, 11, 13, 19, 20], "micro": [11, 13, 19, 20], "sd": [8, 11, 13, 19, 20], "go": [2, 11, 15, 16, 17], "hdmi": [8, 11], "cabl": [2, 8, 11, 13, 15, 16, 19, 20], "comput": [11, 19, 20], "mous": [8, 11, 19, 20], "keyboard": [8, 11, 19, 20], "first": [2, 5, 8, 9, 11, 15, 16, 17], "For": [2, 9, 11, 13, 15, 16, 17, 19, 20], "instruct": [11, 17], "ar": [4, 5, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20], "well": [11, 17, 19, 20], "describ": [5, 8, 11, 12, 13, 19, 20], "websit": [11, 19, 20], "watch": [11, 19, 20], "video": [11, 19, 20], "how": [11, 19, 20], "set": [11, 13, 17, 19, 20], "your": [2, 5, 7, 11, 12, 13, 15, 16, 19, 20], "recommend": [5, 11, 17, 19, 20], "latest": [11, 12, 19, 20], "stabl": [11, 19, 20], "complet": [11, 13], "previous": [8, 11, 19, 20], "raspbian": [11, 19, 20], "can": [7, 8, 9, 10, 11, 14, 17, 18, 19, 20], "visit": 11, "http": [11, 13, 15, 16, 17, 19, 20], "raspberrypi": [7, 9, 10, 11], "org": [11, 17], "en": 11, "test": [2, 5, 8, 11, 13, 15, 16, 17, 19, 20], "were": [11, 13, 19, 20], "3": [5, 8, 9, 11, 13, 15, 16, 17, 19, 20], "we": [2, 7, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20], "follow": [2, 5, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20], "onc": [11, 17, 18, 19, 20], "ha": [2, 9, 11, 12, 15, 16, 18, 19, 20], "been": [2, 11, 12, 15, 16, 17, 19, 20], "wire": [2, 8, 9, 11, 15, 16, 19, 20], "spi": [11, 19, 20], "gpio": [2, 8, 9, 11, 15, 16, 19, 20], "remot": [11, 17, 19, 20], "option": [11, 12, 17, 19, 20], "deactiv": [11, 19, 20], "i2c": [2, 9, 11, 13, 15, 16, 18], "via": [9, 11, 18, 19, 20], "gui": [11, 19, 20], "menu": [11, 19, 20], "failur": [11, 19, 20], "carri": [11, 19, 20], "out": [8, 11, 19, 20], "task": [11, 19, 20], "caus": [11, 18, 19, 20], "relai": [2, 9, 11, 13, 15, 16, 18, 19, 20], "shield": [11, 19, 20], "card": [2, 8, 11, 13, 15, 16], "dure": [11, 19, 20], "wai": [5, 11, 19, 20], "have": [2, 5, 9, 11, 13, 15, 16, 17, 18, 19, 20], "multipl": [9, 11, 17], "parallel": 11, "instanc": [9, 11], "interpret": [11, 13, 19, 20], "each": [2, 8, 9, 11, 12, 15, 16, 19, 20], "differ": [2, 7, 8, 9, 11, 13, 15, 16, 17, 19, 20], "contain": [7, 8, 11, 17, 19, 20], "discret": 11, "copi": [5, 11, 17], "its": [2, 8, 11, 15, 16, 17, 19, 20], "support": [4, 11], "util": [11, 17], "It": [2, 5, 10, 11, 15, 16, 17, 18, 19, 20], "also": [5, 9, 10, 11, 14, 17, 19, 20], "protect": 11, "case": [5, 11, 17, 18, 19, 20], "problem": 11, "depend": [11, 17, 19, 20], "specifi": [11, 19, 20], "txt": [11, 17, 19, 20], "below": [8, 9, 11, 17, 19, 20], "should": [2, 5, 8, 9, 11, 13, 15, 16, 17, 19, 20], "type": [2, 5, 11, 15, 16, 19, 20], "termin": [2, 8, 11, 13, 15, 16, 17, 19, 20], "necessari": [2, 5, 8, 11, 15, 16, 19, 20], "ensur": [9, 11, 19, 20], "libatla": [11, 19, 20], "base": [2, 5, 11, 15, 16, 17, 19, 20], "dev": [11, 19, 20], "librari": [11, 19, 20], "sudo": [11, 19, 20], "apt": [11, 19, 20], "strongli": [11, 19, 20], "creat": [5, 9, 11, 17, 19, 20], "run": [2, 8, 11, 13, 15, 16, 17, 19, 20], "code": [2, 5, 11, 12, 15, 16, 19, 20], "done": [9, 11, 17, 19, 20], "either": [7, 11, 19, 20], "directori": [5, 11, 17, 19, 20], "gather": [11, 19, 20], "within": [5, 11, 17, 19, 20], "python3": [11, 19, 20], "m": [2, 8, 9, 11, 13, 15, 16, 19, 20], "venv": [11, 19, 20], "command": [11, 17, 19, 20], "bin": [11, 19, 20], "suffici": [11, 19, 20], "meet": [11, 19, 20], "export": 11, "cflag": 11, "fcommon": 11, "pip": [11, 19, 20], "rpi": [8, 11, 19, 20], "adafruit": [2, 11, 13, 15, 16, 19, 20], "blinka": [11, 19, 20], "numpi": [11, 17, 19, 20], "panda": [11, 19, 20], "circuitpython": [11, 19, 20], "ads1x15": [11, 19, 20], "tca9548a": [2, 11, 15, 16], "mcp230xx": 11, "gpiozero": 11, "check": [11, 12, 17, 18, 19, 20], "met": [11, 19, 20], "list": 11, "leav": [11, 19, 20], "simpli": [8, 11, 19, 20], "If": [5, 11, 13, 18, 19, 20], "decid": [11, 19, 20], "setup": [11, 19, 20], "time": [2, 9, 11, 15, 16, 17, 19, 20], "click": [9, 11, 18, 19, 20], "access": [8, 11, 17, 19, 20], "program": [8, 11, 19, 20], "pythonid": [11, 19, 20], "2": [2, 5, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20], "root": [11, 19, 20], "7": [2, 8, 11, 13, 15, 16, 19, 20], "usr": [11, 19, 20], "select": [2, 11, 15, 16, 19, 20], "window": [11, 17, 19, 20], "On": [11, 19, 20], "altern": [11, 19, 20], "5": [2, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20], "button": [11, 19, 20], "appear": [2, 11, 13, 15, 16, 19, 20], "locat": [11, 19, 20], "anoth": [9, 11, 18, 19, 20], "execut": [11, 17, 19, 20], "6": [2, 8, 11, 13, 15, 16, 19, 20], "find": [11, 19, 20], "folder": [11, 19, 20], "where": [5, 7, 9, 11, 17, 19, 20], "home": [11, 17, 19, 20], "In": [2, 5, 9, 11, 13, 15, 16, 18, 19, 20], "known": [9, 11, 19, 20], "tab": [11, 17, 19, 20], "path": [5, 9, 11, 19, 20], "close": [11, 18, 19, 20], "ok": [11, 19, 20], "9": [2, 8, 11, 13, 15, 16, 19, 20], "save": [11, 19, 20], "modif": [8, 11, 19, 20], "number": [12, 13, 15, 16, 17, 19, 20], "per": [13, 15, 16, 19, 20], "unit": [12, 13, 15, 16, 19, 20], "total": [13, 15, 16, 19, 20], "manufactur": [2, 13, 15, 16, 19, 20], "web": [13, 15, 16], "58": [13, 19, 20], "75": 13, "www": [13, 15, 16, 19, 20], "mouser": [13, 15, 16], "fr": [13, 15, 16, 19, 20], "productdetail": [13, 15, 16], "seeed": 13, "studio": 13, "102110421": 13, "qs": [13, 15, 16], "7mvldsj5uaxen3lyyh3sqw": 13, "3d": [13, 15, 16], "lm158n": 13, "amp": [13, 19, 20], "o": [13, 15, 16, 17, 19, 20], "14": [2, 8, 13, 15, 16], "texa": [13, 19, 20], "instrument": [13, 17, 19, 20], "lm358an": [13, 19, 20], "nopb": [13, 19, 20], "lm158j": 13, "x1j7hmvl2zh8vpefml8": 13, "2ffq": 13, "print": [13, 15, 16, 17, 19, 20], "circuit": [13, 15, 16, 17, 19, 20], "12": [2, 8, 9, 12, 13, 15, 16, 19, 20], "asler": [13, 15, 16, 19, 20], "ads1115": [9, 13, 18, 19, 20], "11": [8, 12, 13, 19, 20], "23": [8, 13, 15, 16, 19, 20], "1085": 13, "2fha2pyfaduh": 13, "2fogzutwiq9iz5vjaqfoyugqalgxpeckigrqvf4hn": 13, "252bg": 13, "capacitor": [13, 20], "100nf": [13, 20], "50vdc": [13, 20], "10": [2, 8, 13, 15, 16, 17, 19, 20], "ceram": [13, 20], "0": [7, 9, 12, 13, 15, 16, 17, 19, 20], "kemet": [13, 20], "c320c104k1": [13, 20], "c320c104k1r5ta7303": 13, "c4uyot": 13, "2flq1th4mcyoetma": 13, "resistor": [2, 9, 12, 13, 15, 16, 18, 19, 20], "kohm": [2, 13, 15, 16, 19, 20], "5w": [13, 19, 20], "te": [13, 15, 16, 19, 20], "connect": [2, 8, 9, 10, 13, 15, 16, 17, 18], "h81k0bya": [13, 19, 20], "holsworthi": 13, "2fha2pyfaduhuylh7az": 13, "2fmjfh2xjoums6wztux4som": 13, "252bii": 13, "h81k5bya": [13, 19, 20], "2fha2pyfadugy9twham3ru9hmijohywhbin95knm": 13, "252bx": 13, "2fm": 13, "vishai": [13, 15, 16], "ccf071k50gke36": 13, "dale": 13, "qkeozdl6eqpa6lzrlqfvow": 13, "mohm": [12, 13, 19, 20], "762": 13, "524": 13, "cmf651m0000fkek143": 13, "ciayqk2gdckzia2levalkg": 13, "ohm": [9, 12, 13, 19, 20], "shunt": [9, 12, 13, 18], "42": 13, "ohmit": 13, "41f2r0e": 13, "im6toxqzgoauedprb19mha": 13, "dual": [2, 13, 15, 16, 19, 20], "screw": [2, 8, 13, 15, 16, 19, 20], "08": [13, 15, 16], "mm": [8, 13, 15, 16, 19, 20], "pitch": [13, 15, 16, 19, 20], "648": [13, 15, 16, 19, 20], "cui": [13, 15, 16], "devic": [5, 9, 13, 15, 16], "tb009": [13, 15, 16], "508": [13, 15, 16], "02be": [13, 15, 16], "vlwxofp3u2wcfk5uckwtka": [13, 15, 16], "dc": [13, 15, 16, 19, 20], "convert": [9, 13, 19, 20], "24v": [13, 20], "15": [8, 12, 13, 15, 16, 19, 20], "31": [8, 13, 15, 16], "16": [2, 8, 9, 13, 15, 16, 19, 20], "tracopow": [13, 20], "trn": [13, 20], "1215": [13, 20], "traco": [13, 20], "yca": 13, "2faaymw02gquicgqj0ta": 13, "dip": [2, 13, 15, 16], "line": [2, 9, 13, 15, 16, 18, 19, 20], "socket": [2, 13, 15, 16], "72": [13, 20], "mill": 13, "max": [12, 13], "110": [13, 16, 19, 20], "43": [13, 19, 20], "308": 13, "41": [13, 16], "001000": 13, "iggadovctstu": 13, "2fqaur8narg": 13, "mgh": 13, "vip": 13, "gclid": 13, "eaiaiqobchmin_taxbcx8wivq5nvch2qaqfpeayyccabegjk1_d_bw": 13, "aqy211eh": 13, "84": [13, 15, 16], "36": [8, 13, 19, 20], "panason": 13, "industri": 13, "wktuvitrialgiu8hcm7dvq": 13, "449": 13, "796": 13, "preci": [13, 16], "83": 13, "304": 13, "001101": [13, 16], "2fha2pyfadujqkqx4wauig": 13, "2fmgndxmcnv": 13, "2f33nj0gbxroculucynpyong": 13, "mcp23008": 13, "593": 13, "sgaepimzzmskedp9slc0yyv4kpdpmd1hts4slctivmw": 13, "header": [2, 13, 15, 16, 19, 20], "1x10": [13, 19, 20], "samtec": [13, 19, 20], "ssw": [13, 19, 20], "g": [6, 12, 13, 19, 20], "ru5fayqh": 13, "252be0w1orxzibqpw": 13, "smt": 13, "breakout": 13, "pcb": [2, 5, 13, 15, 16, 19, 20], "soic": 13, "1212": 13, "gurawfaegucaqqfvnvtyeg": 13, "eaiaiqobchmit8zjzr6x8wivgdnvch2vbwvseaqyayabegjqg_d_bw": 13, "ina282aid": 13, "ze4": 13, "2fufuz19ilfayzxocfra": 13, "thd": 13, "1211n": 13, "39": [8, 13, 15, 16, 19, 20], "2fha2pyfadugpyeg4idvm": 13, "2fmsr": 13, "252b7an": 13, "2f0t3ruis9pcaqjlt4": 13, "252bnrpuooeq": 13, "20": [8, 13, 19, 20], "53": [13, 20], "ssq": 13, "120": [13, 15, 16], "d": [13, 19, 20], "252be1bmvd": 13, "252bdzonqg": 13, "pin": [2, 13, 15, 16, 19, 20], "strip": [2, 8, 13, 15, 16, 19, 20], "ejector": [13, 15, 16], "35": [8, 13], "blk": [13, 15, 16], "10120550": [13, 15, 16], "conrad": [13, 15, 16], "com": [13, 15, 16, 17, 19, 20], "bkl": [13, 15, 16], "contact": [2, 13, 15, 16, 17, 19, 20], "space": [13, 15, 16], "254": [13, 15, 16], "row": [13, 15, 16], "pc": [13, 15, 16], "741435": [13, 16], "searchterm": [13, 15, 16], "searchtyp": [13, 15, 16], "suggest": [2, 13, 15, 16, 19, 20], "searchsuggest": [13, 15, 16], "male": [2, 13, 15, 16], "femal": [13, 15, 16, 19, 20], "spacer": [8, 13, 15, 16], "5m": [8, 13], "hexagonal": 13, "87": [13, 16], "48": [13, 19, 20], "harwin": 13, "r25": 13, "3002002": 13, "w0yvoo0ixfenuv0hsdc4": 13, "2fq": 13, "86": [13, 15, 16], "437": 13, "1108331841001101": 13, "318": 13, "ftmup6kvi2tnqoeziaq": 13, "2fpa": 13, "figur": [13, 17, 19, 20], "show": [13, 19, 20], "schemat": [13, 20], "plug": [13, 19, 20], "plai": 13, "To": [2, 13, 15, 16, 17, 18, 19, 20], "two": [2, 5, 9, 10, 13, 15, 16, 17, 18, 19, 20], "one": [0, 8, 13, 17, 19, 20], "voltag": [7, 8, 9, 13, 18, 19, 20], "propos": [13, 19, 20], "florsch": [13, 19, 20], "bit": [9, 13, 19, 20], "adc": [9, 13, 18, 19, 20], "analog": [9, 13, 19, 20], "digit": [2, 9, 13, 15, 16, 19, 20], "adapt": [5, 13, 17, 19, 20], "gain": [9, 13, 17, 19, 20], "advantag": 13, "input": [8, 9, 12, 13, 19, 20], "signal": [13, 19, 20], "valu": [0, 2, 9, 13, 15, 16, 19, 20], "could": [8, 13, 19, 20], "lie": [13, 19, 20], "between": [0, 2, 8, 9, 13, 15, 16, 19, 20], "114": [13, 19, 20], "directli": [13, 14, 19, 20], "integr": [9, 13], "ina282": [9, 13], "realiz": 13, "precis": [9, 13, 19, 20], "around": [13, 17], "instal": [2, 7, 8, 13, 15, 16, 17], "solder": [9, 13, 19, 20], "optic": [9, 13, 18], "12v": [2, 7, 8, 9, 13, 15, 16, 19, 20], "5v": [9, 13, 18, 19, 20], "tdh15": 13, "four": [9, 13], "inpout": 13, "output": [8, 13, 17, 19, 20], "three": [2, 13, 15, 16, 17, 19, 20], "ma": [12, 13, 19, 20], "higher": [9, 13, 20], "than": [13, 19, 20], "just": [13, 20], "decreas": 13, "don": [13, 17], "t": [13, 15, 16, 17, 18], "forget": [13, 17], "chang": [5, 13, 15, 16, 17, 18], "config": [5, 13, 17, 19, 20], "py": [2, 5, 13, 15, 16, 17, 19, 20], "kei": 13, "r_shunt": 13, "ohmpi_config": 13, "dict": 13, "pre": [8, 13], "adjust": [13, 19, 20], "13": [8, 13, 15, 16, 19, 20], "tow": 13, "17": [8, 13, 19, 20], "18": [8, 13, 19, 20], "19": [8, 13, 19, 20], "view": [8, 13], "fix": [8, 13], "dot": 13, "mark": [8, 13], "top": [8, 13, 17], "left": [8, 13], "corner": 13, "21": [8, 13, 19, 20], "mount": [2, 8, 13, 15, 16, 19, 20], "22": [8, 13, 19, 20], "lm158": 13, "amplifi": [9, 13, 19, 20], "ads115": [13, 19, 20], "right": [8, 13], "3x11": 13, "wurth": 13, "elektronik": 13, "971110321": 13, "305": [13, 15, 16], "apm": [13, 15, 16], "hexseal": [13, 15, 16], "rm3x8mm": [13, 15, 16], "2701": [13, 15, 16], "jjse": [13, 15, 16], "2f12mkns3vxsdryxuhw": [13, 15, 16], "shutdown": 13, "unplug": 13, "bottom": [13, 19, 20], "11mm": 13, "m3": [13, 15, 16], "upper": 13, "port": [8, 13], "write": [2, 5, 13, 15, 16, 17, 19, 20], "i2cdetect": [2, 13, 15, 16], "y": [2, 13, 15, 16], "everyth": 13, "address": [7, 9, 13, 19, 20], "screen": [13, 19, 20], "equival": [9, 13, 19, 20], "need": [2, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20], "1kohm": 13, "r2": [13, 19, 20], "220": 13, "r1": [13, 19, 20], "padboard": 13, "spool": 13, "prepar": [2, 13, 15, 16, 19, 20], "batteri": [7, 8, 13, 19, 20], "red": [8, 13, 17, 19, 20], "black": [8, 13, 19, 20], "ground": [9, 13, 18, 19, 20], "thonni": [7, 13, 17], "sample_measurement_exampl": 13, "result": [13, 19, 20], "channel": [2, 12, 15, 16, 19, 20], "mechan": [2, 9, 15, 16, 17, 18, 19, 20], "omron": [2, 15, 16], "g5le": [2, 15, 16], "vd": [2, 15, 16], "vdc": [2, 12, 15, 16], "combin": [2, 7, 15, 16], "zvn4206a": [2, 15, 16], "mofset": [2, 15, 16], "onli": [2, 5, 9, 10, 15, 16], "30": [2, 8, 15, 16, 19, 20], "enough": [2, 15, 16, 19, 20], "activ": [2, 7, 15, 16], "repres": [2, 15, 16, 19, 20], "512": [2, 15, 16], "expand": [2, 9, 15, 16], "mcp23017": [2, 9, 15, 16], "from": [2, 8, 9, 12, 15, 16, 17, 18, 19, 20], "128": [2, 13, 15, 16], "own": [2, 15, 16], "0x70": [2, 15, 16], "0x77": [2, 15, 16], "0x71": [2, 15, 16], "0x72": [2, 15, 16], "0x73": [2, 15, 16], "140": [15, 16], "560": [15, 16], "62": [15, 16], "92": [15, 16, 19, 20], "1580994": [15, 16], "tru": [15, 16, 19, 20], "diod": [2, 15, 16], "1n4007": [2, 15, 16], "256": [15, 16], "091": [15, 16], "296": [15, 16], "incorpor": [15, 16, 17], "sgaepimzzmueqxo7l": [15, 16], "2fbpyakboruumren": [15, 16], "56": [15, 16], "776": [15, 16], "205": [15, 16], "46": [15, 16], "103321": [15, 16], "5twgzeq9e7hsylqaljjyrw": [15, 16], "i": [8, 15, 16, 17, 19, 20], "40": [12, 13, 15, 16, 19, 20], "732": [15, 16], "sgaepimzzmskedp9slc0yfx16nydmpxjueeogolbldi": [15, 16], "27": [8, 15, 16, 19, 20], "325": [15, 16], "over": [15, 16, 18], "503811": [15, 16], "mosfet": [2, 15, 16], "nchannel": [15, 16], "471": [15, 16], "576": [15, 16, 19], "vhuuswq2": [15, 16], "252bsz9b": [15, 16], "2ff6fcxt7g": [15, 16], "100k\u03c9": 16, "061": [15, 16], "616": [15, 16], "beyschlag": [15, 16], "mba02040c1003frp00": [15, 16], "mzrxyrlhvdt9crf7zyf": [15, 16], "2f5q": [15, 16], "89": [15, 16], "2717": [15, 16], "sgaepimzzmsyydr3r27av4eqf73yoh": [15, 16], "252baqg": [15, 16], "252bz3hvktao": [15, 16], "10120558": [15, 16], "54": [15, 16], "No": [15, 16], "51": [15, 16], "741727": [15, 16], "10120862": [15, 16], "connector": [2, 8, 15, 16, 19, 20], "strain": [15, 16], "relief": [15, 16], "44": [15, 16, 19, 20], "742063": [15, 16], "10120158": [15, 16], "ribbon": [8, 15, 16], "x": [15, 16, 19, 20], "mm\u00b2": [16, 19, 20], "multi": [15, 16, 19, 20], "colour": [15, 16], "1012015810": [15, 16], "127": [15, 16], "008": [15, 16], "1548658": [15, 16], "hex": [8, 15, 16], "25": [8, 12, 13, 15, 16, 19, 20], "79": [15, 16], "49": [15, 16], "keyston": [15, 16], "24300": [15, 16], "uwqyq": [15, 16], "2f2czwu0ejpozmzc2a": [15, 16], "745": [15, 16], "846": [15, 16], "614": [15, 16], "25515": [15, 16], "2f2czwuxuhumfr": [15, 16], "252bzuq": [15, 16], "55": [16, 19, 20], "328": 16, "uqd7xcvsscnr3hwd6fta8g": 16, "100": [2, 15, 16, 17, 19, 20], "duplic": [2, 15, 16], "everi": [2, 15, 16, 17], "build": [2, 7, 15, 16, 19, 20], "therefor": [2, 15, 16, 19, 20], "identifi": [2, 15, 16], "assign": [2, 15, 16], "alloc": [2, 15, 16], "here": [2, 8, 15, 16, 20], "default": [2, 15, 16, 17], "jumper": [2, 15, 16], "note": [2, 8, 15, 16, 19, 20], "name": [2, 5, 15, 16, 17, 19, 20], "zoom": [2, 8, 15, 16], "befor": [2, 8, 9, 15, 16, 17, 19, 20], "them": [2, 15, 16, 17, 19, 20], "definit": [2, 15, 16], "simplifi": [2, 15, 16], "thing": [2, 15, 16, 17], "do": [2, 5, 8, 15, 16, 17], "50": [2, 8, 10, 12, 13, 15, 16, 19, 20], "cm": [2, 8, 15, 16, 19, 20], "long": [2, 8, 9, 15, 16], "flat": [2, 15, 16], "pole": [2, 15, 16, 19, 20], "detect": [2, 15, 16], "script": [2, 5, 15, 16, 17], "test_mux_board": [2, 15, 16], "cut": 8, "compos": [7, 8], "proper": 8, "length": [8, 19, 20], "about": [8, 9], "correspond": [8, 19], "crimp": [8, 19, 20], "idc": 8, "suitabl": [8, 19, 20], "clamp": 8, "pai": [8, 19, 20], "attent": [8, 19, 20], "direct": [8, 17, 19, 20], "unbalanc": 8, "perpendicular": 8, "possibl": [8, 12, 18, 19, 20], "same": [8, 9, 17, 19, 20], "flush": 8, "posit": [8, 19, 20], "abov": [8, 19, 20], "profil": 8, "color": 8, "yellow": 8, "tin": 8, "end": [8, 19, 20], "shown": [8, 19, 20], "pictur": 8, "ii": 8, "gnd": [8, 19, 20], "nois": 8, "often": [8, 9], "heard": 8, "when": [5, 8, 10, 17, 18, 19, 20], "clip": 8, "place": [5, 8, 9, 18, 19, 20], "second": [8, 9, 12, 17, 19, 20], "b": [0, 7, 8, 9, 10, 12], "help": [5, 8, 9, 17], "previou": 8, "procedur": 8, "repeat": [8, 17, 19, 20], "other": [8, 17, 19, 20], "purpl": 8, "relev": [5, 8], "defin": [5, 8, 17], "third": [8, 17], "fourth": 8, "nylon": 8, "photograph": 8, "more": [7, 8, 9, 17, 18], "detail": [8, 9, 17, 19], "4th": 8, "togeth": [8, 19, 20], "tie": 8, "pvc": 8, "plate": 8, "minimum": 8, "dimens": 8, "200": [8, 12], "150": [8, 9, 13, 19, 20], "drill": 8, "remain": [8, 19, 20], "metal": 8, "tighten": 8, "so": [8, 9, 19, 20], "usb": 8, "hole": [8, 19, 20], "26": [8, 19, 20], "add": [8, 19, 20], "attach": 8, "washer": 8, "nut": 8, "28": 8, "come": 8, "pass": [8, 17], "led": 8, "consid": 8, "temporari": 8, "orang": 8, "brown": 8, "blue": [8, 19, 20], "block": [8, 19, 20], "secur": [8, 17], "33": 8, "34": 8, "37": [8, 19, 20], "38": [8, 19, 20], "os": [7, 8, 17], "monitor": [8, 17, 19, 20], "deliv": [8, 19, 20], "12vdc": 8, "enjoi": 8, "These": [4, 7, 9, 17, 18, 19, 20], "anymor": [4, 18], "draft": 5, "TO": [5, 16, 18], "BE": [5, 16, 18], "review": [5, 18], "section": [5, 7, 12, 17, 19, 20], "intend": 5, "part": [5, 7, 9, 12, 18, 19, 20], "advic": [5, 18], "best": 5, "practic": [5, 19, 20], "contribut": 5, "howev": [5, 9, 19, 20], "order": [5, 17, 19, 20], "maintain": 5, "track": [5, 19, 20], "promot": 5, "exchang": 5, "reus": 5, "contributor": 5, "ideal": 5, "few": 5, "step": [5, 11, 13, 15, 16, 19, 20], "distinguish": 5, "deal": 5, "compli": 5, "Such": 5, "typic": [5, 9, 17, 19, 20], "focu": 5, "improv": [5, 20], "exist": [5, 7, 19, 20], "reduc": [5, 9], "rang": [5, 12, 18, 19, 20], "specif": [5, 7, 17, 19, 20], "easili": [5, 17, 18], "avail": [5, 10, 17, 19, 20], "newli": 5, "expos": 5, "minim": 5, "hardware_system": 5, "introduc": [5, 12, 17, 19, 20], "singl": [5, 17, 19, 20], "discuss": 5, "ohmpi_hardwar": 5, "class": [5, 17], "initi": 5, "veri": [5, 9, 20], "earli": 5, "stage": 5, "investig": 5, "implement": [5, 17], "solut": [5, 19, 20], "strategi": 5, "readi": 5, "conceiv": 5, "import": [5, 17], "kicad": 5, "both": [5, 19, 20], "schema": 5, "share": 5, "alwai": 5, "branch": 5, "python": [5, 7], "similar": [5, 18], "modul": [5, 7, 9, 19, 20], "store": [5, 17], "hardware_compon": 5, "abstract": 5, "abstract_hardware_compon": 5, "method": 5, "interact": [5, 17], "accord": [5, 9, 19, 20], "sure": [5, 17, 19, 20], "hardware_config": 5, "dictionari": 5, "config_xxx": 5, "xxx": 5, "replac": [5, 18, 20], "conduct": [5, 19, 20], "todo": 6, "e": [6, 12, 17, 19, 20], "rocherfort": 6, "mb": 7, "n": [7, 8, 9, 13, 15, 16, 17, 19, 20], "pwr": 7, "advanc": [7, 17], "control": [7, 9, 10, 13, 17, 19, 20], "ctrl": [7, 19, 20], "upgrad": [7, 20], "c": [7, 12, 19, 20], "valid": [7, 19, 20], "regul": 7, "dps5005": 7, "virtual": 7, "environ": 7, "packag": [7, 17], "id": [7, 17], "mn": [9, 18], "ab": 9, "switch": [9, 19, 20], "polar": [9, 19, 20], "half": [9, 17], "cycl": [9, 17], "stack": [9, 17, 19, 20], "explan": 9, "given": [0, 9, 17], "understand": [9, 17], "redirect": 9, "reader": 9, "datasheet": 9, "through": [9, 17, 19, 20], "programm": 9, "pga": 9, "mean": 9, "factor": 9, "digitis": 9, "Its": [9, 19, 20], "vari": 9, "With": [9, 19, 20], "076": 9, "mv": 9, "beyond": 9, "larger": 9, "our": [9, 19, 20], "divid": [9, 19, 20], "receiv": [9, 17], "mb_2023": 9, "bridg": [9, 19, 20], "across": 9, "seri": [9, 19, 20], "300": 9, "techniqu": 9, "consist": [9, 18, 19, 20], "opamp": 9, "down": [9, 19, 20], "addit": [9, 17, 19, 20], "mode": 9, "high": [9, 19, 20], "imped": [9, 12, 13, 19, 20], "inde": [9, 19, 20], "leak": 9, "while": 9, "affect": 9, "2024": 9, "mb_2024": 9, "differenti": 9, "float": 9, "enabl": [9, 10, 17, 19, 20], "much": 9, "too": 9, "larg": 9, "usual": 9, "accur": [9, 19, 20], "As": [9, 19, 20], "tini": 9, "being": [9, 19, 20], "ina": 9, "alreadi": 9, "off": 9, "revers": [9, 19, 20], "transit": 9, "mcp2308": 9, "gpi": 9, "sda": [9, 18], "scl": [9, 18], "protocol": [9, 17, 18, 19, 20], "send": 9, "puls": [0, 9, 12, 13, 19, 20], "clock": 9, "transmit": 9, "pull": [9, 18], "rest": [9, 18], "thei": [9, 17, 18, 19, 20], "entri": 9, "becaus": 9, "mani": 9, "bu": 9, "tcaxxxx": 9, "itself": [9, 17], "rapsberrypi": 9, "now": [10, 19, 20], "actual": [10, 19, 20], "henc": 10, "maximum": [10, 17, 19, 20], "aliment": 10, "modbu": 10, "paramet": [12, 13, 17], "v1": [13, 19, 20], "0x": 13, "temperatur": [12, 13, 19, 20], "consumpt": [13, 17, 19, 20], "cpu": [13, 19, 20], "w": [13, 19, 20], "min": [12, 13, 19, 20], "durat": [12, 13, 17, 19, 20], "ms": [12, 13, 19, 20], "80": [12, 13], "storag": [13, 19, 20], "resolut": [13, 17, 19, 20], "updat": [16, 17], "whose": [17, 19, 20], "main": [17, 19, 20], "summar": 17, "cover": 17, "acquisit": 17, "separ": 17, "json": [17, 20], "ohmpi_set": 17, "central": 17, "handler": 17, "layer": 17, "excel": 17, "log": 17, "broker": 17, "zip": 17, "rotat": 17, "disk": 17, "exec_logg": 17, "data_logg": 17, "plan": 17, "state": 17, "health": 17, "soh": 17, "futur": 17, "By": 17, "written": 17, "consol": 17, "like": [17, 18], "local": 17, "dai": 17, "size": 17, "exce": 17, "sent": 17, "level": 17, "edit": 17, "setup_logg": 17, "custom": 17, "repositori": [17, 19, 20], "prefer": [17, 19, 20], "desir": 17, "usernam": 17, "password": 17, "One": [17, 18], "alter": 17, "keep": 17, "bash": 17, "run_http_interfac": 17, "sh": 17, "iot": 17, "messag": 17, "friendli": 17, "graphic": 17, "quick": 17, "easi": 17, "wi": 17, "fi": 17, "point": [17, 19, 20], "ap": 17, "webserv": 17, "serv": [17, 19, 20], "index": 17, "html": 17, "laptop": 17, "mobil": 17, "phone": 17, "upload": 17, "sequenc": [17, 19, 20], "download": [17, 19, 20], "act": 17, "raspap": 17, "runonstart": 17, "141": 17, "8080": 17, "pseudo": 17, "evolut": 17, "quadrupol": [17, 19, 20], "appar": 17, "offer": [17, 19, 20], "especi": 17, "suit": 17, "autom": 17, "ipython": 17, "ssh": 17, "putti": 17, "maco": 17, "linux": 17, "found": 17, "gitlab": [17, 19, 20], "entir": [17, 19, 20], "np": 17, "chdir": 17, "object": 17, "k": 17, "load": 17, "manual": [17, 19, 20], "injection_dur": [17, 19, 20], "nb_stack": 17, "nbr_mea": [17, 19, 20], "update_set": 17, "arrai": [17, 19, 20], "shape": 17, "set_sequ": 17, "n2": 17, "string": 17, "load_sequ": 17, "abmn": [17, 19, 20], "rs_check": 17, "synchron": 17, "wait": 17, "return": [17, 19, 20], "prompt": 17, "run_sequ": 17, "run_sequence_async": 17, "thread": 17, "immedi": 17, "sleep": 17, "interrupt": 17, "kill": 17, "asynchron": 17, "interv": 17, "nb_mea": 17, "sequence_delai": [17, 19, 20], "run_multiple_sequ": 17, "taken": 17, "switch_mux_on": 17, "run_measur": 17, "switch_mux_off": 17, "risk": 17, "short": 17, "argument": 17, "autogain": 17, "true": 17, "ad": [17, 19, 20], "good": 17, "usag": 17, "process": 17, "sensor": 17, "scope": 17, "internet": 17, "network": 17, "auxiliari": 17, "publish": [17, 19], "subscrib": 17, "approach": 17, "mosquitto": 17, "server": 17, "reachabl": 17, "net": 17, "servic": 17, "install_local_mqtt_brok": 17, "examin": 17, "parti": 17, "explor": 17, "reboot": 17, "further": 17, "format": 17, "kwarg": 17, "illustr": [17, 19, 20], "cmd_id": 17, "3fzxv121uitwgjwygcz4xw": 17, "cmd": 17, "nb_electrod": [17, 19, 20], "3fzxv121uitwgjwygcz4yw": 17, "tailor": [12, 17], "made": [17, 19, 20], "dashboard": 17, "browser": 17, "flow": [17, 19, 20], "editor": [17, 19, 20], "node": 17, "complex": 17, "properli": [17, 18], "palett": 17, "manag": [17, 19, 20], "noder": 17, "doc": 17, "guid": 17, "ui": 17, "visual": 17, "cookbook": 17, "journal": 19, "correct": [0, 19, 20], "bug": 19, "explain": 19, "miss": 19, "invit": 19, "commerci": [19, 20], "field": [12, 19, 20], "o1": [19, 20], "youtub": [19, 20], "wjwzhv1v3pk": [19, 20], "noob": [19, 20], "simpl": [19, 20], "unexpectedli": [19, 20], "boot": [19, 20], "cd": [19, 20], "gnu": [19, 20], "nano": [19, 20], "At": [19, 20], "op": [19, 20], "dl": [19, 20], "press": [19, 20], "enter": [19, 20], "escap": [19, 20], "wa": [18, 19, 20], "studi": [19, 20], "hous": [19, 20], "diagram": [19, 20], "displai": [19, 20], "mimic": [19, 20], "behavior": [19, 20], "soil": [19, 20], "subject": [19, 20], "r11": [19, 20], "r10": [19, 20], "r12": [19, 20], "constitut": [19, 20], "stainless": [19, 20], "steel": [19, 20], "r9": [19, 20], "less": [19, 20], "sum": [19, 20], "000": [19, 20], "intens": [19, 20], "potenti": [19, 20], "calcul": [19, 20], "insert": [19, 20], "1115": [19, 20], "a1": [19, 20], "a0": [19, 20], "increas": [19, 20], "r5": [19, 20], "r8": [19, 20], "r6": [19, 20], "r7": [19, 20], "a2": [19, 20], "a3": [19, 20], "obtain": [19, 20], "ly": [19, 20], "let": [19, 20], "equal": [19, 20], "multipli": [19, 20], "reduct": [19, 20], "despit": [19, 20], "still": [18, 19, 20], "calibr": [19, 20], "voltmet": [18, 19, 20], "variou": [19, 20], "disturb": [19, 20], "estim": [19, 20], "mega": [19, 20], "shortcut": [19, 20], "excess": [19, 20], "lithium": [19, 20], "ion": [19, 20], "automobil": [19, 20], "lead": [19, 20], "acid": [19, 20], "strong": [19, 20], "hazard": [19, 20], "fuse": [19, 20], "onto": [19, 20], "ohmmet": [19, 20], "coeffici": [19, 20], "coef_p0": [19, 20], "coef_p1": [19, 20], "coef_p2": [19, 20], "coef_p3": [19, 20], "coef": [19, 20], "po": [19, 20], "p1": [19, 20], "r3": [19, 20], "r4": [19, 20], "p2": [19, 20], "p3": [19, 20], "r_ref": [19, 20], "slope": [19, 20], "convers": [19, 20], "p0": [19, 20], "accuraci": [19, 20], "lm358n": [19, 20], "appli": [19, 20], "weaker": 19, "stronger": [18, 19, 20], "tx": [19, 20], "rememb": [19, 20], "holder": [19, 20], "f": [19, 20], "circul": [19, 20], "fig": [19, 20], "common": [19, 20], "neg": [19, 20], "normal": [19, 20], "simultan": [19, 20], "role": [19, 20], "thu": [19, 20], "energ": [19, 20], "next": [19, 20], "featur": [19, 20], "strict": [19, 20], "in1": [19, 20], "in2": [19, 20], "in3": [19, 20], "in4": [19, 20], "5vdc": [19, 20], "5vcc": [19, 20], "mm2": [19, 20], "lastli": [19, 20], "congratul": [19, 20], "construct": [19, 20], "ert": [19, 20], "sever": [19, 20], "ten": [19, 20], "thousand": [19, 20], "stuck": [19, 20], "smaller": [18, 19, 20], "hand": [19, 20], "cap": [19, 20], "produc": [19, 20], "clean": [19, 20], "distanc": [19, 20], "had": [19, 20], "extra": [19, 20], "final": [19, 20], "horizont": [19, 20], "vertic": [19, 20], "06": [19, 20], "04": [19, 20], "09": [19, 20], "05": [19, 20], "din": [19, 20], "rail": [19, 20], "chosen": [19, 20], "consequ": [12, 19, 20], "incom": [19, 20], "instead": [19, 20], "moreov": [19, 20], "turn": [18, 19, 20], "bought": [19, 20], "velleman": [19, 20], "wpm404": [19, 20], "potentiomet": [19, 20], "scienc": [19, 20], "framework": [19, 20], "manuscript": [19, 20], "osf": [19, 20], "io": [19, 20], "dzwb4": [19, 20], "irstea": [19, 20], "unzip": [19, 20], "master": [19, 20], "readm": [19, 20], "assist": [19, 20], "disconnect": [19, 20], "handl": [19, 20], "charg": [19, 20], "full": [19, 20], "capac": [19, 20], "fewer": [19, 20], "bank": [19, 20], "2a": [19, 20], "ll": [19, 20], "insid": [19, 20], "numer": [19, 20], "optim": [19, 20], "attribut": [19, 20], "the9": [19, 20], "hear": [19, 20], "characterist": [12, 19, 20], "sound": [19, 20], "permut": [19, 20], "csv": [19, 20], "delai": [19, 20], "repetit": [19, 20], "evolv": [19, 20], "littl": [19, 20], "public": [19, 20], "articl": [19, 20], "sainsmart": [19, 20], "canal": 19, "pour": 19, "arduino": 19, "dsp": 19, "avr": 19, "pic": 19, "arm": 19, "99": [19, 20], "199": [19, 20], "sain": [19, 20], "smart": [19, 20], "101": [19, 20], "70": [19, 20], "103": [19, 20], "018": [19, 20], "1x1": [19, 20], "66": [19, 20], "1568649": [19, 20], "1x0": [19, 20], "71": [19, 20], "1565235": [19, 20], "68": [19, 20], "rs": [19, 20], "pro": [19, 20], "897": [19, 20], "1332": [19, 20], "858": [19, 20], "627": [19, 20], "52": [19, 20], "upw50b50rv": [19, 20], "1083": [19, 20], "7ah": [19, 20], "537": [19, 20], "5488": [19, 20], "lr20": [19, 20], "9v": [19, 20], "185": [19, 20], "4686": [19, 20], "ferrul": [19, 20], "500": [12, 19, 20], "piec": [19, 20], "weidmul": [19, 20], "9004330000": [19, 20], "966067": [19, 20], "car": 19, "littelfus": [19, 20], "fhac0002zxj": 19, "96": 19, "trn3": 20, "suppress": 20, "10v": 20, "fast": 20, "decoupl": 20, "last": 20, "prevent": 20, "overh": 20, "toler": 20, "orient": 20, "h": 20, "nf": 20, "tabl": [12, 20], "jason": 20, "ohmpi_param": 20, "export_path": 20, "desktop": 20, "0251001": 20, "pat1l": 20, "v2024rc": 0, "issu": 0, "due": 18, "quit": 18, "fragil": 18, "conductor": 18, "multimet": 18, "broken": 18, "shoudn": 18, "burn": 18, "expect": 18, "try": 18, "effect": 18, "sens": 18, "malfunct": 18, "erron": 18, "solv": 18, "most": 18, "100k": [15, 18], "vdd": 18, "reach": 18, "compar": [], "sp\u00e9cific": [], "descript": [], "year": 12, "group": 12, "varieti": 12, "technic": 12, "budget": 12, "vmn": 12, "permiss": 12, "vab": 12, "teraohm": [], "volt": 12, "tohm": 12, "dec": 0, "03": 0, "box": [], "dii": [], "laps": [], "seek": [], "wish": [], "stop": [], "effort": [], "img": [], "step_n_2": [], "24_mes_board": [], "jpg": [], "recogn": 7}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"ohmpi": [0, 1, 8, 9, 19, 20], "open": 0, "sourc": 0, "hardwar": [0, 5, 7], "resist": [0, 19, 20], "meter": 0, "summari": 0, "document": 0, "center": 0, "project": 1, "author": 1, "partner": 1, "cite": 1, "introduct": 1, "step": 2, "n": 2, "1": [19, 20], "raspberri": [11, 19, 20], "pi": [11, 19, 20], "configur": [11, 17, 19, 20], "part": [2, 11, 13, 15, 16], "A": [2, 11, 13, 15, 16, 18], "os": [11, 19, 20], "instal": [11, 19, 20], "b": [2, 11, 13, 15, 16, 18, 19, 20], "virtual": [11, 19, 20], "environ": [11, 19, 20], "packag": [11, 19, 20], "c": [2, 11, 13, 15, 16], "activ": [11, 19, 20], "thonni": [11, 19, 20], "python": [11, 17, 19, 20], "id": [11, 19, 20], "2": [], "measur": [9, 12, 13, 14, 19, 20], "board": [2, 9, 12, 13, 14, 15, 16, 19, 20], "assembl": [2, 8, 13, 15, 16, 19, 20], "requir": [2, 13, 15, 16], "compon": [2, 5, 13, 15, 16, 18, 19, 20], "list": [13, 15, 16, 19, 20], "descript": [13, 19, 20], "start": 13, "up": 13, "check": 13, "3": 2, "mux": [2, 15, 16], "address": [2, 15, 16], "valid": [2, 15, 16], "4": [], "api": 3, "refer": 3, "archiv": 4, "version": [4, 12], "softwar": [5, 17], "interfac": [5, 17], "new": 5, "exampl": 6, "applic": [6, 17], "electron": 9, "design": 9, "multiplex": [9, 19, 20], "power": 10, "suppli": 10, "12v": 10, "batteri": 10, "regul": 10, "dps5005": 10, "v2023": [13, 15], "specif": [12, 13], "v2024": [14, 16], "oper": [17, 19, 20], "system": 17, "architectur": 17, "logger": 17, "file": 17, "web": 17, "mqtt": 17, "troubleshoot": 18, "v": [19, 20], "01": 19, "limit": [19, 20], "32": [19, 20], "electrod": [19, 20], "The": [19, 20], "philosophi": [19, 20], "technic": [19, 20], "data": [19, 20], "current": [19, 20], "inject": [19, 20], "card": [19, 20], "connect": [19, 20], "electr": [19, 20], "implement": [19, 20], "first": [19, 20], "four": [19, 20], "instruct": [19, 20], "preliminari": [19, 20], "procedur": [19, 20], "onli": [19, 20], "initi": [19, 20], "startup": [19, 20], "paramet": [19, 20], "complet": [19, 20], "tabl": 19, "titl": 19, "02": 20, "issu": 18, "puls": 18, "between": 18, "valu": 18, "given": 18, "correct": 18, "one": 18, "commun": 18, "64": [], "build": [], "an": [], "recogn": 12}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "source_rst/Ohmpi", "source_rst/V2023.x.x/V2023_step_03", "source_rst/api", "source_rst/archived_version", "source_rst/developing_hardware_components", "source_rst/gallery", "source_rst/hardware", "source_rst/hardware/assembling", "source_rst/hardware/hw_info", "source_rst/hardware/hw_pwr", "source_rst/hardware/hw_rpi", "source_rst/hardware/mb", "source_rst/hardware/mb/mb_2023", "source_rst/hardware/mb/mb_2024", "source_rst/hardware/mux_2023", "source_rst/hardware/mux_2024", "source_rst/software", "source_rst/troubleshooting", "source_rst/v1.xx/V1_01", "source_rst/v1.xx/V1_02"], "filenames": ["index.rst", "source_rst/Ohmpi.rst", "source_rst/V2023.x.x/V2023_step_03.rst", "source_rst/api.rst", "source_rst/archived_version.rst", "source_rst/developing_hardware_components.rst", "source_rst/gallery.rst", "source_rst/hardware.rst", "source_rst/hardware/assembling.rst", "source_rst/hardware/hw_info.rst", "source_rst/hardware/hw_pwr.rst", "source_rst/hardware/hw_rpi.rst", "source_rst/hardware/mb.rst", "source_rst/hardware/mb/mb_2023.rst", "source_rst/hardware/mb/mb_2024.rst", "source_rst/hardware/mux_2023.rst", "source_rst/hardware/mux_2024.rst", "source_rst/software.rst", "source_rst/troubleshooting.rst", "source_rst/v1.xx/V1_01.rst", "source_rst/v1.xx/V1_02.rst"], "titles": ["OHMPI: Open source and open hardware resistivity-meter", "OhmPi project", "<strong>STEP n\u00b03:</strong> MUX board", "API reference", "Archived versions", "Software interface to new hardware components", "Examples of applications", "Hardware", "Assembling the OhmPi", "OhmPi electronic design", "Power supply", "Raspberry Pi configuration", "Measurement board", "Measurement board v2023", "Measurement board 2024.0.2", "MUX board v2023", "MUX board v2024", "Software and operation", "Troubleshooting", "OhmPi V 1.01 (limited to 32 electrodes)", "OhmPi V 1.02 (limited to 32 electrodes)"], "terms": {"releas": [0, 17], "v2024rc": 0, "date": [0, 19, 20], "dec": 0, "12": [0, 2, 8, 9, 12, 13, 14, 15, 16, 19, 20], "2023": [0, 14], "start": [0, 2, 5, 11, 12, 15, 16, 17, 19, 20], "juli": 0, "2016": 0, "author": [0, 11, 19, 20], "r\u00e9mi": [0, 1], "clement": [0, 1], "nicola": [0, 1], "forquet": [0, 1], "yannick": [0, 1], "fargier": [0, 1], "vivien": [0, 1], "duboi": [0, 1], "h\u00e9l\u00e8ne": [0, 1], "guyard": [0, 1], "olivi": [0, 1], "kaufmann": [0, 1], "guillaum": [0, 1], "blanchi": [0, 1], "arnaud": [0, 1], "watlet": [0, 1], "target": 0, "user": [0, 11, 17, 19, 20], "research": 0, "develop": [0, 1, 5, 11, 13, 14, 19, 20], "statu": 0, "some": [0, 5, 9, 17, 19, 20], "matur": 0, "progress": 0, "offici": 0, "guidelin": 0, "gener": [0, 2, 7, 9, 13, 15, 16, 17, 19, 20], "tutori": 0, "content": 0, "project": [0, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "partner": 0, "cite": 0, "introduct": 0, "electron": [0, 1, 2, 7, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20], "design": [0, 5, 7, 17, 19, 20], "measur": [0, 1, 2, 7, 8, 11, 15, 16, 17, 18], "board": [0, 5, 7, 8, 11, 18], "mux": [0, 7, 8, 19, 20], "v2023": [0, 7, 9, 12, 17, 18], "v2024": [0, 7, 9, 12, 18], "power": [0, 2, 7, 8, 12, 13, 14, 15, 16, 19, 20], "suppli": [0, 2, 7, 8, 12, 13, 15, 16, 19, 20], "raspberri": [0, 2, 7, 8, 13, 14, 15, 16, 17], "pi": [0, 7, 8, 13, 14, 17], "configur": [0, 5, 7, 9], "assembl": [0, 1, 2, 7, 11, 13, 14, 15, 16, 17, 19, 20], "softwar": [0, 11, 19, 20], "oper": [0, 5, 8, 9, 11, 12, 13], "system": [0, 5, 11, 19, 20], "architectur": 0, "logger": [0, 1, 19, 20], "file": [0, 5, 7, 11, 13, 19, 20], "interfac": 0, "applic": [0, 1, 5, 7, 9], "api": [0, 17], "refer": [0, 8, 13, 14, 15, 16, 17, 19, 20], "troubleshoot": 0, "issu": 0, "puls": [0, 9, 12, 19, 20], "between": [0, 2, 8, 9, 13, 15, 16, 19, 20], "A": [0, 1, 5, 7, 8, 9, 10, 12, 17, 19, 20], "b": [0, 7, 8, 9, 10, 12, 14], "valu": [0, 2, 9, 13, 15, 16, 19, 20], "given": [0, 9, 17], "i": [0, 1, 2, 5, 7, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "correct": [0, 19, 20], "one": [0, 8, 13, 17, 19, 20], "commun": [0, 1, 9, 17], "compon": [0, 9, 11, 12, 17], "exampl": [0, 2, 8, 13, 15, 16, 17, 19, 20], "new": [0, 11, 17, 18, 19, 20], "archiv": 0, "version": [0, 5, 7, 11, 13, 17, 19, 20], "v": [0, 4, 8, 9, 10, 13, 15, 16, 18], "1": [0, 2, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17], "01": [0, 4, 20], "limit": [0, 4, 13], "32": [0, 4, 8, 11], "electrod": [0, 1, 2, 4, 7, 8, 9, 10, 13, 15, 16, 18], "02": [0, 4, 13, 14, 19], "inra": [1, 6], "reversa": [1, 19, 20], "villeurbann": 1, "franc": 1, "universit\u00e9": 1, "de": 1, "mon": 1, "belgium": 1, "ger": 1, "rro": 1, "univ": 1, "gustav": 1, "eiffel": 1, "ifsttar": 1, "lyon": 1, "ig": 1, "grenobl": 1, "alp": 1, "ilvo": 1, "merelbek": 1, "julien": 1, "ganc": 1, "emil": 1, "gro": 1, "et": [1, 13], "al": 1, "an": [1, 2, 5, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19, 20], "open": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "sourc": [1, 5, 10, 11, 19, 20], "data": [1, 9, 17], "dedic": [1, 17], "electr": [1, 13, 14], "resist": [1, 8, 9, 13, 17, 18], "imag": [1, 11], "small": [1, 8, 9, 13, 17, 19, 20], "laboratori": [1, 8, 12, 19, 20], "scale": [1, 9], "hardwarex": 1, "elsevi": 1, "2020": 1, "8": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "24": [1, 8, 12, 13, 14, 16, 19, 20], "p": [1, 13, 14, 15, 16], "ff10": 1, "1016": 1, "j": 1, "ohx": 1, "e00122ff": 1, "particip": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "all": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "requir": [1, 5, 8, 11, 12, 17, 19, 20], "skill": [1, 2, 8, 11, 12, 13, 14, 15, 16, 17, 19, 20], "respect": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "safeti": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "rule": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "must": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "profession": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "context": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "peopl": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "compet": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "The": [1, 2, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18], "team": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 19, 20], "cannot": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "held": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "respons": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "ani": [1, 2, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "materi": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "human": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "damag": [1, 2, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "which": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "would": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "associ": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "us": [1, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "assembli": [1, 7, 8, 11, 12, 17], "equip": [1, 2, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "doe": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "work": [1, 2, 5, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20], "after": [1, 2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "you": [1, 2, 5, 7, 8, 9, 11, 13, 15, 16, 17, 18, 19, 20], "mai": [1, 11, 17, 18, 19, 20], "redistribut": 1, "modifi": [1, 5, 19, 20], "thi": [1, 2, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "document": [1, 7, 17, 19], "make": [1, 2, 5, 9, 15, 16, 17, 19, 20], "product": [1, 13, 14, 15, 16], "under": [1, 8, 19, 20], "term": [1, 5], "cern": 1, "ohl": 1, "v2": 1, "distribut": [1, 9], "without": [1, 2, 9, 15, 16, 18, 19, 20], "express": [1, 5], "OR": 1, "impli": [1, 2, 15, 16], "warranti": 1, "includ": [1, 2, 5, 11, 15, 16, 17, 19, 20], "OF": 1, "merchant": 1, "satisfactori": 1, "qualiti": 1, "AND": 1, "fit": 1, "FOR": 1, "particular": 1, "purpos": [1, 8, 19, 20], "pleas": [1, 8, 17, 19, 20], "see": [1, 9, 17, 18, 19, 20], "condit": 1, "present": [1, 2, 5, 8, 14, 15, 16, 19, 20], "low": [1, 19, 20], "cost": [1, 5, 13, 14, 15, 16, 19, 20], "hardwar": [1, 17, 19, 20], "meter": [1, 8, 19, 20], "provid": [1, 12, 14, 17, 19, 20], "scientif": 1, "robust": [1, 18, 19, 20], "flexibl": 1, "tool": 1, "experi": [1, 17, 18, 19, 20], "call": [1, 2, 8, 9, 11, 15, 16, 17], "basic": [1, 5], "meterfeatur": 1, "current": [1, 7, 9, 10, 12, 13, 14, 17, 18], "inject": [1, 7, 9, 10, 14, 17], "function": [1, 5, 17, 19, 20], "multiplex": [1, 2, 7, 8, 15, 16], "allow": [1, 2, 13, 14, 15, 16, 17, 19, 20], "perform": [1, 5, 11, 14, 19, 20], "automat": [1, 17, 19, 20], "up": [1, 2, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20], "64": [1, 2, 15, 16, 19, 20], "": [1, 2, 13, 14, 15, 16, 17, 18, 19, 20], "philosophi": 1, "fulli": 1, "toolto": 1, "surfac": 1, "anyon": 1, "who": 1, "want": [1, 20], "get": [1, 11, 13, 17, 19, 20], "involv": [1, 17], "welcom": [1, 5], "join": 1, "ohmpi": [2, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18], "channel": [2, 12, 15, 16, 19, 20], "mechan": [2, 9, 15, 16, 17, 18, 19, 20], "base": [2, 5, 11, 15, 16, 17, 19, 20], "omron": [2, 15, 16], "manufactur": [2, 13, 14, 15, 16, 19, 20], "relai": [2, 9, 11, 13, 15, 16, 18, 19, 20], "g5le": [2, 15, 16], "vd": [2, 15, 16], "vdc": [2, 12, 15, 16], "each": [2, 8, 9, 11, 12, 15, 16, 19, 20], "combin": [2, 7, 15, 16], "zvn4206a": [2, 15, 16], "mofset": [2, 15, 16], "ha": [2, 9, 11, 12, 14, 15, 16, 18, 19, 20], "onli": [2, 5, 9, 10, 15, 16], "30": [2, 8, 15, 16, 19, 20], "gpio": [2, 8, 9, 11, 15, 16, 19, 20], "enough": [2, 15, 16, 19, 20], "activ": [2, 7, 15, 16], "repres": [2, 15, 16, 19, 20], "512": [2, 15, 16], "we": [2, 7, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20], "expand": [2, 9, 15, 16], "i2c": [2, 9, 11, 13, 15, 16, 18], "mcp23017": [2, 9, 15, 16], "have": [2, 5, 9, 11, 13, 15, 16, 17, 18, 19, 20], "type": [2, 5, 11, 15, 16, 19, 20], "tca9548a": [2, 11, 15, 16], "from": [2, 8, 9, 12, 15, 16, 17, 18, 19, 20], "adafruit": [2, 11, 13, 14, 15, 16, 19, 20], "go": [2, 11, 15, 16, 17], "128": [2, 15, 16], "card": [2, 8, 11, 15, 16], "its": [2, 8, 11, 14, 15, 16, 17, 19, 20], "own": [2, 15, 16], "digit": [2, 9, 13, 15, 16, 19, 20], "0x70": [2, 15, 16], "0x77": [2, 15, 16], "In": [2, 5, 9, 11, 13, 14, 15, 16, 18, 19, 20], "follow": [2, 5, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20], "0x71": [2, 15, 16], "0x72": [2, 15, 16], "m": [2, 8, 9, 11, 12, 13, 15, 16, 19, 20], "0x73": [2, 15, 16], "4": [2, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20], "need": [2, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20], "pcb": [2, 5, 13, 14, 15, 16, 19, 20], "2": [2, 5, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20], "instal": [2, 7, 8, 13, 15, 16, 17], "100": [2, 15, 16, 17, 19, 20], "kohm": [2, 13, 14, 15, 16, 19, 20], "resistor": [2, 9, 12, 13, 14, 15, 16, 18, 19, 20], "mosfet": [2, 15, 16], "diod": [2, 15, 16], "1n4007": [2, 15, 16], "5": [2, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], "6": [2, 8, 11, 13, 14, 15, 16, 19, 20], "termin": [2, 8, 11, 13, 14, 15, 16, 17, 19, 20], "screw": [2, 8, 13, 14, 15, 16, 19, 20], "7": [2, 8, 11, 13, 15, 16, 19, 20], "male": [2, 13, 14, 15, 16], "header": [2, 13, 14, 15, 16, 19, 20], "pin": [2, 13, 14, 15, 16, 19, 20], "strip": [2, 8, 13, 14, 15, 16, 19, 20], "16": [2, 8, 9, 13, 14, 15, 16, 19, 20], "9": [2, 8, 11, 13, 14, 15, 16, 19, 20], "dip": [2, 13, 14, 15, 16], "dual": [2, 13, 14, 15, 16, 19, 20], "line": [2, 9, 13, 14, 15, 16, 18, 19, 20], "socket": [2, 13, 14, 15, 16], "14": [2, 8, 13, 14, 15, 16], "10": [2, 8, 13, 14, 15, 16, 17, 19, 20], "duplic": [2, 15, 16], "time": [2, 9, 11, 15, 16, 17, 19, 20], "everi": [2, 15, 16, 17], "To": [2, 13, 15, 16, 17, 18, 19, 20], "build": [2, 7, 15, 16, 19, 20], "necessari": [2, 5, 8, 11, 15, 16, 19, 20], "differ": [2, 7, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "It": [2, 5, 10, 11, 14, 15, 16, 17, 18, 19, 20], "therefor": [2, 15, 16, 19, 20], "identifi": [2, 15, 16], "assign": [2, 15, 16], "alloc": [2, 15, 16], "code": [2, 5, 11, 12, 15, 16, 19, 20], "here": [2, 8, 15, 16, 20], "select": [2, 11, 15, 16, 19, 20], "default": [2, 15, 16, 17], "For": [2, 9, 11, 13, 15, 16, 17, 19, 20], "suggest": [2, 13, 14, 15, 16, 19, 20], "mount": [2, 8, 13, 15, 16, 19, 20], "jumper": [2, 15, 16], "note": [2, 8, 15, 16, 19, 20], "name": [2, 5, 15, 16, 17, 19, 20], "zoom": [2, 8, 15, 16], "first": [2, 5, 8, 9, 11, 15, 16, 17], "test": [2, 5, 8, 11, 13, 15, 16, 17, 19, 20], "befor": [2, 8, 9, 15, 16, 17, 19, 20], "them": [2, 15, 16, 17, 19, 20], "definit": [2, 15, 16], "simplifi": [2, 15, 16], "thing": [2, 15, 16, 17], "do": [2, 5, 8, 15, 16, 17], "prepar": [2, 13, 15, 16, 19, 20], "50": [2, 8, 10, 12, 15, 16, 19, 20], "cm": [2, 8, 15, 16, 19, 20], "long": [2, 8, 9, 15, 16], "flat": [2, 15, 16], "wire": [2, 8, 9, 11, 15, 16, 19, 20], "two": [2, 5, 9, 10, 13, 15, 16, 17, 18, 19, 20], "pole": [2, 15, 16, 19, 20], "connector": [2, 8, 15, 16, 19, 20], "cabl": [2, 8, 11, 13, 15, 16, 19, 20], "contact": [2, 13, 14, 15, 16, 17, 19, 20], "connect": [2, 8, 9, 10, 13, 14, 15, 16, 17, 18], "12v": [2, 7, 8, 9, 13, 15, 16, 19, 20], "your": [2, 5, 7, 11, 12, 13, 15, 16, 19, 20], "run": [2, 8, 11, 13, 15, 16, 17, 19, 20], "write": [2, 5, 13, 15, 16, 17, 19, 20], "i2cdetect": [2, 13, 15, 16], "y": [2, 13, 15, 16], "three": [2, 13, 15, 16, 17, 19, 20], "should": [2, 5, 8, 9, 11, 13, 15, 16, 17, 19, 20], "appear": [2, 11, 13, 15, 16, 19, 20], "been": [2, 11, 12, 14, 15, 16, 17, 19, 20], "detect": [2, 15, 16], "script": [2, 5, 15, 16, 17], "test_mux_board": [2, 15, 16], "py": [2, 5, 13, 15, 16, 17, 19, 20], "These": [4, 7, 9, 17, 18, 19, 20], "ar": [4, 5, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20], "support": [4, 11], "anymor": [4, 18], "draft": 5, "TO": [5, 16, 18], "BE": [5, 16, 18], "review": [5, 18], "section": [5, 7, 12, 17, 19, 20], "intend": 5, "part": [5, 7, 9, 12, 18, 19, 20], "advic": [5, 18], "best": 5, "practic": [5, 19, 20], "help": [5, 8, 9, 17], "within": [5, 11, 17, 19, 20], "contribut": 5, "howev": [5, 9, 14, 19, 20], "order": [5, 17, 19, 20], "maintain": 5, "track": [5, 19, 20], "promot": 5, "exchang": 5, "reus": 5, "contributor": 5, "ideal": 5, "few": 5, "step": [5, 11, 13, 15, 16, 19, 20], "case": [5, 11, 17, 18, 19, 20], "distinguish": 5, "when": [5, 8, 10, 17, 18, 19, 20], "deal": 5, "compli": 5, "wai": [5, 11, 19, 20], "Such": 5, "typic": [5, 9, 17, 19, 20], "focu": 5, "improv": [5, 20], "exist": [5, 7, 19, 20], "reduc": [5, 9], "adapt": [5, 13, 17, 19, 20], "rang": [5, 12, 18, 19, 20], "specif": [5, 7, 14, 17, 19, 20], "easili": [5, 17, 18], "avail": [5, 10, 17, 19, 20], "newli": 5, "creat": [5, 9, 11, 17, 19, 20], "expos": 5, "minim": 5, "hardware_system": 5, "introduc": [5, 12, 17, 19, 20], "chang": [5, 13, 15, 16, 17, 18], "singl": [5, 17, 19, 20], "also": [5, 9, 10, 11, 17, 19, 20], "discuss": 5, "ohmpi_hardwar": 5, "class": [5, 17], "initi": 5, "veri": [5, 9, 20], "earli": 5, "stage": 5, "investig": 5, "implement": [5, 17], "solut": [5, 19, 20], "If": [5, 11, 13, 18, 19, 20], "path": [5, 9, 11, 19, 20], "strategi": 5, "readi": 5, "devic": [5, 9, 13, 14, 15, 16], "conceiv": 5, "recommend": [5, 11, 17, 19, 20], "import": [5, 17], "kicad": 5, "both": [5, 19, 20], "schema": 5, "share": 5, "alwai": 5, "branch": 5, "python": [5, 7], "copi": [5, 11, 17], "similar": [5, 18], "modul": [5, 7, 9, 14, 19, 20], "store": [5, 17], "hardware_compon": 5, "directori": [5, 11, 17, 19, 20], "defin": [5, 8, 17], "relev": [5, 8], "abstract": 5, "abstract_hardware_compon": 5, "method": 5, "interact": [5, 14, 17], "accord": [5, 9, 19, 20], "sure": [5, 17, 19, 20], "place": [5, 8, 9, 18, 19, 20], "config": [5, 13, 17, 19, 20], "describ": [5, 8, 11, 12, 13, 19, 20], "hardware_config": 5, "dictionari": 5, "config_xxx": 5, "where": [5, 7, 9, 11, 17, 19, 20], "xxx": 5, "replac": [5, 14, 18, 20], "3": [5, 8, 9, 11, 13, 14, 15, 16, 17, 19, 20], "conduct": [5, 19, 20], "todo": 6, "e": [6, 12, 17, 19, 20], "g": [6, 12, 13, 14, 19, 20], "rocherfort": 6, "contain": [7, 8, 11, 17, 19, 20], "compos": [7, 8], "mb": 7, "voltag": [7, 8, 9, 13, 14, 18, 19, 20], "0": [7, 9, 12, 13, 15, 16, 17, 19, 20], "n": [7, 8, 9, 13, 15, 16, 17, 19, 20], "address": [7, 9, 13, 19, 20], "pwr": 7, "either": [7, 11, 19, 20], "batteri": [7, 8, 13, 19, 20], "more": [7, 8, 9, 17, 18], "advanc": [7, 17], "can": [7, 8, 9, 10, 11, 17, 18, 19, 20], "control": [7, 9, 10, 17, 19, 20], "ctrl": [7, 19, 20], "raspberrypi": [7, 9, 10, 11], "upgrad": [7, 14, 20], "recogn": 7, "c": [7, 12, 19, 20], "valid": [7, 19, 20], "regul": 7, "dps5005": 7, "o": [7, 8, 13, 14, 15, 16, 17], "virtual": 7, "environ": 7, "packag": [7, 17], "thonni": [7, 13, 17], "id": [7, 17], "cut": 8, "ribbon": [8, 15, 16], "proper": 8, "length": [8, 19, 20], "about": [8, 9], "5m": [8, 13, 14], "correspond": [8, 19], "crimp": [8, 19, 20], "idc": 8, "suitabl": [8, 19, 20], "clamp": 8, "pai": [8, 19, 20], "attent": [8, 19, 20], "direct": [8, 17, 19, 20], "unbalanc": 8, "perpendicular": 8, "possibl": [8, 12, 18, 19, 20], "same": [8, 9, 17, 19, 20], "flush": 8, "posit": [8, 19, 20], "spacer": [8, 13, 14, 15, 16], "abov": [8, 19, 20], "below": [8, 9, 11, 17, 19, 20], "profil": 8, "view": [8, 13], "color": 8, "yellow": 8, "tin": 8, "end": [8, 19, 20], "red": [8, 13, 17, 19, 20], "black": [8, 13, 19, 20], "left": [8, 13], "shown": [8, 19, 20], "pictur": 8, "ii": 8, "gnd": [8, 19, 20], "nois": 8, "often": [8, 9], "heard": 8, "clip": 8, "11": [8, 12, 13, 14, 19, 20], "input": [8, 9, 12, 13, 19, 20], "right": [8, 13], "fix": [8, 13], "second": [8, 9, 12, 17, 19, 20], "13": [8, 13, 15, 16, 19, 20], "15": [8, 12, 13, 14, 15, 16, 19, 20], "previou": 8, "procedur": 8, "repeat": [8, 17, 19, 20], "other": [8, 17, 19, 20], "17": [8, 13, 19, 20], "purpl": 8, "18": [8, 13, 19, 20], "third": [8, 17], "19": [8, 13, 19, 20], "fourth": 8, "nylon": 8, "hex": [8, 15, 16], "photograph": 8, "detail": [8, 9, 17, 19], "20": [8, 13, 14, 19, 20], "4th": 8, "togeth": [8, 19, 20], "could": [8, 13, 19, 20], "previous": [8, 11, 19, 20], "21": [8, 13, 19, 20], "tie": 8, "22": [8, 13, 19, 20], "23": [8, 13, 14, 15, 16, 19, 20], "pvc": 8, "plate": 8, "minimum": 8, "dimens": 8, "200": [8, 12], "mm": [8, 13, 14, 15, 16, 19, 20], "150": [8, 9, 19, 20], "drill": 8, "remain": [8, 19, 20], "metal": 8, "tighten": 8, "25": [8, 12, 15, 16, 19, 20], "rpi": [8, 11, 19, 20], "so": [8, 9, 19, 20], "access": [8, 11, 17, 19, 20], "usb": 8, "port": [8, 13], "mark": [8, 13], "hole": [8, 19, 20], "26": [8, 19, 20], "add": [8, 19, 20], "27": [8, 15, 16, 19, 20], "attach": 8, "washer": 8, "nut": 8, "28": 8, "29": [8, 19, 20], "come": 8, "out": [8, 11, 19, 20], "pass": [8, 17], "output": [8, 13, 17, 19, 20], "pre": [8, 13], "led": 8, "simpli": [8, 11, 19, 20], "consid": 8, "temporari": 8, "modif": [8, 11, 19, 20], "orang": 8, "31": [8, 13, 14, 15, 16], "brown": 8, "blue": [8, 19, 20], "block": [8, 19, 20], "top": [8, 13, 17], "secur": [8, 17], "33": 8, "34": 8, "35": [8, 13, 14], "36": [8, 13, 14, 19, 20], "37": [8, 19, 20], "38": [8, 19, 20], "sd": [8, 11, 19, 20], "program": [8, 11, 19, 20], "mous": [8, 11, 19, 20], "keyboard": [8, 11, 19, 20], "monitor": [8, 17, 19, 20], "hdmi": [8, 11], "39": [8, 13, 14, 15, 16, 19, 20], "deliv": [8, 19, 20], "12vdc": 8, "enjoi": 8, "integr": [9, 13], "mn": [9, 18], "ab": 9, "switch": [9, 19, 20], "polar": [9, 19, 20], "half": [9, 17], "cycl": [9, 17], "stack": [9, 17, 19, 20], "explan": 9, "understand": [9, 17], "redirect": 9, "reader": 9, "datasheet": 9, "done": [9, 11, 17, 19, 20], "through": [9, 17, 19, 20], "adc": [9, 13, 18, 19, 20], "analog": [9, 13, 19, 20], "convert": [9, 13, 14, 19, 20], "ads1115": [9, 13, 14, 18, 19, 20], "bit": [9, 13, 19, 20], "programm": 9, "gain": [9, 13, 17, 19, 20], "pga": 9, "mean": 9, "factor": 9, "digitis": 9, "Its": [9, 19, 20], "vari": 9, "With": [9, 19, 20], "precis": [9, 13, 19, 20], "076": 9, "mv": 9, "beyond": 9, "larger": 9, "our": [9, 19, 20], "divid": [9, 19, 20], "receiv": [9, 17], "mb_2023": 9, "bridg": [9, 19, 20], "across": 9, "seri": [9, 19, 20], "instanc": [9, 11], "300": 9, "ohm": [9, 12, 13, 14, 19, 20], "anoth": [9, 11, 18, 19, 20], "techniqu": 9, "consist": [9, 18, 19, 20], "opamp": 9, "amplifi": [9, 13, 19, 20], "multipl": [9, 11, 17], "known": [9, 11, 19, 20], "down": [9, 19, 20], "addit": [9, 17, 19, 20], "mode": 9, "ensur": [9, 11, 19, 20], "high": [9, 19, 20], "imped": [9, 12, 19, 20], "inde": [9, 19, 20], "leak": 9, "while": 9, "affect": 9, "2024": [9, 12], "mb_2024": 9, "differenti": 9, "model": [9, 11, 13, 14, 19, 20], "float": 9, "ground": [9, 13, 18, 19, 20], "enabl": [9, 10, 17, 19, 20], "u": [9, 10], "much": 9, "higher": [9, 13, 20], "too": 9, "larg": 9, "usual": 9, "accur": [9, 19, 20], "shunt": [9, 12, 13, 14, 18], "As": [9, 19, 20], "tini": 9, "being": [9, 19, 20], "ina282": [9, 13], "via": [9, 11, 18, 19, 20], "click": [9, 11, 18, 19, 20], "ina": 9, "equival": [9, 13, 19, 20], "alreadi": 9, "solder": [9, 13, 19, 20], "off": 9, "revers": [9, 19, 20], "four": [9, 13], "optic": [9, 13, 18], "transit": 9, "mcp2308": 9, "gpi": 9, "sda": [9, 18], "scl": [9, 18], "protocol": [9, 17, 18, 19, 20], "send": 9, "clock": 9, "transmit": 9, "pull": [9, 18], "rest": [9, 18], "5v": [9, 13, 18, 19, 20], "thei": [9, 17, 18, 19, 20], "entri": 9, "becaus": 9, "mani": 9, "bu": 9, "tcaxxxx": 9, "itself": [9, 17], "rapsberrypi": 9, "now": [10, 19, 20], "actual": [10, 19, 20], "henc": 10, "maximum": [10, 17, 19, 20], "aliment": 10, "modbu": 10, "quantiti": [11, 19, 20], "micro": [11, 19, 20], "comput": [11, 19, 20], "instruct": [11, 17], "well": [11, 17, 19, 20], "websit": [11, 19, 20], "watch": [11, 19, 20], "video": [11, 19, 20], "how": [11, 19, 20], "set": [11, 13, 14, 17, 19, 20], "latest": [11, 12, 19, 20], "stabl": [11, 19, 20], "complet": [11, 13], "raspbian": [11, 19, 20], "visit": 11, "http": [11, 13, 14, 15, 16, 17, 19, 20], "org": [11, 17], "en": 11, "were": [11, 13, 19, 20], "onc": [11, 17, 18, 19, 20], "spi": [11, 19, 20], "remot": [11, 17, 19, 20], "option": [11, 12, 17, 19, 20], "deactiv": [11, 19, 20], "gui": [11, 19, 20], "menu": [11, 19, 20], "failur": [11, 19, 20], "carri": [11, 19, 20], "task": [11, 19, 20], "caus": [11, 18, 19, 20], "shield": [11, 19, 20], "dure": [11, 19, 20], "parallel": 11, "interpret": [11, 13, 19, 20], "discret": 11, "util": [11, 17], "protect": 11, "problem": 11, "depend": [11, 17, 19, 20], "specifi": [11, 19, 20], "txt": [11, 17, 19, 20], "libatla": [11, 19, 20], "dev": [11, 19, 20], "librari": [11, 19, 20], "sudo": [11, 19, 20], "apt": [11, 19, 20], "strongli": [11, 19, 20], "gather": [11, 19, 20], "python3": [11, 19, 20], "venv": [11, 19, 20], "command": [11, 17, 19, 20], "bin": [11, 19, 20], "suffici": [11, 19, 20], "meet": [11, 19, 20], "export": 11, "cflag": 11, "fcommon": 11, "pip": [11, 19, 20], "blinka": [11, 19, 20], "numpi": [11, 17, 19, 20], "panda": [11, 19, 20], "circuitpython": [11, 19, 20], "ads1x15": [11, 19, 20], "mcp230xx": 11, "gpiozero": 11, "check": [11, 12, 17, 18, 19, 20], "met": [11, 19, 20], "list": 11, "leav": [11, 19, 20], "decid": [11, 19, 20], "setup": [11, 19, 20], "pythonid": [11, 19, 20], "root": [11, 19, 20], "usr": [11, 19, 20], "window": [11, 17, 19, 20], "On": [11, 19, 20], "altern": [11, 19, 20], "button": [11, 19, 20], "locat": [11, 19, 20], "execut": [11, 17, 19, 20], "find": [11, 19, 20], "folder": [11, 19, 20], "home": [11, 17, 19, 20], "tab": [11, 17, 19, 20], "close": [11, 18, 19, 20], "ok": [11, 19, 20], "save": [11, 19, 20], "year": 12, "consequ": [12, 19, 20], "group": 12, "varieti": 12, "tailor": [12, 17], "technic": 12, "field": [12, 19, 20], "budget": 12, "characterist": [12, 19, 20], "tabl": [12, 20], "paramet": [12, 17], "unit": [12, 13, 14, 15, 16, 19, 20], "vmn": [12, 14], "number": [12, 13, 14, 15, 16, 17, 19, 20], "temperatur": [12, 19, 20], "max": [12, 13, 14], "permiss": 12, "vab": [12, 14], "40": [12, 15, 16, 19, 20], "ma": [12, 13, 19, 20], "500": [12, 19, 20], "min": [12, 19, 20], "durat": [12, 17, 19, 20], "80": 12, "mohm": [12, 13, 14, 19, 20], "tohm": 12, "volt": 12, "per": [13, 14, 15, 16, 19, 20], "total": [13, 14, 15, 16, 19, 20], "web": [13, 14, 15, 16], "58": [13, 14, 19, 20], "75": [13, 14], "www": [13, 14, 15, 16, 19, 20], "mouser": [13, 14, 15, 16], "fr": [13, 14, 15, 16, 19, 20], "productdetail": [13, 14, 15, 16], "seeed": [13, 14], "studio": [13, 14], "102110421": [13, 14], "q": [13, 14, 15, 16], "7mvldsj5uaxen3lyyh3sqw": [13, 14], "3d": [13, 14, 15, 16], "lm158n": [13, 14], "amp": [13, 14, 19, 20], "texa": [13, 14, 19, 20], "instrument": [13, 14, 17, 19, 20], "lm358an": [13, 14, 19, 20], "nopb": [13, 14, 19, 20], "lm158j": [13, 14], "x1j7hmvl2zh8vpefml8": [13, 14], "2ffq": [13, 14], "print": [13, 14, 15, 16, 17, 19, 20], "circuit": [13, 14, 15, 16, 17, 19, 20], "asler": [13, 14, 15, 16, 19, 20], "1085": [13, 14], "2fha2pyfaduh": [13, 14], "2fogzutwiq9iz5vjaqfoyugqalgxpeckigrqvf4hn": [13, 14], "252bg": [13, 14], "capacitor": [13, 14, 20], "100nf": [13, 14, 20], "50vdc": [13, 14, 20], "ceram": [13, 14, 20], "kemet": [13, 14, 20], "c320c104k1": [13, 14, 20], "c320c104k1r5ta7303": [13, 14], "c4uyot": [13, 14], "2flq1th4mcyoetma": [13, 14], "5w": [13, 14, 19, 20], "te": [13, 14, 15, 16, 19, 20], "h81k0bya": [13, 14, 19, 20], "holsworthi": [13, 14], "2fha2pyfaduhuylh7az": [13, 14], "2fmjfh2xjoums6wztux4som": [13, 14], "252bii": [13, 14], "h81k5bya": [13, 14, 19, 20], "2fha2pyfadugy9twham3ru9hmijohywhbin95knm": [13, 14], "252bx": [13, 14], "2fm": [13, 14], "vishai": [13, 14, 15, 16], "ccf071k50gke36": [13, 14], "dale": [13, 14], "qkeozdl6eqpa6lzrlqfvow": [13, 14], "762": [13, 14], "524": [13, 14], "cmf651m0000fkek143": [13, 14], "ciayqk2gdckzia2levalkg": [13, 14], "42": [13, 14], "ohmit": [13, 14], "41f2r0e": [13, 14], "im6toxqzgoauedprb19mha": [13, 14], "08": [13, 14, 15, 16], "pitch": [13, 14, 15, 16, 19, 20], "648": [13, 14, 15, 16, 19, 20], "cui": [13, 14, 15, 16], "tb009": [13, 14, 15, 16], "508": [13, 14, 15, 16], "02be": [13, 14, 15, 16], "vlwxofp3u2wcfk5uckwtka": [13, 14, 15, 16], "dc": [13, 14, 15, 16, 19, 20], "24v": [13, 14, 20], "tracopow": [13, 14, 20], "trn": [13, 14, 20], "1215": [13, 14, 20], "traco": [13, 14, 20], "yca": [13, 14], "2faaymw02gquicgqj0ta": [13, 14], "72": [13, 14, 20], "mill": [13, 14], "110": [13, 14, 16, 19, 20], "43": [13, 14, 19, 20], "308": [13, 14], "41": [13, 14, 16], "001000": [13, 14], "iggadovctstu": [13, 14], "2fqaur8narg": [13, 14], "mgh": [13, 14], "vip": [13, 14], "gclid": [13, 14], "eaiaiqobchmin_taxbcx8wivq5nvch2qaqfpeayyccabegjk1_d_bw": [13, 14], "aqy211eh": [13, 14], "84": [13, 14, 15, 16], "panason": [13, 14], "industri": [13, 14], "wktuvitrialgiu8hcm7dvq": [13, 14], "449": [13, 14], "796": [13, 14], "preci": [13, 14, 16], "83": [13, 14], "304": [13, 14], "001101": [13, 14, 16], "2fha2pyfadujqkqx4wauig": [13, 14], "2fmgndxmcnv": [13, 14], "2f33nj0gbxroculucynpyong": [13, 14], "mcp23008": [13, 14], "593": [13, 14], "sgaepimzzmskedp9slc0yyv4kpdpmd1hts4slctivmw": [13, 14], "1x10": [13, 14, 19, 20], "samtec": [13, 14, 19, 20], "ssw": [13, 14, 19, 20], "ru5fayqh": [13, 14], "252be0w1orxzibqpw": [13, 14], "smt": [13, 14], "breakout": [13, 14], "soic": [13, 14], "1212": [13, 14], "gurawfaegucaqqfvnvtyeg": [13, 14], "eaiaiqobchmit8zjzr6x8wivgdnvch2vbwvseaqyayabegjqg_d_bw": [13, 14], "ina282aid": [13, 14], "ze4": [13, 14], "2fufuz19ilfayzxocfra": [13, 14], "thd": [13, 14], "1211n": [13, 14], "2fha2pyfadugpyeg4idvm": [13, 14], "2fmsr": [13, 14], "252b7an": [13, 14], "2f0t3ruis9pcaqjlt4": [13, 14], "252bnrpuooeq": [13, 14], "53": [13, 14, 20], "ssq": [13, 14], "120": [13, 14, 15, 16], "d": [13, 14, 19, 20], "252be1bmvd": [13, 14], "252bdzonqg": [13, 14], "ejector": [13, 14, 15, 16], "blk": [13, 14, 15, 16], "10120550": [13, 14, 15, 16], "conrad": [13, 14, 15, 16], "com": [13, 14, 15, 16, 17, 19, 20], "bkl": [13, 14, 15, 16], "space": [13, 14, 15, 16], "254": [13, 14, 15, 16], "row": [13, 14, 15, 16], "pc": [13, 14, 15, 16], "741435": [13, 14, 16], "searchterm": [13, 14, 15, 16], "searchtyp": [13, 14, 15, 16], "searchsuggest": [13, 14, 15, 16], "femal": [13, 14, 15, 16, 19, 20], "hexagonal": [13, 14], "87": [13, 14, 16], "48": [13, 14, 19, 20], "harwin": [13, 14], "r25": [13, 14], "3002002": [13, 14], "w0yvoo0ixfenuv0hsdc4": [13, 14], "2fq": [13, 14], "86": [13, 14, 15, 16], "437": [13, 14], "1108331841001101": [13, 14], "318": [13, 14], "ftmup6kvi2tnqoeziaq": [13, 14], "2fpa": [13, 14], "figur": [13, 17, 19, 20], "show": [13, 19, 20], "schemat": [13, 20], "plug": [13, 19, 20], "plai": 13, "propos": [13, 19, 20], "florsch": [13, 19, 20], "advantag": 13, "signal": [13, 19, 20], "lie": [13, 19, 20], "114": [13, 19, 20], "directli": [13, 19, 20], "realiz": 13, "around": [13, 17], "tdh15": 13, "inpout": 13, "than": [13, 19, 20], "just": [13, 20], "decreas": 13, "don": [13, 17], "t": [13, 15, 16, 17, 18], "forget": [13, 17], "kei": 13, "r_shunt": 13, "ohmpi_config": 13, "dict": 13, "adjust": [13, 19, 20], "tow": 13, "dot": 13, "corner": 13, "lm158": 13, "ads115": [13, 19, 20], "3x11": 13, "wurth": 13, "elektronik": 13, "971110321": 13, "305": [13, 15, 16], "apm": [13, 15, 16], "hexseal": [13, 15, 16], "rm3x8mm": [13, 15, 16], "2701": [13, 15, 16], "jjse": [13, 15, 16], "2f12mkns3vxsdryxuhw": [13, 15, 16], "shutdown": 13, "unplug": 13, "bottom": [13, 19, 20], "11mm": 13, "m3": [13, 15, 16], "upper": 13, "everyth": 13, "screen": [13, 19, 20], "1kohm": 13, "r2": [13, 19, 20], "220": 13, "r1": [13, 19, 20], "padboard": 13, "spool": 13, "sample_measurement_exampl": 13, "result": [13, 19, 20], "la": [], "cart": [], "mesur": [], "\u00e9t\u00e9": [], "developp\u00e9": [], "pour": 19, "remplac": [], "ell": [], "pr\u00e9sent": [], "sup\u00e9rieur": [], "\u00e0": [], "pr\u00e9c\u00e9dent": [], "parti": 17, "courant": [], "pa": [], "\u00e9volu\u00e9": [], "ne": [], "diff\u00e9renc": [], "majeur": [], "potentiel": [], "l": [], "est": [], "pr\u00e9senc": [], "du": [], "mikro": 14, "1887": 14, "il": [], "permet": [], "notamm": [], "isol": 14, "electriqu": [], "ensembl": [], "permett": [], "cett": [], "offr": [], "possibilit\u00e9": [], "avoir": [], "jusqu": [], "200v": 14, "140": [15, 16], "560": [15, 16], "62": [15, 16], "92": [15, 16, 19, 20], "tru": [15, 16, 19, 20], "1580994": [15, 16], "256": [15, 16], "091": [15, 16], "296": [15, 16], "incorpor": [15, 16, 17], "sgaepimzzmueqxo7l": [15, 16], "2fbpyakboruumren": [15, 16], "56": [15, 16], "776": [15, 16], "205": [15, 16], "46": [15, 16], "103321": [15, 16], "5twgzeq9e7hsylqaljjyrw": [15, 16], "732": [15, 16], "sgaepimzzmskedp9slc0yfx16nydmpxjueeogolbldi": [15, 16], "325": [15, 16], "over": [15, 16, 18], "503811": [15, 16], "nchannel": [15, 16], "471": [15, 16], "576": [15, 16, 19], "vhuuswq2": [15, 16], "252bsz9b": [15, 16], "2ff6fcxt7g": [15, 16], "100k": [15, 18], "061": [15, 16], "616": [15, 16], "beyschlag": [15, 16], "mba02040c1003frp00": [15, 16], "mzrxyrlhvdt9crf7zyf": [15, 16], "2f5q": [15, 16], "89": [15, 16], "2717": [15, 16], "sgaepimzzmsyydr3r27av4eqf73yoh": [15, 16], "252baqg": [15, 16], "252bz3hvktao": [15, 16], "10120558": [15, 16], "54": [15, 16], "No": [15, 16], "51": [15, 16], "741727": [15, 16], "10120862": [15, 16], "strain": [15, 16], "relief": [15, 16], "44": [15, 16, 19, 20], "742063": [15, 16], "10120158": [15, 16], "x": [15, 16, 19, 20], "multi": [15, 16, 19, 20], "colour": [15, 16], "1012015810": [15, 16], "127": [15, 16], "008": [15, 16], "1548658": [15, 16], "79": [15, 16], "49": [15, 16], "keyston": [15, 16], "24300": [15, 16], "uwqyq": [15, 16], "2f2czwu0ejpozmzc2a": [15, 16], "745": [15, 16], "846": [15, 16], "614": [15, 16], "25515": [15, 16], "2f2czwuxuhumfr": [15, 16], "252bzuq": [15, 16], "updat": [16, 17], "100k\u03c9": 16, "mm\u00b2": [16, 19, 20], "55": [16, 19, 20], "328": 16, "uqd7xcvsscnr3hwd6fta8g": 16, "whose": [17, 19, 20], "main": [17, 19, 20], "summar": 17, "cover": 17, "acquisit": 17, "separ": 17, "json": [17, 20], "ohmpi_set": 17, "central": 17, "handler": 17, "layer": 17, "excel": 17, "log": 17, "broker": 17, "zip": 17, "rotat": 17, "disk": 17, "exec_logg": 17, "data_logg": 17, "plan": 17, "state": 17, "health": 17, "soh": 17, "futur": 17, "By": 17, "written": 17, "consol": 17, "like": [17, 18], "local": 17, "dai": 17, "size": 17, "exce": 17, "sent": 17, "level": 17, "edit": 17, "setup_logg": 17, "custom": 17, "repositori": [17, 19, 20], "prefer": [17, 19, 20], "desir": 17, "usernam": 17, "password": 17, "One": [17, 18], "alter": 17, "keep": 17, "bash": 17, "run_http_interfac": 17, "sh": 17, "iot": 17, "messag": 17, "friendli": 17, "graphic": 17, "quick": 17, "easi": 17, "wi": 17, "fi": 17, "point": [17, 19, 20], "ap": 17, "webserv": 17, "serv": [17, 19, 20], "index": 17, "html": 17, "laptop": 17, "mobil": 17, "phone": 17, "upload": 17, "sequenc": [17, 19, 20], "download": [17, 19, 20], "act": 17, "raspap": 17, "runonstart": 17, "141": 17, "8080": 17, "pseudo": 17, "evolut": 17, "quadrupol": [17, 19, 20], "appar": 17, "offer": [14, 17, 19, 20], "especi": 17, "suit": 17, "autom": 17, "ipython": 17, "ssh": 17, "putti": 17, "maco": 17, "linux": 17, "found": 17, "gitlab": [17, 19, 20], "entir": [17, 19, 20], "np": 17, "chdir": 17, "object": 17, "k": 17, "load": 17, "manual": [17, 19, 20], "injection_dur": [17, 19, 20], "nb_stack": 17, "nbr_mea": [17, 19, 20], "update_set": 17, "arrai": [17, 19, 20], "shape": 17, "set_sequ": 17, "n2": 17, "string": 17, "load_sequ": 17, "abmn": [17, 19, 20], "rs_check": 17, "synchron": 17, "wait": 17, "return": [17, 19, 20], "prompt": 17, "run_sequ": 17, "run_sequence_async": 17, "thread": 17, "immedi": 17, "sleep": 17, "interrupt": 17, "kill": 17, "asynchron": 17, "interv": 17, "nb_mea": 17, "sequence_delai": [17, 19, 20], "run_multiple_sequ": 17, "taken": 17, "switch_mux_on": 17, "run_measur": 17, "switch_mux_off": 17, "risk": 17, "short": 17, "argument": 17, "autogain": 17, "true": 17, "ad": [17, 19, 20], "good": 17, "resolut": [17, 19, 20], "usag": 17, "consumpt": [17, 19, 20], "process": 17, "sensor": 17, "scope": 17, "internet": 17, "network": 17, "auxiliari": 17, "publish": [17, 19], "subscrib": 17, "approach": 17, "mosquitto": 17, "server": 17, "reachabl": 17, "net": 17, "servic": 17, "install_local_mqtt_brok": 17, "examin": 17, "explor": 17, "reboot": 17, "further": 17, "format": 17, "kwarg": 17, "illustr": [17, 19, 20], "cmd_id": 17, "3fzxv121uitwgjwygcz4xw": 17, "cmd": 17, "nb_electrod": [17, 19, 20], "3fzxv121uitwgjwygcz4yw": 17, "made": [17, 19, 20], "dashboard": 17, "browser": 17, "flow": [17, 19, 20], "editor": [17, 19, 20], "node": 17, "complex": 17, "properli": [17, 18], "palett": 17, "manag": [17, 19, 20], "noder": 17, "doc": 17, "guid": 17, "ui": 17, "visual": 17, "cookbook": 17, "due": 18, "quit": 18, "fragil": 18, "still": [18, 19, 20], "conductor": 18, "turn": [18, 19, 20], "multimet": 18, "broken": 18, "shoudn": 18, "wa": [18, 19, 20], "burn": 18, "expect": 18, "try": 18, "effect": 18, "voltmet": [18, 19, 20], "sens": 18, "malfunct": 18, "erron": 18, "solv": 18, "most": 18, "vdd": 18, "reach": 18, "stronger": [18, 19, 20], "smaller": [18, 19, 20], "journal": 19, "bug": 19, "explain": 19, "miss": 19, "invit": 19, "v1": [19, 20], "commerci": [19, 20], "cpu": [19, 20], "w": [19, 20], "storag": [19, 20], "o1": [19, 20], "youtub": [19, 20], "wjwzhv1v3pk": [19, 20], "noob": [19, 20], "simpl": [19, 20], "unexpectedli": [19, 20], "boot": [19, 20], "cd": [19, 20], "gnu": [19, 20], "nano": [19, 20], "At": [19, 20], "op": [19, 20], "dl": [19, 20], "press": [19, 20], "enter": [19, 20], "escap": [19, 20], "studi": [19, 20], "hous": [19, 20], "diagram": [19, 20], "displai": [19, 20], "mimic": [19, 20], "behavior": [19, 20], "soil": [19, 20], "subject": [19, 20], "r11": [19, 20], "r10": [19, 20], "r12": [19, 20], "constitut": [19, 20], "stainless": [19, 20], "steel": [19, 20], "r9": [19, 20], "less": [19, 20], "sum": [19, 20], "000": [19, 20], "intens": [19, 20], "potenti": [19, 20], "calcul": [19, 20], "insert": [19, 20], "1115": [19, 20], "a1": [19, 20], "a0": [19, 20], "increas": [19, 20], "r5": [19, 20], "r8": [19, 20], "r6": [19, 20], "r7": [19, 20], "a2": [19, 20], "a3": [19, 20], "obtain": [19, 20], "ly": [19, 20], "let": [19, 20], "equal": [19, 20], "multipli": [19, 20], "reduct": [19, 20], "despit": [19, 20], "calibr": [19, 20], "variou": [19, 20], "disturb": [19, 20], "estim": [19, 20], "mega": [19, 20], "shortcut": [19, 20], "excess": [19, 20], "lithium": [19, 20], "ion": [19, 20], "automobil": [19, 20], "lead": [19, 20], "acid": [19, 20], "strong": [19, 20], "hazard": [19, 20], "fuse": [19, 20], "onto": [19, 20], "ohmmet": [19, 20], "coeffici": [19, 20], "coef_p0": [19, 20], "coef_p1": [19, 20], "coef_p2": [19, 20], "coef_p3": [19, 20], "coef": [19, 20], "po": [19, 20], "p1": [19, 20], "r3": [19, 20], "r4": [19, 20], "p2": [19, 20], "p3": [19, 20], "r_ref": [19, 20], "slope": [19, 20], "convers": [19, 20], "p0": [19, 20], "accuraci": [19, 20], "lm358n": [19, 20], "appli": [19, 20], "weaker": 19, "tx": [19, 20], "rememb": [19, 20], "holder": [19, 20], "f": [19, 20], "circul": [19, 20], "fig": [19, 20], "common": [19, 20], "neg": [19, 20], "normal": [19, 20], "simultan": [19, 20], "role": [19, 20], "thu": [19, 20], "energ": [19, 20], "next": [19, 20], "featur": [19, 20], "strict": [19, 20], "in1": [19, 20], "in2": [19, 20], "in3": [19, 20], "in4": [19, 20], "5vdc": [19, 20], "5vcc": [19, 20], "mm2": [19, 20], "lastli": [19, 20], "congratul": [19, 20], "construct": [19, 20], "ert": [19, 20], "sever": [19, 20], "ten": [19, 20], "thousand": [19, 20], "stuck": [19, 20], "hand": [19, 20], "cap": [19, 20], "produc": [19, 20], "clean": [19, 20], "distanc": [19, 20], "had": [19, 20], "extra": [19, 20], "final": [19, 20], "horizont": [19, 20], "vertic": [19, 20], "06": [19, 20], "04": [19, 20], "09": [19, 20], "05": [19, 20], "din": [19, 20], "rail": [19, 20], "chosen": [19, 20], "incom": [19, 20], "instead": [19, 20], "moreov": [19, 20], "bought": [19, 20], "velleman": [19, 20], "wpm404": [19, 20], "potentiomet": [19, 20], "scienc": [19, 20], "framework": [19, 20], "manuscript": [19, 20], "osf": [19, 20], "io": [19, 20], "dzwb4": [19, 20], "irstea": [19, 20], "unzip": [19, 20], "master": [19, 20], "readm": [19, 20], "assist": [19, 20], "disconnect": [19, 20], "handl": [19, 20], "charg": [19, 20], "full": [19, 20], "capac": [19, 20], "fewer": [19, 20], "bank": [19, 20], "2a": [19, 20], "ll": [19, 20], "insid": [19, 20], "numer": [19, 20], "optim": [19, 20], "attribut": [19, 20], "the9": [19, 20], "hear": [19, 20], "sound": [19, 20], "permut": [19, 20], "csv": [19, 20], "delai": [19, 20], "repetit": [19, 20], "evolv": [14, 19, 20], "littl": [19, 20], "public": [19, 20], "articl": [19, 20], "sainsmart": [19, 20], "canal": 19, "arduino": 19, "dsp": 19, "avr": 19, "pic": 19, "arm": 19, "99": [19, 20], "199": [19, 20], "sain": [19, 20], "smart": [19, 20], "101": [19, 20], "70": [19, 20], "103": [19, 20], "018": [19, 20], "1x1": [19, 20], "66": [19, 20], "1568649": [19, 20], "1x0": [19, 20], "71": [19, 20], "1565235": [19, 20], "68": [19, 20], "r": [19, 20], "pro": [19, 20], "897": [19, 20], "1332": [19, 20], "858": [19, 20], "627": [19, 20], "52": [19, 20], "upw50b50rv": [19, 20], "1083": [19, 20], "7ah": [19, 20], "537": [19, 20], "5488": [19, 20], "lr20": [19, 20], "9v": [19, 20], "185": [19, 20], "4686": [19, 20], "ferrul": [19, 20], "piec": [19, 20], "weidmul": [19, 20], "9004330000": [19, 20], "966067": [19, 20], "car": 19, "littelfus": [19, 20], "fhac0002zxj": 19, "96": 19, "trn3": 20, "suppress": 20, "10v": 20, "fast": 20, "decoupl": 20, "last": 20, "prevent": 20, "overh": 20, "toler": 20, "orient": 20, "h": 20, "nf": 20, "jason": 20, "ohmpi_param": 20, "export_path": 20, "desktop": 20, "0251001": 20, "pat1l": 20, "superior": 14, "compar": 14, "predecessor": 14, "major": 14, "bom": 14, "ibom": [], "cnn": []}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"ohmpi": [0, 1, 8, 9, 19, 20], "open": 0, "sourc": 0, "hardwar": [0, 5, 7], "resist": [0, 19, 20], "meter": 0, "summari": 0, "document": 0, "center": 0, "project": 1, "author": 1, "partner": 1, "cite": 1, "introduct": 1, "step": 2, "n": 2, "3": 2, "mux": [2, 15, 16], "board": [2, 9, 12, 13, 14, 15, 16, 19, 20], "part": [2, 11, 13, 14, 15, 16], "A": [2, 11, 13, 14, 15, 16, 18], "assembli": [2, 13, 14, 15, 16, 19, 20], "requir": [2, 13, 14, 15, 16], "compon": [2, 5, 13, 14, 15, 16, 18, 19, 20], "b": [2, 11, 13, 15, 16, 18, 19, 20], "address": [2, 15, 16], "c": [2, 11, 13, 15, 16], "valid": [2, 15, 16], "api": 3, "refer": 3, "archiv": 4, "version": [4, 12], "softwar": [5, 17], "interfac": [5, 17], "new": 5, "exampl": 6, "applic": [6, 17], "assembl": [8, 12], "electron": 9, "design": 9, "measur": [9, 12, 13, 14, 19, 20], "multiplex": [9, 19, 20], "power": 10, "suppli": 10, "12v": 10, "batteri": 10, "regul": 10, "dps5005": 10, "raspberri": [11, 19, 20], "pi": [11, 19, 20], "configur": [11, 17, 19, 20], "o": [11, 19, 20], "instal": [11, 19, 20], "virtual": [11, 19, 20], "environ": [11, 19, 20], "packag": [11, 19, 20], "activ": [11, 19, 20], "thonni": [11, 19, 20], "python": [11, 17, 19, 20], "id": [11, 19, 20], "recogn": 12, "specif": 12, "v2023": [13, 15], "list": [13, 14, 15, 16, 19, 20], "descript": [13, 19, 20], "start": 13, "up": 13, "check": 13, "2024": 14, "0": 14, "2": 14, "v2024": 16, "oper": [17, 19, 20], "system": 17, "architectur": 17, "logger": 17, "file": 17, "web": 17, "mqtt": 17, "troubleshoot": 18, "issu": 18, "puls": 18, "between": 18, "valu": 18, "given": 18, "i": 18, "correct": 18, "one": 18, "commun": 18, "v": [19, 20], "1": [19, 20], "01": 19, "limit": [19, 20], "32": [19, 20], "electrod": [19, 20], "The": [19, 20], "philosophi": [19, 20], "technic": [19, 20], "data": [19, 20], "current": [19, 20], "inject": [19, 20], "card": [19, 20], "connect": [19, 20], "electr": [19, 20], "implement": [19, 20], "first": [19, 20], "four": [19, 20], "instruct": [19, 20], "preliminari": [19, 20], "procedur": [19, 20], "onli": [19, 20], "initi": [19, 20], "startup": [19, 20], "paramet": [19, 20], "complet": [19, 20], "tabl": 19, "titl": 19, "02": 20, "content": [], "you": 12}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"OhmPi project": [[1, "ohmpi-project"]], "Authors:": [[1, "authors"]], "Partners:": [[1, "partners"]], "Citing OhmPi:": [[1, "citing-ohmpi"]], "Introduction :": [[1, "introduction"]], "STEP n\u00b03: MUX board": [[2, "step-n3-mux-board"]], "PART A Assembly of MUX board": [[2, "part-a-assembly-of-mux-board"], [15, "part-a-assembly-of-mux-board"], [16, "part-a-assembly-of-mux-board"]], "Required components": [[2, "required-components"], [13, "required-components"], [15, "required-components"], [16, "required-components"], [14, "required-components"]], "PART B MUX board address": [[2, "part-b-mux-board-address"], [15, "part-b-mux-board-address"], [16, "part-b-mux-board-address"]], "PART C Validation of MUX board": [[2, "part-c-validation-of-mux-board"], [15, "part-c-validation-of-mux-board"], [16, "part-c-validation-of-mux-board"]], "Archived versions": [[4, "archived-versions"]], "Software interface to new hardware components": [[5, "software-interface-to-new-hardware-components"]], "Examples of applications": [[6, "examples-of-applications"]], "Hardware": [[7, "hardware"]], "Assembling the OhmPi": [[8, "assembling-the-ohmpi"]], "OhmPi electronic design": [[9, "ohmpi-electronic-design"]], "Measurement board": [[9, "measurement-board"], [12, "measurement-board"]], "Multiplexer": [[9, "multiplexer"]], "Power supply": [[10, "power-supply"]], "12V battery": [[10, "v-battery"]], "Regulated power supply (DPS5005)": [[10, "regulated-power-supply-dps5005"]], "Raspberry Pi configuration": [[11, "raspberry-pi-configuration"], [19, "raspberry-pi-configuration"], [20, "raspberry-pi-configuration"]], "PART A: OS installation": [[11, "part-a-os-installation"]], "PART B: Virtual Environment and packages": [[11, "part-b-virtual-environment-and-packages"]], "PART C: Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)": [[11, "part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"]], "Measurement board v2023": [[13, "measurement-board-v2023"]], "PART A Assembly of the measurement board": [[13, "part-a-assembly-of-the-measurement-board"], [14, "part-a-assembly-of-the-measurement-board"]], "List of components": [[13, "id1"], [13, "id2"], [15, "id1"], [16, "id1"], [20, "id10"], [14, "id1"]], "Description": [[13, "description"]], "PART B Start-up of the measurement board": [[13, "part-b-start-up-of-the-measurement-board"]], "PART C Check the measurement board": [[13, "part-c-check-the-measurement-board"]], "MUX board v2023": [[15, "mux-board-v2023"]], "MUX board v2024": [[16, "mux-board-v2024"]], "Software and operation": [[17, "software-and-operation"]], "System architecture": [[17, "system-architecture"]], "Loggers": [[17, "loggers"]], "Configuration file": [[17, "configuration-file"]], "Interfaces and applications": [[17, "interfaces-and-applications"]], "Web interface": [[17, "web-interface"]], "Python interface": [[17, "python-interface"]], "MQTT interface": [[17, "mqtt-interface"]], "Troubleshooting": [[18, "troubleshooting"]], "Issue with the pulses between A and B": [[18, "issue-with-the-pulses-between-a-and-b"]], "Values given is not the correct one": [[18, "values-given-is-not-the-correct-one"]], "Communication issue between components": [[18, "communication-issue-between-components"]], "OhmPi V 1.01 (limited to 32 electrodes)": [[19, "ohmpi-v-1-01-limited-to-32-electrodes"]], "The philosophy of Ohmpi": [[19, "the-philosophy-of-ohmpi"], [20, "the-philosophy-of-ohmpi"]], "Technical data": [[19, "technical-data"], [20, "technical-data"]], "OS installation": [[19, "os-installation"], [20, "os-installation"]], "Virtual Environment and packages": [[19, "virtual-environment-and-packages"], [20, "virtual-environment-and-packages"]], "Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)": [[19, "activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"], [20, "activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"]], "Assembly of the measuring/current injection cards, and connection with the Raspberry Pi": [[19, "assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"], [20, "assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"]], "Electrical resistivity measurements board": [[19, "electrical-resistivity-measurements-board"], [20, "electrical-resistivity-measurements-board"]], "a) Description": [[19, "a-description"], [20, "a-description"]], "b) Implementation": [[19, "b-implementation"], [20, "b-implementation"]], "Current injection board": [[19, "current-injection-board"], [20, "current-injection-board"]], "First four electrodes resistivity measurement": [[19, "first-four-electrodes-resistivity-measurement"], [20, "first-four-electrodes-resistivity-measurement"]], "Multiplexer implementation": [[19, "multiplexer-implementation"], [20, "multiplexer-implementation"]], "Electrode connection": [[19, "electrode-connection"], [20, "electrode-connection"]], "Operating instruction": [[19, "operating-instruction"], [20, "operating-instruction"]], "Preliminary procedure (Only for the initial operation)": [[19, "preliminary-procedure-only-for-the-initial-operation"], [20, "preliminary-procedure-only-for-the-initial-operation"]], "Startup procedure": [[19, "startup-procedure"], [20, "startup-procedure"]], "Electrical resistivity measurement parameters description": [[19, "electrical-resistivity-measurement-parameters-description"], [20, "electrical-resistivity-measurement-parameters-description"]], "Complete list of components": [[19, "complete-list-of-components"], [20, "complete-list-of-components"]], "Table Title": [[19, "id9"]], "OhmPi V 1.02 (limited to 32 electrodes)": [[20, "ohmpi-v-1-02-limited-to-32-electrodes"]], "Recognize the version of the measurement board": [[12, "recognize-the-version-of-the-measurement-board"]], "Specifications": [[12, "specifications"]], "Assemble you measurement board:": [[12, "assemble-you-measurement-board"]], "OHMPI: Open source and open hardware resistivity-meter": [[0, "ohmpi-open-source-and-open-hardware-resistivity-meter"]], "Summary": [[0, null]], "OhmPi Document Center": [[0, null]], "API reference": [[3, "api-reference"]], "Measurement board 2024.0.2": [[14, "measurement-board-2024-0-2"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/doc/build/html/source_rst/Ohmpi.html b/doc/build/html/source_rst/Ohmpi.html index d59f1cbc26bfaf278be9975b0ddd867f440e02e3..aec20843c6c485feab9063017472391236d584fe 100644 --- a/doc/build/html/source_rst/Ohmpi.html +++ b/doc/build/html/source_rst/Ohmpi.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>OhmPi project — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -84,7 +86,7 @@ <div itemprop="articleBody"> <section id="ohmpi-project"> -<h1>OhmPi project<a class="headerlink" href="#ohmpi-project" title="Permalink to this heading">ïƒ</a></h1> +<h1>OhmPi project<a class="headerlink" href="#ohmpi-project" title="Link to this heading">ïƒ</a></h1> <blockquote> <div><a class="reference internal image-reference" href="../_images/logo_ohmpi.JPG"><img alt="Logo OhmPi" class="align-center" src="../_images/logo_ohmpi.JPG" style="width: 250px; height: 180px;" /></a> </div></blockquote> @@ -92,7 +94,7 @@ <div class="line"><br /></div> </div> <section id="authors"> -<h2><strong>Authors:</strong><a class="headerlink" href="#authors" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>Authors:</strong><a class="headerlink" href="#authors" title="Link to this heading">ïƒ</a></h2> <div class="line-block"> <div class="line">Rémi CLEMENT, Vivien DUBOIS, Nicolas Forquet, INRAE, REVERSAAL, Villeurbanne, France</div> <div class="line">Olivier KAUFMANN, Arnaud WATLET, Université de Mons, Mons, Belgium</div> @@ -102,7 +104,7 @@ </div> </section> <section id="partners"> -<h2><strong>Partners:</strong><a class="headerlink" href="#partners" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>Partners:</strong><a class="headerlink" href="#partners" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-center"> <tbody> <tr class="row-odd"><td></td> @@ -117,7 +119,7 @@ </table> </section> <section id="citing-ohmpi"> -<h2><strong>Citing OhmPi:</strong><a class="headerlink" href="#citing-ohmpi" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>Citing OhmPi:</strong><a class="headerlink" href="#citing-ohmpi" title="Link to this heading">ïƒ</a></h2> <div class="line-block"> <div class="line"><br /></div> </div> @@ -129,7 +131,7 @@ </div> </section> <section id="introduction"> -<h2><strong>Introduction :</strong><a class="headerlink" href="#introduction" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>Introduction :</strong><a class="headerlink" href="#introduction" title="Link to this heading">ïƒ</a></h2> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. diff --git a/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html index 1fce28b191d76909ed2dad9cf385cc68fa8dbba0..59040883bd01b01ae6d8cc26ed55ee5dcb39c27d 100644 --- a/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html +++ b/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>STEP n°3: MUX board — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -80,7 +82,7 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="step-n3-mux-board"> -<h1><strong>STEP n°3:</strong> MUX board<a class="headerlink" href="#step-n3-mux-board" title="Permalink to this heading">ïƒ</a></h1> +<h1><strong>STEP n°3:</strong> MUX board<a class="headerlink" href="#step-n3-mux-board" title="Link to this heading">ïƒ</a></h1> <p>The multiplexing of the channels is a mechanical multiplexing based on OMRON’s manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs. We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit. @@ -88,9 +90,9 @@ This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each car In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N. 0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.</p> <section id="part-a-assembly-of-mux-board"> -<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Link to this heading">ïƒ</a></h2> <section id="required-components"> -<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading">ïƒ</a></h3> +<h3>Required components<a class="headerlink" href="#required-components" title="Link to this heading">ïƒ</a></h3> <figure class="align-center"> <a class="reference internal image-reference" href="../../_images/MUX_board_components.jpg"><img alt="alternate text" src="../../_images/MUX_board_components.jpg" style="width: 600px; height: 650px;" /></a> </figure> @@ -211,7 +213,7 @@ In the following presentation for an OhmPi 64 electrodes, we will use the addres </section> </section> <section id="part-b-mux-board-address"> -<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Link to this heading">ïƒ</a></h2> <p>To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code. We present here the addresses selected by default.</p> <p>For the A electrode board, we suggest addressing it with address 0x70:</p> @@ -284,7 +286,7 @@ electrode name on the mux board (B).</p></td> </table> </section> <section id="part-c-validation-of-mux-board"> -<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Link to this heading">ïƒ</a></h2> <p>The first step is to test the Mux boards before assembling them definitively. To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.</p> <p>The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.</p> diff --git a/doc/build/html/source_rst/api.html b/doc/build/html/source_rst/api.html index 4f3f7d33258d7b89fae21b90bbf7927c1a718aed..aa025cbc462e881c129350cf55116103c2fdf588 100644 --- a/doc/build/html/source_rst/api.html +++ b/doc/build/html/source_rst/api.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>API reference — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -80,7 +82,7 @@ <div itemprop="articleBody"> <section id="api-reference"> -<h1>API reference<a class="headerlink" href="#api-reference" title="Permalink to this heading">ïƒ</a></h1> +<h1>API reference<a class="headerlink" href="#api-reference" title="Link to this heading">ïƒ</a></h1> <div class="toctree-wrapper compound"> </div> </section> diff --git a/doc/build/html/source_rst/archived_version.html b/doc/build/html/source_rst/archived_version.html index 9f50e5527a1122a0960e5fa3d6339eb8494c936d..1b06fb848d6b8bcbefb6e5b869e9b1e28121b976 100644 --- a/doc/build/html/source_rst/archived_version.html +++ b/doc/build/html/source_rst/archived_version.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Archived versions — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -82,7 +84,7 @@ <div itemprop="articleBody"> <section id="archived-versions"> -<h1>Archived versions<a class="headerlink" href="#archived-versions" title="Permalink to this heading">ïƒ</a></h1> +<h1>Archived versions<a class="headerlink" href="#archived-versions" title="Link to this heading">ïƒ</a></h1> <p><strong>These versions are not supported anymore.</strong></p> <div class="toctree-wrapper compound"> <ul> diff --git a/doc/build/html/source_rst/developing_hardware_components.html b/doc/build/html/source_rst/developing_hardware_components.html index 30ef0b8c3d6b7e2c37de1d976ecb321549dcf82f..2e3c06637e492b61323fd2fdc0d40c0d7e3098a0 100644 --- a/doc/build/html/source_rst/developing_hardware_components.html +++ b/doc/build/html/source_rst/developing_hardware_components.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Software interface to new hardware components — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -78,7 +80,7 @@ <div itemprop="articleBody"> <section id="software-interface-to-new-hardware-components"> -<h1>Software interface to new hardware components<a class="headerlink" href="#software-interface-to-new-hardware-components" title="Permalink to this heading">ïƒ</a></h1> +<h1>Software interface to new hardware components<a class="headerlink" href="#software-interface-to-new-hardware-components" title="Link to this heading">ïƒ</a></h1> <p><a href="#id1"><span class="problematic" id="id2">**</span></a>* DRAFT VERSION - TO BE REVIEWED * This section is intended for developers of a new hardware component as part of an OhmPi system.</p> <p>It presents some advices and best practices that should help developing new hardware components to work diff --git a/doc/build/html/source_rst/gallery.html b/doc/build/html/source_rst/gallery.html index 9ba7cc12ad958d194d83210661f6b31fafb5d098..ba6e1c13ca4b6d2a3909a9287b18ad2e3389a40b 100644 --- a/doc/build/html/source_rst/gallery.html +++ b/doc/build/html/source_rst/gallery.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Examples of applications — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -78,7 +80,7 @@ <div itemprop="articleBody"> <section id="examples-of-applications"> -<h1>Examples of applications<a class="headerlink" href="#examples-of-applications" title="Permalink to this heading">ïƒ</a></h1> +<h1>Examples of applications<a class="headerlink" href="#examples-of-applications" title="Link to this heading">ïƒ</a></h1> <p>TODO (e.g. OhmPi in Inrae, OhmPi in Rocherfort, )</p> </section> diff --git a/doc/build/html/source_rst/hardware.html b/doc/build/html/source_rst/hardware.html index dad55c8a595692bab24bea63802c10cca5ba1db1..d5c1882d364c435a80dbc58902d12ed5771b923f 100644 --- a/doc/build/html/source_rst/hardware.html +++ b/doc/build/html/source_rst/hardware.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Hardware — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -87,7 +89,7 @@ <div itemprop="articleBody"> <section id="hardware"> -<h1>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading">ïƒ</a></h1> +<h1>Hardware<a class="headerlink" href="#hardware" title="Link to this heading">ïƒ</a></h1> <p>This section contains the documentation needed to build an OhmPi. The OhmPi is composed of different modules:</p> <ul class="simple"> @@ -108,6 +110,7 @@ You can then upgrade your measurment board or power supply for specific applicat <li class="toctree-l1"><a class="reference internal" href="hardware/mb.html">Measurement board</a><ul> <li class="toctree-l2"><a class="reference internal" href="hardware/mb.html#recognize-the-version-of-the-measurement-board">Recognize the version of the measurement board</a></li> <li class="toctree-l2"><a class="reference internal" href="hardware/mb.html#specifications">Specifications</a></li> +<li class="toctree-l2"><a class="reference internal" href="hardware/mb.html#assemble-you-measurement-board">Assemble you measurement board:</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="hardware/mux_2023.html">MUX board v2023</a><ul> diff --git a/doc/build/html/source_rst/hardware/assembling.html b/doc/build/html/source_rst/hardware/assembling.html index 5b7910d3f5d19a23ee12165fcd7629f8f0cd2156..fa8a3c768f4b3229cfe0b13c35178160a561ed60 100644 --- a/doc/build/html/source_rst/hardware/assembling.html +++ b/doc/build/html/source_rst/hardware/assembling.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Assembling the OhmPi — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -92,7 +94,7 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="assembling-the-ohmpi"> -<h1>Assembling the OhmPi<a class="headerlink" href="#assembling-the-ohmpi" title="Permalink to this heading">ïƒ</a></h1> +<h1>Assembling the OhmPi<a class="headerlink" href="#assembling-the-ohmpi" title="Link to this heading">ïƒ</a></h1> <table class="docutils align-center"> <tbody> <tr class="row-odd"><td rowspan="2"><p>1</p></td> @@ -458,8 +460,8 @@ present on the board.</p></td> <td><img alt="../../_images/step_4_32.jpg" src="../../_images/step_4_32.jpg" /> </td> </tr> -<tr class="row-even"><td><p>Connect the wires †A †(here yellow), †B †(here purple), -†M †(here brown) and †N †(here blue) on the +<tr class="row-even"><td><p>Connect the wires “ A “ (here yellow), “ B “ (here purple), +“ M “ (here brown) and “ N “ (here blue) on the corresponding terminal blocks on the measurement board. Connect the 6 wires ribbon cable on the measurement board by passing under the PVC plate.Connect the red and black diff --git a/doc/build/html/source_rst/hardware/hw_info.html b/doc/build/html/source_rst/hardware/hw_info.html index 4f83e1707f8890f035a5c52260cffd39a13a8602..d71820443bff2641c8d1bca62c92eebb21cbc809 100644 --- a/doc/build/html/source_rst/hardware/hw_info.html +++ b/doc/build/html/source_rst/hardware/hw_info.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>OhmPi electronic design — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -92,9 +94,9 @@ <div itemprop="articleBody"> <section id="ohmpi-electronic-design"> -<h1>OhmPi electronic design<a class="headerlink" href="#ohmpi-electronic-design" title="Permalink to this heading">ïƒ</a></h1> +<h1>OhmPi electronic design<a class="headerlink" href="#ohmpi-electronic-design" title="Link to this heading">ïƒ</a></h1> <section id="measurement-board"> -<h2>Measurement board<a class="headerlink" href="#measurement-board" title="Permalink to this heading">ïƒ</a></h2> +<h2>Measurement board<a class="headerlink" href="#measurement-board" title="Link to this heading">ïƒ</a></h2> <p>The measurement board integrates different electronic components to</p> <ul class="simple"> <li><p>measure the voltage at MN</p></li> @@ -145,7 +147,7 @@ pulses from a clock (SCL) and another line to transmit data (SDA). These lines m pulled high using pull-up resistors (meaning at rest, there should be 5V between these lines and the ground).</p> </section> <section id="multiplexer"> -<h2>Multiplexer<a class="headerlink" href="#multiplexer" title="Permalink to this heading">ïƒ</a></h2> +<h2>Multiplexer<a class="headerlink" href="#multiplexer" title="Link to this heading">ïƒ</a></h2> <p>Multiplexer are used to address multiple electrodes. For this they use <strong>relays</strong> to create an electronic path between the electrode and the entry (A, B, M, or N) on the measurement board. The relays are usually controlled by <strong>GPIO expander</strong> (MCP23017). diff --git a/doc/build/html/source_rst/hardware/hw_pwr.html b/doc/build/html/source_rst/hardware/hw_pwr.html index f02edb8c87f8f8de4554fd12dbd904c8a91c072b..6e2d433ae053622a834d229876990f05fb721263 100644 --- a/doc/build/html/source_rst/hardware/hw_pwr.html +++ b/doc/build/html/source_rst/hardware/hw_pwr.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Power supply — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -92,17 +94,17 @@ <div itemprop="articleBody"> <section id="power-supply"> -<h1>Power supply<a class="headerlink" href="#power-supply" title="Permalink to this heading">ïƒ</a></h1> +<h1>Power supply<a class="headerlink" href="#power-supply" title="Link to this heading">ïƒ</a></h1> <p>Two sources of power are available now: - a 12V battery - a regulated power supply (DPS5005)</p> <section id="v-battery"> -<h2>12V battery<a class="headerlink" href="#v-battery" title="Permalink to this heading">ïƒ</a></h2> +<h2>12V battery<a class="headerlink" href="#v-battery" title="Link to this heading">ïƒ</a></h2> <p>When injecting, we actually connect the + and - of the battery to the A, B electrodes. Hence, we can only inject 12V maximum.</p> </section> <section id="regulated-power-supply-dps5005"> -<h2>Regulated power supply (DPS5005)<a class="headerlink" href="#regulated-power-supply-dps5005" title="Permalink to this heading">ïƒ</a></h2> +<h2>Regulated power supply (DPS5005)<a class="headerlink" href="#regulated-power-supply-dps5005" title="Link to this heading">ïƒ</a></h2> <p>This alimentation enables us to inject up to 50 V and also to regulate the current. It needs to be connected to a 12V battery and can be controlled using <cite>modbus</cite> by the raspberrypi.</p> </section> diff --git a/doc/build/html/source_rst/hardware/hw_rpi.html b/doc/build/html/source_rst/hardware/hw_rpi.html index fc8f233cbae9e25da73d002025621a0f24fa71e3..5d883351e3aa41ff255827c29010ae29f8b73477 100644 --- a/doc/build/html/source_rst/hardware/hw_rpi.html +++ b/doc/build/html/source_rst/hardware/hw_rpi.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Raspberry Pi configuration — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -97,9 +99,9 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="raspberry-pi-configuration"> -<h1>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading">ïƒ</a></h1> +<h1>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Link to this heading">ïƒ</a></h1> <section id="part-a-os-installation"> -<h2><strong>PART A:</strong> OS installation<a class="headerlink" href="#part-a-os-installation" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART A:</strong> OS installation<a class="headerlink" href="#part-a-os-installation" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-default"> <tbody> <tr class="row-odd"><td><p><strong>Required components</strong></p></td> @@ -142,7 +144,7 @@ For this step, the installation instructions are well described on the Raspberry </div> </section> <section id="part-b-virtual-environment-and-packages"> -<h2><strong>PART B:</strong> Virtual Environment and packages<a class="headerlink" href="#part-b-virtual-environment-and-packages" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART B:</strong> Virtual Environment and packages<a class="headerlink" href="#part-b-virtual-environment-and-packages" title="Link to this heading">ïƒ</a></h2> <p>A virtual environment is a way to have multiple, parallel instances of the Python interpreter, each with different package sets and different configurations. Each virtual environment contains a discrete copy of the Python interpreter, including copies of its support utilities. It also protects your system in case of problems with the packages.</p> <p>All dependencies are specified in requirements.txt</p> @@ -179,7 +181,7 @@ to leave the virtual environment simply type:</p> </div> </section> <section id="part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"> -<h2><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Link to this heading">ïƒ</a></h2> <p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p> <p>1- Run the Thonny Python IDE software, Click on raspberry access <strong>menu > programming> Thonny pythonIDE</strong></p> <p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p> diff --git a/doc/build/html/source_rst/hardware/mb.html b/doc/build/html/source_rst/hardware/mb.html index 74628b5e5379d358e67f89b2c1fb261dc4a5753f..73f22796f7992b76a87fb44b05a6b900e9577f34 100644 --- a/doc/build/html/source_rst/hardware/mb.html +++ b/doc/build/html/source_rst/hardware/mb.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Measurement board — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -48,9 +50,10 @@ <li class="toctree-l2"><a class="reference internal" href="hw_info.html">OhmPi electronic design</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="#">Measurement board</a><ul> <li class="toctree-l3"><a class="reference internal" href="#recognize-the-version-of-the-measurement-board">Recognize the version of the measurement board</a></li> -<li class="toctree-l3"><a class="reference internal" href="#specifications">Specifications</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#specifications">Specifications</a></li> +<li class="toctree-l3"><a class="reference internal" href="#assemble-you-measurement-board">Assemble you measurement board:</a><ul> <li class="toctree-l4"><a class="reference internal" href="mb/mb_2023.html">Measurement board v2023</a></li> -<li class="toctree-l4"><a class="reference internal" href="mb/mb_2024.html">Measurement board v2024</a></li> +<li class="toctree-l4"><a class="reference internal" href="mb/mb_2024.html">Measurement board 2024.0.2</a></li> </ul> </li> </ul> @@ -96,12 +99,12 @@ <div itemprop="articleBody"> <section id="measurement-board"> -<h1>Measurement board<a class="headerlink" href="#measurement-board" title="Permalink to this heading">ïƒ</a></h1> +<h1>Measurement board<a class="headerlink" href="#measurement-board" title="Link to this heading">ïƒ</a></h1> <p>This section introduces the OhmPi measurement boards. Starting from this year, it has been possible to use any measurement board with the latest OhmPi code. Consequently, the OhmPi group provides a variety of board options tailored to your technical needs (e.g., laboratory measurement, field measurement), budget, and electronic skills.</p> <p>The characteristics of each measurement board are described in the following table:</p> <section id="recognize-the-version-of-the-measurement-board"> -<h2>Recognize the version of the measurement board<a class="headerlink" href="#recognize-the-version-of-the-measurement-board" title="Permalink to this heading">ïƒ</a></h2> +<h2>Recognize the version of the measurement board<a class="headerlink" href="#recognize-the-version-of-the-measurement-board" title="Link to this heading">ïƒ</a></h2> <blockquote> <div><table class="docutils align-default"> <tbody> @@ -120,7 +123,7 @@ Consequently, the OhmPi group provides a variety of board options tailored to yo </div></blockquote> </section> <section id="specifications"> -<h2>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading">ïƒ</a></h2> +<h2>Specifications<a class="headerlink" href="#specifications" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-center"> <thead> <tr class="row-odd"><th class="head"><p><strong>Parameters</strong></p></th> @@ -193,17 +196,22 @@ Consequently, the OhmPi group provides a variety of board options tailored to yo </tr> </tbody> </table> -<p>Contents:</p> +</section> +<section id="assemble-you-measurement-board"> +<h2>Assemble you measurement board:<a class="headerlink" href="#assemble-you-measurement-board" title="Link to this heading">ïƒ</a></h2> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="mb/mb_2023.html">Measurement board v2023</a><ul> -<li class="toctree-l2"><a class="reference internal" href="mb/mb_2023.html#specifications">Specifications</a></li> <li class="toctree-l2"><a class="reference internal" href="mb/mb_2023.html#part-a-assembly-of-the-measurement-board"><strong>PART A</strong> Assembly of the measurement board</a></li> <li class="toctree-l2"><a class="reference internal" href="mb/mb_2023.html#part-b-start-up-of-the-measurement-board"><strong>PART B</strong> Start-up of the measurement board</a></li> <li class="toctree-l2"><a class="reference internal" href="mb/mb_2023.html#part-c-check-the-measurement-board"><strong>PART C</strong> Check the measurement board</a></li> </ul> </li> -<li class="toctree-l1"><a class="reference internal" href="mb/mb_2024.html">Measurement board v2024</a></li> +<li class="toctree-l1"><a class="reference internal" href="mb/mb_2024.html">Measurement board 2024.0.2</a><ul> +<li class="toctree-l2"><a class="reference internal" href="mb/mb_2024.html#part-a-assembly-of-the-measurement-board"><strong>PART A</strong> Assembly of the measurement board</a></li> +<li class="toctree-l2"><a class="reference internal" href="mb/mb_2024.html#required-components">Required components</a></li> +</ul> +</li> </ul> </div> </section> diff --git a/doc/build/html/source_rst/hardware/mb/ibom.html b/doc/build/html/source_rst/hardware/mb/ibom.html new file mode 100644 index 0000000000000000000000000000000000000000..a2fef3a0acd2f01fe70593e855f1a0ad54523001 --- /dev/null +++ b/doc/build/html/source_rst/hardware/mb/ibom.html @@ -0,0 +1,4669 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Interactive BOM for KiCAD</title> + <style type="text/css"> +:root { + --pcb-edge-color: black; + --pad-color: #878787; + --pad-hole-color: #CCCCCC; + --pad-color-highlight: #D04040; + --pad-color-highlight-both: #D0D040; + --pad-color-highlight-marked: #44a344; + --pin1-outline-color: #ffb629; + --pin1-outline-color-highlight: #ffb629; + --pin1-outline-color-highlight-both: #fcbb39; + --pin1-outline-color-highlight-marked: #fdbe41; + --silkscreen-edge-color: #aa4; + --silkscreen-polygon-color: #4aa; + --silkscreen-text-color: #4aa; + --fabrication-edge-color: #907651; + --fabrication-polygon-color: #907651; + --fabrication-text-color: #a27c24; + --track-color: #def5f1; + --track-color-highlight: #D04040; + --zone-color: #def5f1; + --zone-color-highlight: #d0404080; +} + +html, +body { + margin: 0px; + height: 100%; + font-family: Verdana, sans-serif; +} + +.dark.topmostdiv { + --pcb-edge-color: #eee; + --pad-color: #808080; + --pin1-outline-color: #ffa800; + --pin1-outline-color-highlight: #ccff00; + --track-color: #42524f; + --zone-color: #42524f; + background-color: #252c30; + color: #eee; +} + +button { + background-color: #eee; + border: 1px solid #888; + color: black; + height: 44px; + width: 44px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 14px; + font-weight: bolder; +} + +.dark button { + /* This will be inverted */ + background-color: #c3b7b5; +} + +button.depressed { + background-color: #0a0; + color: white; +} + +.dark button.depressed { + /* This will be inverted */ + background-color: #b3b; +} + +button:focus { + outline: 0; +} + +button#tb-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#lr-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#bom-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-grouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-ungrouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-netlist-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#copy { + background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E"); + background-position: 6px 6px; + background-repeat: no-repeat; + background-size: 26px 26px; + border-radius: 6px; + height: 40px; + width: 40px; + margin: 10px 5px; +} + +button#copy:active { + box-shadow: inset 0px 0px 5px #6c6c6c; +} + +textarea.clipboard-temp { + position: fixed; + top: 0; + left: 0; + width: 2em; + height: 2em; + padding: 0; + border: None; + outline: None; + box-shadow: None; + background: transparent; +} + +.left-most-button { + border-right: 0; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.middle-button { + border-right: 0; +} + +.right-most-button { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.button-container { + font-size: 0; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.dark .button-container { + filter: invert(1); +} + +.button-container button { + background-size: 32px 32px; + background-position: 5px 5px; + background-repeat: no-repeat; +} + +@media print { + .hideonprint { + display: none; + } +} + +canvas { + cursor: crosshair; +} + +canvas:active { + cursor: grabbing; +} + +.fileinfo { + width: 100%; + max-width: 1000px; + border: none; + padding: 3px; +} + +.fileinfo .title { + font-size: 20pt; + font-weight: bold; +} + +.fileinfo td { + overflow: hidden; + white-space: nowrap; + max-width: 1px; + width: 50%; + text-overflow: ellipsis; +} + +.bom { + border-collapse: collapse; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 10pt; + table-layout: fixed; + width: 100%; + margin-top: 1px; + position: relative; +} + +.bom th, +.bom td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +.dark .bom th, +.dark .bom td { + border: 1px solid #777; +} + +.bom th { + background-color: #CCCCCC; + background-clip: padding-box; +} + +.dark .bom th { + background-color: #3b4749; +} + +.bom tr.highlighted:nth-child(n) { + background-color: #cfc; +} + +.dark .bom tr.highlighted:nth-child(n) { + background-color: #226022; +} + +.bom tr:nth-child(even) { + background-color: #f2f2f2; +} + +.dark .bom tr:nth-child(even) { + background-color: #313b40; +} + +.bom tr.checked { + color: #1cb53d; +} + +.dark .bom tr.checked { + color: #2cce54; +} + +.bom tr { + transition: background-color 0.2s; +} + +.bom .numCol { + width: 30px; +} + +.bom .value { + width: 15%; +} + +.bom .quantity { + width: 65px; +} + +.bom th .sortmark { + position: absolute; + right: 1px; + top: 1px; + margin-top: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent #221 transparent; + transform-origin: 50% 85%; + transition: opacity 0.2s, transform 0.4s; +} + +.dark .bom th .sortmark { + filter: invert(1); +} + +.bom th .sortmark.none { + opacity: 0; +} + +.bom th .sortmark.desc { + transform: rotate(180deg); +} + +.bom th:hover .sortmark.none { + opacity: 0.5; +} + +.bom .bom-checkbox { + width: 30px; + position: relative; + user-select: none; + -moz-user-select: none; +} + +.bom .bom-checkbox:before { + content: ""; + position: absolute; + border-width: 15px; + border-style: solid; + border-color: #51829f transparent transparent transparent; + visibility: hidden; + top: -15px; +} + +.bom .bom-checkbox:after { + content: "Double click to set/unset all"; + position: absolute; + color: white; + top: -35px; + left: -26px; + background: #51829f; + padding: 5px 15px; + border-radius: 8px; + white-space: nowrap; + visibility: hidden; +} + +.bom .bom-checkbox:hover:before, +.bom .bom-checkbox:hover:after { + visibility: visible; + transition: visibility 0.2s linear 1s; +} + +.split { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; + background-color: inherit; +} + +.split.split-horizontal, +.gutter.gutter-horizontal { + height: 100%; + float: left; +} + +.gutter { + background-color: #ddd; + background-repeat: no-repeat; + background-position: 50%; + transition: background-color 0.3s; +} + +.dark .gutter { + background-color: #777; +} + +.gutter.gutter-horizontal { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg=='); + cursor: ew-resize; + width: 5px; +} + +.gutter.gutter-vertical { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); + cursor: ns-resize; + height: 5px; +} + +.searchbox { + float: left; + height: 40px; + margin: 10px 5px; + padding: 12px 32px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 18px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 6px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg=='); + background-position: 10px 10px; + background-repeat: no-repeat; +} + +.dark .searchbox { + background-color: #111; + color: #eee; +} + +.searchbox::placeholder { + color: #ccc; +} + +.dark .searchbox::placeholder { + color: #666; +} + +.filter { + width: calc(60% - 64px); +} + +.reflookup { + width: calc(40% - 10px); +} + +input[type=text]:focus { + background-color: white; + border: 1px solid #333; +} + +.dark input[type=text]:focus { + background-color: #333; + border: 1px solid #ccc; +} + +mark.highlight { + background-color: #5050ff; + color: #fff; + padding: 2px; + border-radius: 6px; +} + +.dark mark.highlight { + background-color: #76a6da; + color: #111; +} + +.menubtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A"); + background-position: center; + background-repeat: no-repeat; +} + +.statsbtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.iobtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.visbtn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; + padding: 15px; +} + +#vismenu-content { + left: 0px; + font-family: Verdana, sans-serif; +} + +.dark .statsbtn, +.dark .savebtn, +.dark .menubtn, +.dark .iobtn, +.dark .visbtn { + filter: invert(1); +} + +.flexbox { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.savebtn { + background-color: #d6d6d6; + width: auto; + height: 30px; + flex-grow: 1; + margin: 5px; + border-radius: 4px; +} + +.savebtn:active { + background-color: #0a0; + color: white; +} + +.dark .savebtn:active { + /* This will be inverted */ + background-color: #b3b; +} + +.stats { + border-collapse: collapse; + font-size: 12pt; + table-layout: fixed; + width: 100%; + min-width: 450px; +} + +.dark .stats td { + border: 1px solid #bbb; +} + +.stats td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +#checkbox-stats div { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +#checkbox-stats .bar { + background-color: rgba(28, 251, 0, 0.6); +} + +.menu { + position: relative; + display: inline-block; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.menu-content { + font-size: 12pt !important; + text-align: left !important; + font-weight: normal !important; + display: none; + position: absolute; + background-color: white; + right: 0; + min-width: 300px; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 100; + padding: 8px; +} + +.dark .menu-content { + background-color: #111; +} + +.menu:hover .menu-content { + display: block; +} + +.menu:hover .menubtn, +.menu:hover .iobtn, +.menu:hover .statsbtn { + background-color: #eee; +} + +.menu-label { + display: inline-block; + padding: 8px; + border: 1px solid #ccc; + border-top: 0; + width: calc(100% - 18px); +} + +.menu-label-top { + border-top: 1px solid #ccc; +} + +.menu-textbox { + float: left; + height: 24px; + margin: 10px 5px; + padding: 5px 5px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 14px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 4px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + width: calc(100% - 10px); +} + +.menu-textbox.invalid, +.dark .menu-textbox.invalid { + color: red; +} + +.dark .menu-textbox { + background-color: #222; + color: #eee; +} + +.radio-container { + margin: 4px; +} + +.topmostdiv { + display: flex; + flex-direction: column; + width: 100%; + background-color: white; + transition: background-color 0.3s; +} + +#top { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + align-items: center; +} + +#topdivider { + border-bottom: 2px solid black; + display: flex; + justify-content: center; + align-items: center; +} + +.dark #topdivider { + border-bottom: 2px solid #ccc; +} + +#topdivider>div { + position: relative; +} + +#toptoggle { + cursor: pointer; + user-select: none; + position: absolute; + padding: 0.1rem 0.3rem; + top: -0.4rem; + left: -1rem; + font-size: 1.4rem; + line-height: 60%; + border: 1px solid black; + border-radius: 1rem; + background-color: #fff; + z-index: 100; +} + +.flipped { + transform: rotate(0.5turn); +} + +.dark #toptoggle { + border: 1px solid #fff; + background-color: #222; +} + +#fileinfodiv { + flex: 20rem 1 0; + overflow: auto; +} + +#bomcontrols { + display: flex; + flex-direction: row-reverse; +} + +#bomcontrols>* { + flex-shrink: 0; +} + +#dbg { + display: block; +} + +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #aaa; +} + +::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +.slider { + -webkit-appearance: none; + width: 100%; + margin: 3px 0; + padding: 0; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + border-radius: 3px; +} + +.slider:hover { + opacity: 1; +} + +.slider:focus { + outline: none; +} + +.slider::-webkit-slider-runnable-track { + -webkit-appearance: none; + width: 100%; + height: 8px; + background: #d3d3d3; + border-radius: 3px; + border: none; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin-top: -4px; +} + +.dark .slider::-webkit-slider-thumb { + background: #3d3; +} + +.slider::-moz-range-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; +} + +.slider::-moz-range-track { + height: 8px; + background: #d3d3d3; + border-radius: 3px; +} + +.dark .slider::-moz-range-thumb { + background: #3d3; +} + +.slider::-ms-track { + width: 100%; + height: 8px; + border-width: 3px 0; + background: transparent; + border-color: transparent; + color: transparent; + transition: opacity .2s; +} + +.slider::-ms-fill-lower { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-fill-upper { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin: 0; +} + +.shameless-plug { + font-size: 0.8em; + text-align: center; + display: block; +} + +a { + color: #0278a4; +} + +.dark a { + color: #00b9fd; +} + +#frontcanvas, +#backcanvas { + touch-action: none; +} + +.placeholder { + border: 1px dashed #9f9fda !important; + background-color: #edf2f7 !important; +} + +.dragging { + z-index: 999; +} + +.dark .dragging>table>tbody>tr { + background-color: #252c30; +} + +.dark .placeholder { + filter: invert(1); +} + +.column-spacer { + top: 0; + left: 0; + width: calc(100% - 4px); + position: absolute; + cursor: pointer; + user-select: none; + height: 100%; +} + +.column-width-handle { + top: 0; + right: 0; + width: 4px; + position: absolute; + cursor: col-resize; + user-select: none; + height: 100%; +} + +.column-width-handle:hover { + background-color: #4f99bd; +} + +.help-link { + border: 1px solid #0278a4; + padding-inline: 0.3rem; + border-radius: 3px; + cursor: pointer; +} + +.dark .help-link { + border: 1px solid #00b9fd; +} + +.bom-color { + width: 20%; +} + +.color-column input { + width: 1.6rem; + height: 1rem; + border: 1px solid black; + cursor: pointer; + padding: 0; +} + +/* removes default styling from input color element */ +::-webkit-color-swatch { + border: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-moz-color-swatch, +::-moz-focus-inner { + border: none; +} + +::-moz-focus-inner { + padding: 0; +} +/* #bomhead { + position: sticky; + top: 0px; + z-index: 1; +} */ + </style> + <script type="text/javascript" > +/////////////////////////////////////////////// +/* + Split.js - v1.3.5 + MIT License + https://github.com/nathancahill/Split.js +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net> +// This work is free. You can redistribute it and/or modify it +// under the terms of the WTFPL, Version 2 +// For more information see LICENSE.txt or http://www.wtfpl.net/ +// +// For more information, the home page: +// http://pieroxy.net/blog/pages/lz-string/testing.html +// +// LZ-based compression algorithm, version 1.4.4 +var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/*! + * PEP v0.4.3 | https://github.com/jquery/PEP + * Copyright jQuery Foundation and other contributors | http://jquery.org/license + */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1); +for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0; +var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})} +var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){ +for(var b=a;b.parentNode;)b=b.parentNode; +return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target); +return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){ +// +this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))}, +installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){ +var b=x(a,this.findElements,this); +return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){} +var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[], +isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){ +var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID); +0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button]; +c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a), +c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events), +Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events), +Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b); +d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){ +(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE, +c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey; +var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))}, +shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c) +b=!1;else if("XY"===c) +b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]); +b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0}, +vacuumTouches:function(a){var b=a.touches; +if(R.size>=b.length){var c=[];R.forEach(function(a,d){ +if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId); +if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e, +d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):( +b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)}, +dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0]; +if(this.isPrimaryTouch(c)){ +var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint", "Description"]} +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var pcbdata = JSON.parse(LZString.decompressFromBase64("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")) +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* Utility functions */ + +var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' + + pcbdata.metadata.revision + '__#'; +var storage; + +function initStorage(key) { + try { + window.localStorage.getItem("blank"); + storage = window.localStorage; + } catch (e) { + // localStorage not available + } + if (!storage) { + try { + window.sessionStorage.getItem("blank"); + storage = window.sessionStorage; + } catch (e) { + // sessionStorage also not available + } + } +} + +function readStorage(key) { + if (storage) { + return storage.getItem(storagePrefix + key); + } else { + return null; + } +} + +function writeStorage(key, value) { + if (storage) { + storage.setItem(storagePrefix + key, value); + } +} + +function fancyDblClickHandler(el, onsingle, ondouble) { + return function () { + if (el.getAttribute("data-dblclick") == null) { + el.setAttribute("data-dblclick", 1); + setTimeout(function () { + if (el.getAttribute("data-dblclick") == 1) { + onsingle(); + } + el.removeAttribute("data-dblclick"); + }, 200); + } else { + el.removeAttribute("data-dblclick"); + ondouble(); + } + } +} + +function smoothScrollToRow(rowid) { + document.getElementById(rowid).scrollIntoView({ + behavior: "smooth", + block: "center", + inline: "nearest" + }); +} + +function focusInputField(input) { + input.scrollIntoView(false); + input.focus(); + input.select(); +} + +function saveBomTable(output) { + var text = ''; + for (var node of bomhead.childNodes[0].childNodes) { + if (node.firstChild) { + text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue); + } + if (node != bomhead.childNodes[0].lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + for (var row of bombody.childNodes) { + for (var cell of row.childNodes) { + let val = ''; + for (var node of cell.childNodes) { + if (node.nodeName == "INPUT") { + if (node.checked) { + val += '✓'; + } + } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) { + val += node.firstChild.nodeValue; + } else { + val += node.nodeValue; + } + } + if (output == 'csv') { + val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters + if (isNumeric(val)) { + val = +val; // use number + } else { + val = `"${val}"`; // enclosed within double-quote + } + } + text += val; + if (cell != row.lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + } + + if (output != 'clipboard') { + // To file: csv or txt + var blob = new Blob([text], { + type: `text/${output}` + }); + saveFile(`${pcbdata.metadata.title}.${output}`, blob); + } else { + // To clipboard + var textArea = document.createElement("textarea"); + textArea.classList.add('clipboard-temp'); + textArea.value = text; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + if (document.execCommand('copy')) { + console.log('Bom copied to clipboard.'); + } + } catch (err) { + console.log('Can not copy to clipboard.'); + } + + document.body.removeChild(textArea); + } +} + +function isNumeric(str) { + /* https://stackoverflow.com/a/175787 */ + return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str))); +} + +function removeGutterNode(node) { + for (var i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].classList && + node.childNodes[i].classList.contains("gutter")) { + node.removeChild(node.childNodes[i]); + break; + } + } +} + +function cleanGutters() { + removeGutterNode(document.getElementById("bot")); + removeGutterNode(document.getElementById("canvasdiv")); +} + +var units = { + prefixes: { + giga: ["G", "g", "giga", "Giga", "GIGA"], + mega: ["M", "mega", "Mega", "MEGA"], + kilo: ["K", "k", "kilo", "Kilo", "KILO"], + milli: ["m", "milli", "Milli", "MILLI"], + micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ + nano: ["N", "n", "nano", "Nano", "NANO"], + pico: ["P", "p", "pico", "Pico", "PICO"], + }, + unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"], + unitsLong: [ + "OHM", "Ohm", "ohm", "ohms", + "FARAD", "Farad", "farad", + "HENRY", "Henry", "henry" + ], + getMultiplier: function (s) { + if (this.prefixes.giga.includes(s)) return 1e9; + if (this.prefixes.mega.includes(s)) return 1e6; + if (this.prefixes.kilo.includes(s)) return 1e3; + if (this.prefixes.milli.includes(s)) return 1e-3; + if (this.prefixes.micro.includes(s)) return 1e-6; + if (this.prefixes.nano.includes(s)) return 1e-9; + if (this.prefixes.pico.includes(s)) return 1e-12; + return 1; + }, + valueRegex: null, +} + +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 resetSettings() { + if (!confirm( + `This will reset all checkbox states and other settings.\n\n` + + `Press OK if you want to continue.`)) { + return; + } + if (storage) { + var keys = []; + for (var i = 0; i < storage.length; i++) { + var key = storage.key(i); + if (key.startsWith(storagePrefix)) keys.push(key); + } + for (var key of keys) storage.removeItem(key); + } + location.reload(); +} + +function overwriteSettings(newSettings) { + initDone = false; + Object.assign(settings, newSettings); + writeStorage("bomlayout", settings.bomlayout); + writeStorage("bommode", settings.bommode); + writeStorage("canvaslayout", settings.canvaslayout); + writeStorage("bomCheckboxes", settings.checkboxes.join(",")); + document.getElementById("bomCheckboxes").value = settings.checkboxes.join(","); + for (var checkbox of settings.checkboxes) { + writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]); + } + writeStorage("markWhenChecked", settings.markWhenChecked); + padsVisible(settings.renderPads); + document.getElementById("padsCheckbox").checked = settings.renderPads; + fabricationVisible(settings.renderFabrication); + document.getElementById("fabricationCheckbox").checked = settings.renderFabrication; + silkscreenVisible(settings.renderSilkscreen); + document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen; + referencesVisible(settings.renderReferences); + document.getElementById("referencesCheckbox").checked = settings.renderReferences; + valuesVisible(settings.renderValues); + document.getElementById("valuesCheckbox").checked = settings.renderValues; + tracksVisible(settings.renderTracks); + document.getElementById("tracksCheckbox").checked = settings.renderTracks; + zonesVisible(settings.renderZones); + document.getElementById("zonesCheckbox").checked = settings.renderZones; + dnpOutline(settings.renderDnpOutline); + document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline; + setRedrawOnDrag(settings.redrawOnDrag); + document.getElementById("dragCheckbox").checked = settings.redrawOnDrag; + setDarkMode(settings.darkMode); + document.getElementById("darkmodeCheckbox").checked = settings.darkMode; + setHighlightPin1(settings.highlightpin1); + document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + setOffsetBackRotation(settings.offsetBackRotation); + document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation; + initDone = true; + prepCheckboxes(); + changeBomLayout(settings.bomlayout); +} + +function saveFile(filename, blob) { + var link = document.createElement("a"); + var objurl = URL.createObjectURL(blob); + link.download = filename; + link.href = objurl; + link.click(); +} + +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); +} + +var settings = { + canvaslayout: "FB", + bomlayout: "left-right", + bommode: "grouped", + checkboxes: [], + checkboxStoredRefs: {}, + darkMode: false, + highlightpin1: "none", + redrawOnDrag: true, + boardRotation: 0, + offsetBackRotation: false, + renderPads: true, + renderReferences: true, + renderValues: true, + renderSilkscreen: true, + renderFabrication: true, + renderDnpOutline: false, + renderTracks: true, + renderZones: true, + columnOrder: [], + hiddenColumns: [], + netColors: {}, +} + +function initDefaults() { + settings.bomlayout = readStorage("bomlayout"); + if (settings.bomlayout === null) { + settings.bomlayout = config.bom_view; + } + if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) { + settings.bomlayout = config.bom_view; + } + settings.bommode = readStorage("bommode"); + if (settings.bommode === null) { + settings.bommode = "grouped"; + } + if (settings.bommode == "netlist" && !pcbdata.nets) { + settings.bommode = "grouped"; + } + if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) { + settings.bommode = "grouped"; + } + settings.canvaslayout = readStorage("canvaslayout"); + if (settings.canvaslayout === null) { + settings.canvaslayout = config.layer_view; + } + var bomCheckboxes = readStorage("bomCheckboxes"); + if (bomCheckboxes === null) { + bomCheckboxes = config.checkboxes; + } + settings.checkboxes = bomCheckboxes.split(",").filter((e) => e); + document.getElementById("bomCheckboxes").value = bomCheckboxes; + + var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1; + if (highlightpin1 === "false") highlightpin1 = "none"; + if (highlightpin1 === "true") highlightpin1 = "all"; + setHighlightPin1(highlightpin1); + document.forms.highlightpin1.highlightpin1.value = highlightpin1; + + settings.markWhenChecked = readStorage("markWhenChecked") || ""; + populateMarkWhenCheckedOptions(); + + function initBooleanSetting(storageString, def, elementId, func) { + var b = readStorage(storageString); + if (b === null) { + b = def; + } else { + b = (b == "true"); + } + document.getElementById(elementId).checked = b; + func(b); + } + + initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible); + initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible); + initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible); + initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible); + initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible); + if ("tracks" in pcbdata) { + initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible); + initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible); + } else { + document.getElementById("tracksAndZonesCheckboxes").style.display = "none"; + tracksVisible(false); + zonesVisible(false); + } + initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline); + initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag); + initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode); + + var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]); + var hcols = JSON.parse(readStorage("hiddenColumns")); + if (hcols === null) { + hcols = []; + } + settings.hiddenColumns = hcols.filter(e => fields.includes(e)); + + var cord = JSON.parse(readStorage("columnOrder")); + if (cord === null) { + cord = fields; + } else { + cord = cord.filter(e => fields.includes(e)); + if (cord.length != fields.length) + cord = fields; + } + settings.columnOrder = cord; + + settings.boardRotation = readStorage("boardRotation"); + if (settings.boardRotation === null) { + settings.boardRotation = config.board_rotation * 5; + } else { + settings.boardRotation = parseInt(settings.boardRotation); + } + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation); + + settings.netColors = JSON.parse(readStorage("netColors")) || {}; +} + +// Helper classes for user js callbacks. + +const IBOM_EVENT_TYPES = { + ALL: "all", + HIGHLIGHT_EVENT: "highlightEvent", + CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent", + BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent", +} + +const EventHandler = { + callbacks: {}, + init: function () { + for (eventType of Object.values(IBOM_EVENT_TYPES)) + this.callbacks[eventType] = []; + }, + registerCallback: function (eventType, callback) { + this.callbacks[eventType].push(callback); + }, + emitEvent: function (eventType, eventArgs) { + event = { + eventType: eventType, + args: eventArgs, + } + var callback; + for (callback of this.callbacks[eventType]) + callback(event); + for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL]) + callback(event); + } +} +EventHandler.init(); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* PCB rendering code */ + +var emptyContext2d = document.createElement("canvas").getContext("2d"); + +function deg2rad(deg) { + return deg * Math.PI / 180; +} + +function calcFontPoint(linepoint, text, offsetx, offsety, tilt) { + var point = [ + linepoint[0] * text.width + offsetx, + linepoint[1] * text.height + offsety + ]; + // This approximates pcbnew behavior with how text tilts depending on horizontal justification + point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt; + return point; +} + +function drawText(ctx, text, color) { + if ("ref" in text && !settings.renderReferences) return; + if ("val" in text && !settings.renderValues) return; + ctx.save(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.lineWidth = text.thickness; + if ("svgpath" in text) { + ctx.stroke(new Path2D(text.svgpath)); + ctx.restore(); + return; + } + if ("polygons" in text) { + ctx.fill(getPolygonsPath(text)); + ctx.restore(); + return; + } + ctx.translate(...text.pos); + ctx.translate(text.thickness * 0.5, 0); + var angle = -text.angle; + if (text.attr.includes("mirrored")) { + ctx.scale(-1, 1); + angle = -angle; + } + var tilt = 0; + if (text.attr.includes("italic")) { + tilt = 0.125; + } + var interline = text.height * 1.5 + text.thickness; + var txt = text.text.split("\n"); + // KiCad ignores last empty line. + if (txt[txt.length - 1] == '') txt.pop(); + ctx.rotate(deg2rad(angle)); + var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset + offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset + for (var i in txt) { + var lineWidth = text.thickness + interline / 2 * tilt; + for (var j = 0; j < txt[i].length; j++) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + lineWidth += fourSpaces - lineWidth % fourSpaces; + } else { + if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + } + lineWidth += pcbdata.font_data[txt[i][j]].w * text.width; + } + } + var offsetx = -lineWidth * (text.justify[0] + 1) / 2; + var inOverbar = false; + for (var j = 0; j < txt[i].length; j++) { + if (config.kicad_text_formatting) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + offsetx += fourSpaces - offsetx % fourSpaces; + continue; + } else if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + if (txt[i][j] != '~') { + inOverbar = !inOverbar; + } + } + } + var glyph = pcbdata.font_data[txt[i][j]]; + if (inOverbar) { + var overbarStart = [offsetx, -text.height * 1.4 + offsety]; + var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]]; + + if (!lastHadOverbar) { + overbarStart[0] += text.height * 1.4 * tilt; + lastHadOverbar = true; + } + ctx.beginPath(); + ctx.moveTo(...overbarStart); + ctx.lineTo(...overbarEnd); + ctx.stroke(); + } else { + lastHadOverbar = false; + } + for (var line of glyph.l) { + ctx.beginPath(); + ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt)); + for (var k = 1; k < line.length; k++) { + ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt)); + } + ctx.stroke(); + } + offsetx += glyph.w * text.width; + } + offsety += interline; + } + ctx.restore(); +} + +function drawedge(ctx, scalefactor, edge, color) { + ctx.strokeStyle = color; + ctx.fillStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, edge.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + if ("svgpath" in edge) { + ctx.stroke(new Path2D(edge.svgpath)); + } else { + ctx.beginPath(); + if (edge.type == "segment") { + ctx.moveTo(...edge.start); + ctx.lineTo(...edge.end); + } + if (edge.type == "rect") { + ctx.moveTo(...edge.start); + ctx.lineTo(edge.start[0], edge.end[1]); + ctx.lineTo(...edge.end); + ctx.lineTo(edge.end[0], edge.start[1]); + ctx.lineTo(...edge.start); + } + if (edge.type == "arc") { + ctx.arc( + ...edge.start, + edge.radius, + deg2rad(edge.startangle), + deg2rad(edge.endangle)); + } + if (edge.type == "circle") { + ctx.arc( + ...edge.start, + edge.radius, + 0, 2 * Math.PI); + ctx.closePath(); + } + if (edge.type == "curve") { + ctx.moveTo(...edge.start); + ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end); + } + if("filled" in edge && edge.filled) + ctx.fill(); + else + ctx.stroke(); + } +} + +function getChamferedRectPath(size, radius, chamfpos, chamfratio) { + // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8 + var path = new Path2D(); + var width = size[0]; + var height = size[1]; + var x = width * -0.5; + var y = height * -0.5; + var chamfOffset = Math.min(width, height) * chamfratio; + path.moveTo(x, 0); + if (chamfpos & 4) { + path.lineTo(x, y + height - chamfOffset); + path.lineTo(x + chamfOffset, y + height); + path.lineTo(0, y + height); + } else { + path.arcTo(x, y + height, x + width, y + height, radius); + } + if (chamfpos & 8) { + path.lineTo(x + width - chamfOffset, y + height); + path.lineTo(x + width, y + height - chamfOffset); + path.lineTo(x + width, 0); + } else { + path.arcTo(x + width, y + height, x + width, y, radius); + } + if (chamfpos & 2) { + path.lineTo(x + width, y + chamfOffset); + path.lineTo(x + width - chamfOffset, y); + path.lineTo(0, y); + } else { + path.arcTo(x + width, y, x, y, radius); + } + if (chamfpos & 1) { + path.lineTo(x + chamfOffset, y); + path.lineTo(x, y + chamfOffset); + path.lineTo(x, 0); + } else { + path.arcTo(x, y, x, y + height, radius); + } + path.closePath(); + return path; +} + +function getOblongPath(size) { + return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0); +} + +function getPolygonsPath(shape) { + if (shape.path2d) { + return shape.path2d; + } + if ("svgpath" in shape) { + shape.path2d = new Path2D(shape.svgpath); + } else { + var path = new Path2D(); + for (var polygon of shape.polygons) { + path.moveTo(...polygon[0]); + for (var i = 1; i < polygon.length; i++) { + path.lineTo(...polygon[i]); + } + path.closePath(); + } + shape.path2d = path; + } + return shape.path2d; +} + +function drawPolygonShape(ctx, scalefactor, shape, color) { + ctx.save(); + if (!("svgpath" in shape)) { + ctx.translate(...shape.pos); + ctx.rotate(deg2rad(-shape.angle)); + } + if("filled" in shape && !shape.filled) { + ctx.strokeStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, shape.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.stroke(getPolygonsPath(shape)); + } else { + ctx.fillStyle = color; + ctx.fill(getPolygonsPath(shape)); + } + ctx.restore(); +} + +function drawDrawing(ctx, scalefactor, drawing, color) { + if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) { + drawedge(ctx, scalefactor, drawing, color); + } else if (drawing.type == "polygon") { + drawPolygonShape(ctx, scalefactor, drawing, color); + } else { + drawText(ctx, drawing, color); + } +} + +function getCirclePath(radius) { + var path = new Path2D(); + path.arc(0, 0, radius, 0, 2 * Math.PI); + path.closePath(); + return path; +} + +function getCachedPadPath(pad) { + if (!pad.path2d) { + // if path2d is not set, build one and cache it on pad object + if (pad.shape == "rect") { + pad.path2d = new Path2D(); + pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size); + } else if (pad.shape == "oval") { + pad.path2d = getOblongPath(pad.size); + } else if (pad.shape == "circle") { + pad.path2d = getCirclePath(pad.size[0] / 2); + } else if (pad.shape == "roundrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0); + } else if (pad.shape == "chamfrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio) + } else if (pad.shape == "custom") { + pad.path2d = getPolygonsPath(pad); + } + } + return pad.path2d; +} + +function drawPad(ctx, pad, color, outline) { + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + if (pad.offset) { + ctx.translate(...pad.offset); + } + ctx.fillStyle = color; + ctx.strokeStyle = color; + var path = getCachedPadPath(pad); + if (outline) { + ctx.stroke(path); + } else { + ctx.fill(path); + } + ctx.restore(); +} + +function drawPadHole(ctx, pad, padHoleColor) { + if (pad.type != "th") return; + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + ctx.fillStyle = padHoleColor; + if (pad.drillshape == "oblong") { + ctx.fill(getOblongPath(pad.drillsize)); + } else { + ctx.fill(getCirclePath(pad.drillsize[0] / 2)); + } + ctx.restore(); +} + +function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) { + if (highlight) { + // draw bounding box + if (footprint.layer == layer) { + ctx.save(); + ctx.globalAlpha = 0.2; + ctx.translate(...footprint.bbox.pos); + ctx.rotate(deg2rad(-footprint.bbox.angle)); + ctx.translate(...footprint.bbox.relpos); + ctx.fillStyle = colors.pad; + ctx.fillRect(0, 0, ...footprint.bbox.size); + ctx.globalAlpha = 1; + ctx.strokeStyle = colors.pad; + ctx.lineWidth = 3 / scalefactor; + ctx.strokeRect(0, 0, ...footprint.bbox.size); + ctx.restore(); + } + } + // draw drawings + for (var drawing of footprint.drawings) { + if (drawing.layer == layer) { + drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad); + } + } + ctx.lineWidth = 3 / scalefactor; + // draw pads + if (settings.renderPads) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, colors.pad, outline); + if (pad.pin1 && + (settings.highlightpin1 == "all" || + settings.highlightpin1 == "selected" && highlight)) { + drawPad(ctx, pad, colors.outline, true); + } + } + } + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, colors.padHole); + } + } +} + +function drawEdgeCuts(canvas, scalefactor) { + var ctx = canvas.getContext("2d"); + var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color'); + for (var edge of pcbdata.edges) { + drawDrawing(ctx, scalefactor, edge, edgecolor); + } +} + +function drawFootprints(canvas, layer, scalefactor, highlight) { + var ctx = canvas.getContext("2d"); + ctx.lineWidth = 3 / scalefactor; + var style = getComputedStyle(topmostdiv); + + var colors = { + pad: style.getPropertyValue('--pad-color'), + padHole: style.getPropertyValue('--pad-hole-color'), + outline: style.getPropertyValue('--pin1-outline-color'), + } + + for (var i = 0; i < pcbdata.footprints.length; i++) { + var mod = pcbdata.footprints[i]; + var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i); + var h = highlightedFootprints.includes(i); + var d = markedFootprints.has(i); + if (highlight) { + if(h && d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-both'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both'); + } else if (h) { + colors.pad = style.getPropertyValue('--pad-color-highlight'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight'); + } else if (d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-marked'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked'); + } + } + if( h || d || !highlight) { + drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline); + } + } +} + +function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) { + var ctx = canvas.getContext("2d"); + for (var d of pcbdata.drawings[layername][layer]) { + if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) { + drawedge(ctx, scalefactor, d, edgeColor); + } else if (d.type == "polygon") { + drawPolygonShape(ctx, scalefactor, d, polygonColor); + } else { + drawText(ctx, d, textColor); + } + } +} + +function drawTracks(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineCap = "round"; + + var hasHole = (track) => ( + 'drillsize' in track && + track.start[0] == track.end[0] && + track.start[1] == track.end[1]); + + // First draw tracks and tented vias + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (!hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + if ('radius' in track) { + ctx.arc( + ...track.center, + track.radius, + deg2rad(track.startangle), + deg2rad(track.endangle)); + } else { + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + } + ctx.stroke(); + } + } + // Second pass to draw untented vias + var style = getComputedStyle(topmostdiv); + var holeColor = style.getPropertyValue('--pad-hole-color') + + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + ctx.stroke(); + ctx.strokeStyle = holeColor; + ctx.lineWidth = track.drillsize; + ctx.lineTo(...track.end); + ctx.stroke(); + } + } +} + +function drawZones(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineJoin = "round"; + for (var zone of pcbdata.zones[layer]) { + if (highlight && highlightedNet != zone.net) continue; + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + if (!zone.path2d) { + zone.path2d = getPolygonsPath(zone); + } + ctx.fill(zone.path2d, zone.fillrule || "nonzero"); + if (zone.width > 0) { + ctx.lineWidth = zone.width; + ctx.stroke(zone.path2d); + } + } +} + +function clearCanvas(canvas, color = null) { + var ctx = canvas.getContext("2d"); + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + if (color) { + ctx.fillStyle = color; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } else { + if (!window.matchMedia("print").matches) + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + ctx.restore(); +} + +function drawNets(canvas, layer, highlight) { + var style = getComputedStyle(topmostdiv); + if (settings.renderZones) { + var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color'); + drawZones(canvas, layer, zoneColor, highlight); + } + if (settings.renderTracks) { + var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color'); + drawTracks(canvas, layer, trackColor, highlight); + } + if (highlight && settings.renderPads) { + var padColor = style.getPropertyValue('--pad-color-highlight'); + var padHoleColor = style.getPropertyValue('--pad-hole-color'); + var ctx = canvas.getContext("2d"); + for (var footprint of pcbdata.footprints) { + // draw pads + var padDrawn = false; + for (var pad of footprint.pads) { + if (highlightedNet != pad.net) continue; + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, padColor, false); + padDrawn = true; + } + } + if (padDrawn) { + // redraw all pad holes because some pads may overlap + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, padHoleColor); + } + } + } + } +} + +function drawHighlightsOnLayer(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.highlight); + } + if (markedFootprints.size > 0 || highlightedFootprints.length > 0) { + drawFootprints(canvasdict.highlight, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, true); + } + if (highlightedNet !== null) { + drawNets(canvasdict.highlight, canvasdict.layer, true); + } +} + +function drawHighlights() { + drawHighlightsOnLayer(allcanvas.front); + drawHighlightsOnLayer(allcanvas.back); +} + +function drawBackground(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.bg); + clearCanvas(canvasdict.fab); + clearCanvas(canvasdict.silk); + } + + drawNets(canvasdict.bg, canvasdict.layer, false); + drawFootprints(canvasdict.bg, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, false); + + drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom); + + var style = getComputedStyle(topmostdiv); + var edgeColor = style.getPropertyValue('--silkscreen-edge-color'); + var polygonColor = style.getPropertyValue('--silkscreen-polygon-color'); + var textColor = style.getPropertyValue('--silkscreen-text-color'); + if (settings.renderSilkscreen) { + drawBgLayer( + "silkscreen", canvasdict.silk, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } + edgeColor = style.getPropertyValue('--fabrication-edge-color'); + polygonColor = style.getPropertyValue('--fabrication-polygon-color'); + textColor = style.getPropertyValue('--fabrication-text-color'); + if (settings.renderFabrication) { + drawBgLayer( + "fabrication", canvasdict.fab, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } +} + +function prepareCanvas(canvas, flip, transform) { + var ctx = canvas.getContext("2d"); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.scale(transform.zoom, transform.zoom); + ctx.translate(transform.panx, transform.pany); + if (flip) { + ctx.scale(-1, 1); + } + ctx.translate(transform.x, transform.y); + ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + ctx.scale(transform.s, transform.s); +} + +function prepareLayer(canvasdict) { + var flip = (canvasdict.layer === "B"); + for (var c of ["bg", "fab", "silk", "highlight"]) { + prepareCanvas(canvasdict[c], flip, canvasdict.transform); + } +} + +function rotateVector(v, angle) { + angle = deg2rad(angle); + return [ + v[0] * Math.cos(angle) - v[1] * Math.sin(angle), + v[0] * Math.sin(angle) + v[1] * Math.cos(angle) + ]; +} + +function applyRotation(bbox, flip) { + var corners = [ + [bbox.minx, bbox.miny], + [bbox.minx, bbox.maxy], + [bbox.maxx, bbox.miny], + [bbox.maxx, bbox.maxy], + ]; + corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + return { + minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity), + miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity), + maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity), + maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity), + } +} + +function recalcLayerScale(layerdict, width, height) { + var flip = (layerdict.layer === "B"); + var bbox = applyRotation(pcbdata.edges_bbox, flip); + var scalefactor = 0.98 * Math.min( + width / (bbox.maxx - bbox.minx), + height / (bbox.maxy - bbox.miny) + ); + if (scalefactor < 0.1) { + scalefactor = 1; + } + layerdict.transform.s = scalefactor; + if (flip) { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5; + } else { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5; + } + layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5; + for (var c of ["bg", "fab", "silk", "highlight"]) { + canvas = layerdict[c]; + canvas.width = width; + canvas.height = height; + canvas.style.width = (width / devicePixelRatio) + "px"; + canvas.style.height = (height / devicePixelRatio) + "px"; + } +} + +function redrawCanvas(layerdict) { + prepareLayer(layerdict); + drawBackground(layerdict); + drawHighlightsOnLayer(layerdict); +} + +function resizeCanvas(layerdict) { + var canvasdivid = { + "F": "frontcanvas", + "B": "backcanvas" + } [layerdict.layer]; + var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio; + var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio; + recalcLayerScale(layerdict, width, height); + redrawCanvas(layerdict); +} + +function resizeAll() { + resizeCanvas(allcanvas.front); + resizeCanvas(allcanvas.back); +} + +function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) { + var A = x - x1; + var B = y - y1; + var C = x2 - x1; + var D = y2 - y1; + + var dot = A * C + B * D; + var len_sq = C * C + D * D; + var dx, dy; + if (len_sq == 0) { + // start and end of the segment coincide + dx = x - x1; + dy = y - y1; + } else { + var param = dot / len_sq; + var xx, yy; + if (param < 0) { + xx = x1; + yy = y1; + } else if (param > 1) { + xx = x2; + yy = y2; + } else { + xx = x1 + param * C; + yy = y1 + param * D; + } + dx = x - xx; + dy = y - yy; + } + return dx * dx + dy * dy <= d * d; +} + +function modulo(n, mod) { + return ((n % mod) + mod) % mod; +} + +function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) { + var dx = x - xc; + var dy = y - yc; + var r_sq = dx * dx + dy * dy; + var rmin = Math.max(0, radius - d); + var rmax = radius + d; + + if (r_sq < rmin * rmin || r_sq > rmax * rmax) + return false; + + var angle1 = modulo(deg2rad(startangle), 2 * Math.PI); + var dx1 = xc + radius * Math.cos(angle1) - x; + var dy1 = yc + radius * Math.sin(angle1) - y; + if (dx1 * dx1 + dy1 * dy1 <= d * d) + return true; + + var angle2 = modulo(deg2rad(endangle), 2 * Math.PI); + var dx2 = xc + radius * Math.cos(angle2) - x; + var dy2 = yc + radius * Math.sin(angle2) - y; + if (dx2 * dx2 + dy2 * dy2 <= d * d) + return true; + + var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI); + if (angle1 > angle2) + return (angle >= angle2 || angle <= angle1); + else + return (angle >= angle1 && angle <= angle2); +} + +function pointWithinPad(x, y, pad) { + var v = [x - pad.pos[0], y - pad.pos[1]]; + v = rotateVector(v, pad.angle); + if (pad.offset) { + v[0] -= pad.offset[0]; + v[1] -= pad.offset[1]; + } + return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v); +} + +function netHitScan(layer, x, y) { + // Check track segments + if (settings.renderTracks && pcbdata.tracks) { + for (var track of pcbdata.tracks[layer]) { + if ('radius' in track) { + if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) { + return track.net; + } + } else { + if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) { + return track.net; + } + } + } + } + // Check pads + if (settings.renderPads) { + for (var footprint of pcbdata.footprints) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) { + return pad.net; + } + } + } + } + return null; +} + +function pointWithinFootprintBbox(x, y, bbox) { + var v = [x - bbox.pos[0], y - bbox.pos[1]]; + v = rotateVector(v, bbox.angle); + return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] && + bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1]; +} + +function bboxHitScan(layer, x, y) { + var result = []; + for (var i = 0; i < pcbdata.footprints.length; i++) { + var footprint = pcbdata.footprints[i]; + if (footprint.layer == layer) { + if (pointWithinFootprintBbox(x, y, footprint.bbox)) { + result.push(i); + } + } + } + return result; +} + +function handlePointerDown(e, layerdict) { + if (e.button != 0 && e.button != 1) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + layerdict.pointerStates[e.pointerId] = { + distanceTravelled: 0, + lastX: e.offsetX, + lastY: e.offsetY, + downTime: Date.now(), + }; +} + +function handleMouseClick(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var x = e.offsetX; + var y = e.offsetY; + var t = layerdict.transform; + var flip = layerdict.layer === "B"; + if (flip) { + x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s; + } else { + x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s; + } + y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s; + var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)); + if ("nets" in pcbdata) { + var net = netHitScan(layerdict.layer, ...v); + if (net !== highlightedNet) { + netClicked(net); + } + } + if (highlightedNet === null) { + var footprints = bboxHitScan(layerdict.layer, ...v); + if (footprints.length > 0) { + footprintsClicked(footprints); + } + } +} + +function handlePointerLeave(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function resetTransform(layerdict) { + layerdict.transform.panx = 0; + layerdict.transform.pany = 0; + layerdict.transform.zoom = 1; + redrawCanvas(layerdict); +} + +function handlePointerUp(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + e.preventDefault(); + e.stopPropagation(); + + if (e.button == 2) { + // Reset pan and zoom on right click. + resetTransform(layerdict); + layerdict.anotherPointerTapped = false; + return; + } + + // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now + var ptr = layerdict.pointerStates[e.pointerId]; + ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY); + + if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) { + if (Object.keys(layerdict.pointerStates).length == 1) { + if (layerdict.anotherPointerTapped) { + // This is the second pointer coming off of a two-finger tap + resetTransform(layerdict); + } else { + // This is just a regular tap + handleMouseClick(e, layerdict); + } + layerdict.anotherPointerTapped = false; + } else { + // This is the first finger coming off of what could become a two-finger tap + layerdict.anotherPointerTapped = true; + } + } else { + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + layerdict.anotherPointerTapped = false; + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function handlePointerMove(e, layerdict) { + if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var thisPtr = layerdict.pointerStates[e.pointerId]; + + var dx = e.offsetX - thisPtr.lastX; + var dy = e.offsetY - thisPtr.lastY; + + // If this number is low on pointer up, we count the action as a click + thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy); + + if (Object.keys(layerdict.pointerStates).length == 1) { + // This is a simple drag + layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom; + layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom; + } else if (Object.keys(layerdict.pointerStates).length == 2) { + var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0]; + + var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2)); + var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2)); + + var scaleFactor = newDist / oldDist; + + if (scaleFactor != NaN) { + layerdict.transform.zoom *= scaleFactor; + + var zoomd = (1 - scaleFactor) / layerdict.transform.zoom; + layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd; + layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd; + } + } + + thisPtr.lastX = e.offsetX; + thisPtr.lastY = e.offsetY; + + if (settings.redrawOnDrag) { + redrawCanvas(layerdict); + } +} + +function handleMouseWheel(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + var t = layerdict.transform; + var wheeldelta = e.deltaY; + if (e.deltaMode == 1) { + // FF only, scroll by lines + wheeldelta *= 30; + } else if (e.deltaMode == 2) { + wheeldelta *= 300; + } + var m = Math.pow(1.1, -wheeldelta / 40); + // Limit amount of zoom per tick. + if (m > 2) { + m = 2; + } else if (m < 0.5) { + m = 0.5; + } + t.zoom *= m; + var zoomd = (1 - m) / t.zoom; + t.panx += devicePixelRatio * e.offsetX * zoomd; + t.pany += devicePixelRatio * e.offsetY * zoomd; + redrawCanvas(layerdict); +} + +function addMouseHandlers(div, layerdict) { + div.addEventListener("pointerdown", function(e) { + handlePointerDown(e, layerdict); + }); + div.addEventListener("pointermove", function(e) { + handlePointerMove(e, layerdict); + }); + div.addEventListener("pointerup", function(e) { + handlePointerUp(e, layerdict); + }); + var pointerleave = function(e) { + handlePointerLeave(e, layerdict); + } + div.addEventListener("pointercancel", pointerleave); + div.addEventListener("pointerleave", pointerleave); + div.addEventListener("pointerout", pointerleave); + + div.onwheel = function(e) { + handleMouseWheel(e, layerdict); + } + for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) { + element.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }, false); + } +} + +function setRedrawOnDrag(value) { + settings.redrawOnDrag = value; + writeStorage("redrawOnDrag", value); +} + +function setBoardRotation(value) { + settings.boardRotation = value * 5; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("rotationDegree").textContent = settings.boardRotation; + resizeAll(); +} + +function setOffsetBackRotation(value) { + settings.offsetBackRotation = value; + writeStorage("offsetBackRotation", value); + resizeAll(); +} + +function initRender() { + allcanvas = { + front: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("F_bg"), + fab: document.getElementById("F_fab"), + silk: document.getElementById("F_slk"), + highlight: document.getElementById("F_hl"), + layer: "F", + }, + back: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("B_bg"), + fab: document.getElementById("B_fab"), + silk: document.getElementById("B_slk"), + highlight: document.getElementById("B_hl"), + layer: "B", + } + }; + addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front); + addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back); +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* + * Table reordering via Drag'n'Drop + * Inspired by: https://htmldom.dev/drag-and-drop-table-column + */ + +function setBomHandlers() { + + const bom = document.getElementById('bomtable'); + + let dragName; + let placeHolderElements; + let draggingElement; + let forcePopulation; + let xOffset; + let yOffset; + let wasDragged; + + const mouseUpHandler = function(e) { + // Delete dragging element + draggingElement.remove(); + + // Make BOM selectable again + bom.style.removeProperty("userSelect"); + + // Remove listeners + document.removeEventListener('mousemove', mouseMoveHandler); + document.removeEventListener('mouseup', mouseUpHandler); + + if (wasDragged) { + // Redraw whole BOM + populateBomTable(); + } + } + + const mouseMoveHandler = function(e) { + // Notice the dragging + wasDragged = true; + + // Make the dragged element visible + draggingElement.style.removeProperty("display"); + + // Set elements position to mouse position + draggingElement.style.left = `${e.screenX - xOffset}px`; + draggingElement.style.top = `${e.screenY - yOffset}px`; + + // Forced redrawing of BOM table + if (forcePopulation) { + forcePopulation = false; + // Copy array + phe = Array.from(placeHolderElements); + // populate BOM table again + populateBomHeader(dragName, phe); + populateBomBody(dragName, phe); + } + + // Set up array of hidden columns + var hiddenColumns = Array.from(settings.hiddenColumns); + // In the ungrouped mode, quantity don't exist + if (settings.bommode === "ungrouped") + hiddenColumns.push("Quantity"); + // If no checkbox fields can be found, we consider them hidden + if (settings.checkboxes.length == 0) + hiddenColumns.push("checkboxes"); + + // Get table headers and group them into checkboxes, extrafields and normal headers + const bh = document.getElementById("bomhead"); + headers = Array.from(bh.querySelectorAll("th")) + headers.shift() // numCol is not part of the columnOrder + headerGroups = [] + lastCompoundClass = null; + for (i = 0; i < settings.columnOrder.length; i++) { + cElem = settings.columnOrder[i]; + if (hiddenColumns.includes(cElem)) { + // Hidden columns appear as a dummy element + headerGroups.push([]); + continue; + } + elem = headers.filter(e => getColumnOrderName(e) === cElem)[0]; + if (elem.classList.contains("bom-checkbox")) { + if (lastCompoundClass === "bom-checkbox") { + cbGroup = headerGroups.pop(); + cbGroup.push(elem); + headerGroups.push(cbGroup); + } else { + lastCompoundClass = "bom-checkbox"; + headerGroups.push([elem]) + } + } else { + headerGroups.push([elem]) + } + } + + // Copy settings.columnOrder + var columns = Array.from(settings.columnOrder) + + // Set up array with indices of hidden columns + var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e)); + var dragIndex = columns.indexOf(dragName); + var swapIndex = dragIndex; + var swapDone = false; + + // Check if the current dragged element is swapable with the left or right element + if (dragIndex > 0) { + // Get left headers boundingbox + swapIndex = dragIndex - 1; + while (hiddenIndices.includes(swapIndex) && swapIndex > 0) + swapIndex--; + if (!hiddenIndices.includes(swapIndex)) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX < box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + if ((!swapDone) && dragIndex < headerGroups.length - 1) { + // Get right headers boundingbox + swapIndex = dragIndex + 1; + while (hiddenIndices.includes(swapIndex)) + swapIndex++; + if (swapIndex < headerGroups.length) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX > box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + + // Write back change to storage + if (swapDone) { + settings.columnOrder = columns + writeStorage("columnOrder", JSON.stringify(columns)); + } + + } + + const mouseDownHandler = function(e) { + var target = e.target; + if (target.tagName.toLowerCase() != "td") + target = target.parentElement; + + // Used to check if a dragging has ever happened + wasDragged = false; + + // Create new element which will be displayed as the dragged column + draggingElement = document.createElement("div") + draggingElement.classList.add("dragging"); + draggingElement.style.display = "none"; + draggingElement.style.position = "absolute"; + draggingElement.style.overflow = "hidden"; + + // Get bomhead and bombody elements + const bh = document.getElementById("bomhead"); + const bb = document.getElementById("bombody"); + + // Get all compound headers for the current column + var compoundHeaders; + if (target.classList.contains("bom-checkbox")) { + compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox")); + } else { + compoundHeaders = [target]; + } + + // Create new table which will display the column + var newTable = document.createElement("table"); + newTable.classList.add("bom"); + newTable.style.background = "white"; + draggingElement.append(newTable); + + // Create new header element + var newHeader = document.createElement("thead"); + newTable.append(newHeader); + + // Set up array for storing all placeholder elements + placeHolderElements = []; + + // Add all compound headers to the new thead element and placeholders + compoundHeaders.forEach(function(h) { + clone = cloneElementWithDimensions(h); + newHeader.append(clone); + placeHolderElements.push(clone); + }); + + // Create new body element + var newBody = document.createElement("tbody"); + newTable.append(newBody); + + // Get indices for compound headers + var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e)); + + // For each row in the BOM body... + var rows = bb.querySelectorAll("tr"); + rows.forEach(function(row) { + // ..get the cells for the compound column + const tds = row.querySelectorAll("td"); + var copytds = idxs.map(i => tds[i]); + // Add them to the new element and the placeholders + var newRow = document.createElement("tr"); + copytds.forEach(function(td) { + clone = cloneElementWithDimensions(td); + newRow.append(clone); + placeHolderElements.push(clone); + }); + newBody.append(newRow); + }); + + // Compute width for compound header + var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0); + draggingElement.style.width = `${width}px`; + + // Insert the new dragging element and disable selection on BOM + bom.insertBefore(draggingElement, null); + bom.style.userSelect = "none"; + + // Determine the mouse position offset + xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft); + yOffset = e.screenY - compoundHeaders[0].offsetTop; + + // Get name for the column in settings.columnOrder + dragName = getColumnOrderName(target); + + // Change text and class for placeholder elements + placeHolderElements = placeHolderElements.map(function(e) { + newElem = cloneElementWithDimensions(e); + newElem.textContent = ""; + newElem.classList.add("placeholder"); + return newElem; + }); + + // On next mouse move, the whole BOM needs to be redrawn to show the placeholders + forcePopulation = true; + + // Add listeners for move and up on mouse + document.addEventListener('mousemove', mouseMoveHandler); + document.addEventListener('mouseup', mouseUpHandler); + } + + // In netlist mode, there is nothing to reorder + if (settings.bommode === "netlist") + return; + + // Add mouseDownHandler to every column except the numCol + bom.querySelectorAll("th") + .forEach(function(head) { + if (!head.classList.contains("numCol")) { + head.onmousedown = mouseDownHandler; + } + }); + +} + +function getBoundingClientRectFromMultiple(elements) { + var elems = Array.from(elements); + + if (elems.length == 0) + return null; + + var box = elems.shift() + .getBoundingClientRect(); + + elems.forEach(function(elem) { + var elembox = elem.getBoundingClientRect(); + box.left = Math.min(elembox.left, box.left); + box.top = Math.min(elembox.top, box.top); + box.width += elembox.width; + box.height = Math.max(elembox.height, box.height); + }); + + return box; +} + +function cloneElementWithDimensions(elem) { + var newElem = elem.cloneNode(true); + newElem.style.height = window.getComputedStyle(elem).height; + newElem.style.width = window.getComputedStyle(elem).width; + return newElem; +} + +function getBomTableHeaderIndex(elem) { + const bh = document.getElementById('bomhead'); + const ths = Array.from(bh.querySelectorAll("th")); + return ths.indexOf(elem); +} + +function getColumnOrderName(elem) { + var cname = elem.getAttribute("col_name"); + if (cname === "bom-checkbox") + return "checkboxes"; + else + return cname; +} + +function resizableGrid(tablehead) { + var cols = tablehead.firstElementChild.children; + var rowWidth = tablehead.offsetWidth; + + for (var i = 1; i < cols.length; i++) { + if (cols[i].classList.contains("bom-checkbox")) + continue; + cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%'; + } + + for (var i = 1; i < cols.length - 1; i++) { + var div = document.createElement('div'); + div.className = "column-width-handle"; + cols[i].appendChild(div); + setListeners(div); + } + + function setListeners(div) { + var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth; + + div.addEventListener('mousedown', function(e) { + e.preventDefault(); + e.stopPropagation(); + + curCol = e.target.parentElement; + nxtCol = curCol.nextElementSibling; + startX = e.pageX; + + var padding = paddingDiff(curCol); + + rowWidth = curCol.parentElement.offsetWidth; + curColWidth = curCol.clientWidth - padding; + nxtColWidth = nxtCol.clientWidth - padding; + }); + + document.addEventListener('mousemove', function(e) { + if (startX) { + var diffX = e.pageX - startX; + diffX = -Math.min(-diffX, curColWidth - 20); + diffX = Math.min(diffX, nxtColWidth - 20); + + curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%'; + nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%'; + console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`); + } + }); + + document.addEventListener('mouseup', function(e) { + curCol = undefined; + nxtCol = undefined; + startX = undefined; + nxtColWidth = undefined; + curColWidth = undefined + }); + } + + function paddingDiff(col) { + + if (getStyleVal(col, 'box-sizing') == 'border-box') { + return 0; + } + + var padLeft = getStyleVal(col, 'padding-left'); + var padRight = getStyleVal(col, 'padding-right'); + return (parseInt(padLeft) + parseInt(padRight)); + + } + + function getStyleVal(elm, css) { + return (window.getComputedStyle(elm, null).getPropertyValue(css)) + } +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* DOM manipulation and misc code */ + +var bomsplit; +var canvassplit; +var initDone = false; +var bomSortFunction = null; +var currentSortColumn = null; +var currentSortOrder = null; +var currentHighlightedRowId; +var highlightHandlers = []; +var footprintIndexToHandler = {}; +var netsToHandler = {}; +var markedFootprints = new Set(); +var highlightedFootprints = []; +var highlightedNet = null; +var lastClicked; + +function dbg(html) { + dbgdiv.innerHTML = html; +} + +function redrawIfInitDone() { + if (initDone) { + redrawCanvas(allcanvas.front); + redrawCanvas(allcanvas.back); + } +} + +function padsVisible(value) { + writeStorage("padsVisible", value); + settings.renderPads = value; + redrawIfInitDone(); +} + +function referencesVisible(value) { + writeStorage("referencesVisible", value); + settings.renderReferences = value; + redrawIfInitDone(); +} + +function valuesVisible(value) { + writeStorage("valuesVisible", value); + settings.renderValues = value; + redrawIfInitDone(); +} + +function tracksVisible(value) { + writeStorage("tracksVisible", value); + settings.renderTracks = value; + redrawIfInitDone(); +} + +function zonesVisible(value) { + writeStorage("zonesVisible", value); + settings.renderZones = value; + redrawIfInitDone(); +} + +function dnpOutline(value) { + writeStorage("dnpOutline", value); + settings.renderDnpOutline = value; + redrawIfInitDone(); +} + +function setDarkMode(value) { + if (value) { + topmostdiv.classList.add("dark"); + } else { + topmostdiv.classList.remove("dark"); + } + writeStorage("darkmode", value); + settings.darkMode = value; + redrawIfInitDone(); + if (initDone) { + populateBomTable(); + } +} + +function setShowBOMColumn(field, value) { + if (field === "references") { + var rl = document.getElementById("reflookup"); + rl.disabled = !value; + if (!value) { + rl.value = ""; + updateRefLookup(""); + } + } + + var n = settings.hiddenColumns.indexOf(field); + if (value) { + if (n != -1) { + settings.hiddenColumns.splice(n, 1); + } + } else { + if (n == -1) { + settings.hiddenColumns.push(field); + } + } + + writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns)); + + if (initDone) { + populateBomTable(); + } + + redrawIfInitDone(); +} + + +function setFullscreen(value) { + if (value) { + document.documentElement.requestFullscreen(); + } else { + document.exitFullscreen(); + } +} + +function fabricationVisible(value) { + writeStorage("fabricationVisible", value); + settings.renderFabrication = value; + redrawIfInitDone(); +} + +function silkscreenVisible(value) { + writeStorage("silkscreenVisible", value); + settings.renderSilkscreen = value; + redrawIfInitDone(); +} + +function setHighlightPin1(value) { + writeStorage("highlightpin1", value); + settings.highlightpin1 = value; + redrawIfInitDone(); +} + +function 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 updateNetColors() { + writeStorage("netColors", JSON.stringify(settings.netColors)); + redrawIfInitDone(); +} + +function netColorChangeHandler(net) { + return (event) => { + settings.netColors[net] = event.target.value; + updateNetColors(); + } +} + +function netColorRightClick(net) { + return (event) => { + if(event.button == 2) { + event.preventDefault(); + event.stopPropagation(); + + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + event.target.value = defaultNetColor; + delete settings.netColors[net]; + updateNetColors(); + } + } +} + +function entryMatches(entry) { + if (settings.bommode == "netlist") { + // entry is just a net name + return entry.toLowerCase().indexOf(filter) >= 0; + } + // check refs + if (!settings.hiddenColumns.includes("references")) { + for (var ref of entry) { + if (ref[0].toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + // check fields + for (var i in config.fields) { + var f = config.fields[i]; + if (!settings.hiddenColumns.includes(f)) { + for (var ref of entry) { + if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + } + return false; +} + +function findRefInEntry(entry) { + return entry.filter(r => r[0].toLowerCase() == reflookup); +} + +function highlightFilter(s) { + if (!filter) { + return s; + } + var parts = s.toLowerCase().split(filter); + if (parts.length == 1) { + return s; + } + var r = ""; + var pos = 0; + for (var i in parts) { + if (i > 0) { + r += '<mark class="highlight">' + + s.substring(pos, pos + filter.length) + + '</mark>'; + pos += filter.length; + } + r += s.substring(pos, pos + parts[i].length); + pos += parts[i].length; + } + return r; +} + +function checkboxSetUnsetAllHandler(checkboxname) { + return function () { + var checkboxnum = 0; + while (checkboxnum < settings.checkboxes.length && + settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) { + checkboxnum++; + } + if (checkboxnum >= settings.checkboxes.length) { + return; + } + var allset = true; + var checkbox; + var row; + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + if (!checkbox.checked || checkbox.indeterminate) { + allset = false; + break; + } + } + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + checkbox.checked = !allset; + checkbox.indeterminate = false; + checkbox.onchange(); + } + } +} + +function createColumnHeader(name, cls, comparator, is_checkbox = false) { + var th = document.createElement("TH"); + th.innerHTML = name; + th.classList.add(cls); + if (is_checkbox) + th.setAttribute("col_name", "bom-checkbox"); + else + th.setAttribute("col_name", name); + var span = document.createElement("SPAN"); + span.classList.add("sortmark"); + span.classList.add("none"); + th.appendChild(span); + var spacer = document.createElement("div"); + spacer.className = "column-spacer"; + th.appendChild(spacer); + spacer.onclick = function () { + if (currentSortColumn && th !== currentSortColumn) { + // Currently sorted by another column + currentSortColumn.childNodes[1].classList.remove(currentSortOrder); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + if (currentSortColumn && th === currentSortColumn) { + // Already sorted by this column + if (currentSortOrder == "asc") { + // Sort by this column, descending order + bomSortFunction = function (a, b) { + return -comparator(a, b); + } + currentSortColumn.childNodes[1].classList.remove("asc"); + currentSortColumn.childNodes[1].classList.add("desc"); + currentSortOrder = "desc"; + } else { + // Unsort + bomSortFunction = null; + currentSortColumn.childNodes[1].classList.remove("desc"); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + } else { + // Sort by this column, ascending order + bomSortFunction = comparator; + currentSortColumn = th; + currentSortColumn.childNodes[1].classList.remove("none"); + currentSortColumn.childNodes[1].classList.add("asc"); + currentSortOrder = "asc"; + } + populateBomBody(); + } + if (is_checkbox) { + spacer.onclick = fancyDblClickHandler( + spacer, spacer.onclick, checkboxSetUnsetAllHandler(name)); + } + return th; +} + +function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) { + while (bomhead.firstChild) { + bomhead.removeChild(bomhead.firstChild); + } + var tr = document.createElement("TR"); + var th = document.createElement("TH"); + th.classList.add("numCol"); + + var vismenu = document.createElement("div"); + vismenu.id = "vismenu"; + vismenu.classList.add("menu"); + + var visbutton = document.createElement("div"); + visbutton.classList.add("visbtn"); + visbutton.classList.add("hideonprint"); + + var viscontent = document.createElement("div"); + viscontent.classList.add("menu-content"); + viscontent.id = "vismenu-content"; + + settings.columnOrder.forEach(column => { + if (typeof column !== "string") + return; + + // Skip empty columns + if (column === "checkboxes" && settings.checkboxes.length == 0) + return; + else if (column === "Quantity" && settings.bommode == "ungrouped") + return; + + var label = document.createElement("label"); + label.classList.add("menu-label"); + + var input = document.createElement("input"); + input.classList.add("visibility_checkbox"); + input.type = "checkbox"; + input.onchange = function (e) { + setShowBOMColumn(column, e.target.checked) + }; + input.checked = !(settings.hiddenColumns.includes(column)); + + label.appendChild(input); + if (column.length > 0) + label.append(column[0].toUpperCase() + column.slice(1)); + + viscontent.appendChild(label); + }); + + viscontent.childNodes[0].classList.add("menu-label-top"); + + vismenu.appendChild(visbutton); + if (settings.bommode != "netlist") { + vismenu.appendChild(viscontent); + th.appendChild(vismenu); + } + tr.appendChild(th); + + var checkboxCompareClosure = function (checkbox) { + return (a, b) => { + var stateA = getCheckboxState(checkbox, a); + var stateB = getCheckboxState(checkbox, b); + if (stateA > stateB) return -1; + if (stateA < stateB) return 1; + return 0; + } + } + var stringFieldCompareClosure = function (fieldIndex) { + return (a, b) => { + var fa = pcbdata.bom.fields[a[0][1]][fieldIndex]; + var fb = pcbdata.bom.fields[b[0][1]][fieldIndex]; + if (fa != fb) return fa > fb ? 1 : -1; + else return 0; + } + } + var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/; + var compareRefs = (a, b) => { + var ra = referenceRegex.exec(a); + var rb = referenceRegex.exec(b); + if (ra === null || rb === null) { + if (a != b) return a > b ? 1 : -1; + return 0; + } else { + if (ra.groups.prefix != rb.groups.prefix) { + return ra.groups.prefix > rb.groups.prefix ? 1 : -1; + } + if (ra.groups.number != rb.groups.number) { + return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1; + } + return 0; + } + } + if (settings.bommode == "netlist") { + tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => { + if (a > b) return -1; + if (a < b) return 1; + return 0; + })); + tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => { + return 0; + })); + } else { + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + var valueIndex = config.fields.indexOf("Value"); + var footprintIndex = config.fields.indexOf("Footprint"); + columns.forEach((column) => { + if (column === placeHolderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + th = createColumnHeader( + checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true); + tr.appendChild(th); + } + } else if (column === "References") { + tr.appendChild(createColumnHeader("References", "references", (a, b) => { + var i = 0; + while (i < a.length && i < b.length) { + if (a[i] != 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) { + const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/; + while (bom.firstChild) { + bom.removeChild(bom.firstChild); + } + highlightHandlers = []; + footprintIndexToHandler = {}; + netsToHandler = {}; + currentHighlightedRowId = null; + var first = true; + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + 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); + var color = settings.netColors[netname] || defaultNetColor; + td = document.createElement("TD"); + var colorBox = document.createElement("INPUT"); + colorBox.type = "color"; + colorBox.value = color; + colorBox.onchange = netColorChangeHandler(netname); + colorBox.onmouseup = netColorRightClick(netname); + colorBox.oncontextmenu = (e) => e.preventDefault(); + td.appendChild(colorBox); + td.classList.add("color-column"); + tr.appendChild(td); + } else { + if (reflookup) { + references = findRefInEntry(bomentry); + if (references.length == 0) { + continue; + } + } else { + references = bomentry; + } + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + columns.forEach((column) => { + if (column === placeholderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + if (checkbox) { + td = document.createElement("TD"); + var input = document.createElement("input"); + input.type = "checkbox"; + input.onchange = 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"); + var output = new Array(); + for (let item of valueSet) { + const visible = highlightFilter(String(item)); + if (typeof item === 'string' && item.match(urlRegex)) { + output.push(`<a href="${item}" target="_blank">${visible}</a>`); + } else { + output.push(visible); + } + } + td.innerHTML = output.join(", "); + tr.appendChild(td); + } + }); + } + bom.appendChild(tr); + var handler = createRowHighlightHandler(tr.id, references, netname); + 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("topmostdiv").style.height = ""; + document.getElementById("topmostdiv").style.display = "block"; + break; + case 'top-bottom': + document.getElementById("tb-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.remove("split-horizontal"); + document.getElementById("canvasdiv").classList.remove("split-horizontal"); + document.getElementById("frontcanvas").classList.add("split-horizontal"); + document.getElementById("backcanvas").classList.add("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + direction: "vertical", + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + onDragEnd: resizeAll + }); + break; + case 'left-right': + document.getElementById("lr-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.add("split-horizontal"); + document.getElementById("canvasdiv").classList.add("split-horizontal"); + document.getElementById("frontcanvas").classList.remove("split-horizontal"); + document.getElementById("backcanvas").classList.remove("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + direction: "vertical", + onDragEnd: resizeAll + }); + } + settings.bomlayout = layout; + writeStorage("bomlayout", layout); + changeCanvasLayout(settings.canvaslayout); +} + +function changeBomMode(mode) { + document.getElementById("bom-grouped-btn").classList.remove("depressed"); + document.getElementById("bom-ungrouped-btn").classList.remove("depressed"); + document.getElementById("bom-netlist-btn").classList.remove("depressed"); + var chkbxs = document.getElementsByClassName("visibility_checkbox"); + + switch (mode) { + case 'grouped': + document.getElementById("bom-grouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'ungrouped': + document.getElementById("bom-ungrouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'netlist': + document.getElementById("bom-netlist-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = true; + } + } + + writeStorage("bommode", mode); + if (mode != settings.bommode) { + settings.bommode = mode; + bomSortFunction = null; + currentSortColumn = null; + currentSortOrder = null; + clearHighlightedFootprints(); + } + populateBomTable(); +} + +function focusFilterField() { + focusInputField(document.getElementById("filter")); +} + +function focusRefLookupField() { + focusInputField(document.getElementById("reflookup")); +} + +function toggleBomCheckbox(bomrowid, checkboxnum) { + if (!bomrowid || checkboxnum > settings.checkboxes.length) { + return; + } + var bomrow = document.getElementById(bomrowid); + var 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) + "%)"; +} + +function constrain(number, min, max){ + return Math.min(Math.max(parseInt(number), min), max); +} + +document.onkeydown = function (e) { + switch (e.key) { + case "n": + if (document.activeElement.type == "text") { + return; + } + if (currentHighlightedRowId !== null) { + checkBomCheckbox(currentHighlightedRowId, "placed"); + highlightNextRow(); + e.preventDefault(); + } + break; + case "ArrowUp": + highlightPreviousRow(); + e.preventDefault(); + break; + case "ArrowDown": + highlightNextRow(); + e.preventDefault(); + break; + case "ArrowLeft": + case "ArrowRight": + if (document.activeElement.type != "text"){ + e.preventDefault(); + let boardRotationElement = document.getElementById("boardRotation") + settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5 + if (e.key == "ArrowLeft"){ + settings.boardRotation += 3; // 15 degrees + } + else{ + settings.boardRotation -= 3; + } + settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max); + boardRotationElement.value = settings.boardRotation + setBoardRotation(settings.boardRotation); + } + break; + default: + break; + } + if (e.altKey) { + switch (e.key) { + case "f": + focusFilterField(); + e.preventDefault(); + break; + case "r": + focusRefLookupField(); + e.preventDefault(); + break; + case "z": + changeBomLayout("bom-only"); + e.preventDefault(); + break; + case "x": + changeBomLayout("left-right"); + e.preventDefault(); + break; + case "c": + changeBomLayout("top-bottom"); + e.preventDefault(); + break; + case "v": + changeCanvasLayout("F"); + e.preventDefault(); + break; + case "b": + changeCanvasLayout("FB"); + e.preventDefault(); + break; + case "n": + changeCanvasLayout("B"); + e.preventDefault(); + break; + default: + break; + } + if (e.key >= '1' && e.key <= '9') { + toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key)); + e.preventDefault(); + } + } +} + +function hideNetlistButton() { + document.getElementById("bom-ungrouped-btn").classList.remove("middle-button"); + document.getElementById("bom-ungrouped-btn").classList.add("right-most-button"); + document.getElementById("bom-netlist-btn").style.display = "none"; +} + +function topToggle() { + var top = document.getElementById("top"); + var toptoggle = document.getElementById("toptoggle"); + if (top.style.display === "none") { + top.style.display = "flex"; + toptoggle.classList.remove("flipped"); + } else { + top.style.display = "none"; + toptoggle.classList.add("flipped"); + } +} + +window.onload = function (e) { + 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); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => { +// for(var tr of bom.childNodes) { +// tr.onclick = tr.onmousemove; +// tr.onmousemove = null; +// }; +// }); + +/////////////////////////////////////////////// + </script> +</head> + +<body> + +<div id="topmostdiv" class="topmostdiv"> + <div id="top"> + <div id="fileinfodiv"> + <table class="fileinfo"> + <tbody> + <tr> + <td id="title" class="title" style="width: 70%"> + Title + </td> + <td id="revision" class="title" style="width: 30%"> + Revision + </td> + </tr> + <tr> + <td id="company"> + Company + </td> + <td id="filedate"> + Date + </td> + </tr> + </tbody> + </table> + </div> + <div id="bomcontrols"> + <div class="hideonprint menu"> + <button class="menubtn"></button> + <div class="menu-content"> + <label class="menu-label menu-label-top" style="width: calc(50% - 18px)"> + <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)"> + Dark mode + </label><!-- This comment eats space! All of it! + --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;"> + <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)"> + Full Screen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)"> + Fab layer + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)"> + Silkscreen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)"> + References + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)"> + Values + </label> + <div id="tracksAndZonesCheckboxes"> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)"> + Tracks + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)"> + Zones + </label> + </div> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)"> + Pads + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)"> + DNP outlined + </label> + <label class="menu-label"> + <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)"> + Continuous redraw on drag + </label> + <label class="menu-label"> + Highlight first pin + <form id="highlightpin1"> + <div class="flexbox"> + <label> + <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')"> + None + </label> + <label> + <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')"> + All + </label> + <label> + <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')"> + Selected + </label> + </div> + </form> + </label> + <label class="menu-label"> + <span>Board rotation</span> + <span style="float: right"><span id="rotationDegree">0</span>°</span> + <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)"> + </label> + <label class="menu-label"> + <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)"> + Offset back rotation + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Bom checkboxes</div> + <input id="bomCheckboxes" class="menu-textbox" type=text + oninput="setBomCheckboxes(this.value)"> + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Mark when checked</div> + <div id="markWhenCheckedContainer"></div> + </label> + <label class="menu-label"> + <span class="shameless-plug"> + <span>Created using</span> + <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a> + <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a> + </span> + </label> + </div> + </div> + <div class="button-container hideonprint"> + <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')" + title="Front only">F + </button> + <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')" + title="Front and Back">FB + </button> + <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')" + title="Back only">B + </button> + </div> + <div class="button-container hideonprint"> + <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')" + title="BOM only"></button> + <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')" + title="BOM left, drawings right"></button> + <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')" + title="BOM top, drawings bot"></button> + </div> + <div class="button-container hideonprint"> + <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')" + title="Grouped BOM"></button> + <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')" + title="Ungrouped BOM"></button> + <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')" + title="Netlist"></button> + </div> + <div class="hideonprint menu"> + <button class="statsbtn"></button> + <div class="menu-content"> + <table class="stats"> + <tbody> + <tr> + <td width="40%">Board stats</td> + <td>Front</td> + <td>Back</td> + <td>Total</td> + </tr> + <tr> + <td>Components</td> + <td id="stats-components-front">~</td> + <td id="stats-components-back">~</td> + <td id="stats-components-total">~</td> + </tr> + <tr> + <td>Groups</td> + <td id="stats-groups-front">~</td> + <td id="stats-groups-back">~</td> + <td id="stats-groups-total">~</td> + </tr> + <tr> + <td>SMD pads</td> + <td id="stats-smd-pads-front">~</td> + <td id="stats-smd-pads-back">~</td> + <td id="stats-smd-pads-total">~</td> + </tr> + <tr> + <td>TH pads</td> + <td colspan=3 id="stats-th-pads">~</td> + </tr> + </tbody> + </table> + <table class="stats"> + <col width="40%"/><col /> + <tbody id="checkbox-stats"> + <tr> + <td colspan=2 style="border-top: 0">Checkboxes</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="hideonprint menu"> + <button class="iobtn"></button> + <div class="menu-content"> + <div class="menu-label menu-label-top"> + <div style="margin-left: 5px;">Save board image</div> + <div class="flexbox"> + <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + <span>X</span> + <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + </div> + <label> + <input id="render-save-transparent" type="checkbox"> + Transparent background + </label> + <div class="flexbox"> + <button class="savebtn" onclick="saveImage('F')">Front</button> + <button class="savebtn" onclick="saveImage('B')">Back</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Config and checkbox state</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveSettings()">Export</button> + <button class="savebtn" onclick="loadSettings()">Import</button> + <button class="savebtn" onclick="resetSettings()">Reset</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Save bom table as</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveBomTable('csv')">csv</button> + <button class="savebtn" onclick="saveBomTable('txt')">txt</button> + </div> + </div> + </div> + </div> + </div> + </div> + <div id="topdivider"> + <div class="hideonprint"> + <div id="toptoggle" onclick="topToggle()">︽</div> + </div> + </div> + <div id="bot" class="split" style="flex: 1 1"> + <div id="bomdiv" class="split split-horizontal"> + <div style="width: 100%"> + <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup" + oninput="updateRefLookup(this.value)"> + <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter" + oninput="updateFilter(this.value)"> + <div class="button-container hideonprint" style="float: left; margin: 0;"> + <button id="copy" title="Copy bom table to clipboard" + onclick="saveBomTable('clipboard')"></button> + </div> + </div> + <div id="dbg"></div> + <table class="bom" id="bomtable"> + <thead id="bomhead"> + </thead> + <tbody id="bombody"> + </tbody> + </table> + </div> + <div id="canvasdiv" class="split split-horizontal"> + <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + </div> + </div> +</div> + +</body> + +</html> diff --git a/doc/build/html/source_rst/hardware/mb/mb_2023.html b/doc/build/html/source_rst/hardware/mb/mb_2023.html index f44403bd24bfa3fbcfc97a3aeb213f1cffbfa64d..563238dcfc79669b62f59c0a575dbdc4e3aaaa9a 100644 --- a/doc/build/html/source_rst/hardware/mb/mb_2023.html +++ b/doc/build/html/source_rst/hardware/mb/mb_2023.html @@ -1,25 +1,27 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Measurement board v2023 — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script> - <script src="../../../_static/jquery.js"></script> - <script src="../../../_static/underscore.js"></script> - <script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../../_static/doctools.js"></script> + <script src="../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../../genindex.html" /> <link rel="search" title="Search" href="../../../search.html" /> - <link rel="next" title="Measurement board v2024" href="mb_2024.html" /> + <link rel="next" title="Measurement board 2024.0.2" href="mb_2024.html" /> <link rel="prev" title="Measurement board" href="../mb.html" /> </head> @@ -47,10 +49,11 @@ <li class="toctree-l1 current"><a class="reference internal" href="../../hardware.html">Hardware</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="../hw_info.html">OhmPi electronic design</a></li> <li class="toctree-l2 current"><a class="reference internal" href="../mb.html">Measurement board</a><ul class="current"> -<li class="toctree-l3"><a class="reference internal" href="../mb.html#recognize-the-measurement-board">Recognize the measurement board</a></li> +<li class="toctree-l3"><a class="reference internal" href="../mb.html#recognize-the-version-of-the-measurement-board">Recognize the version of the measurement board</a></li> <li class="toctree-l3 current"><a class="reference internal" href="../mb.html#specifications">Specifications</a><ul class="current"> <li class="toctree-l4 current"><a class="current reference internal" href="#">Measurement board v2023</a></li> -<li class="toctree-l4"><a class="reference internal" href="mb_2024.html">Measurement board v2024</a></li> +<li class="toctree-l4"><a class="reference internal" href="mb_2024.html">Measurement board 2024.0.2</a></li> +<li class="toctree-l4"><a class="reference internal" href="mb_2024.html#part-a-assembly-of-the-measurement-board"><strong>PART A</strong> Assembly of the measurement board</a></li> </ul> </li> </ul> @@ -101,100 +104,24 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="measurement-board-v2023"> -<h1>Measurement board v2023<a class="headerlink" href="#measurement-board-v2023" title="Permalink to this heading">ïƒ</a></h1> -<section id="specifications"> -<h2>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading">ïƒ</a></h2> -<table class="docutils align-default"> -<thead> -<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th> -<th class="head"><p><strong>V1.0x</strong></p></th> -<th class="head"><p>Units</p></th> -<th class="head"><p><strong>v2023</strong></p></th> -<th class="head"><p>Units</p></th> -</tr> -</thead> -<tbody> -<tr class="row-even"><td><p>Electrodes</p></td> -<td><p>32</p></td> -<td></td> -<td><p>64 to 128</p></td> -<td></td> -</tr> -<tr class="row-odd"><td><p>Operating temperature</p></td> -<td><p>-0 to 50</p></td> -<td><p>°c</p></td> -<td><p>-25 to 50</p></td> -<td><p>°C</p></td> -</tr> -<tr class="row-even"><td><p>Power consumption of CPU and -control system</p></td> -<td><p>18.5</p></td> -<td><p>W</p></td> -<td><p>18.5</p></td> -<td><p>W</p></td> -</tr> -<tr class="row-odd"><td><p>Voltage injection</p></td> -<td><p>12</p></td> -<td><p>V</p></td> -<td><p>12</p></td> -<td><p>V</p></td> -</tr> -<tr class="row-even"><td><p>Battery</p></td> -<td><p>9</p></td> -<td><p>V</p></td> -<td><p>12</p></td> -<td><p>V</p></td> -</tr> -<tr class="row-odd"><td><p>Current</p></td> -<td><p>0 to 40</p></td> -<td><p>mA</p></td> -<td><p>0 to 40</p></td> -<td><p>mA</p></td> -</tr> -<tr class="row-even"><td><p>Min pulse duration</p></td> -<td><p>150</p></td> -<td><p>ms</p></td> -<td><p>150</p></td> -<td><p>ms</p></td> -</tr> -<tr class="row-odd"><td><p>Input impedance</p></td> -<td><p>80</p></td> -<td><p>MOhm</p></td> -<td><p>80</p></td> -<td><p>MOhm</p></td> -</tr> -<tr class="row-even"><td><p>Data storage</p></td> -<td><p>micro SD card</p></td> -<td></td> -<td><p>micro SD card</p></td> -<td></td> -</tr> -<tr class="row-odd"><td><p>Resolution</p></td> -<td><p>0.01</p></td> -<td><p>Ohm</p></td> -<td><p>0.01</p></td> -<td><p>Ohm</p></td> -</tr> -</tbody> -</table> -</section> +<h1>Measurement board v2023<a class="headerlink" href="#measurement-board-v2023" title="Link to this heading">ïƒ</a></h1> <section id="part-a-assembly-of-the-measurement-board"> -<h2><strong>PART A</strong> Assembly of the measurement board<a class="headerlink" href="#part-a-assembly-of-the-measurement-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART A</strong> Assembly of the measurement board<a class="headerlink" href="#part-a-assembly-of-the-measurement-board" title="Link to this heading">ïƒ</a></h2> <section id="required-components"> -<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading">ïƒ</a></h3> +<h3>Required components<a class="headerlink" href="#required-components" title="Link to this heading">ïƒ</a></h3> <figure class="align-center"> <a class="reference internal image-reference" href="../../../_images/00_mes_board_components.jpg"><img alt="alternate text" src="../../../_images/00_mes_board_components.jpg" style="width: 600px; height: 450px;" /></a> </figure> <table class="docutils align-default" id="id1"> -<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 9%" /> -<col style="width: 9%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 9.2%" /> +<col style="width: 9.2%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Component</p></th> @@ -409,7 +336,7 @@ control system</p></td> </table> </section> <section id="description"> -<h3>Description<a class="headerlink" href="#description" title="Permalink to this heading">ïƒ</a></h3> +<h3>Description<a class="headerlink" href="#description" title="Link to this heading">ïƒ</a></h3> <figure class="align-center"> <a class="reference internal image-reference" href="../../../_images/schema_measurement_board.jpg"><img alt="alternate text" src="../../../_images/schema_measurement_board.jpg" style="width: 600px; height: 450px;" /></a> </figure> @@ -669,7 +596,7 @@ corners)</p></td> </section> </section> <section id="part-b-start-up-of-the-measurement-board"> -<h2><strong>PART B</strong> Start-up of the measurement board<a class="headerlink" href="#part-b-start-up-of-the-measurement-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART B</strong> Start-up of the measurement board<a class="headerlink" href="#part-b-start-up-of-the-measurement-board" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-default"> <tbody> <tr class="row-odd"><td><p><strong>Required components</strong></p></td> @@ -677,15 +604,15 @@ corners)</p></td> </tbody> </table> <table class="docutils align-default" id="id2"> -<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id2" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id2" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 9%" /> -<col style="width: 9%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 9.2%" /> +<col style="width: 9.2%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Component</p></th> @@ -779,7 +706,7 @@ Raspberry Pi’s power port.</p></td> </table> </section> <section id="part-c-check-the-measurement-board"> -<h2><strong>PART C</strong> Check the measurement board<a class="headerlink" href="#part-c-check-the-measurement-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART C</strong> Check the measurement board<a class="headerlink" href="#part-c-check-the-measurement-board" title="Link to this heading">ïƒ</a></h2> <blockquote> <div><p>Run the terminal, and write</p> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">i2cdetect</span> <span class="o">-</span><span class="n">y</span> <span class="mi">1</span> @@ -897,7 +824,7 @@ works you should get the following result (220 Ohm)</p></td> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <a href="../mb.html" class="btn btn-neutral float-left" title="Measurement board" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> - <a href="mb_2024.html" class="btn btn-neutral float-right" title="Measurement board v2024" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> + <a href="mb_2024.html" class="btn btn-neutral float-right" title="Measurement board 2024.0.2" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> <hr/> diff --git a/doc/build/html/source_rst/hardware/mb/mb_2024.html b/doc/build/html/source_rst/hardware/mb/mb_2024.html index 6cdcafa12bad8da13050bfdd556dff0da3e44b8a..6e91ef105a0a76c2e3b8a9b480c9057242bbed79 100644 --- a/doc/build/html/source_rst/hardware/mb/mb_2024.html +++ b/doc/build/html/source_rst/hardware/mb/mb_2024.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>Measurement board v2024 — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" /> + <title>Measurement board 2024.0.2 — OhmPi v2024rc documentation</title> + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script> - <script src="../../../_static/jquery.js"></script> - <script src="../../../_static/underscore.js"></script> - <script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../../_static/doctools.js"></script> + <script src="../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../../genindex.html" /> <link rel="search" title="Search" href="../../../search.html" /> @@ -47,9 +49,11 @@ <li class="toctree-l1 current"><a class="reference internal" href="../../hardware.html">Hardware</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="../hw_info.html">OhmPi electronic design</a></li> <li class="toctree-l2 current"><a class="reference internal" href="../mb.html">Measurement board</a><ul class="current"> -<li class="toctree-l3 current"><a class="reference internal" href="../mb.html#specifications">Specifications</a><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../mb.html#recognize-the-version-of-the-measurement-board">Recognize the version of the measurement board</a></li> +<li class="toctree-l3"><a class="reference internal" href="../mb.html#specifications">Specifications</a></li> +<li class="toctree-l3 current"><a class="reference internal" href="../mb.html#assemble-you-measurement-board">Assemble you measurement board:</a><ul class="current"> <li class="toctree-l4"><a class="reference internal" href="mb_2023.html">Measurement board v2023</a></li> -<li class="toctree-l4 current"><a class="current reference internal" href="#">Measurement board v2024</a></li> +<li class="toctree-l4 current"><a class="current reference internal" href="#">Measurement board 2024.0.2</a></li> </ul> </li> </ul> @@ -85,7 +89,7 @@ <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li> <li class="breadcrumb-item"><a href="../../hardware.html">Hardware</a></li> <li class="breadcrumb-item"><a href="../mb.html">Measurement board</a></li> - <li class="breadcrumb-item active">Measurement board v2024</li> + <li class="breadcrumb-item active">Measurement board 2024.0.2</li> <li class="wy-breadcrumbs-aside"> <a href="../../../_sources/source_rst/hardware/mb/mb_2024.rst.txt" rel="nofollow"> View page source</a> </li> @@ -99,9 +103,245 @@ <p class="admonition-title">Warning</p> <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> -<section id="measurement-board-v2024"> -<h1>Measurement board v2024<a class="headerlink" href="#measurement-board-v2024" title="Permalink to this heading">ïƒ</a></h1> -<p>You can also include a file directly:</p> +<section id="measurement-board-2024-0-2"> +<h1>Measurement board 2024.0.2<a class="headerlink" href="#measurement-board-2024-0-2" title="Link to this heading">ïƒ</a></h1> +<p>The 2024.0.2 measurement board has been developed to replace the 2023.0.1 measurement board. It offers superior performance compared to its predecessor. +The current measurement component has not evolved and presents no major differences. However, the major upgrade is the Mikroe-1887 module. Specifically, +it provides electrical isolation for the Vmn measurement set. This isolation allows for injection voltages (Vab) up to 200V</p> +<section id="part-a-assembly-of-the-measurement-board"> +<h2><strong>PART A</strong> Assembly of the measurement board<a class="headerlink" href="#part-a-assembly-of-the-measurement-board" title="Link to this heading">ïƒ</a></h2> +</section> +<section id="required-components"> +<h2>Required components<a class="headerlink" href="#required-components" title="Link to this heading">ïƒ</a></h2> +<p><a class="reference external" href="ibom.html">Interactive BOM list</a></p> +<figure class="align-center"> +<a class="reference internal image-reference" href="../../../_images/32.jpg"><img alt="alternate text" src="../../../_images/32.jpg" style="width: 700px; height: 450px;" /></a> +</figure> +<table class="docutils align-default" id="id1"> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Link to this table">ïƒ</a></caption> +<colgroup> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 9.2%" /> +<col style="width: 9.2%" /> +</colgroup> +<thead> +<tr class="row-odd"><th class="head"><p>Component</p></th> +<th class="head"><p>Number</p></th> +<th class="head"><p>Cost per unit €</p></th> +<th class="head"><p>Total cost €</p></th> +<th class="head"><p>Manufacturer</p></th> +<th class="head"><p>Manufacturer s reference</p></th> +<th class="head"><p>Web reference</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>Raspberry Pi 4 Model B</p></td> +<td><p>1</p></td> +<td><p>58,75</p></td> +<td><p>58,75</p></td> +<td><p>Raspberry</p></td> +<td><p>Raspberry Pi 4 Model B</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Seeed-Studio/102110421?qs=7MVldsJ5UaxeN3LYyh3sqw%3D%3D">https://www.mouser.fr/ProductDetail/Seeed-Studio/102110421?qs=7MVldsJ5UaxeN3LYyh3sqw%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>LM158N AMP-o</p></td> +<td><p>2</p></td> +<td><p>14,5</p></td> +<td><p>58</p></td> +<td><p>Texas Instruments</p></td> +<td><p>LM358AN/NOPB</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Texas-Instruments/LM158J?qs=X1J7HmVL2ZH8vpEfMl8%2FFQ%3D%3D">https://www.mouser.fr/ProductDetail/Texas-Instruments/LM158J?qs=X1J7HmVL2ZH8vpEfMl8%2FFQ%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Printed circuit board</p></td> +<td><p>1</p></td> +<td><p>12</p></td> +<td><p>12</p></td> +<td><p>Asler</p></td> +<td><ul class="simple"> +<li></li> +</ul> +</td> +<td><ul class="simple"> +<li></li> +</ul> +</td> +</tr> +<tr class="row-odd"><td><p>ADS1115</p></td> +<td><p>2</p></td> +<td><p>11,9</p></td> +<td><p>23,8</p></td> +<td><p>Adafruit</p></td> +<td><p>1085</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/1085?qs=%2Fha2pyFaduhE%2FOGzuTWIQ9Iz5VjaqFOYugqAlGxpEcKiGrQvF4hn%252Bg%3D%3D">https://www.mouser.fr/ProductDetail/Adafruit/1085?qs=%2Fha2pyFaduhE%2FOGzuTWIQ9Iz5VjaqFOYugqAlGxpEcKiGrQvF4hn%252Bg%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Capacitor 100nF 50Vdc 10% Ceramic</p></td> +<td><p>3</p></td> +<td><p>0,2</p></td> +<td><p>0,8</p></td> +<td><p>KEMET</p></td> +<td><p>C320C104K1</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/KEMET/C320C104K1R5TA7303?qs=c4UyoTs%2FLq1th4mcyOeTmA%3D%3D">https://www.mouser.fr/ProductDetail/KEMET/C320C104K1R5TA7303?qs=c4UyoTs%2FLq1th4mcyOeTmA%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 1 Kohm 0.5W +- 0.1%</p></td> +<td><p>2</p></td> +<td><p>1,3</p></td> +<td><p>2,6</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K0BYA</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K0BYA?qs=%2Fha2pyFaduhUylh7Az%2FmjFH2XjOUms6wZtUX4sOM%252BII%3D">https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K0BYA?qs=%2Fha2pyFaduhUylh7Az%2FmjFH2XjOUms6wZtUX4sOM%252BII%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Resistor 1.5 Kohms +- 0.1%</p></td> +<td><p>2</p></td> +<td><p>1,3</p></td> +<td><p>2,6</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K5BYA</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K5BYA?qs=%2Fha2pyFadugy9tWham3rU9HmIJOhyWhBIN95kNm%252BX%2FM%3D">https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K5BYA?qs=%2Fha2pyFadugy9tWham3rU9HmIJOhyWhBIN95kNm%252BX%2FM%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 1.5 Kohms +- 5%</p></td> +<td><p>2</p></td> +<td><p>1,3</p></td> +<td><p>2,6</p></td> +<td><p>Vishay</p></td> +<td><p>CCF071K50GKE36</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Vishay-Dale/CCF071K50GKE36?qs=QKEOZdL6EQpA6LZRLQFVOw%3D%3D">https://www.mouser.fr/ProductDetail/Vishay-Dale/CCF071K50GKE36?qs=QKEOZdL6EQpA6LZRLQFVOw%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Resistor 10 Mohms +-5%</p></td> +<td><p>2</p></td> +<td><p>0,762</p></td> +<td><p>1,524</p></td> +<td><p>VISHAY</p></td> +<td><p>CMF651M0000FKEK143</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Vishay-Dale/CMF651M0000FKEK143?qs=CiayqK2gdcKzIA2LEVaLkg%3D%3D">https://www.mouser.fr/ProductDetail/Vishay-Dale/CMF651M0000FKEK143?qs=CiayqK2gdcKzIA2LEVaLkg%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>2 ohm shunt resistor+- 1%</p></td> +<td><p>1</p></td> +<td><p>2,42</p></td> +<td><p>2,42</p></td> +<td><p>Ohmite</p></td> +<td><p>41F2R0E</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Ohmite/41F2R0E?qs=IM6ToxQzGOAuEDprb19mHA%3D%3D">https://www.mouser.fr/ProductDetail/Ohmite/41F2R0E?qs=IM6ToxQzGOAuEDprb19mHA%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Dual screw terminal (5.08-mm pitch)</p></td> +<td><p>5</p></td> +<td><p>0,648</p></td> +<td><p>3,24</p></td> +<td><p>CUI Devices</p></td> +<td><p>TB009-508-02BE</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/CUI-Devices/TB009-508-02BE?qs=vLWxofP3U2wCFk5uCkWTkA%3D%3D">https://www.mouser.fr/ProductDetail/CUI-Devices/TB009-508-02BE?qs=vLWxofP3U2wCFk5uCkWTkA%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>DC/DC converter 12 to 24V</p></td> +<td><p>1</p></td> +<td><p>15,58</p></td> +<td><p>31,16</p></td> +<td><p>TracoPower</p></td> +<td><p>TRN 3-1215</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TRACO-Power/TRN-3-1215?qs=YCa%2FAAYMW02gqUicGQj0tA%3D%3D">https://www.mouser.fr/ProductDetail/TRACO-Power/TRN-3-1215?qs=YCa%2FAAYMW02gqUicGQj0tA%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>DIP Dual In Line Socket 2*4</p></td> +<td><p>3</p></td> +<td><p>0,72</p></td> +<td><p>2,16</p></td> +<td><p>Mill-Max</p></td> +<td><p>110-43-308-41-001000</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Mill-Max/110-43-308-41-001000?qs=IGgAdOvCTsTu%2FqaUr8NArg%3D%3D&mgh=1&vip=1&gclid=EAIaIQobChMIn_TAxbCx8wIVQ5nVCh2QaQFpEAYYCCABEgJk1_D_BwE">https://www.mouser.fr/ProductDetail/Mill-Max/110-43-308-41-001000?qs=IGgAdOvCTsTu%2FqaUr8NArg%3D%3D&mgh=1&vip=1&gclid=EAIaIQobChMIn_TAxbCx8wIVQ5nVCh2QaQFpEAYYCCABEgJk1_D_BwE</a></p></td> +</tr> +<tr class="row-odd"><td><p>AQY211EH</p></td> +<td><p>4</p></td> +<td><p>3,84</p></td> +<td><p>15,36</p></td> +<td><p>Panasonic Industrial Devices</p></td> +<td><p>AQY211EH</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Panasonic-Industrial-Devices/AQY211EH?qs=wKtUvITRialGIU8hcM7DvQ%3D%3D">https://www.mouser.fr/ProductDetail/Panasonic-Industrial-Devices/AQY211EH?qs=wKtUvITRialGIU8hcM7DvQ%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>DIP Dual In Line Socket 2*2</p></td> +<td><p>4</p></td> +<td><p>0,449</p></td> +<td><p>1,796</p></td> +<td><p>Preci-dip</p></td> +<td><p>110-83-304-41-001101</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Preci-dip/110-83-304-41-001101?qs=%2Fha2pyFadujQKqx4wAuiG%2FMGNdxMCNv%2F33Nj0gBxRocuLUcYnpyONg%3D%3D">https://www.mouser.fr/ProductDetail/Preci-dip/110-83-304-41-001101?qs=%2Fha2pyFadujQKqx4wAuiG%2FMGNdxMCNv%2F33Nj0gBxRocuLUcYnpyONg%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>MCP23008</p></td> +<td><p>1</p></td> +<td><p>1,72</p></td> +<td><p>1,72</p></td> +<td><p>Adafruit</p></td> +<td><p>593</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/593?qs=sGAEpiMZZMsKEdP9slC0YYV4kPdpMD1Hts4SLctIVmw%3D">https://www.mouser.fr/ProductDetail/Adafruit/593?qs=sGAEpiMZZMsKEdP9slC0YYV4kPdpMD1Hts4SLctIVmw%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Header sets 1x10</p></td> +<td><p>2</p></td> +<td><p>2,12</p></td> +<td><p>4,24</p></td> +<td><p>Samtec</p></td> +<td><p>SSW-110-02-G-S</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Samtec/SSW-110-02-G-S?qs=rU5fayqh%252BE0w1ORXZiBQpw%3D%3D">https://www.mouser.fr/ProductDetail/Samtec/SSW-110-02-G-S?qs=rU5fayqh%252BE0w1ORXZiBQpw%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>SMT Breakout PCB for SOIC-8</p></td> +<td><p>1</p></td> +<td><p>2,5</p></td> +<td><p>2,5</p></td> +<td><p>Adafruit</p></td> +<td><p>1212</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/1212?qs=GURawfaeGuCAqqfvnVtyeg%3D%3D&mgh=1&vip=1&gclid=EAIaIQobChMIt8zJzr6x8wIVGdnVCh2vBwVsEAQYAyABEgJqG_D_BwE">https://www.mouser.fr/ProductDetail/Adafruit/1212?qs=GURawfaeGuCAqqfvnVtyeg%3D%3D&mgh=1&vip=1&gclid=EAIaIQobChMIt8zJzr6x8wIVGdnVCh2vBwVsEAQYAyABEgJqG_D_BwE</a></p></td> +</tr> +<tr class="row-even"><td><p>INA282AID</p></td> +<td><p>1</p></td> +<td><p>4,11</p></td> +<td><p>4,11</p></td> +<td><p>Texas Instruments</p></td> +<td><p>INA282AID</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Texas-Instruments/INA282AID?qs=Ze4%2FuFuz19ILFayZXOCfrA%3D%3D">https://www.mouser.fr/ProductDetail/Texas-Instruments/INA282AID?qs=Ze4%2FuFuz19ILFayZXOCfrA%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>THD 15-1211N</p></td> +<td><p>1</p></td> +<td><p>39,72</p></td> +<td><p>39,72</p></td> +<td><p>TracoPower</p></td> +<td><p>THD 15-1211N</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TRACO-Power/THD-15-1211N?qs=%2Fha2pyFadugpyEG4IDvm%2FMSR%252B7aN%2F0T3rUIs9PCAqJlT4%252BnRpUOOeQ%3D%3D">https://www.mouser.fr/ProductDetail/TRACO-Power/THD-15-1211N?qs=%2Fha2pyFadugpyEG4IDvm%2FMSR%252B7aN%2F0T3rUIs9PCAqJlT4%252BnRpUOOeQ%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>DIP Dual In Line Socket 2*20</p></td> +<td><p>1</p></td> +<td><p>8,53</p></td> +<td><p>8,53</p></td> +<td><p>Samtec</p></td> +<td><p>SSQ-120-23-G-D</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Samtec/SSQ-120-23-G-D?qs=rU5fayqh%252BE1BMVd%252BDZONqg%3D%3D">https://www.mouser.fr/ProductDetail/Samtec/SSQ-120-23-G-D?qs=rU5fayqh%252BE1BMVd%252BDZONqg%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>Pin strip no ejector</p></td> +<td><p>1</p></td> +<td><p>0,35</p></td> +<td><p>0,35</p></td> +<td><p>BLK electronic</p></td> +<td><p>10120550</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/bkl-electronic-10120550-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-pcs-741435?searchTerm=741435&searchType=suggest&searchSuggest=product">https://www.conrad.com/p/bkl-electronic-10120550-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-pcs-741435?searchTerm=741435&searchType=suggest&searchSuggest=product</a></p></td> +</tr> +<tr class="row-even"><td><p>Male Female spacer 2.5M HEXAGONALE</p></td> +<td><p>4</p></td> +<td><p>0,87</p></td> +<td><p>3,48</p></td> +<td><p>HARWIN</p></td> +<td><p>R25-3002002</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Harwin/R25-3002002?qs=W0yvOO0ixfENUv0hsdC4%2FQ%3D%3D">https://www.mouser.fr/ProductDetail/Harwin/R25-3002002?qs=W0yvOO0ixfENUv0hsdC4%2FQ%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>DIP Dual In Line Socket 2*9</p></td> +<td><p>1</p></td> +<td><p>1,86</p></td> +<td><p>1,86</p></td> +<td><p>Preci-dip</p></td> +<td><p>437-1108331841001101</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Preci-dip/110-83-318-41-001101?qs=FtMuP6KVi2TNQOezIAQ%2FPA%3D%3D">https://www.mouser.fr/ProductDetail/Preci-dip/110-83-318-41-001101?qs=FtMuP6KVi2TNQOezIAQ%2FPA%3D%3D</a></p></td> +</tr> +</tbody> +</table> +<div class="toctree-wrapper compound"> +</div> +</section> </section> diff --git a/doc/build/html/source_rst/hardware/mux_2023.html b/doc/build/html/source_rst/hardware/mux_2023.html index d85d25264de3a7c457de656fe01ac9a5b7309f26..c5b20b0ca213f398b4ae74dd24fbe14fe3056cb8 100644 --- a/doc/build/html/source_rst/hardware/mux_2023.html +++ b/doc/build/html/source_rst/hardware/mux_2023.html @@ -1,26 +1,28 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>MUX board v2023 — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="next" title="MUX board v2024" href="mux_2024.html" /> - <link rel="prev" title="Measurement board v2024" href="mb/mb_2024.html" /> + <link rel="prev" title="Measurement board 2024.0.2" href="mb/mb_2024.html" /> </head> <body class="wy-body-for-nav"> @@ -100,7 +102,7 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="mux-board-v2023"> -<h1>MUX board v2023<a class="headerlink" href="#mux-board-v2023" title="Permalink to this heading">ïƒ</a></h1> +<h1>MUX board v2023<a class="headerlink" href="#mux-board-v2023" title="Link to this heading">ïƒ</a></h1> <p>The multiplexing of the channels is a mechanical multiplexing based on OMRON’s manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs. We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit. @@ -108,23 +110,23 @@ This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each car In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N. 0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.</p> <section id="part-a-assembly-of-mux-board"> -<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Link to this heading">ïƒ</a></h2> <section id="required-components"> -<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading">ïƒ</a></h3> +<h3>Required components<a class="headerlink" href="#required-components" title="Link to this heading">ïƒ</a></h3> <figure class="align-center"> <a class="reference internal image-reference" href="../../_images/MUX_board_components.jpg"><img alt="alternate text" src="../../_images/MUX_board_components.jpg" style="width: 600px; height: 650px;" /></a> </figure> <table class="docutils align-default" id="id1"> -<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 9%" /> -<col style="width: 9%" /> -<col style="width: 0%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 9.2%" /> +<col style="width: 9.2%" /> +<col style="width: 0.3%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Components</p></th> @@ -416,7 +418,7 @@ In the following presentation for an OhmPi 64 electrodes, we will use the addres </section> </section> <section id="part-b-mux-board-address"> -<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Link to this heading">ïƒ</a></h2> <p>To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code. We present here the addresses selected by default.</p> <p>For the A electrode board, we suggest addressing it with address 0x70:</p> @@ -489,7 +491,7 @@ electrode name on the mux board (B).</p></td> </table> </section> <section id="part-c-validation-of-mux-board"> -<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Link to this heading">ïƒ</a></h2> <p>The first step is to test the Mux boards before assembling them definitively. To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.</p> <p>The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.</p> @@ -566,7 +568,7 @@ measurement board.</p></td> </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> - <a href="mb/mb_2024.html" class="btn btn-neutral float-left" title="Measurement board v2024" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + <a href="mb/mb_2024.html" class="btn btn-neutral float-left" title="Measurement board 2024.0.2" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="mux_2024.html" class="btn btn-neutral float-right" title="MUX board v2024" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> diff --git a/doc/build/html/source_rst/hardware/mux_2024.html b/doc/build/html/source_rst/hardware/mux_2024.html index 53794ace4f6abfe11fdd1a08976eb926934ef681..17c1d1da88fe1cb602253aa07168e07b533ba766 100644 --- a/doc/build/html/source_rst/hardware/mux_2024.html +++ b/doc/build/html/source_rst/hardware/mux_2024.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>MUX board v2024 — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> @@ -100,7 +102,7 @@ <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="mux-board-v2024"> -<h1>MUX board v2024<a class="headerlink" href="#mux-board-v2024" title="Permalink to this heading">ïƒ</a></h1> +<h1>MUX board v2024<a class="headerlink" href="#mux-board-v2024" title="Link to this heading">ïƒ</a></h1> <p><strong>TO BE UPDATED</strong></p> <p>The multiplexing of the channels is a mechanical multiplexing based on OMRON’s manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs. @@ -109,22 +111,22 @@ This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each car In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N. 0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.</p> <section id="part-a-assembly-of-mux-board"> -<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Link to this heading">ïƒ</a></h2> <section id="required-components"> -<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading">ïƒ</a></h3> +<h3>Required components<a class="headerlink" href="#required-components" title="Link to this heading">ïƒ</a></h3> <figure class="align-center"> <a class="reference internal image-reference" href="../../_images/MUX_board_components.jpg"><img alt="alternate text" src="../../_images/MUX_board_components.jpg" style="width: 600px; height: 650px;" /></a> </figure> <table class="docutils align-default" id="id1"> -<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 9%" /> -<col style="width: 9%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 9.2%" /> +<col style="width: 9.2%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Component</p></th> @@ -406,7 +408,7 @@ In the following presentation for an OhmPi 64 electrodes, we will use the addres </section> </section> <section id="part-b-mux-board-address"> -<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Link to this heading">ïƒ</a></h2> <p>To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code. We present here the addresses selected by default.</p> <p>For the A electrode board, we suggest addressing it with address 0x70:</p> @@ -479,7 +481,7 @@ electrode name on the mux board (B).</p></td> </table> </section> <section id="part-c-validation-of-mux-board"> -<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Permalink to this heading">ïƒ</a></h2> +<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Link to this heading">ïƒ</a></h2> <p>The first step is to test the Mux boards before assembling them definitively. To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.</p> <p>The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.</p> diff --git a/doc/build/html/source_rst/software.html b/doc/build/html/source_rst/software.html index 0a8b32b2f8a3eade7004fe7031a4828cc1acfd8f..650c26b15068011b73ce3119111f62d45575310f 100644 --- a/doc/build/html/source_rst/software.html +++ b/doc/build/html/source_rst/software.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Software and operation — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -89,18 +91,18 @@ <div itemprop="articleBody"> <section id="software-and-operation"> -<h1>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading">ïƒ</a></h1> +<h1>Software and operation<a class="headerlink" href="#software-and-operation" title="Link to this heading">ïƒ</a></h1> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="system-architecture"> -<h2>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading">ïƒ</a></h2> +<h2>System architecture<a class="headerlink" href="#system-architecture" title="Link to this heading">ïƒ</a></h2> <p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p> <figure class="align-default" id="id4"> <img alt="../_images/architecture.png" src="../_images/architecture.png" /> <figcaption> -<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section. @@ -109,7 +111,7 @@ The acquisition settings (i.e. injection duration, stacks…) are defined in a s A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p> </section> <section id="loggers"> -<h2>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading">ïƒ</a></h2> +<h2>Loggers<a class="headerlink" href="#loggers" title="Link to this heading">ïƒ</a></h2> <p>Loggers have been introduced in this release. They use the excellent logging python package. Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p> <p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p> @@ -117,7 +119,7 @@ Specific handlers have been implemented for running with ohmpi.py (one for loggi <p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p> </section> <section id="configuration-file"> -<h2>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading">ïƒ</a></h2> +<h2>Configuration file<a class="headerlink" href="#configuration-file" title="Link to this heading">ïƒ</a></h2> <p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi. A default version of <cite>config.py</cite> is provided in the repository. This file should be edited to customize the configuration following the user’s needs and preferences.</p> @@ -125,14 +127,14 @@ This file should be edited to customize the configuration following the user’s <p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p> </section> <section id="interfaces-and-applications"> -<h2>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading">ïƒ</a></h2> +<h2>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Link to this heading">ïƒ</a></h2> <p>Different interfaces can be used to interact with the OhmPi.</p> <p>Available interfaces are: - <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite> - Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>) - MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p> <section id="web-interface"> -<h3>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading">ïƒ</a></h3> +<h3>Web interface<a class="headerlink" href="#web-interface" title="Link to this heading">ïƒ</a></h3> <p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p> <p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs a small webserver to serve the ‘index.html’ interface. Using a laptop or @@ -146,24 +148,24 @@ to access the interface.</p> <figure class="align-default" id="id5"> <img alt="../_images/http-interface-pseudo-section.png" src="../_images/http-interface-pseudo-section.png" /> <figcaption> -<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-default" id="id6"> <img alt="../_images/http-interface-evolution.png" src="../_images/http-interface-evolution.png" /> <figcaption> -<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-default" id="id7"> <img alt="../_images/http-interface-rs.png" src="../_images/http-interface-rs.png" /> <figcaption> -<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </section> <section id="python-interface"> -<h3>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading">ïƒ</a></h3> +<h3>Python interface<a class="headerlink" href="#python-interface" title="Link to this heading">ïƒ</a></h3> <p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p> <p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython. Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using @@ -174,7 +176,7 @@ be found on the OhmPi gitlab repository. We recommend downloading the entire repository as ohmpi.py import other .py files and default configuration files (.json and .py).</p> <div class="literal-block-wrapper docutils container" id="id8"> -<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Permalink to this code">ïƒ</a></div> +<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Link to this code">ïƒ</a></div> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="kn">import</span> <span class="nn">time</span> @@ -227,7 +229,7 @@ files (.json and .py).</p> </div> </section> <section id="mqtt-interface"> -<h3>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading">ïƒ</a></h3> +<h3>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Link to this heading">ïƒ</a></h3> <p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p> <p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p> <p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p> @@ -235,25 +237,25 @@ files (.json and .py).</p> <p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed. MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p> <div class="literal-block-wrapper docutils container" id="id9"> -<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Permalink to this code">ïƒ</a></div> -<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{ - "cmd_id": "3fzxv121UITwGjWYgcz4xw", - "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server. - "kwargs": { - "config": { - "nb_meas": 2, - "nb_electrodes": 10, - "nb_stack": 2, - "injection_duration": 2, - "sequence_delay": 100 - } - } -} +<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Link to this code">ïƒ</a></div> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">"cmd_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3fzxv121UITwGjWYgcz4xw"</span><span class="p">,</span> +<span class="w"> </span><span class="nt">"cmd"</span><span class="p">:</span><span class="w"> </span><span class="s2">"update_settings"</span><span class="p">,</span><span class="w"> </span><span class="err">Depe</span><span class="kc">n</span><span class="err">di</span><span class="kc">n</span><span class="err">g</span><span class="w"> </span><span class="err">o</span><span class="kc">n</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">experime</span><span class="kc">nt</span><span class="w"> </span><span class="kc">nee</span><span class="err">ds</span><span class="p">,</span><span class="w"> </span><span class="err">MQTT</span><span class="w"> </span><span class="err">brokers</span><span class="w"> </span><span class="err">ca</span><span class="kc">n</span><span class="w"> </span><span class="err">be</span><span class="w"> </span><span class="err">se</span><span class="kc">t</span><span class="w"> </span><span class="err">up</span><span class="w"> </span><span class="err">locally</span><span class="w"> </span><span class="err">o</span><span class="kc">n</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">Raspberry</span><span class="w"> </span><span class="err">Pi</span><span class="w"> </span><span class="err">or</span><span class="w"> </span><span class="err">o</span><span class="kc">n</span><span class="w"> </span><span class="err">a</span><span class="w"> </span><span class="err">local</span><span class="w"> </span><span class="err">or</span><span class="w"> </span><span class="err">remo</span><span class="kc">te</span><span class="w"> </span><span class="err">server.</span> +<span class="w"> </span><span class="nt">"kwargs"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">"config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">"nb_meas"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span> +<span class="w"> </span><span class="nt">"nb_electrodes"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span> +<span class="w"> </span><span class="nt">"nb_stack"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span> +<span class="w"> </span><span class="nt">"injection_duration"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span> +<span class="w"> </span><span class="nt">"sequence_delay"</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">}</span> +<span class="p">}</span> </pre></div> </div> </div> <div class="literal-block-wrapper docutils container" id="id10"> -<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Permalink to this code">ïƒ</a></div> +<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Link to this code">ïƒ</a></div> <div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"cmd_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3fzxv121UITwGjWYgcz4xw"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"cmd"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rs_check"</span><span class="p">,</span> @@ -262,7 +264,7 @@ MQTT commands are sent in JSON format following the Python API with kwargs as il </div> </div> <div class="literal-block-wrapper docutils container" id="id11"> -<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Permalink to this code">ïƒ</a></div> +<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Link to this code">ïƒ</a></div> <div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"cmd_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3fzxv121UITwGjWYgcz4Yw"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"cmd"</span><span class="p">:</span><span class="w"> </span><span class="s2">"run_sequence"</span><span class="p">,</span> @@ -271,7 +273,7 @@ MQTT commands are sent in JSON format following the Python API with kwargs as il </div> </div> <div class="literal-block-wrapper docutils container" id="id12"> -<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Permalink to this code">ïƒ</a></div> +<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Link to this code">ïƒ</a></div> <div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"cmd_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3fzxv121UITwGjWYgcz4Yw"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"cmd"</span><span class="p">:</span><span class="w"> </span><span class="s2">"run_multiple_sequences"</span><span class="p">,</span> @@ -280,7 +282,7 @@ MQTT commands are sent in JSON format following the Python API with kwargs as il </div> </div> <div class="literal-block-wrapper docutils container" id="id13"> -<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Permalink to this code">ïƒ</a></div> +<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Link to this code">ïƒ</a></div> <div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"cmd_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3fzxv121UITwGjWYgcz4xw"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"cmd"</span><span class="p">:</span><span class="w"> </span><span class="s2">"interrupt"</span><span class="p">,</span> @@ -295,19 +297,19 @@ This may help designing complex IoT experiments and monitoring systems in which <figure class="align-default" id="id14"> <img alt="../_images/node-red_flow.png" src="../_images/node-red_flow.png" /> <figcaption> -<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-default" id="id15"> <img alt="../_images/node-red_interface_control.png" src="../_images/node-red_interface_control.png" /> <figcaption> -<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-default" id="id16"> <img alt="../_images/node-red_interface_data.png" src="../_images/node-red_interface_data.png" /> <figcaption> -<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p> diff --git a/doc/build/html/source_rst/troubleshooting.html b/doc/build/html/source_rst/troubleshooting.html index 464e68fe0060324bef296b2d958c0e406ffec1d3..e10f1ce22120f23b754332c2a368bebda6f1d67b 100644 --- a/doc/build/html/source_rst/troubleshooting.html +++ b/doc/build/html/source_rst/troubleshooting.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Troubleshooting — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> - <script src="../_static/jquery.js"></script> - <script src="../_static/underscore.js"></script> - <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../_static/doctools.js"></script> + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> @@ -83,22 +85,22 @@ <div itemprop="articleBody"> <section id="troubleshooting"> -<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this heading">ïƒ</a></h1> +<h1>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Link to this heading">ïƒ</a></h1> <p><strong>TO BE REVIEWED</strong></p> <section id="issue-with-the-pulses-between-a-and-b"> -<h2>Issue with the pulses between A and B<a class="headerlink" href="#issue-with-the-pulses-between-a-and-b" title="Permalink to this heading">ïƒ</a></h2> +<h2>Issue with the pulses between A and B<a class="headerlink" href="#issue-with-the-pulses-between-a-and-b" title="Link to this heading">ïƒ</a></h2> <p>In the measurement board v2023, this is likely due to the optical relays not opening or closing properly. These relays are quite fragile and, from experience, are easily damaged. Check if the optical relay are still working by measuring if they are conductor when turned on using a multimeter without connecting any electrodes to A and B.</p> <p>If an optical relay is broken, you will have to replace it with a new one.</p> <p>In the measurement board v2024, these optical relays are replaced by mechanical relays which are more robust and shoudn’t cause any issue.</p> </section> <section id="values-given-is-not-the-correct-one"> -<h2>Values given is not the correct one<a class="headerlink" href="#values-given-is-not-the-correct-one" title="Permalink to this heading">ïƒ</a></h2> +<h2>Values given is not the correct one<a class="headerlink" href="#values-given-is-not-the-correct-one" title="Link to this heading">ïƒ</a></h2> <p>One possible cause is that the <strong>shunt resistor was burned</strong>. Once burned, the value of the resistor is not correct anymore and we advice to change it. To see if the shunt is burned, you can measure the value of the shunt resistor to see if it still has the expected value.</p> <p>Another possibility is that the MN voltage you are trying to measure is <strong>over the range of the ADC</strong> (+/- 4.5 V effective range for ADS1115). You can easily check that by measuring the voltage at MN with a voltmeter.</p> <p>In the measurement board v2024, the current sensing part is replaced by a click board. It is possible that the shunt resistance on this click board is burned due to malfunction. In this case, erroneous value of current will be given. The click board must be replaced to solve the issue.</p> </section> <section id="communication-issue-between-components"> -<h2>Communication issue between components<a class="headerlink" href="#communication-issue-between-components" title="Permalink to this heading">ïƒ</a></h2> +<h2>Communication issue between components<a class="headerlink" href="#communication-issue-between-components" title="Link to this heading">ïƒ</a></h2> <p>Most components of the OhmPi communicate via I2C protocol. This protocol works with two lines (SDA and SCL) that <strong>must be pulled-up</strong> at rest. The pull-up resistor consist in placing a 100k (or similar values) resistor between the line and VDD (5V in this case).</p> <p>Check with the multimeter the voltage between SDA/SCL and the ground to see if it reaches 5V at rest. If it’s not the case, you may need stronger pull-up (smaller value of pull-up resistor).</p> </section> diff --git a/doc/build/html/source_rst/v1.xx/V1_01.html b/doc/build/html/source_rst/v1.xx/V1_01.html index 5f674dd73c30bb2126cdd00f91184d449b160759..b559a44e55be1ededa8fcf92ef35aba49f2ace1f 100644 --- a/doc/build/html/source_rst/v1.xx/V1_01.html +++ b/doc/build/html/source_rst/v1.xx/V1_01.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>OhmPi V 1.01 (limited to 32 electrodes) — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> @@ -109,7 +111,7 @@ <div itemprop="articleBody"> <section id="ohmpi-v-1-01-limited-to-32-electrodes"> -<h1>OhmPi V 1.01 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-01-limited-to-32-electrodes" title="Permalink to this heading">ïƒ</a></h1> +<h1>OhmPi V 1.01 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-01-limited-to-32-electrodes" title="Link to this heading">ïƒ</a></h1> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>This version corresponds to the version published in the Hardware X journal. @@ -121,13 +123,13 @@ We invite you to refer to this document to assemble Ohmpi V1.01.</p> <p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p> </div> <section id="the-philosophy-of-ohmpi"> -<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading">ïƒ</a></h2> +<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Link to this heading">ïƒ</a></h2> <p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, but suitable for small laboratory experiments and small field time monitoring</p> </section> <section id="technical-data"> -<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading">ïƒ</a></h2> +<h2>Technical data<a class="headerlink" href="#technical-data" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-default"> <tbody> <tr class="row-odd"><td><p><strong>Parameter</strong></p></td> @@ -179,9 +181,9 @@ control system</p></td> </table> </section> <section id="raspberry-pi-configuration"> -<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading">ïƒ</a></h2> +<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Link to this heading">ïƒ</a></h2> <section id="os-installation"> -<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading">ïƒ</a></h3> +<h3>OS installation<a class="headerlink" href="#os-installation" title="Link to this heading">ïƒ</a></h3> <p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). For this step, the installation instructions are well described on the Raspberry website</p> <ol class="arabic simple"> @@ -231,7 +233,7 @@ To ensure that the GPIOs are in Low position, you will need to modify the /boot/ </ol> </section> <section id="virtual-environment-and-packages"> -<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading">ïƒ</a></h3> +<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Link to this heading">ïƒ</a></h3> <p>All dependencies are specified in requirements.txt</p> <div class="admonition note"> <p class="admonition-title">Note</p> @@ -265,7 +267,7 @@ to leave the virtual environment simply type:</p> </div> </section> <section id="activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"> -<h3>Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading">ïƒ</a></h3> +<h3>Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Link to this heading">ïƒ</a></h3> <p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p> <p>1- Run the Thonny Python IDE software, Click on raspberry access <strong>menu > programming> Thonny pythonIDE</strong></p> <p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p> @@ -291,11 +293,11 @@ to leave the virtual environment simply type:</p> </section> </section> <section id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"> -<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this heading">ïƒ</a></h2> +<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Link to this heading">ïƒ</a></h2> <section id="electrical-resistivity-measurements-board"> -<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading">ïƒ</a></h3> +<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Link to this heading">ïƒ</a></h3> <section id="a-description"> -<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading">ïƒ</a></h4> +<h4>a) Description<a class="headerlink" href="#a-description" title="Link to this heading">ïƒ</a></h4> <p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. @@ -330,12 +332,12 @@ constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse betwe <figure class="align-center" id="id1"> <a class="reference internal image-reference" href="../../_images/schema_measurement_board1.jpg"><img alt="alternate text" src="../../_images/schema_measurement_board1.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Measurement board</span><a class="headerlink" href="#id1" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement board</span><a class="headerlink" href="#id1" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </section> <section id="b-implementation"> -<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading">ïƒ</a></h4> +<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Link to this heading">ïƒ</a></h4> <p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto it by following the steps described below and illustrated in the following figure :</p> <ul> @@ -379,19 +381,19 @@ place a fuse holder with a 1.5-A fuse for safety purposes.</p> <figure class="align-center" id="id2"> <a class="reference internal image-reference" href="../../_images/measurement_board.jpg"><img alt="alternate text" src="../../_images/measurement_board.jpg" style="width: 800px; height: 500px;" /></a> <figcaption> -<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-KOhm resistors ± 1%, c)adding the 1.5-KOhm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-KOhm resistors ± 1%, c)adding the 1.5-KOhm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-center" id="id3"> <a class="reference internal image-reference" href="../../_images/measurement_board-2.jpg"><img alt="alternate text" src="../../_images/measurement_board-2.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> -<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </section> </section> <section id="current-injection-board"> -<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading">ïƒ</a></h3> +<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Link to this heading">ïƒ</a></h3> <p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This @@ -406,7 +408,7 @@ they remain in the normally closed position. This set-up offers a simple and rob <figure class="align-center" id="id4"> <a class="reference internal image-reference" href="../../_images/current_board.jpg"><img alt="alternate text" src="../../_images/current_board.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>The next step consists of featuring the 4-channel relay module used for current injection and its assembly. The wiring @@ -419,20 +421,20 @@ to terminals B and A of the measurement board.</p> <figure class="align-center" id="id5"> <a class="reference internal image-reference" href="../../_images/installation_current_board.jpg"><img alt="alternate text" src="../../_images/installation_current_board.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> -<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>Congratulations, you have build a 4 electrodes resistivity-meter.</p> </section> <section id="first-four-electrodes-resistivity-measurement"> -<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading">ïƒ</a></h3> +<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Link to this heading">ïƒ</a></h3> <p>Under construction !</p> <p>Describe the way to validate the first part of the instruction. Electrical resistivity measurement on test circuit</p> </section> </section> <section id="multiplexer-implementation"> -<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading">ïƒ</a></h2> +<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Link to this heading">ïƒ</a></h2> <p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of @@ -453,7 +455,7 @@ see Section 2.4). To execute this step, it will be necessary to follow the proto <div><figure class="align-center" id="id6"> <a class="reference internal image-reference" href="../../_images/connection.jpg"><img alt="alternate text" src="../../_images/connection.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id6" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id6" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </div></blockquote> @@ -511,14 +513,14 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a </div></blockquote> </section> <section id="electrode-connection"> -<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading">ïƒ</a></h2> +<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Link to this heading">ïƒ</a></h2> <p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p> <figure class="align-center" id="id7"> <a class="reference internal image-reference" href="../../_images/cable.jpg"><img alt="alternate text" src="../../_images/cable.jpg" style="width: 800px; height: 300px;" /></a> <figcaption> -<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id7" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id7" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B @@ -527,7 +529,7 @@ This operation must be repeated for all 32 electrodes.</p> <figure class="align-center" id="id8"> <a class="reference internal image-reference" href="../../_images/electrode_cable.jpg"><img alt="alternate text" src="../../_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a> <figcaption> -<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id8" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id8" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <div class="admonition warning"> @@ -537,16 +539,16 @@ In case you bought 16 channel relay 5-V cards, you will need to add a DC/DC 12-V </div> </section> <section id="operating-instruction"> -<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading">ïƒ</a></h2> +<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Link to this heading">ïƒ</a></h2> <section id="preliminary-procedure-only-for-the-initial-operation"> -<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this heading">ïƒ</a></h3> +<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Link to this heading">ïƒ</a></h3> <p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>) or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing the required packages and running the code.</p> </section> <section id="startup-procedure"> -<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading">ïƒ</a></h3> +<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Link to this heading">ïƒ</a></h3> <p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, @@ -557,7 +559,7 @@ hear the characteristic sound of a relay switching as a result of electrode perm are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> </section> <section id="electrical-resistivity-measurement-parameters-description"> -<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading">ïƒ</a></h3> +<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Link to this heading">ïƒ</a></h3> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">27</span><span class="w"> </span><span class="sd">"""</span> <span class="linenos">28</span><span class="sd"> measurement parameters</span> <span class="linenos">29</span><span class="sd"> """</span> @@ -572,20 +574,20 @@ are displayed on the screen. A measurement file is automatically created and nam </section> </section> <section id="complete-list-of-components"> -<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading">ïƒ</a></h2> +<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Link to this heading">ïƒ</a></h2> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p> </div> <table class="docutils align-default" id="id9"> -<caption><span class="caption-text">Table Title</span><a class="headerlink" href="#id9" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">Table Title</span><a class="headerlink" href="#id9" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Component</p></th> diff --git a/doc/build/html/source_rst/v1.xx/V1_02.html b/doc/build/html/source_rst/v1.xx/V1_02.html index ebdabcb94ee41e6337c47e3a838e350b13e9291e..dfadf1b5665d6bc96d4bec935a2bb9c2fdb482f0 100644 --- a/doc/build/html/source_rst/v1.xx/V1_02.html +++ b/doc/build/html/source_rst/v1.xx/V1_02.html @@ -1,21 +1,23 @@ <!DOCTYPE html> -<html class="writer-html5" lang="en" > +<html class="writer-html5" lang="en" data-content_root="../../"> <head> - <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>OhmPi V 1.02 (limited to 32 electrodes) — OhmPi v2024rc documentation</title> - <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + + <!--[if lt IE 9]> <script src="../../_static/js/html5shiv.min.js"></script> <![endif]--> - <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script> - <script src="../../_static/jquery.js"></script> - <script src="../../_static/underscore.js"></script> - <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script> - <script src="../../_static/doctools.js"></script> + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=1eb482ec"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> <script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> <script src="../../_static/js/theme.js"></script> <link rel="index" title="Index" href="../../genindex.html" /> @@ -108,7 +110,7 @@ <div itemprop="articleBody"> <section id="ohmpi-v-1-02-limited-to-32-electrodes"> -<h1>OhmPi V 1.02 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-02-limited-to-32-electrodes" title="Permalink to this heading">ïƒ</a></h1> +<h1>OhmPi V 1.02 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-02-limited-to-32-electrodes" title="Link to this heading">ïƒ</a></h1> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p> @@ -118,13 +120,13 @@ <p>In this version, we have improved the electronic measurement board. To upgrade from version 1.01 to 1.02, you just have to replace the measurement board by the new one proposed here.</p> </div> <section id="the-philosophy-of-ohmpi"> -<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading">ïƒ</a></h2> +<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Link to this heading">ïƒ</a></h2> <p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection, but suitable for small laboratory experiments and small field time monitoring</p> </section> <section id="technical-data"> -<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading">ïƒ</a></h2> +<h2>Technical data<a class="headerlink" href="#technical-data" title="Link to this heading">ïƒ</a></h2> <table class="docutils align-default"> <tbody> <tr class="row-odd"><td><p><strong>Parameter</strong></p></td> @@ -176,9 +178,9 @@ control system</p></td> </table> </section> <section id="raspberry-pi-configuration"> -<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading">ïƒ</a></h2> +<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Link to this heading">ïƒ</a></h2> <section id="os-installation"> -<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading">ïƒ</a></h3> +<h3>OS installation<a class="headerlink" href="#os-installation" title="Link to this heading">ïƒ</a></h3> <p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system). For this step, the installation instructions are well described on the Raspberry website</p> <ol class="arabic simple"> @@ -228,7 +230,7 @@ To ensure that the GPIOs are in Low position, you will need to modify the /boot/ </ol> </section> <section id="virtual-environment-and-packages"> -<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading">ïƒ</a></h3> +<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Link to this heading">ïƒ</a></h3> <p>All dependencies are specified in requirements.txt</p> <div class="admonition note"> <p class="admonition-title">Note</p> @@ -262,7 +264,7 @@ to leave the virtual environment simply type:</p> </div> </section> <section id="activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"> -<h3>Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading">ïƒ</a></h3> +<h3>Activate virtual environment on Thonny (Python IDE) (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Link to this heading">ïƒ</a></h3> <p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p> <p>1- Run the Thonny Python IDE software, Click on raspberry access <strong>menu > programming> Thonny pythonIDE</strong></p> <p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p> @@ -288,11 +290,11 @@ to leave the virtual environment simply type:</p> </section> </section> <section id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi"> -<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this heading">ïƒ</a></h2> +<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Link to this heading">ïƒ</a></h2> <section id="electrical-resistivity-measurements-board"> -<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading">ïƒ</a></h3> +<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Link to this heading">ïƒ</a></h3> <section id="a-description"> -<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading">ïƒ</a></h4> +<h4>a) Description<a class="headerlink" href="#a-description" title="Link to this heading">ïƒ</a></h4> <p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115 is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. @@ -332,7 +334,7 @@ the signal input on the operational amplifiers. This prevents the operational am <figure class="align-center" id="id1"> <a class="reference internal image-reference" href="../../_images/schema_measurement_board1_02.png"><img alt="alternate text" src="../../_images/schema_measurement_board1_02.png" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Measurement board (Ohmpi version 1.02)</span><a class="headerlink" href="#id1" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement board (Ohmpi version 1.02)</span><a class="headerlink" href="#id1" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <div class="admonition note"> @@ -341,7 +343,7 @@ the signal input on the operational amplifiers. This prevents the operational am </div> </section> <section id="b-implementation"> -<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading">ïƒ</a></h4> +<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Link to this heading">ïƒ</a></h4> <p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto it by following the steps described below and illustrated in the following figure :</p> <ul> @@ -387,19 +389,19 @@ place a fuse holder with a 1.5-A fuse for safety purposes.</p> <figure class="align-center" id="id2"> <a class="reference internal image-reference" href="../../_images/measurement_board1-02.jpg"><img alt="alternate text" src="../../_images/measurement_board1-02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> -<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-KOhm resistors ± 1%, c)adding the 1.5-KOhm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-KOhm resistors ± 1%, c)adding the 1.5-KOhm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-center" id="id3"> <a class="reference internal image-reference" href="../../_images/measurement_board-2-V1-02.jpg"><img alt="alternate text" src="../../_images/measurement_board-2-V1-02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> -<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </section> </section> <section id="current-injection-board"> -<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading">ïƒ</a></h3> +<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Link to this heading">ïƒ</a></h3> <p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground. In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This @@ -414,7 +416,7 @@ they remain in the normally closed position. This set-up offers a simple and rob <figure class="align-center" id="id4"> <a class="reference internal image-reference" href="../../_images/current_board.jpg"><img alt="alternate text" src="../../_images/current_board.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>The next step consists of featuring the 4-channel relay module used for current injection and its assembly. The wiring @@ -427,20 +429,20 @@ to terminals B and A of the measurement board.</p> <figure class="align-center" id="id5"> <a class="reference internal image-reference" href="../../_images/installation_current_board_1_02.jpg"><img alt="alternate text" src="../../_images/installation_current_board_1_02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> -<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>Congratulations, you have build a 4 electrodes resistivity-meter.</p> </section> <section id="first-four-electrodes-resistivity-measurement"> -<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading">ïƒ</a></h3> +<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Link to this heading">ïƒ</a></h3> <p>Under construction !</p> <p>Describe the way to validate the first part of the instruction. Electrical resistivity measurement on test circuit</p> </section> </section> <section id="multiplexer-implementation"> -<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading">ïƒ</a></h2> +<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Link to this heading">ïƒ</a></h2> <p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of @@ -453,7 +455,7 @@ To prepare the multiplexer, the channels of the two relay boards must be connect <figure class="align-center" id="id6"> <a class="reference internal image-reference" href="../../_images/multiplexer_implementation.jpg"><img alt="alternate text" src="../../_images/multiplexer_implementation.jpg" style="width: 800px; height: 500px;" /></a> <figcaption> -<p><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly. @@ -467,7 +469,7 @@ see Section 2.4). To execute this step, it will be necessary to follow the proto <div><figure class="align-center" id="id7"> <a class="reference internal image-reference" href="../../_images/connection.jpg"><img alt="alternate text" src="../../_images/connection.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> -<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Link to this image">ïƒ</a></p> </figcaption> </figure> </div></blockquote> @@ -525,14 +527,14 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a </div></blockquote> </section> <section id="electrode-connection"> -<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading">ïƒ</a></h2> +<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Link to this heading">ïƒ</a></h2> <p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used. According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p> <figure class="align-center" id="id8"> <a class="reference internal image-reference" href="../../_images/cable.jpg"><img alt="alternate text" src="../../_images/cable.jpg" style="width: 800px; height: 300px;" /></a> <figcaption> -<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B @@ -541,7 +543,7 @@ This operation must be repeated for all 32 electrodes.</p> <figure class="align-center" id="id9"> <a class="reference internal image-reference" href="../../_images/electrode_cable.jpg"><img alt="alternate text" src="../../_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a> <figcaption> -<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image">ïƒ</a></p> +<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Link to this image">ïƒ</a></p> </figcaption> </figure> <div class="admonition warning"> @@ -551,16 +553,16 @@ In case you bought 16 channel relay 5-V cards, you will need to add a DC/DC 12-V </div> </section> <section id="operating-instruction"> -<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading">ïƒ</a></h2> +<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Link to this heading">ïƒ</a></h2> <section id="preliminary-procedure-only-for-the-initial-operation"> -<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this heading">ïƒ</a></h3> +<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Link to this heading">ïƒ</a></h3> <p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>) or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme†file is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing the required packages and running the code.</p> </section> <section id="startup-procedure"> -<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading">ïƒ</a></h3> +<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Link to this heading">ïƒ</a></h3> <p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer) into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply (for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPiâ€, @@ -571,7 +573,7 @@ hear the characteristic sound of a relay switching as a result of electrode perm are displayed on the screen. A measurement file is automatically created and named “measure.csvâ€; it will be placed in the same folder.</p> </section> <section id="electrical-resistivity-measurement-parameters-description"> -<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading">ïƒ</a></h3> +<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Link to this heading">ïƒ</a></h3> <p>In the version 1.02, the measurement parameters are in the Jason file (ohmpi_param.json).</p> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span> <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span> <span class="linenos">2</span> <span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span> @@ -584,20 +586,20 @@ are displayed on the screen. A measurement file is automatically created and nam </section> </section> <section id="complete-list-of-components"> -<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading">ïƒ</a></h2> +<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Link to this heading">ïƒ</a></h2> <div class="admonition warning"> <p class="admonition-title">Warning</p> <p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p> </div> <table class="docutils align-default" id="id10"> -<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id10" title="Permalink to this table">ïƒ</a></caption> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id10" title="Link to this table">ïƒ</a></caption> <colgroup> -<col style="width: 8%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> -<col style="width: 18%" /> +<col style="width: 7.9%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> +<col style="width: 18.4%" /> </colgroup> <thead> <tr class="row-odd"><th class="head"><p>Component</p></th> diff --git a/doc/source/img/mb.2024.x.x/32.jpg b/doc/source/img/mb.2024.x.x/32.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ce6e1fb46678a310ac48f4bc7d9bb516f33bcbe Binary files /dev/null and b/doc/source/img/mb.2024.x.x/32.jpg differ diff --git a/doc/source/index.rst b/doc/source/index.rst index 0f29794bd149093f08fd285833aeb1250f1a2387..ab0cf9d46cac975dc549e4bbeead8ac098baa69c 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -41,6 +41,7 @@ Contents: source_rst/gallery source_rst/developing_hardware_components source_rst/archived_version + source_rst/ibom.html diff --git a/doc/source/source_rst/hardware/mb.rst b/doc/source/source_rst/hardware/mb.rst index 3a91aa6d6978d1d92f1381cb1066ab1a02720565..6f8cff3989afde26665663330af1af35b9f11e23 100644 --- a/doc/source/source_rst/hardware/mb.rst +++ b/doc/source/source_rst/hardware/mb.rst @@ -51,7 +51,8 @@ Specifications -Contents: +Assemble you measurement board: +------------------------------- .. toctree:: :maxdepth: 2 diff --git a/doc/source/source_rst/hardware/mb/bom/ibom.html b/doc/source/source_rst/hardware/mb/bom/ibom.html new file mode 100644 index 0000000000000000000000000000000000000000..a2fef3a0acd2f01fe70593e855f1a0ad54523001 --- /dev/null +++ b/doc/source/source_rst/hardware/mb/bom/ibom.html @@ -0,0 +1,4669 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Interactive BOM for KiCAD</title> + <style type="text/css"> +:root { + --pcb-edge-color: black; + --pad-color: #878787; + --pad-hole-color: #CCCCCC; + --pad-color-highlight: #D04040; + --pad-color-highlight-both: #D0D040; + --pad-color-highlight-marked: #44a344; + --pin1-outline-color: #ffb629; + --pin1-outline-color-highlight: #ffb629; + --pin1-outline-color-highlight-both: #fcbb39; + --pin1-outline-color-highlight-marked: #fdbe41; + --silkscreen-edge-color: #aa4; + --silkscreen-polygon-color: #4aa; + --silkscreen-text-color: #4aa; + --fabrication-edge-color: #907651; + --fabrication-polygon-color: #907651; + --fabrication-text-color: #a27c24; + --track-color: #def5f1; + --track-color-highlight: #D04040; + --zone-color: #def5f1; + --zone-color-highlight: #d0404080; +} + +html, +body { + margin: 0px; + height: 100%; + font-family: Verdana, sans-serif; +} + +.dark.topmostdiv { + --pcb-edge-color: #eee; + --pad-color: #808080; + --pin1-outline-color: #ffa800; + --pin1-outline-color-highlight: #ccff00; + --track-color: #42524f; + --zone-color: #42524f; + background-color: #252c30; + color: #eee; +} + +button { + background-color: #eee; + border: 1px solid #888; + color: black; + height: 44px; + width: 44px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 14px; + font-weight: bolder; +} + +.dark button { + /* This will be inverted */ + background-color: #c3b7b5; +} + +button.depressed { + background-color: #0a0; + color: white; +} + +.dark button.depressed { + /* This will be inverted */ + background-color: #b3b; +} + +button:focus { + outline: 0; +} + +button#tb-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#lr-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#bom-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-grouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-ungrouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-netlist-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#copy { + background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E"); + background-position: 6px 6px; + background-repeat: no-repeat; + background-size: 26px 26px; + border-radius: 6px; + height: 40px; + width: 40px; + margin: 10px 5px; +} + +button#copy:active { + box-shadow: inset 0px 0px 5px #6c6c6c; +} + +textarea.clipboard-temp { + position: fixed; + top: 0; + left: 0; + width: 2em; + height: 2em; + padding: 0; + border: None; + outline: None; + box-shadow: None; + background: transparent; +} + +.left-most-button { + border-right: 0; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.middle-button { + border-right: 0; +} + +.right-most-button { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.button-container { + font-size: 0; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.dark .button-container { + filter: invert(1); +} + +.button-container button { + background-size: 32px 32px; + background-position: 5px 5px; + background-repeat: no-repeat; +} + +@media print { + .hideonprint { + display: none; + } +} + +canvas { + cursor: crosshair; +} + +canvas:active { + cursor: grabbing; +} + +.fileinfo { + width: 100%; + max-width: 1000px; + border: none; + padding: 3px; +} + +.fileinfo .title { + font-size: 20pt; + font-weight: bold; +} + +.fileinfo td { + overflow: hidden; + white-space: nowrap; + max-width: 1px; + width: 50%; + text-overflow: ellipsis; +} + +.bom { + border-collapse: collapse; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 10pt; + table-layout: fixed; + width: 100%; + margin-top: 1px; + position: relative; +} + +.bom th, +.bom td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +.dark .bom th, +.dark .bom td { + border: 1px solid #777; +} + +.bom th { + background-color: #CCCCCC; + background-clip: padding-box; +} + +.dark .bom th { + background-color: #3b4749; +} + +.bom tr.highlighted:nth-child(n) { + background-color: #cfc; +} + +.dark .bom tr.highlighted:nth-child(n) { + background-color: #226022; +} + +.bom tr:nth-child(even) { + background-color: #f2f2f2; +} + +.dark .bom tr:nth-child(even) { + background-color: #313b40; +} + +.bom tr.checked { + color: #1cb53d; +} + +.dark .bom tr.checked { + color: #2cce54; +} + +.bom tr { + transition: background-color 0.2s; +} + +.bom .numCol { + width: 30px; +} + +.bom .value { + width: 15%; +} + +.bom .quantity { + width: 65px; +} + +.bom th .sortmark { + position: absolute; + right: 1px; + top: 1px; + margin-top: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent #221 transparent; + transform-origin: 50% 85%; + transition: opacity 0.2s, transform 0.4s; +} + +.dark .bom th .sortmark { + filter: invert(1); +} + +.bom th .sortmark.none { + opacity: 0; +} + +.bom th .sortmark.desc { + transform: rotate(180deg); +} + +.bom th:hover .sortmark.none { + opacity: 0.5; +} + +.bom .bom-checkbox { + width: 30px; + position: relative; + user-select: none; + -moz-user-select: none; +} + +.bom .bom-checkbox:before { + content: ""; + position: absolute; + border-width: 15px; + border-style: solid; + border-color: #51829f transparent transparent transparent; + visibility: hidden; + top: -15px; +} + +.bom .bom-checkbox:after { + content: "Double click to set/unset all"; + position: absolute; + color: white; + top: -35px; + left: -26px; + background: #51829f; + padding: 5px 15px; + border-radius: 8px; + white-space: nowrap; + visibility: hidden; +} + +.bom .bom-checkbox:hover:before, +.bom .bom-checkbox:hover:after { + visibility: visible; + transition: visibility 0.2s linear 1s; +} + +.split { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; + background-color: inherit; +} + +.split.split-horizontal, +.gutter.gutter-horizontal { + height: 100%; + float: left; +} + +.gutter { + background-color: #ddd; + background-repeat: no-repeat; + background-position: 50%; + transition: background-color 0.3s; +} + +.dark .gutter { + background-color: #777; +} + +.gutter.gutter-horizontal { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg=='); + cursor: ew-resize; + width: 5px; +} + +.gutter.gutter-vertical { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); + cursor: ns-resize; + height: 5px; +} + +.searchbox { + float: left; + height: 40px; + margin: 10px 5px; + padding: 12px 32px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 18px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 6px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg=='); + background-position: 10px 10px; + background-repeat: no-repeat; +} + +.dark .searchbox { + background-color: #111; + color: #eee; +} + +.searchbox::placeholder { + color: #ccc; +} + +.dark .searchbox::placeholder { + color: #666; +} + +.filter { + width: calc(60% - 64px); +} + +.reflookup { + width: calc(40% - 10px); +} + +input[type=text]:focus { + background-color: white; + border: 1px solid #333; +} + +.dark input[type=text]:focus { + background-color: #333; + border: 1px solid #ccc; +} + +mark.highlight { + background-color: #5050ff; + color: #fff; + padding: 2px; + border-radius: 6px; +} + +.dark mark.highlight { + background-color: #76a6da; + color: #111; +} + +.menubtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A"); + background-position: center; + background-repeat: no-repeat; +} + +.statsbtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.iobtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.visbtn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; + padding: 15px; +} + +#vismenu-content { + left: 0px; + font-family: Verdana, sans-serif; +} + +.dark .statsbtn, +.dark .savebtn, +.dark .menubtn, +.dark .iobtn, +.dark .visbtn { + filter: invert(1); +} + +.flexbox { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.savebtn { + background-color: #d6d6d6; + width: auto; + height: 30px; + flex-grow: 1; + margin: 5px; + border-radius: 4px; +} + +.savebtn:active { + background-color: #0a0; + color: white; +} + +.dark .savebtn:active { + /* This will be inverted */ + background-color: #b3b; +} + +.stats { + border-collapse: collapse; + font-size: 12pt; + table-layout: fixed; + width: 100%; + min-width: 450px; +} + +.dark .stats td { + border: 1px solid #bbb; +} + +.stats td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +#checkbox-stats div { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +#checkbox-stats .bar { + background-color: rgba(28, 251, 0, 0.6); +} + +.menu { + position: relative; + display: inline-block; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.menu-content { + font-size: 12pt !important; + text-align: left !important; + font-weight: normal !important; + display: none; + position: absolute; + background-color: white; + right: 0; + min-width: 300px; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 100; + padding: 8px; +} + +.dark .menu-content { + background-color: #111; +} + +.menu:hover .menu-content { + display: block; +} + +.menu:hover .menubtn, +.menu:hover .iobtn, +.menu:hover .statsbtn { + background-color: #eee; +} + +.menu-label { + display: inline-block; + padding: 8px; + border: 1px solid #ccc; + border-top: 0; + width: calc(100% - 18px); +} + +.menu-label-top { + border-top: 1px solid #ccc; +} + +.menu-textbox { + float: left; + height: 24px; + margin: 10px 5px; + padding: 5px 5px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 14px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 4px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + width: calc(100% - 10px); +} + +.menu-textbox.invalid, +.dark .menu-textbox.invalid { + color: red; +} + +.dark .menu-textbox { + background-color: #222; + color: #eee; +} + +.radio-container { + margin: 4px; +} + +.topmostdiv { + display: flex; + flex-direction: column; + width: 100%; + background-color: white; + transition: background-color 0.3s; +} + +#top { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + align-items: center; +} + +#topdivider { + border-bottom: 2px solid black; + display: flex; + justify-content: center; + align-items: center; +} + +.dark #topdivider { + border-bottom: 2px solid #ccc; +} + +#topdivider>div { + position: relative; +} + +#toptoggle { + cursor: pointer; + user-select: none; + position: absolute; + padding: 0.1rem 0.3rem; + top: -0.4rem; + left: -1rem; + font-size: 1.4rem; + line-height: 60%; + border: 1px solid black; + border-radius: 1rem; + background-color: #fff; + z-index: 100; +} + +.flipped { + transform: rotate(0.5turn); +} + +.dark #toptoggle { + border: 1px solid #fff; + background-color: #222; +} + +#fileinfodiv { + flex: 20rem 1 0; + overflow: auto; +} + +#bomcontrols { + display: flex; + flex-direction: row-reverse; +} + +#bomcontrols>* { + flex-shrink: 0; +} + +#dbg { + display: block; +} + +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #aaa; +} + +::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +.slider { + -webkit-appearance: none; + width: 100%; + margin: 3px 0; + padding: 0; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + border-radius: 3px; +} + +.slider:hover { + opacity: 1; +} + +.slider:focus { + outline: none; +} + +.slider::-webkit-slider-runnable-track { + -webkit-appearance: none; + width: 100%; + height: 8px; + background: #d3d3d3; + border-radius: 3px; + border: none; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin-top: -4px; +} + +.dark .slider::-webkit-slider-thumb { + background: #3d3; +} + +.slider::-moz-range-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; +} + +.slider::-moz-range-track { + height: 8px; + background: #d3d3d3; + border-radius: 3px; +} + +.dark .slider::-moz-range-thumb { + background: #3d3; +} + +.slider::-ms-track { + width: 100%; + height: 8px; + border-width: 3px 0; + background: transparent; + border-color: transparent; + color: transparent; + transition: opacity .2s; +} + +.slider::-ms-fill-lower { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-fill-upper { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin: 0; +} + +.shameless-plug { + font-size: 0.8em; + text-align: center; + display: block; +} + +a { + color: #0278a4; +} + +.dark a { + color: #00b9fd; +} + +#frontcanvas, +#backcanvas { + touch-action: none; +} + +.placeholder { + border: 1px dashed #9f9fda !important; + background-color: #edf2f7 !important; +} + +.dragging { + z-index: 999; +} + +.dark .dragging>table>tbody>tr { + background-color: #252c30; +} + +.dark .placeholder { + filter: invert(1); +} + +.column-spacer { + top: 0; + left: 0; + width: calc(100% - 4px); + position: absolute; + cursor: pointer; + user-select: none; + height: 100%; +} + +.column-width-handle { + top: 0; + right: 0; + width: 4px; + position: absolute; + cursor: col-resize; + user-select: none; + height: 100%; +} + +.column-width-handle:hover { + background-color: #4f99bd; +} + +.help-link { + border: 1px solid #0278a4; + padding-inline: 0.3rem; + border-radius: 3px; + cursor: pointer; +} + +.dark .help-link { + border: 1px solid #00b9fd; +} + +.bom-color { + width: 20%; +} + +.color-column input { + width: 1.6rem; + height: 1rem; + border: 1px solid black; + cursor: pointer; + padding: 0; +} + +/* removes default styling from input color element */ +::-webkit-color-swatch { + border: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-moz-color-swatch, +::-moz-focus-inner { + border: none; +} + +::-moz-focus-inner { + padding: 0; +} +/* #bomhead { + position: sticky; + top: 0px; + z-index: 1; +} */ + </style> + <script type="text/javascript" > +/////////////////////////////////////////////// +/* + Split.js - v1.3.5 + MIT License + https://github.com/nathancahill/Split.js +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net> +// This work is free. You can redistribute it and/or modify it +// under the terms of the WTFPL, Version 2 +// For more information see LICENSE.txt or http://www.wtfpl.net/ +// +// For more information, the home page: +// http://pieroxy.net/blog/pages/lz-string/testing.html +// +// LZ-based compression algorithm, version 1.4.4 +var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/*! + * PEP v0.4.3 | https://github.com/jquery/PEP + * Copyright jQuery Foundation and other contributors | http://jquery.org/license + */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1); +for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0; +var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})} +var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){ +for(var b=a;b.parentNode;)b=b.parentNode; +return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target); +return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){ +// +this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))}, +installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){ +var b=x(a,this.findElements,this); +return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){} +var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[], +isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){ +var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID); +0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button]; +c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a), +c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events), +Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events), +Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b); +d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){ +(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE, +c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey; +var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))}, +shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c) +b=!1;else if("XY"===c) +b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]); +b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0}, +vacuumTouches:function(a){var b=a.touches; +if(R.size>=b.length){var c=[];R.forEach(function(a,d){ +if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId); +if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e, +d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):( +b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)}, +dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0]; +if(this.isPrimaryTouch(c)){ +var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint", "Description"]} +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var pcbdata = JSON.parse(LZString.decompressFromBase64("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")) +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* Utility functions */ + +var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' + + pcbdata.metadata.revision + '__#'; +var storage; + +function initStorage(key) { + try { + window.localStorage.getItem("blank"); + storage = window.localStorage; + } catch (e) { + // localStorage not available + } + if (!storage) { + try { + window.sessionStorage.getItem("blank"); + storage = window.sessionStorage; + } catch (e) { + // sessionStorage also not available + } + } +} + +function readStorage(key) { + if (storage) { + return storage.getItem(storagePrefix + key); + } else { + return null; + } +} + +function writeStorage(key, value) { + if (storage) { + storage.setItem(storagePrefix + key, value); + } +} + +function fancyDblClickHandler(el, onsingle, ondouble) { + return function () { + if (el.getAttribute("data-dblclick") == null) { + el.setAttribute("data-dblclick", 1); + setTimeout(function () { + if (el.getAttribute("data-dblclick") == 1) { + onsingle(); + } + el.removeAttribute("data-dblclick"); + }, 200); + } else { + el.removeAttribute("data-dblclick"); + ondouble(); + } + } +} + +function smoothScrollToRow(rowid) { + document.getElementById(rowid).scrollIntoView({ + behavior: "smooth", + block: "center", + inline: "nearest" + }); +} + +function focusInputField(input) { + input.scrollIntoView(false); + input.focus(); + input.select(); +} + +function saveBomTable(output) { + var text = ''; + for (var node of bomhead.childNodes[0].childNodes) { + if (node.firstChild) { + text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue); + } + if (node != bomhead.childNodes[0].lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + for (var row of bombody.childNodes) { + for (var cell of row.childNodes) { + let val = ''; + for (var node of cell.childNodes) { + if (node.nodeName == "INPUT") { + if (node.checked) { + val += '✓'; + } + } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) { + val += node.firstChild.nodeValue; + } else { + val += node.nodeValue; + } + } + if (output == 'csv') { + val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters + if (isNumeric(val)) { + val = +val; // use number + } else { + val = `"${val}"`; // enclosed within double-quote + } + } + text += val; + if (cell != row.lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + } + + if (output != 'clipboard') { + // To file: csv or txt + var blob = new Blob([text], { + type: `text/${output}` + }); + saveFile(`${pcbdata.metadata.title}.${output}`, blob); + } else { + // To clipboard + var textArea = document.createElement("textarea"); + textArea.classList.add('clipboard-temp'); + textArea.value = text; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + if (document.execCommand('copy')) { + console.log('Bom copied to clipboard.'); + } + } catch (err) { + console.log('Can not copy to clipboard.'); + } + + document.body.removeChild(textArea); + } +} + +function isNumeric(str) { + /* https://stackoverflow.com/a/175787 */ + return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str))); +} + +function removeGutterNode(node) { + for (var i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].classList && + node.childNodes[i].classList.contains("gutter")) { + node.removeChild(node.childNodes[i]); + break; + } + } +} + +function cleanGutters() { + removeGutterNode(document.getElementById("bot")); + removeGutterNode(document.getElementById("canvasdiv")); +} + +var units = { + prefixes: { + giga: ["G", "g", "giga", "Giga", "GIGA"], + mega: ["M", "mega", "Mega", "MEGA"], + kilo: ["K", "k", "kilo", "Kilo", "KILO"], + milli: ["m", "milli", "Milli", "MILLI"], + micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ + nano: ["N", "n", "nano", "Nano", "NANO"], + pico: ["P", "p", "pico", "Pico", "PICO"], + }, + unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"], + unitsLong: [ + "OHM", "Ohm", "ohm", "ohms", + "FARAD", "Farad", "farad", + "HENRY", "Henry", "henry" + ], + getMultiplier: function (s) { + if (this.prefixes.giga.includes(s)) return 1e9; + if (this.prefixes.mega.includes(s)) return 1e6; + if (this.prefixes.kilo.includes(s)) return 1e3; + if (this.prefixes.milli.includes(s)) return 1e-3; + if (this.prefixes.micro.includes(s)) return 1e-6; + if (this.prefixes.nano.includes(s)) return 1e-9; + if (this.prefixes.pico.includes(s)) return 1e-12; + return 1; + }, + valueRegex: null, +} + +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 resetSettings() { + if (!confirm( + `This will reset all checkbox states and other settings.\n\n` + + `Press OK if you want to continue.`)) { + return; + } + if (storage) { + var keys = []; + for (var i = 0; i < storage.length; i++) { + var key = storage.key(i); + if (key.startsWith(storagePrefix)) keys.push(key); + } + for (var key of keys) storage.removeItem(key); + } + location.reload(); +} + +function overwriteSettings(newSettings) { + initDone = false; + Object.assign(settings, newSettings); + writeStorage("bomlayout", settings.bomlayout); + writeStorage("bommode", settings.bommode); + writeStorage("canvaslayout", settings.canvaslayout); + writeStorage("bomCheckboxes", settings.checkboxes.join(",")); + document.getElementById("bomCheckboxes").value = settings.checkboxes.join(","); + for (var checkbox of settings.checkboxes) { + writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]); + } + writeStorage("markWhenChecked", settings.markWhenChecked); + padsVisible(settings.renderPads); + document.getElementById("padsCheckbox").checked = settings.renderPads; + fabricationVisible(settings.renderFabrication); + document.getElementById("fabricationCheckbox").checked = settings.renderFabrication; + silkscreenVisible(settings.renderSilkscreen); + document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen; + referencesVisible(settings.renderReferences); + document.getElementById("referencesCheckbox").checked = settings.renderReferences; + valuesVisible(settings.renderValues); + document.getElementById("valuesCheckbox").checked = settings.renderValues; + tracksVisible(settings.renderTracks); + document.getElementById("tracksCheckbox").checked = settings.renderTracks; + zonesVisible(settings.renderZones); + document.getElementById("zonesCheckbox").checked = settings.renderZones; + dnpOutline(settings.renderDnpOutline); + document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline; + setRedrawOnDrag(settings.redrawOnDrag); + document.getElementById("dragCheckbox").checked = settings.redrawOnDrag; + setDarkMode(settings.darkMode); + document.getElementById("darkmodeCheckbox").checked = settings.darkMode; + setHighlightPin1(settings.highlightpin1); + document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + setOffsetBackRotation(settings.offsetBackRotation); + document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation; + initDone = true; + prepCheckboxes(); + changeBomLayout(settings.bomlayout); +} + +function saveFile(filename, blob) { + var link = document.createElement("a"); + var objurl = URL.createObjectURL(blob); + link.download = filename; + link.href = objurl; + link.click(); +} + +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); +} + +var settings = { + canvaslayout: "FB", + bomlayout: "left-right", + bommode: "grouped", + checkboxes: [], + checkboxStoredRefs: {}, + darkMode: false, + highlightpin1: "none", + redrawOnDrag: true, + boardRotation: 0, + offsetBackRotation: false, + renderPads: true, + renderReferences: true, + renderValues: true, + renderSilkscreen: true, + renderFabrication: true, + renderDnpOutline: false, + renderTracks: true, + renderZones: true, + columnOrder: [], + hiddenColumns: [], + netColors: {}, +} + +function initDefaults() { + settings.bomlayout = readStorage("bomlayout"); + if (settings.bomlayout === null) { + settings.bomlayout = config.bom_view; + } + if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) { + settings.bomlayout = config.bom_view; + } + settings.bommode = readStorage("bommode"); + if (settings.bommode === null) { + settings.bommode = "grouped"; + } + if (settings.bommode == "netlist" && !pcbdata.nets) { + settings.bommode = "grouped"; + } + if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) { + settings.bommode = "grouped"; + } + settings.canvaslayout = readStorage("canvaslayout"); + if (settings.canvaslayout === null) { + settings.canvaslayout = config.layer_view; + } + var bomCheckboxes = readStorage("bomCheckboxes"); + if (bomCheckboxes === null) { + bomCheckboxes = config.checkboxes; + } + settings.checkboxes = bomCheckboxes.split(",").filter((e) => e); + document.getElementById("bomCheckboxes").value = bomCheckboxes; + + var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1; + if (highlightpin1 === "false") highlightpin1 = "none"; + if (highlightpin1 === "true") highlightpin1 = "all"; + setHighlightPin1(highlightpin1); + document.forms.highlightpin1.highlightpin1.value = highlightpin1; + + settings.markWhenChecked = readStorage("markWhenChecked") || ""; + populateMarkWhenCheckedOptions(); + + function initBooleanSetting(storageString, def, elementId, func) { + var b = readStorage(storageString); + if (b === null) { + b = def; + } else { + b = (b == "true"); + } + document.getElementById(elementId).checked = b; + func(b); + } + + initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible); + initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible); + initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible); + initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible); + initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible); + if ("tracks" in pcbdata) { + initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible); + initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible); + } else { + document.getElementById("tracksAndZonesCheckboxes").style.display = "none"; + tracksVisible(false); + zonesVisible(false); + } + initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline); + initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag); + initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode); + + var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]); + var hcols = JSON.parse(readStorage("hiddenColumns")); + if (hcols === null) { + hcols = []; + } + settings.hiddenColumns = hcols.filter(e => fields.includes(e)); + + var cord = JSON.parse(readStorage("columnOrder")); + if (cord === null) { + cord = fields; + } else { + cord = cord.filter(e => fields.includes(e)); + if (cord.length != fields.length) + cord = fields; + } + settings.columnOrder = cord; + + settings.boardRotation = readStorage("boardRotation"); + if (settings.boardRotation === null) { + settings.boardRotation = config.board_rotation * 5; + } else { + settings.boardRotation = parseInt(settings.boardRotation); + } + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation); + + settings.netColors = JSON.parse(readStorage("netColors")) || {}; +} + +// Helper classes for user js callbacks. + +const IBOM_EVENT_TYPES = { + ALL: "all", + HIGHLIGHT_EVENT: "highlightEvent", + CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent", + BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent", +} + +const EventHandler = { + callbacks: {}, + init: function () { + for (eventType of Object.values(IBOM_EVENT_TYPES)) + this.callbacks[eventType] = []; + }, + registerCallback: function (eventType, callback) { + this.callbacks[eventType].push(callback); + }, + emitEvent: function (eventType, eventArgs) { + event = { + eventType: eventType, + args: eventArgs, + } + var callback; + for (callback of this.callbacks[eventType]) + callback(event); + for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL]) + callback(event); + } +} +EventHandler.init(); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* PCB rendering code */ + +var emptyContext2d = document.createElement("canvas").getContext("2d"); + +function deg2rad(deg) { + return deg * Math.PI / 180; +} + +function calcFontPoint(linepoint, text, offsetx, offsety, tilt) { + var point = [ + linepoint[0] * text.width + offsetx, + linepoint[1] * text.height + offsety + ]; + // This approximates pcbnew behavior with how text tilts depending on horizontal justification + point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt; + return point; +} + +function drawText(ctx, text, color) { + if ("ref" in text && !settings.renderReferences) return; + if ("val" in text && !settings.renderValues) return; + ctx.save(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.lineWidth = text.thickness; + if ("svgpath" in text) { + ctx.stroke(new Path2D(text.svgpath)); + ctx.restore(); + return; + } + if ("polygons" in text) { + ctx.fill(getPolygonsPath(text)); + ctx.restore(); + return; + } + ctx.translate(...text.pos); + ctx.translate(text.thickness * 0.5, 0); + var angle = -text.angle; + if (text.attr.includes("mirrored")) { + ctx.scale(-1, 1); + angle = -angle; + } + var tilt = 0; + if (text.attr.includes("italic")) { + tilt = 0.125; + } + var interline = text.height * 1.5 + text.thickness; + var txt = text.text.split("\n"); + // KiCad ignores last empty line. + if (txt[txt.length - 1] == '') txt.pop(); + ctx.rotate(deg2rad(angle)); + var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset + offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset + for (var i in txt) { + var lineWidth = text.thickness + interline / 2 * tilt; + for (var j = 0; j < txt[i].length; j++) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + lineWidth += fourSpaces - lineWidth % fourSpaces; + } else { + if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + } + lineWidth += pcbdata.font_data[txt[i][j]].w * text.width; + } + } + var offsetx = -lineWidth * (text.justify[0] + 1) / 2; + var inOverbar = false; + for (var j = 0; j < txt[i].length; j++) { + if (config.kicad_text_formatting) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + offsetx += fourSpaces - offsetx % fourSpaces; + continue; + } else if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + if (txt[i][j] != '~') { + inOverbar = !inOverbar; + } + } + } + var glyph = pcbdata.font_data[txt[i][j]]; + if (inOverbar) { + var overbarStart = [offsetx, -text.height * 1.4 + offsety]; + var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]]; + + if (!lastHadOverbar) { + overbarStart[0] += text.height * 1.4 * tilt; + lastHadOverbar = true; + } + ctx.beginPath(); + ctx.moveTo(...overbarStart); + ctx.lineTo(...overbarEnd); + ctx.stroke(); + } else { + lastHadOverbar = false; + } + for (var line of glyph.l) { + ctx.beginPath(); + ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt)); + for (var k = 1; k < line.length; k++) { + ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt)); + } + ctx.stroke(); + } + offsetx += glyph.w * text.width; + } + offsety += interline; + } + ctx.restore(); +} + +function drawedge(ctx, scalefactor, edge, color) { + ctx.strokeStyle = color; + ctx.fillStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, edge.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + if ("svgpath" in edge) { + ctx.stroke(new Path2D(edge.svgpath)); + } else { + ctx.beginPath(); + if (edge.type == "segment") { + ctx.moveTo(...edge.start); + ctx.lineTo(...edge.end); + } + if (edge.type == "rect") { + ctx.moveTo(...edge.start); + ctx.lineTo(edge.start[0], edge.end[1]); + ctx.lineTo(...edge.end); + ctx.lineTo(edge.end[0], edge.start[1]); + ctx.lineTo(...edge.start); + } + if (edge.type == "arc") { + ctx.arc( + ...edge.start, + edge.radius, + deg2rad(edge.startangle), + deg2rad(edge.endangle)); + } + if (edge.type == "circle") { + ctx.arc( + ...edge.start, + edge.radius, + 0, 2 * Math.PI); + ctx.closePath(); + } + if (edge.type == "curve") { + ctx.moveTo(...edge.start); + ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end); + } + if("filled" in edge && edge.filled) + ctx.fill(); + else + ctx.stroke(); + } +} + +function getChamferedRectPath(size, radius, chamfpos, chamfratio) { + // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8 + var path = new Path2D(); + var width = size[0]; + var height = size[1]; + var x = width * -0.5; + var y = height * -0.5; + var chamfOffset = Math.min(width, height) * chamfratio; + path.moveTo(x, 0); + if (chamfpos & 4) { + path.lineTo(x, y + height - chamfOffset); + path.lineTo(x + chamfOffset, y + height); + path.lineTo(0, y + height); + } else { + path.arcTo(x, y + height, x + width, y + height, radius); + } + if (chamfpos & 8) { + path.lineTo(x + width - chamfOffset, y + height); + path.lineTo(x + width, y + height - chamfOffset); + path.lineTo(x + width, 0); + } else { + path.arcTo(x + width, y + height, x + width, y, radius); + } + if (chamfpos & 2) { + path.lineTo(x + width, y + chamfOffset); + path.lineTo(x + width - chamfOffset, y); + path.lineTo(0, y); + } else { + path.arcTo(x + width, y, x, y, radius); + } + if (chamfpos & 1) { + path.lineTo(x + chamfOffset, y); + path.lineTo(x, y + chamfOffset); + path.lineTo(x, 0); + } else { + path.arcTo(x, y, x, y + height, radius); + } + path.closePath(); + return path; +} + +function getOblongPath(size) { + return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0); +} + +function getPolygonsPath(shape) { + if (shape.path2d) { + return shape.path2d; + } + if ("svgpath" in shape) { + shape.path2d = new Path2D(shape.svgpath); + } else { + var path = new Path2D(); + for (var polygon of shape.polygons) { + path.moveTo(...polygon[0]); + for (var i = 1; i < polygon.length; i++) { + path.lineTo(...polygon[i]); + } + path.closePath(); + } + shape.path2d = path; + } + return shape.path2d; +} + +function drawPolygonShape(ctx, scalefactor, shape, color) { + ctx.save(); + if (!("svgpath" in shape)) { + ctx.translate(...shape.pos); + ctx.rotate(deg2rad(-shape.angle)); + } + if("filled" in shape && !shape.filled) { + ctx.strokeStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, shape.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.stroke(getPolygonsPath(shape)); + } else { + ctx.fillStyle = color; + ctx.fill(getPolygonsPath(shape)); + } + ctx.restore(); +} + +function drawDrawing(ctx, scalefactor, drawing, color) { + if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) { + drawedge(ctx, scalefactor, drawing, color); + } else if (drawing.type == "polygon") { + drawPolygonShape(ctx, scalefactor, drawing, color); + } else { + drawText(ctx, drawing, color); + } +} + +function getCirclePath(radius) { + var path = new Path2D(); + path.arc(0, 0, radius, 0, 2 * Math.PI); + path.closePath(); + return path; +} + +function getCachedPadPath(pad) { + if (!pad.path2d) { + // if path2d is not set, build one and cache it on pad object + if (pad.shape == "rect") { + pad.path2d = new Path2D(); + pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size); + } else if (pad.shape == "oval") { + pad.path2d = getOblongPath(pad.size); + } else if (pad.shape == "circle") { + pad.path2d = getCirclePath(pad.size[0] / 2); + } else if (pad.shape == "roundrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0); + } else if (pad.shape == "chamfrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio) + } else if (pad.shape == "custom") { + pad.path2d = getPolygonsPath(pad); + } + } + return pad.path2d; +} + +function drawPad(ctx, pad, color, outline) { + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + if (pad.offset) { + ctx.translate(...pad.offset); + } + ctx.fillStyle = color; + ctx.strokeStyle = color; + var path = getCachedPadPath(pad); + if (outline) { + ctx.stroke(path); + } else { + ctx.fill(path); + } + ctx.restore(); +} + +function drawPadHole(ctx, pad, padHoleColor) { + if (pad.type != "th") return; + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + ctx.fillStyle = padHoleColor; + if (pad.drillshape == "oblong") { + ctx.fill(getOblongPath(pad.drillsize)); + } else { + ctx.fill(getCirclePath(pad.drillsize[0] / 2)); + } + ctx.restore(); +} + +function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) { + if (highlight) { + // draw bounding box + if (footprint.layer == layer) { + ctx.save(); + ctx.globalAlpha = 0.2; + ctx.translate(...footprint.bbox.pos); + ctx.rotate(deg2rad(-footprint.bbox.angle)); + ctx.translate(...footprint.bbox.relpos); + ctx.fillStyle = colors.pad; + ctx.fillRect(0, 0, ...footprint.bbox.size); + ctx.globalAlpha = 1; + ctx.strokeStyle = colors.pad; + ctx.lineWidth = 3 / scalefactor; + ctx.strokeRect(0, 0, ...footprint.bbox.size); + ctx.restore(); + } + } + // draw drawings + for (var drawing of footprint.drawings) { + if (drawing.layer == layer) { + drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad); + } + } + ctx.lineWidth = 3 / scalefactor; + // draw pads + if (settings.renderPads) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, colors.pad, outline); + if (pad.pin1 && + (settings.highlightpin1 == "all" || + settings.highlightpin1 == "selected" && highlight)) { + drawPad(ctx, pad, colors.outline, true); + } + } + } + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, colors.padHole); + } + } +} + +function drawEdgeCuts(canvas, scalefactor) { + var ctx = canvas.getContext("2d"); + var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color'); + for (var edge of pcbdata.edges) { + drawDrawing(ctx, scalefactor, edge, edgecolor); + } +} + +function drawFootprints(canvas, layer, scalefactor, highlight) { + var ctx = canvas.getContext("2d"); + ctx.lineWidth = 3 / scalefactor; + var style = getComputedStyle(topmostdiv); + + var colors = { + pad: style.getPropertyValue('--pad-color'), + padHole: style.getPropertyValue('--pad-hole-color'), + outline: style.getPropertyValue('--pin1-outline-color'), + } + + for (var i = 0; i < pcbdata.footprints.length; i++) { + var mod = pcbdata.footprints[i]; + var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i); + var h = highlightedFootprints.includes(i); + var d = markedFootprints.has(i); + if (highlight) { + if(h && d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-both'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both'); + } else if (h) { + colors.pad = style.getPropertyValue('--pad-color-highlight'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight'); + } else if (d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-marked'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked'); + } + } + if( h || d || !highlight) { + drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline); + } + } +} + +function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) { + var ctx = canvas.getContext("2d"); + for (var d of pcbdata.drawings[layername][layer]) { + if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) { + drawedge(ctx, scalefactor, d, edgeColor); + } else if (d.type == "polygon") { + drawPolygonShape(ctx, scalefactor, d, polygonColor); + } else { + drawText(ctx, d, textColor); + } + } +} + +function drawTracks(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineCap = "round"; + + var hasHole = (track) => ( + 'drillsize' in track && + track.start[0] == track.end[0] && + track.start[1] == track.end[1]); + + // First draw tracks and tented vias + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (!hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + if ('radius' in track) { + ctx.arc( + ...track.center, + track.radius, + deg2rad(track.startangle), + deg2rad(track.endangle)); + } else { + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + } + ctx.stroke(); + } + } + // Second pass to draw untented vias + var style = getComputedStyle(topmostdiv); + var holeColor = style.getPropertyValue('--pad-hole-color') + + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + ctx.stroke(); + ctx.strokeStyle = holeColor; + ctx.lineWidth = track.drillsize; + ctx.lineTo(...track.end); + ctx.stroke(); + } + } +} + +function drawZones(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineJoin = "round"; + for (var zone of pcbdata.zones[layer]) { + if (highlight && highlightedNet != zone.net) continue; + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + if (!zone.path2d) { + zone.path2d = getPolygonsPath(zone); + } + ctx.fill(zone.path2d, zone.fillrule || "nonzero"); + if (zone.width > 0) { + ctx.lineWidth = zone.width; + ctx.stroke(zone.path2d); + } + } +} + +function clearCanvas(canvas, color = null) { + var ctx = canvas.getContext("2d"); + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + if (color) { + ctx.fillStyle = color; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } else { + if (!window.matchMedia("print").matches) + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + ctx.restore(); +} + +function drawNets(canvas, layer, highlight) { + var style = getComputedStyle(topmostdiv); + if (settings.renderZones) { + var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color'); + drawZones(canvas, layer, zoneColor, highlight); + } + if (settings.renderTracks) { + var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color'); + drawTracks(canvas, layer, trackColor, highlight); + } + if (highlight && settings.renderPads) { + var padColor = style.getPropertyValue('--pad-color-highlight'); + var padHoleColor = style.getPropertyValue('--pad-hole-color'); + var ctx = canvas.getContext("2d"); + for (var footprint of pcbdata.footprints) { + // draw pads + var padDrawn = false; + for (var pad of footprint.pads) { + if (highlightedNet != pad.net) continue; + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, padColor, false); + padDrawn = true; + } + } + if (padDrawn) { + // redraw all pad holes because some pads may overlap + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, padHoleColor); + } + } + } + } +} + +function drawHighlightsOnLayer(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.highlight); + } + if (markedFootprints.size > 0 || highlightedFootprints.length > 0) { + drawFootprints(canvasdict.highlight, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, true); + } + if (highlightedNet !== null) { + drawNets(canvasdict.highlight, canvasdict.layer, true); + } +} + +function drawHighlights() { + drawHighlightsOnLayer(allcanvas.front); + drawHighlightsOnLayer(allcanvas.back); +} + +function drawBackground(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.bg); + clearCanvas(canvasdict.fab); + clearCanvas(canvasdict.silk); + } + + drawNets(canvasdict.bg, canvasdict.layer, false); + drawFootprints(canvasdict.bg, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, false); + + drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom); + + var style = getComputedStyle(topmostdiv); + var edgeColor = style.getPropertyValue('--silkscreen-edge-color'); + var polygonColor = style.getPropertyValue('--silkscreen-polygon-color'); + var textColor = style.getPropertyValue('--silkscreen-text-color'); + if (settings.renderSilkscreen) { + drawBgLayer( + "silkscreen", canvasdict.silk, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } + edgeColor = style.getPropertyValue('--fabrication-edge-color'); + polygonColor = style.getPropertyValue('--fabrication-polygon-color'); + textColor = style.getPropertyValue('--fabrication-text-color'); + if (settings.renderFabrication) { + drawBgLayer( + "fabrication", canvasdict.fab, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } +} + +function prepareCanvas(canvas, flip, transform) { + var ctx = canvas.getContext("2d"); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.scale(transform.zoom, transform.zoom); + ctx.translate(transform.panx, transform.pany); + if (flip) { + ctx.scale(-1, 1); + } + ctx.translate(transform.x, transform.y); + ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + ctx.scale(transform.s, transform.s); +} + +function prepareLayer(canvasdict) { + var flip = (canvasdict.layer === "B"); + for (var c of ["bg", "fab", "silk", "highlight"]) { + prepareCanvas(canvasdict[c], flip, canvasdict.transform); + } +} + +function rotateVector(v, angle) { + angle = deg2rad(angle); + return [ + v[0] * Math.cos(angle) - v[1] * Math.sin(angle), + v[0] * Math.sin(angle) + v[1] * Math.cos(angle) + ]; +} + +function applyRotation(bbox, flip) { + var corners = [ + [bbox.minx, bbox.miny], + [bbox.minx, bbox.maxy], + [bbox.maxx, bbox.miny], + [bbox.maxx, bbox.maxy], + ]; + corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + return { + minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity), + miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity), + maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity), + maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity), + } +} + +function recalcLayerScale(layerdict, width, height) { + var flip = (layerdict.layer === "B"); + var bbox = applyRotation(pcbdata.edges_bbox, flip); + var scalefactor = 0.98 * Math.min( + width / (bbox.maxx - bbox.minx), + height / (bbox.maxy - bbox.miny) + ); + if (scalefactor < 0.1) { + scalefactor = 1; + } + layerdict.transform.s = scalefactor; + if (flip) { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5; + } else { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5; + } + layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5; + for (var c of ["bg", "fab", "silk", "highlight"]) { + canvas = layerdict[c]; + canvas.width = width; + canvas.height = height; + canvas.style.width = (width / devicePixelRatio) + "px"; + canvas.style.height = (height / devicePixelRatio) + "px"; + } +} + +function redrawCanvas(layerdict) { + prepareLayer(layerdict); + drawBackground(layerdict); + drawHighlightsOnLayer(layerdict); +} + +function resizeCanvas(layerdict) { + var canvasdivid = { + "F": "frontcanvas", + "B": "backcanvas" + } [layerdict.layer]; + var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio; + var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio; + recalcLayerScale(layerdict, width, height); + redrawCanvas(layerdict); +} + +function resizeAll() { + resizeCanvas(allcanvas.front); + resizeCanvas(allcanvas.back); +} + +function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) { + var A = x - x1; + var B = y - y1; + var C = x2 - x1; + var D = y2 - y1; + + var dot = A * C + B * D; + var len_sq = C * C + D * D; + var dx, dy; + if (len_sq == 0) { + // start and end of the segment coincide + dx = x - x1; + dy = y - y1; + } else { + var param = dot / len_sq; + var xx, yy; + if (param < 0) { + xx = x1; + yy = y1; + } else if (param > 1) { + xx = x2; + yy = y2; + } else { + xx = x1 + param * C; + yy = y1 + param * D; + } + dx = x - xx; + dy = y - yy; + } + return dx * dx + dy * dy <= d * d; +} + +function modulo(n, mod) { + return ((n % mod) + mod) % mod; +} + +function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) { + var dx = x - xc; + var dy = y - yc; + var r_sq = dx * dx + dy * dy; + var rmin = Math.max(0, radius - d); + var rmax = radius + d; + + if (r_sq < rmin * rmin || r_sq > rmax * rmax) + return false; + + var angle1 = modulo(deg2rad(startangle), 2 * Math.PI); + var dx1 = xc + radius * Math.cos(angle1) - x; + var dy1 = yc + radius * Math.sin(angle1) - y; + if (dx1 * dx1 + dy1 * dy1 <= d * d) + return true; + + var angle2 = modulo(deg2rad(endangle), 2 * Math.PI); + var dx2 = xc + radius * Math.cos(angle2) - x; + var dy2 = yc + radius * Math.sin(angle2) - y; + if (dx2 * dx2 + dy2 * dy2 <= d * d) + return true; + + var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI); + if (angle1 > angle2) + return (angle >= angle2 || angle <= angle1); + else + return (angle >= angle1 && angle <= angle2); +} + +function pointWithinPad(x, y, pad) { + var v = [x - pad.pos[0], y - pad.pos[1]]; + v = rotateVector(v, pad.angle); + if (pad.offset) { + v[0] -= pad.offset[0]; + v[1] -= pad.offset[1]; + } + return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v); +} + +function netHitScan(layer, x, y) { + // Check track segments + if (settings.renderTracks && pcbdata.tracks) { + for (var track of pcbdata.tracks[layer]) { + if ('radius' in track) { + if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) { + return track.net; + } + } else { + if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) { + return track.net; + } + } + } + } + // Check pads + if (settings.renderPads) { + for (var footprint of pcbdata.footprints) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) { + return pad.net; + } + } + } + } + return null; +} + +function pointWithinFootprintBbox(x, y, bbox) { + var v = [x - bbox.pos[0], y - bbox.pos[1]]; + v = rotateVector(v, bbox.angle); + return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] && + bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1]; +} + +function bboxHitScan(layer, x, y) { + var result = []; + for (var i = 0; i < pcbdata.footprints.length; i++) { + var footprint = pcbdata.footprints[i]; + if (footprint.layer == layer) { + if (pointWithinFootprintBbox(x, y, footprint.bbox)) { + result.push(i); + } + } + } + return result; +} + +function handlePointerDown(e, layerdict) { + if (e.button != 0 && e.button != 1) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + layerdict.pointerStates[e.pointerId] = { + distanceTravelled: 0, + lastX: e.offsetX, + lastY: e.offsetY, + downTime: Date.now(), + }; +} + +function handleMouseClick(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var x = e.offsetX; + var y = e.offsetY; + var t = layerdict.transform; + var flip = layerdict.layer === "B"; + if (flip) { + x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s; + } else { + x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s; + } + y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s; + var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)); + if ("nets" in pcbdata) { + var net = netHitScan(layerdict.layer, ...v); + if (net !== highlightedNet) { + netClicked(net); + } + } + if (highlightedNet === null) { + var footprints = bboxHitScan(layerdict.layer, ...v); + if (footprints.length > 0) { + footprintsClicked(footprints); + } + } +} + +function handlePointerLeave(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function resetTransform(layerdict) { + layerdict.transform.panx = 0; + layerdict.transform.pany = 0; + layerdict.transform.zoom = 1; + redrawCanvas(layerdict); +} + +function handlePointerUp(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + e.preventDefault(); + e.stopPropagation(); + + if (e.button == 2) { + // Reset pan and zoom on right click. + resetTransform(layerdict); + layerdict.anotherPointerTapped = false; + return; + } + + // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now + var ptr = layerdict.pointerStates[e.pointerId]; + ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY); + + if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) { + if (Object.keys(layerdict.pointerStates).length == 1) { + if (layerdict.anotherPointerTapped) { + // This is the second pointer coming off of a two-finger tap + resetTransform(layerdict); + } else { + // This is just a regular tap + handleMouseClick(e, layerdict); + } + layerdict.anotherPointerTapped = false; + } else { + // This is the first finger coming off of what could become a two-finger tap + layerdict.anotherPointerTapped = true; + } + } else { + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + layerdict.anotherPointerTapped = false; + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function handlePointerMove(e, layerdict) { + if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var thisPtr = layerdict.pointerStates[e.pointerId]; + + var dx = e.offsetX - thisPtr.lastX; + var dy = e.offsetY - thisPtr.lastY; + + // If this number is low on pointer up, we count the action as a click + thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy); + + if (Object.keys(layerdict.pointerStates).length == 1) { + // This is a simple drag + layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom; + layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom; + } else if (Object.keys(layerdict.pointerStates).length == 2) { + var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0]; + + var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2)); + var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2)); + + var scaleFactor = newDist / oldDist; + + if (scaleFactor != NaN) { + layerdict.transform.zoom *= scaleFactor; + + var zoomd = (1 - scaleFactor) / layerdict.transform.zoom; + layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd; + layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd; + } + } + + thisPtr.lastX = e.offsetX; + thisPtr.lastY = e.offsetY; + + if (settings.redrawOnDrag) { + redrawCanvas(layerdict); + } +} + +function handleMouseWheel(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + var t = layerdict.transform; + var wheeldelta = e.deltaY; + if (e.deltaMode == 1) { + // FF only, scroll by lines + wheeldelta *= 30; + } else if (e.deltaMode == 2) { + wheeldelta *= 300; + } + var m = Math.pow(1.1, -wheeldelta / 40); + // Limit amount of zoom per tick. + if (m > 2) { + m = 2; + } else if (m < 0.5) { + m = 0.5; + } + t.zoom *= m; + var zoomd = (1 - m) / t.zoom; + t.panx += devicePixelRatio * e.offsetX * zoomd; + t.pany += devicePixelRatio * e.offsetY * zoomd; + redrawCanvas(layerdict); +} + +function addMouseHandlers(div, layerdict) { + div.addEventListener("pointerdown", function(e) { + handlePointerDown(e, layerdict); + }); + div.addEventListener("pointermove", function(e) { + handlePointerMove(e, layerdict); + }); + div.addEventListener("pointerup", function(e) { + handlePointerUp(e, layerdict); + }); + var pointerleave = function(e) { + handlePointerLeave(e, layerdict); + } + div.addEventListener("pointercancel", pointerleave); + div.addEventListener("pointerleave", pointerleave); + div.addEventListener("pointerout", pointerleave); + + div.onwheel = function(e) { + handleMouseWheel(e, layerdict); + } + for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) { + element.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }, false); + } +} + +function setRedrawOnDrag(value) { + settings.redrawOnDrag = value; + writeStorage("redrawOnDrag", value); +} + +function setBoardRotation(value) { + settings.boardRotation = value * 5; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("rotationDegree").textContent = settings.boardRotation; + resizeAll(); +} + +function setOffsetBackRotation(value) { + settings.offsetBackRotation = value; + writeStorage("offsetBackRotation", value); + resizeAll(); +} + +function initRender() { + allcanvas = { + front: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("F_bg"), + fab: document.getElementById("F_fab"), + silk: document.getElementById("F_slk"), + highlight: document.getElementById("F_hl"), + layer: "F", + }, + back: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("B_bg"), + fab: document.getElementById("B_fab"), + silk: document.getElementById("B_slk"), + highlight: document.getElementById("B_hl"), + layer: "B", + } + }; + addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front); + addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back); +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* + * Table reordering via Drag'n'Drop + * Inspired by: https://htmldom.dev/drag-and-drop-table-column + */ + +function setBomHandlers() { + + const bom = document.getElementById('bomtable'); + + let dragName; + let placeHolderElements; + let draggingElement; + let forcePopulation; + let xOffset; + let yOffset; + let wasDragged; + + const mouseUpHandler = function(e) { + // Delete dragging element + draggingElement.remove(); + + // Make BOM selectable again + bom.style.removeProperty("userSelect"); + + // Remove listeners + document.removeEventListener('mousemove', mouseMoveHandler); + document.removeEventListener('mouseup', mouseUpHandler); + + if (wasDragged) { + // Redraw whole BOM + populateBomTable(); + } + } + + const mouseMoveHandler = function(e) { + // Notice the dragging + wasDragged = true; + + // Make the dragged element visible + draggingElement.style.removeProperty("display"); + + // Set elements position to mouse position + draggingElement.style.left = `${e.screenX - xOffset}px`; + draggingElement.style.top = `${e.screenY - yOffset}px`; + + // Forced redrawing of BOM table + if (forcePopulation) { + forcePopulation = false; + // Copy array + phe = Array.from(placeHolderElements); + // populate BOM table again + populateBomHeader(dragName, phe); + populateBomBody(dragName, phe); + } + + // Set up array of hidden columns + var hiddenColumns = Array.from(settings.hiddenColumns); + // In the ungrouped mode, quantity don't exist + if (settings.bommode === "ungrouped") + hiddenColumns.push("Quantity"); + // If no checkbox fields can be found, we consider them hidden + if (settings.checkboxes.length == 0) + hiddenColumns.push("checkboxes"); + + // Get table headers and group them into checkboxes, extrafields and normal headers + const bh = document.getElementById("bomhead"); + headers = Array.from(bh.querySelectorAll("th")) + headers.shift() // numCol is not part of the columnOrder + headerGroups = [] + lastCompoundClass = null; + for (i = 0; i < settings.columnOrder.length; i++) { + cElem = settings.columnOrder[i]; + if (hiddenColumns.includes(cElem)) { + // Hidden columns appear as a dummy element + headerGroups.push([]); + continue; + } + elem = headers.filter(e => getColumnOrderName(e) === cElem)[0]; + if (elem.classList.contains("bom-checkbox")) { + if (lastCompoundClass === "bom-checkbox") { + cbGroup = headerGroups.pop(); + cbGroup.push(elem); + headerGroups.push(cbGroup); + } else { + lastCompoundClass = "bom-checkbox"; + headerGroups.push([elem]) + } + } else { + headerGroups.push([elem]) + } + } + + // Copy settings.columnOrder + var columns = Array.from(settings.columnOrder) + + // Set up array with indices of hidden columns + var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e)); + var dragIndex = columns.indexOf(dragName); + var swapIndex = dragIndex; + var swapDone = false; + + // Check if the current dragged element is swapable with the left or right element + if (dragIndex > 0) { + // Get left headers boundingbox + swapIndex = dragIndex - 1; + while (hiddenIndices.includes(swapIndex) && swapIndex > 0) + swapIndex--; + if (!hiddenIndices.includes(swapIndex)) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX < box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + if ((!swapDone) && dragIndex < headerGroups.length - 1) { + // Get right headers boundingbox + swapIndex = dragIndex + 1; + while (hiddenIndices.includes(swapIndex)) + swapIndex++; + if (swapIndex < headerGroups.length) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX > box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + + // Write back change to storage + if (swapDone) { + settings.columnOrder = columns + writeStorage("columnOrder", JSON.stringify(columns)); + } + + } + + const mouseDownHandler = function(e) { + var target = e.target; + if (target.tagName.toLowerCase() != "td") + target = target.parentElement; + + // Used to check if a dragging has ever happened + wasDragged = false; + + // Create new element which will be displayed as the dragged column + draggingElement = document.createElement("div") + draggingElement.classList.add("dragging"); + draggingElement.style.display = "none"; + draggingElement.style.position = "absolute"; + draggingElement.style.overflow = "hidden"; + + // Get bomhead and bombody elements + const bh = document.getElementById("bomhead"); + const bb = document.getElementById("bombody"); + + // Get all compound headers for the current column + var compoundHeaders; + if (target.classList.contains("bom-checkbox")) { + compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox")); + } else { + compoundHeaders = [target]; + } + + // Create new table which will display the column + var newTable = document.createElement("table"); + newTable.classList.add("bom"); + newTable.style.background = "white"; + draggingElement.append(newTable); + + // Create new header element + var newHeader = document.createElement("thead"); + newTable.append(newHeader); + + // Set up array for storing all placeholder elements + placeHolderElements = []; + + // Add all compound headers to the new thead element and placeholders + compoundHeaders.forEach(function(h) { + clone = cloneElementWithDimensions(h); + newHeader.append(clone); + placeHolderElements.push(clone); + }); + + // Create new body element + var newBody = document.createElement("tbody"); + newTable.append(newBody); + + // Get indices for compound headers + var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e)); + + // For each row in the BOM body... + var rows = bb.querySelectorAll("tr"); + rows.forEach(function(row) { + // ..get the cells for the compound column + const tds = row.querySelectorAll("td"); + var copytds = idxs.map(i => tds[i]); + // Add them to the new element and the placeholders + var newRow = document.createElement("tr"); + copytds.forEach(function(td) { + clone = cloneElementWithDimensions(td); + newRow.append(clone); + placeHolderElements.push(clone); + }); + newBody.append(newRow); + }); + + // Compute width for compound header + var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0); + draggingElement.style.width = `${width}px`; + + // Insert the new dragging element and disable selection on BOM + bom.insertBefore(draggingElement, null); + bom.style.userSelect = "none"; + + // Determine the mouse position offset + xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft); + yOffset = e.screenY - compoundHeaders[0].offsetTop; + + // Get name for the column in settings.columnOrder + dragName = getColumnOrderName(target); + + // Change text and class for placeholder elements + placeHolderElements = placeHolderElements.map(function(e) { + newElem = cloneElementWithDimensions(e); + newElem.textContent = ""; + newElem.classList.add("placeholder"); + return newElem; + }); + + // On next mouse move, the whole BOM needs to be redrawn to show the placeholders + forcePopulation = true; + + // Add listeners for move and up on mouse + document.addEventListener('mousemove', mouseMoveHandler); + document.addEventListener('mouseup', mouseUpHandler); + } + + // In netlist mode, there is nothing to reorder + if (settings.bommode === "netlist") + return; + + // Add mouseDownHandler to every column except the numCol + bom.querySelectorAll("th") + .forEach(function(head) { + if (!head.classList.contains("numCol")) { + head.onmousedown = mouseDownHandler; + } + }); + +} + +function getBoundingClientRectFromMultiple(elements) { + var elems = Array.from(elements); + + if (elems.length == 0) + return null; + + var box = elems.shift() + .getBoundingClientRect(); + + elems.forEach(function(elem) { + var elembox = elem.getBoundingClientRect(); + box.left = Math.min(elembox.left, box.left); + box.top = Math.min(elembox.top, box.top); + box.width += elembox.width; + box.height = Math.max(elembox.height, box.height); + }); + + return box; +} + +function cloneElementWithDimensions(elem) { + var newElem = elem.cloneNode(true); + newElem.style.height = window.getComputedStyle(elem).height; + newElem.style.width = window.getComputedStyle(elem).width; + return newElem; +} + +function getBomTableHeaderIndex(elem) { + const bh = document.getElementById('bomhead'); + const ths = Array.from(bh.querySelectorAll("th")); + return ths.indexOf(elem); +} + +function getColumnOrderName(elem) { + var cname = elem.getAttribute("col_name"); + if (cname === "bom-checkbox") + return "checkboxes"; + else + return cname; +} + +function resizableGrid(tablehead) { + var cols = tablehead.firstElementChild.children; + var rowWidth = tablehead.offsetWidth; + + for (var i = 1; i < cols.length; i++) { + if (cols[i].classList.contains("bom-checkbox")) + continue; + cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%'; + } + + for (var i = 1; i < cols.length - 1; i++) { + var div = document.createElement('div'); + div.className = "column-width-handle"; + cols[i].appendChild(div); + setListeners(div); + } + + function setListeners(div) { + var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth; + + div.addEventListener('mousedown', function(e) { + e.preventDefault(); + e.stopPropagation(); + + curCol = e.target.parentElement; + nxtCol = curCol.nextElementSibling; + startX = e.pageX; + + var padding = paddingDiff(curCol); + + rowWidth = curCol.parentElement.offsetWidth; + curColWidth = curCol.clientWidth - padding; + nxtColWidth = nxtCol.clientWidth - padding; + }); + + document.addEventListener('mousemove', function(e) { + if (startX) { + var diffX = e.pageX - startX; + diffX = -Math.min(-diffX, curColWidth - 20); + diffX = Math.min(diffX, nxtColWidth - 20); + + curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%'; + nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%'; + console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`); + } + }); + + document.addEventListener('mouseup', function(e) { + curCol = undefined; + nxtCol = undefined; + startX = undefined; + nxtColWidth = undefined; + curColWidth = undefined + }); + } + + function paddingDiff(col) { + + if (getStyleVal(col, 'box-sizing') == 'border-box') { + return 0; + } + + var padLeft = getStyleVal(col, 'padding-left'); + var padRight = getStyleVal(col, 'padding-right'); + return (parseInt(padLeft) + parseInt(padRight)); + + } + + function getStyleVal(elm, css) { + return (window.getComputedStyle(elm, null).getPropertyValue(css)) + } +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* DOM manipulation and misc code */ + +var bomsplit; +var canvassplit; +var initDone = false; +var bomSortFunction = null; +var currentSortColumn = null; +var currentSortOrder = null; +var currentHighlightedRowId; +var highlightHandlers = []; +var footprintIndexToHandler = {}; +var netsToHandler = {}; +var markedFootprints = new Set(); +var highlightedFootprints = []; +var highlightedNet = null; +var lastClicked; + +function dbg(html) { + dbgdiv.innerHTML = html; +} + +function redrawIfInitDone() { + if (initDone) { + redrawCanvas(allcanvas.front); + redrawCanvas(allcanvas.back); + } +} + +function padsVisible(value) { + writeStorage("padsVisible", value); + settings.renderPads = value; + redrawIfInitDone(); +} + +function referencesVisible(value) { + writeStorage("referencesVisible", value); + settings.renderReferences = value; + redrawIfInitDone(); +} + +function valuesVisible(value) { + writeStorage("valuesVisible", value); + settings.renderValues = value; + redrawIfInitDone(); +} + +function tracksVisible(value) { + writeStorage("tracksVisible", value); + settings.renderTracks = value; + redrawIfInitDone(); +} + +function zonesVisible(value) { + writeStorage("zonesVisible", value); + settings.renderZones = value; + redrawIfInitDone(); +} + +function dnpOutline(value) { + writeStorage("dnpOutline", value); + settings.renderDnpOutline = value; + redrawIfInitDone(); +} + +function setDarkMode(value) { + if (value) { + topmostdiv.classList.add("dark"); + } else { + topmostdiv.classList.remove("dark"); + } + writeStorage("darkmode", value); + settings.darkMode = value; + redrawIfInitDone(); + if (initDone) { + populateBomTable(); + } +} + +function setShowBOMColumn(field, value) { + if (field === "references") { + var rl = document.getElementById("reflookup"); + rl.disabled = !value; + if (!value) { + rl.value = ""; + updateRefLookup(""); + } + } + + var n = settings.hiddenColumns.indexOf(field); + if (value) { + if (n != -1) { + settings.hiddenColumns.splice(n, 1); + } + } else { + if (n == -1) { + settings.hiddenColumns.push(field); + } + } + + writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns)); + + if (initDone) { + populateBomTable(); + } + + redrawIfInitDone(); +} + + +function setFullscreen(value) { + if (value) { + document.documentElement.requestFullscreen(); + } else { + document.exitFullscreen(); + } +} + +function fabricationVisible(value) { + writeStorage("fabricationVisible", value); + settings.renderFabrication = value; + redrawIfInitDone(); +} + +function silkscreenVisible(value) { + writeStorage("silkscreenVisible", value); + settings.renderSilkscreen = value; + redrawIfInitDone(); +} + +function setHighlightPin1(value) { + writeStorage("highlightpin1", value); + settings.highlightpin1 = value; + redrawIfInitDone(); +} + +function 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 updateNetColors() { + writeStorage("netColors", JSON.stringify(settings.netColors)); + redrawIfInitDone(); +} + +function netColorChangeHandler(net) { + return (event) => { + settings.netColors[net] = event.target.value; + updateNetColors(); + } +} + +function netColorRightClick(net) { + return (event) => { + if(event.button == 2) { + event.preventDefault(); + event.stopPropagation(); + + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + event.target.value = defaultNetColor; + delete settings.netColors[net]; + updateNetColors(); + } + } +} + +function entryMatches(entry) { + if (settings.bommode == "netlist") { + // entry is just a net name + return entry.toLowerCase().indexOf(filter) >= 0; + } + // check refs + if (!settings.hiddenColumns.includes("references")) { + for (var ref of entry) { + if (ref[0].toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + // check fields + for (var i in config.fields) { + var f = config.fields[i]; + if (!settings.hiddenColumns.includes(f)) { + for (var ref of entry) { + if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + } + return false; +} + +function findRefInEntry(entry) { + return entry.filter(r => r[0].toLowerCase() == reflookup); +} + +function highlightFilter(s) { + if (!filter) { + return s; + } + var parts = s.toLowerCase().split(filter); + if (parts.length == 1) { + return s; + } + var r = ""; + var pos = 0; + for (var i in parts) { + if (i > 0) { + r += '<mark class="highlight">' + + s.substring(pos, pos + filter.length) + + '</mark>'; + pos += filter.length; + } + r += s.substring(pos, pos + parts[i].length); + pos += parts[i].length; + } + return r; +} + +function checkboxSetUnsetAllHandler(checkboxname) { + return function () { + var checkboxnum = 0; + while (checkboxnum < settings.checkboxes.length && + settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) { + checkboxnum++; + } + if (checkboxnum >= settings.checkboxes.length) { + return; + } + var allset = true; + var checkbox; + var row; + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + if (!checkbox.checked || checkbox.indeterminate) { + allset = false; + break; + } + } + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + checkbox.checked = !allset; + checkbox.indeterminate = false; + checkbox.onchange(); + } + } +} + +function createColumnHeader(name, cls, comparator, is_checkbox = false) { + var th = document.createElement("TH"); + th.innerHTML = name; + th.classList.add(cls); + if (is_checkbox) + th.setAttribute("col_name", "bom-checkbox"); + else + th.setAttribute("col_name", name); + var span = document.createElement("SPAN"); + span.classList.add("sortmark"); + span.classList.add("none"); + th.appendChild(span); + var spacer = document.createElement("div"); + spacer.className = "column-spacer"; + th.appendChild(spacer); + spacer.onclick = function () { + if (currentSortColumn && th !== currentSortColumn) { + // Currently sorted by another column + currentSortColumn.childNodes[1].classList.remove(currentSortOrder); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + if (currentSortColumn && th === currentSortColumn) { + // Already sorted by this column + if (currentSortOrder == "asc") { + // Sort by this column, descending order + bomSortFunction = function (a, b) { + return -comparator(a, b); + } + currentSortColumn.childNodes[1].classList.remove("asc"); + currentSortColumn.childNodes[1].classList.add("desc"); + currentSortOrder = "desc"; + } else { + // Unsort + bomSortFunction = null; + currentSortColumn.childNodes[1].classList.remove("desc"); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + } else { + // Sort by this column, ascending order + bomSortFunction = comparator; + currentSortColumn = th; + currentSortColumn.childNodes[1].classList.remove("none"); + currentSortColumn.childNodes[1].classList.add("asc"); + currentSortOrder = "asc"; + } + populateBomBody(); + } + if (is_checkbox) { + spacer.onclick = fancyDblClickHandler( + spacer, spacer.onclick, checkboxSetUnsetAllHandler(name)); + } + return th; +} + +function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) { + while (bomhead.firstChild) { + bomhead.removeChild(bomhead.firstChild); + } + var tr = document.createElement("TR"); + var th = document.createElement("TH"); + th.classList.add("numCol"); + + var vismenu = document.createElement("div"); + vismenu.id = "vismenu"; + vismenu.classList.add("menu"); + + var visbutton = document.createElement("div"); + visbutton.classList.add("visbtn"); + visbutton.classList.add("hideonprint"); + + var viscontent = document.createElement("div"); + viscontent.classList.add("menu-content"); + viscontent.id = "vismenu-content"; + + settings.columnOrder.forEach(column => { + if (typeof column !== "string") + return; + + // Skip empty columns + if (column === "checkboxes" && settings.checkboxes.length == 0) + return; + else if (column === "Quantity" && settings.bommode == "ungrouped") + return; + + var label = document.createElement("label"); + label.classList.add("menu-label"); + + var input = document.createElement("input"); + input.classList.add("visibility_checkbox"); + input.type = "checkbox"; + input.onchange = function (e) { + setShowBOMColumn(column, e.target.checked) + }; + input.checked = !(settings.hiddenColumns.includes(column)); + + label.appendChild(input); + if (column.length > 0) + label.append(column[0].toUpperCase() + column.slice(1)); + + viscontent.appendChild(label); + }); + + viscontent.childNodes[0].classList.add("menu-label-top"); + + vismenu.appendChild(visbutton); + if (settings.bommode != "netlist") { + vismenu.appendChild(viscontent); + th.appendChild(vismenu); + } + tr.appendChild(th); + + var checkboxCompareClosure = function (checkbox) { + return (a, b) => { + var stateA = getCheckboxState(checkbox, a); + var stateB = getCheckboxState(checkbox, b); + if (stateA > stateB) return -1; + if (stateA < stateB) return 1; + return 0; + } + } + var stringFieldCompareClosure = function (fieldIndex) { + return (a, b) => { + var fa = pcbdata.bom.fields[a[0][1]][fieldIndex]; + var fb = pcbdata.bom.fields[b[0][1]][fieldIndex]; + if (fa != fb) return fa > fb ? 1 : -1; + else return 0; + } + } + var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/; + var compareRefs = (a, b) => { + var ra = referenceRegex.exec(a); + var rb = referenceRegex.exec(b); + if (ra === null || rb === null) { + if (a != b) return a > b ? 1 : -1; + return 0; + } else { + if (ra.groups.prefix != rb.groups.prefix) { + return ra.groups.prefix > rb.groups.prefix ? 1 : -1; + } + if (ra.groups.number != rb.groups.number) { + return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1; + } + return 0; + } + } + if (settings.bommode == "netlist") { + tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => { + if (a > b) return -1; + if (a < b) return 1; + return 0; + })); + tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => { + return 0; + })); + } else { + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + var valueIndex = config.fields.indexOf("Value"); + var footprintIndex = config.fields.indexOf("Footprint"); + columns.forEach((column) => { + if (column === placeHolderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + th = createColumnHeader( + checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true); + tr.appendChild(th); + } + } else if (column === "References") { + tr.appendChild(createColumnHeader("References", "references", (a, b) => { + var i = 0; + while (i < a.length && i < b.length) { + if (a[i] != 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) { + const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/; + while (bom.firstChild) { + bom.removeChild(bom.firstChild); + } + highlightHandlers = []; + footprintIndexToHandler = {}; + netsToHandler = {}; + currentHighlightedRowId = null; + var first = true; + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + 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); + var color = settings.netColors[netname] || defaultNetColor; + td = document.createElement("TD"); + var colorBox = document.createElement("INPUT"); + colorBox.type = "color"; + colorBox.value = color; + colorBox.onchange = netColorChangeHandler(netname); + colorBox.onmouseup = netColorRightClick(netname); + colorBox.oncontextmenu = (e) => e.preventDefault(); + td.appendChild(colorBox); + td.classList.add("color-column"); + tr.appendChild(td); + } else { + if (reflookup) { + references = findRefInEntry(bomentry); + if (references.length == 0) { + continue; + } + } else { + references = bomentry; + } + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + columns.forEach((column) => { + if (column === placeholderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + if (checkbox) { + td = document.createElement("TD"); + var input = document.createElement("input"); + input.type = "checkbox"; + input.onchange = 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"); + var output = new Array(); + for (let item of valueSet) { + const visible = highlightFilter(String(item)); + if (typeof item === 'string' && item.match(urlRegex)) { + output.push(`<a href="${item}" target="_blank">${visible}</a>`); + } else { + output.push(visible); + } + } + td.innerHTML = output.join(", "); + tr.appendChild(td); + } + }); + } + bom.appendChild(tr); + var handler = createRowHighlightHandler(tr.id, references, netname); + 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("topmostdiv").style.height = ""; + document.getElementById("topmostdiv").style.display = "block"; + break; + case 'top-bottom': + document.getElementById("tb-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.remove("split-horizontal"); + document.getElementById("canvasdiv").classList.remove("split-horizontal"); + document.getElementById("frontcanvas").classList.add("split-horizontal"); + document.getElementById("backcanvas").classList.add("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + direction: "vertical", + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + onDragEnd: resizeAll + }); + break; + case 'left-right': + document.getElementById("lr-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.add("split-horizontal"); + document.getElementById("canvasdiv").classList.add("split-horizontal"); + document.getElementById("frontcanvas").classList.remove("split-horizontal"); + document.getElementById("backcanvas").classList.remove("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + direction: "vertical", + onDragEnd: resizeAll + }); + } + settings.bomlayout = layout; + writeStorage("bomlayout", layout); + changeCanvasLayout(settings.canvaslayout); +} + +function changeBomMode(mode) { + document.getElementById("bom-grouped-btn").classList.remove("depressed"); + document.getElementById("bom-ungrouped-btn").classList.remove("depressed"); + document.getElementById("bom-netlist-btn").classList.remove("depressed"); + var chkbxs = document.getElementsByClassName("visibility_checkbox"); + + switch (mode) { + case 'grouped': + document.getElementById("bom-grouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'ungrouped': + document.getElementById("bom-ungrouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'netlist': + document.getElementById("bom-netlist-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = true; + } + } + + writeStorage("bommode", mode); + if (mode != settings.bommode) { + settings.bommode = mode; + bomSortFunction = null; + currentSortColumn = null; + currentSortOrder = null; + clearHighlightedFootprints(); + } + populateBomTable(); +} + +function focusFilterField() { + focusInputField(document.getElementById("filter")); +} + +function focusRefLookupField() { + focusInputField(document.getElementById("reflookup")); +} + +function toggleBomCheckbox(bomrowid, checkboxnum) { + if (!bomrowid || checkboxnum > settings.checkboxes.length) { + return; + } + var bomrow = document.getElementById(bomrowid); + var 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) + "%)"; +} + +function constrain(number, min, max){ + return Math.min(Math.max(parseInt(number), min), max); +} + +document.onkeydown = function (e) { + switch (e.key) { + case "n": + if (document.activeElement.type == "text") { + return; + } + if (currentHighlightedRowId !== null) { + checkBomCheckbox(currentHighlightedRowId, "placed"); + highlightNextRow(); + e.preventDefault(); + } + break; + case "ArrowUp": + highlightPreviousRow(); + e.preventDefault(); + break; + case "ArrowDown": + highlightNextRow(); + e.preventDefault(); + break; + case "ArrowLeft": + case "ArrowRight": + if (document.activeElement.type != "text"){ + e.preventDefault(); + let boardRotationElement = document.getElementById("boardRotation") + settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5 + if (e.key == "ArrowLeft"){ + settings.boardRotation += 3; // 15 degrees + } + else{ + settings.boardRotation -= 3; + } + settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max); + boardRotationElement.value = settings.boardRotation + setBoardRotation(settings.boardRotation); + } + break; + default: + break; + } + if (e.altKey) { + switch (e.key) { + case "f": + focusFilterField(); + e.preventDefault(); + break; + case "r": + focusRefLookupField(); + e.preventDefault(); + break; + case "z": + changeBomLayout("bom-only"); + e.preventDefault(); + break; + case "x": + changeBomLayout("left-right"); + e.preventDefault(); + break; + case "c": + changeBomLayout("top-bottom"); + e.preventDefault(); + break; + case "v": + changeCanvasLayout("F"); + e.preventDefault(); + break; + case "b": + changeCanvasLayout("FB"); + e.preventDefault(); + break; + case "n": + changeCanvasLayout("B"); + e.preventDefault(); + break; + default: + break; + } + if (e.key >= '1' && e.key <= '9') { + toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key)); + e.preventDefault(); + } + } +} + +function hideNetlistButton() { + document.getElementById("bom-ungrouped-btn").classList.remove("middle-button"); + document.getElementById("bom-ungrouped-btn").classList.add("right-most-button"); + document.getElementById("bom-netlist-btn").style.display = "none"; +} + +function topToggle() { + var top = document.getElementById("top"); + var toptoggle = document.getElementById("toptoggle"); + if (top.style.display === "none") { + top.style.display = "flex"; + toptoggle.classList.remove("flipped"); + } else { + top.style.display = "none"; + toptoggle.classList.add("flipped"); + } +} + +window.onload = function (e) { + 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); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => { +// for(var tr of bom.childNodes) { +// tr.onclick = tr.onmousemove; +// tr.onmousemove = null; +// }; +// }); + +/////////////////////////////////////////////// + </script> +</head> + +<body> + +<div id="topmostdiv" class="topmostdiv"> + <div id="top"> + <div id="fileinfodiv"> + <table class="fileinfo"> + <tbody> + <tr> + <td id="title" class="title" style="width: 70%"> + Title + </td> + <td id="revision" class="title" style="width: 30%"> + Revision + </td> + </tr> + <tr> + <td id="company"> + Company + </td> + <td id="filedate"> + Date + </td> + </tr> + </tbody> + </table> + </div> + <div id="bomcontrols"> + <div class="hideonprint menu"> + <button class="menubtn"></button> + <div class="menu-content"> + <label class="menu-label menu-label-top" style="width: calc(50% - 18px)"> + <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)"> + Dark mode + </label><!-- This comment eats space! All of it! + --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;"> + <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)"> + Full Screen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)"> + Fab layer + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)"> + Silkscreen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)"> + References + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)"> + Values + </label> + <div id="tracksAndZonesCheckboxes"> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)"> + Tracks + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)"> + Zones + </label> + </div> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)"> + Pads + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)"> + DNP outlined + </label> + <label class="menu-label"> + <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)"> + Continuous redraw on drag + </label> + <label class="menu-label"> + Highlight first pin + <form id="highlightpin1"> + <div class="flexbox"> + <label> + <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')"> + None + </label> + <label> + <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')"> + All + </label> + <label> + <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')"> + Selected + </label> + </div> + </form> + </label> + <label class="menu-label"> + <span>Board rotation</span> + <span style="float: right"><span id="rotationDegree">0</span>°</span> + <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)"> + </label> + <label class="menu-label"> + <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)"> + Offset back rotation + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Bom checkboxes</div> + <input id="bomCheckboxes" class="menu-textbox" type=text + oninput="setBomCheckboxes(this.value)"> + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Mark when checked</div> + <div id="markWhenCheckedContainer"></div> + </label> + <label class="menu-label"> + <span class="shameless-plug"> + <span>Created using</span> + <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a> + <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a> + </span> + </label> + </div> + </div> + <div class="button-container hideonprint"> + <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')" + title="Front only">F + </button> + <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')" + title="Front and Back">FB + </button> + <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')" + title="Back only">B + </button> + </div> + <div class="button-container hideonprint"> + <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')" + title="BOM only"></button> + <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')" + title="BOM left, drawings right"></button> + <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')" + title="BOM top, drawings bot"></button> + </div> + <div class="button-container hideonprint"> + <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')" + title="Grouped BOM"></button> + <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')" + title="Ungrouped BOM"></button> + <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')" + title="Netlist"></button> + </div> + <div class="hideonprint menu"> + <button class="statsbtn"></button> + <div class="menu-content"> + <table class="stats"> + <tbody> + <tr> + <td width="40%">Board stats</td> + <td>Front</td> + <td>Back</td> + <td>Total</td> + </tr> + <tr> + <td>Components</td> + <td id="stats-components-front">~</td> + <td id="stats-components-back">~</td> + <td id="stats-components-total">~</td> + </tr> + <tr> + <td>Groups</td> + <td id="stats-groups-front">~</td> + <td id="stats-groups-back">~</td> + <td id="stats-groups-total">~</td> + </tr> + <tr> + <td>SMD pads</td> + <td id="stats-smd-pads-front">~</td> + <td id="stats-smd-pads-back">~</td> + <td id="stats-smd-pads-total">~</td> + </tr> + <tr> + <td>TH pads</td> + <td colspan=3 id="stats-th-pads">~</td> + </tr> + </tbody> + </table> + <table class="stats"> + <col width="40%"/><col /> + <tbody id="checkbox-stats"> + <tr> + <td colspan=2 style="border-top: 0">Checkboxes</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="hideonprint menu"> + <button class="iobtn"></button> + <div class="menu-content"> + <div class="menu-label menu-label-top"> + <div style="margin-left: 5px;">Save board image</div> + <div class="flexbox"> + <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + <span>X</span> + <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + </div> + <label> + <input id="render-save-transparent" type="checkbox"> + Transparent background + </label> + <div class="flexbox"> + <button class="savebtn" onclick="saveImage('F')">Front</button> + <button class="savebtn" onclick="saveImage('B')">Back</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Config and checkbox state</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveSettings()">Export</button> + <button class="savebtn" onclick="loadSettings()">Import</button> + <button class="savebtn" onclick="resetSettings()">Reset</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Save bom table as</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveBomTable('csv')">csv</button> + <button class="savebtn" onclick="saveBomTable('txt')">txt</button> + </div> + </div> + </div> + </div> + </div> + </div> + <div id="topdivider"> + <div class="hideonprint"> + <div id="toptoggle" onclick="topToggle()">︽</div> + </div> + </div> + <div id="bot" class="split" style="flex: 1 1"> + <div id="bomdiv" class="split split-horizontal"> + <div style="width: 100%"> + <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup" + oninput="updateRefLookup(this.value)"> + <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter" + oninput="updateFilter(this.value)"> + <div class="button-container hideonprint" style="float: left; margin: 0;"> + <button id="copy" title="Copy bom table to clipboard" + onclick="saveBomTable('clipboard')"></button> + </div> + </div> + <div id="dbg"></div> + <table class="bom" id="bomtable"> + <thead id="bomhead"> + </thead> + <tbody id="bombody"> + </tbody> + </table> + </div> + <div id="canvasdiv" class="split split-horizontal"> + <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + </div> + </div> +</div> + +</body> + +</html> diff --git a/doc/source/source_rst/hardware/mb/ibom.html b/doc/source/source_rst/hardware/mb/ibom.html new file mode 100644 index 0000000000000000000000000000000000000000..a2fef3a0acd2f01fe70593e855f1a0ad54523001 --- /dev/null +++ b/doc/source/source_rst/hardware/mb/ibom.html @@ -0,0 +1,4669 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Interactive BOM for KiCAD</title> + <style type="text/css"> +:root { + --pcb-edge-color: black; + --pad-color: #878787; + --pad-hole-color: #CCCCCC; + --pad-color-highlight: #D04040; + --pad-color-highlight-both: #D0D040; + --pad-color-highlight-marked: #44a344; + --pin1-outline-color: #ffb629; + --pin1-outline-color-highlight: #ffb629; + --pin1-outline-color-highlight-both: #fcbb39; + --pin1-outline-color-highlight-marked: #fdbe41; + --silkscreen-edge-color: #aa4; + --silkscreen-polygon-color: #4aa; + --silkscreen-text-color: #4aa; + --fabrication-edge-color: #907651; + --fabrication-polygon-color: #907651; + --fabrication-text-color: #a27c24; + --track-color: #def5f1; + --track-color-highlight: #D04040; + --zone-color: #def5f1; + --zone-color-highlight: #d0404080; +} + +html, +body { + margin: 0px; + height: 100%; + font-family: Verdana, sans-serif; +} + +.dark.topmostdiv { + --pcb-edge-color: #eee; + --pad-color: #808080; + --pin1-outline-color: #ffa800; + --pin1-outline-color-highlight: #ccff00; + --track-color: #42524f; + --zone-color: #42524f; + background-color: #252c30; + color: #eee; +} + +button { + background-color: #eee; + border: 1px solid #888; + color: black; + height: 44px; + width: 44px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 14px; + font-weight: bolder; +} + +.dark button { + /* This will be inverted */ + background-color: #c3b7b5; +} + +button.depressed { + background-color: #0a0; + color: white; +} + +.dark button.depressed { + /* This will be inverted */ + background-color: #b3b; +} + +button:focus { + outline: 0; +} + +button#tb-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#lr-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A"); +} + +button#bom-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-grouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-ungrouped-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#bom-netlist-btn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E"); +} + +button#copy { + background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E"); + background-position: 6px 6px; + background-repeat: no-repeat; + background-size: 26px 26px; + border-radius: 6px; + height: 40px; + width: 40px; + margin: 10px 5px; +} + +button#copy:active { + box-shadow: inset 0px 0px 5px #6c6c6c; +} + +textarea.clipboard-temp { + position: fixed; + top: 0; + left: 0; + width: 2em; + height: 2em; + padding: 0; + border: None; + outline: None; + box-shadow: None; + background: transparent; +} + +.left-most-button { + border-right: 0; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.middle-button { + border-right: 0; +} + +.right-most-button { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.button-container { + font-size: 0; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.dark .button-container { + filter: invert(1); +} + +.button-container button { + background-size: 32px 32px; + background-position: 5px 5px; + background-repeat: no-repeat; +} + +@media print { + .hideonprint { + display: none; + } +} + +canvas { + cursor: crosshair; +} + +canvas:active { + cursor: grabbing; +} + +.fileinfo { + width: 100%; + max-width: 1000px; + border: none; + padding: 3px; +} + +.fileinfo .title { + font-size: 20pt; + font-weight: bold; +} + +.fileinfo td { + overflow: hidden; + white-space: nowrap; + max-width: 1px; + width: 50%; + text-overflow: ellipsis; +} + +.bom { + border-collapse: collapse; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 10pt; + table-layout: fixed; + width: 100%; + margin-top: 1px; + position: relative; +} + +.bom th, +.bom td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +.dark .bom th, +.dark .bom td { + border: 1px solid #777; +} + +.bom th { + background-color: #CCCCCC; + background-clip: padding-box; +} + +.dark .bom th { + background-color: #3b4749; +} + +.bom tr.highlighted:nth-child(n) { + background-color: #cfc; +} + +.dark .bom tr.highlighted:nth-child(n) { + background-color: #226022; +} + +.bom tr:nth-child(even) { + background-color: #f2f2f2; +} + +.dark .bom tr:nth-child(even) { + background-color: #313b40; +} + +.bom tr.checked { + color: #1cb53d; +} + +.dark .bom tr.checked { + color: #2cce54; +} + +.bom tr { + transition: background-color 0.2s; +} + +.bom .numCol { + width: 30px; +} + +.bom .value { + width: 15%; +} + +.bom .quantity { + width: 65px; +} + +.bom th .sortmark { + position: absolute; + right: 1px; + top: 1px; + margin-top: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent #221 transparent; + transform-origin: 50% 85%; + transition: opacity 0.2s, transform 0.4s; +} + +.dark .bom th .sortmark { + filter: invert(1); +} + +.bom th .sortmark.none { + opacity: 0; +} + +.bom th .sortmark.desc { + transform: rotate(180deg); +} + +.bom th:hover .sortmark.none { + opacity: 0.5; +} + +.bom .bom-checkbox { + width: 30px; + position: relative; + user-select: none; + -moz-user-select: none; +} + +.bom .bom-checkbox:before { + content: ""; + position: absolute; + border-width: 15px; + border-style: solid; + border-color: #51829f transparent transparent transparent; + visibility: hidden; + top: -15px; +} + +.bom .bom-checkbox:after { + content: "Double click to set/unset all"; + position: absolute; + color: white; + top: -35px; + left: -26px; + background: #51829f; + padding: 5px 15px; + border-radius: 8px; + white-space: nowrap; + visibility: hidden; +} + +.bom .bom-checkbox:hover:before, +.bom .bom-checkbox:hover:after { + visibility: visible; + transition: visibility 0.2s linear 1s; +} + +.split { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; + background-color: inherit; +} + +.split.split-horizontal, +.gutter.gutter-horizontal { + height: 100%; + float: left; +} + +.gutter { + background-color: #ddd; + background-repeat: no-repeat; + background-position: 50%; + transition: background-color 0.3s; +} + +.dark .gutter { + background-color: #777; +} + +.gutter.gutter-horizontal { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg=='); + cursor: ew-resize; + width: 5px; +} + +.gutter.gutter-vertical { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); + cursor: ns-resize; + height: 5px; +} + +.searchbox { + float: left; + height: 40px; + margin: 10px 5px; + padding: 12px 32px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 18px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 6px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg=='); + background-position: 10px 10px; + background-repeat: no-repeat; +} + +.dark .searchbox { + background-color: #111; + color: #eee; +} + +.searchbox::placeholder { + color: #ccc; +} + +.dark .searchbox::placeholder { + color: #666; +} + +.filter { + width: calc(60% - 64px); +} + +.reflookup { + width: calc(40% - 10px); +} + +input[type=text]:focus { + background-color: white; + border: 1px solid #333; +} + +.dark input[type=text]:focus { + background-color: #333; + border: 1px solid #ccc; +} + +mark.highlight { + background-color: #5050ff; + color: #fff; + padding: 2px; + border-radius: 6px; +} + +.dark mark.highlight { + background-color: #76a6da; + color: #111; +} + +.menubtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A"); + background-position: center; + background-repeat: no-repeat; +} + +.statsbtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.iobtn { + background-color: white; + border: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; +} + +.visbtn { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E"); + background-position: center; + background-repeat: no-repeat; + padding: 15px; +} + +#vismenu-content { + left: 0px; + font-family: Verdana, sans-serif; +} + +.dark .statsbtn, +.dark .savebtn, +.dark .menubtn, +.dark .iobtn, +.dark .visbtn { + filter: invert(1); +} + +.flexbox { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.savebtn { + background-color: #d6d6d6; + width: auto; + height: 30px; + flex-grow: 1; + margin: 5px; + border-radius: 4px; +} + +.savebtn:active { + background-color: #0a0; + color: white; +} + +.dark .savebtn:active { + /* This will be inverted */ + background-color: #b3b; +} + +.stats { + border-collapse: collapse; + font-size: 12pt; + table-layout: fixed; + width: 100%; + min-width: 450px; +} + +.dark .stats td { + border: 1px solid #bbb; +} + +.stats td { + border: 1px solid black; + padding: 5px; + word-wrap: break-word; + text-align: center; + position: relative; +} + +#checkbox-stats div { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +#checkbox-stats .bar { + background-color: rgba(28, 251, 0, 0.6); +} + +.menu { + position: relative; + display: inline-block; + margin: 0.4rem 0.4rem 0.4rem 0; +} + +.menu-content { + font-size: 12pt !important; + text-align: left !important; + font-weight: normal !important; + display: none; + position: absolute; + background-color: white; + right: 0; + min-width: 300px; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 100; + padding: 8px; +} + +.dark .menu-content { + background-color: #111; +} + +.menu:hover .menu-content { + display: block; +} + +.menu:hover .menubtn, +.menu:hover .iobtn, +.menu:hover .statsbtn { + background-color: #eee; +} + +.menu-label { + display: inline-block; + padding: 8px; + border: 1px solid #ccc; + border-top: 0; + width: calc(100% - 18px); +} + +.menu-label-top { + border-top: 1px solid #ccc; +} + +.menu-textbox { + float: left; + height: 24px; + margin: 10px 5px; + padding: 5px 5px; + font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace; + font-size: 14px; + box-sizing: border-box; + border: 1px solid #888; + border-radius: 4px; + outline: none; + background-color: #eee; + transition: background-color 0.2s, border 0.2s; + width: calc(100% - 10px); +} + +.menu-textbox.invalid, +.dark .menu-textbox.invalid { + color: red; +} + +.dark .menu-textbox { + background-color: #222; + color: #eee; +} + +.radio-container { + margin: 4px; +} + +.topmostdiv { + display: flex; + flex-direction: column; + width: 100%; + background-color: white; + transition: background-color 0.3s; +} + +#top { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + align-items: center; +} + +#topdivider { + border-bottom: 2px solid black; + display: flex; + justify-content: center; + align-items: center; +} + +.dark #topdivider { + border-bottom: 2px solid #ccc; +} + +#topdivider>div { + position: relative; +} + +#toptoggle { + cursor: pointer; + user-select: none; + position: absolute; + padding: 0.1rem 0.3rem; + top: -0.4rem; + left: -1rem; + font-size: 1.4rem; + line-height: 60%; + border: 1px solid black; + border-radius: 1rem; + background-color: #fff; + z-index: 100; +} + +.flipped { + transform: rotate(0.5turn); +} + +.dark #toptoggle { + border: 1px solid #fff; + background-color: #222; +} + +#fileinfodiv { + flex: 20rem 1 0; + overflow: auto; +} + +#bomcontrols { + display: flex; + flex-direction: row-reverse; +} + +#bomcontrols>* { + flex-shrink: 0; +} + +#dbg { + display: block; +} + +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #aaa; +} + +::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +.slider { + -webkit-appearance: none; + width: 100%; + margin: 3px 0; + padding: 0; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; + border-radius: 3px; +} + +.slider:hover { + opacity: 1; +} + +.slider:focus { + outline: none; +} + +.slider::-webkit-slider-runnable-track { + -webkit-appearance: none; + width: 100%; + height: 8px; + background: #d3d3d3; + border-radius: 3px; + border: none; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin-top: -4px; +} + +.dark .slider::-webkit-slider-thumb { + background: #3d3; +} + +.slider::-moz-range-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; +} + +.slider::-moz-range-track { + height: 8px; + background: #d3d3d3; + border-radius: 3px; +} + +.dark .slider::-moz-range-thumb { + background: #3d3; +} + +.slider::-ms-track { + width: 100%; + height: 8px; + border-width: 3px 0; + background: transparent; + border-color: transparent; + color: transparent; + transition: opacity .2s; +} + +.slider::-ms-fill-lower { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-fill-upper { + background: #d3d3d3; + border: none; + border-radius: 3px; +} + +.slider::-ms-thumb { + width: 15px; + height: 15px; + border-radius: 50%; + background: #0a0; + cursor: pointer; + margin: 0; +} + +.shameless-plug { + font-size: 0.8em; + text-align: center; + display: block; +} + +a { + color: #0278a4; +} + +.dark a { + color: #00b9fd; +} + +#frontcanvas, +#backcanvas { + touch-action: none; +} + +.placeholder { + border: 1px dashed #9f9fda !important; + background-color: #edf2f7 !important; +} + +.dragging { + z-index: 999; +} + +.dark .dragging>table>tbody>tr { + background-color: #252c30; +} + +.dark .placeholder { + filter: invert(1); +} + +.column-spacer { + top: 0; + left: 0; + width: calc(100% - 4px); + position: absolute; + cursor: pointer; + user-select: none; + height: 100%; +} + +.column-width-handle { + top: 0; + right: 0; + width: 4px; + position: absolute; + cursor: col-resize; + user-select: none; + height: 100%; +} + +.column-width-handle:hover { + background-color: #4f99bd; +} + +.help-link { + border: 1px solid #0278a4; + padding-inline: 0.3rem; + border-radius: 3px; + cursor: pointer; +} + +.dark .help-link { + border: 1px solid #00b9fd; +} + +.bom-color { + width: 20%; +} + +.color-column input { + width: 1.6rem; + height: 1rem; + border: 1px solid black; + cursor: pointer; + padding: 0; +} + +/* removes default styling from input color element */ +::-webkit-color-swatch { + border: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-moz-color-swatch, +::-moz-focus-inner { + border: none; +} + +::-moz-focus-inner { + padding: 0; +} +/* #bomhead { + position: sticky; + top: 0px; + z-index: 1; +} */ + </style> + <script type="text/javascript" > +/////////////////////////////////////////////// +/* + Split.js - v1.3.5 + MIT License + https://github.com/nathancahill/Split.js +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net> +// This work is free. You can redistribute it and/or modify it +// under the terms of the WTFPL, Version 2 +// For more information see LICENSE.txt or http://www.wtfpl.net/ +// +// For more information, the home page: +// http://pieroxy.net/blog/pages/lz-string/testing.html +// +// LZ-based compression algorithm, version 1.4.4 +var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/*! + * PEP v0.4.3 | https://github.com/jquery/PEP + * Copyright jQuery Foundation and other contributors | http://jquery.org/license + */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1); +for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0; +var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})} +var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++) +b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){ +for(var b=a;b.parentNode;)b=b.parentNode; +return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target); +return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){ +// +this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))}, +installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){ +var b=x(a,this.findElements,this); +return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){} +var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[], +isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){ +var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID); +0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button]; +c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a), +c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events), +Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events), +Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b); +d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){ +(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE, +c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey; +var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))}, +shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c) +b=!1;else if("XY"===c) +b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]); +b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0}, +vacuumTouches:function(a){var b=a.touches; +if(R.size>=b.length){var c=[];R.forEach(function(a,d){ +if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId); +if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e, +d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):( +b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)}, +dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0]; +if(this.isPrimaryTouch(c)){ +var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba}); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint", "Description"]} +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +var pcbdata = JSON.parse(LZString.decompressFromBase64("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")) +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* Utility functions */ + +var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' + + pcbdata.metadata.revision + '__#'; +var storage; + +function initStorage(key) { + try { + window.localStorage.getItem("blank"); + storage = window.localStorage; + } catch (e) { + // localStorage not available + } + if (!storage) { + try { + window.sessionStorage.getItem("blank"); + storage = window.sessionStorage; + } catch (e) { + // sessionStorage also not available + } + } +} + +function readStorage(key) { + if (storage) { + return storage.getItem(storagePrefix + key); + } else { + return null; + } +} + +function writeStorage(key, value) { + if (storage) { + storage.setItem(storagePrefix + key, value); + } +} + +function fancyDblClickHandler(el, onsingle, ondouble) { + return function () { + if (el.getAttribute("data-dblclick") == null) { + el.setAttribute("data-dblclick", 1); + setTimeout(function () { + if (el.getAttribute("data-dblclick") == 1) { + onsingle(); + } + el.removeAttribute("data-dblclick"); + }, 200); + } else { + el.removeAttribute("data-dblclick"); + ondouble(); + } + } +} + +function smoothScrollToRow(rowid) { + document.getElementById(rowid).scrollIntoView({ + behavior: "smooth", + block: "center", + inline: "nearest" + }); +} + +function focusInputField(input) { + input.scrollIntoView(false); + input.focus(); + input.select(); +} + +function saveBomTable(output) { + var text = ''; + for (var node of bomhead.childNodes[0].childNodes) { + if (node.firstChild) { + text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue); + } + if (node != bomhead.childNodes[0].lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + for (var row of bombody.childNodes) { + for (var cell of row.childNodes) { + let val = ''; + for (var node of cell.childNodes) { + if (node.nodeName == "INPUT") { + if (node.checked) { + val += '✓'; + } + } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) { + val += node.firstChild.nodeValue; + } else { + val += node.nodeValue; + } + } + if (output == 'csv') { + val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters + if (isNumeric(val)) { + val = +val; // use number + } else { + val = `"${val}"`; // enclosed within double-quote + } + } + text += val; + if (cell != row.lastChild) { + text += (output == 'csv' ? ',' : '\t'); + } + } + text += '\n'; + } + + if (output != 'clipboard') { + // To file: csv or txt + var blob = new Blob([text], { + type: `text/${output}` + }); + saveFile(`${pcbdata.metadata.title}.${output}`, blob); + } else { + // To clipboard + var textArea = document.createElement("textarea"); + textArea.classList.add('clipboard-temp'); + textArea.value = text; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + if (document.execCommand('copy')) { + console.log('Bom copied to clipboard.'); + } + } catch (err) { + console.log('Can not copy to clipboard.'); + } + + document.body.removeChild(textArea); + } +} + +function isNumeric(str) { + /* https://stackoverflow.com/a/175787 */ + return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str))); +} + +function removeGutterNode(node) { + for (var i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].classList && + node.childNodes[i].classList.contains("gutter")) { + node.removeChild(node.childNodes[i]); + break; + } + } +} + +function cleanGutters() { + removeGutterNode(document.getElementById("bot")); + removeGutterNode(document.getElementById("canvasdiv")); +} + +var units = { + prefixes: { + giga: ["G", "g", "giga", "Giga", "GIGA"], + mega: ["M", "mega", "Mega", "MEGA"], + kilo: ["K", "k", "kilo", "Kilo", "KILO"], + milli: ["m", "milli", "Milli", "MILLI"], + micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ + nano: ["N", "n", "nano", "Nano", "NANO"], + pico: ["P", "p", "pico", "Pico", "PICO"], + }, + unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"], + unitsLong: [ + "OHM", "Ohm", "ohm", "ohms", + "FARAD", "Farad", "farad", + "HENRY", "Henry", "henry" + ], + getMultiplier: function (s) { + if (this.prefixes.giga.includes(s)) return 1e9; + if (this.prefixes.mega.includes(s)) return 1e6; + if (this.prefixes.kilo.includes(s)) return 1e3; + if (this.prefixes.milli.includes(s)) return 1e-3; + if (this.prefixes.micro.includes(s)) return 1e-6; + if (this.prefixes.nano.includes(s)) return 1e-9; + if (this.prefixes.pico.includes(s)) return 1e-12; + return 1; + }, + valueRegex: null, +} + +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 resetSettings() { + if (!confirm( + `This will reset all checkbox states and other settings.\n\n` + + `Press OK if you want to continue.`)) { + return; + } + if (storage) { + var keys = []; + for (var i = 0; i < storage.length; i++) { + var key = storage.key(i); + if (key.startsWith(storagePrefix)) keys.push(key); + } + for (var key of keys) storage.removeItem(key); + } + location.reload(); +} + +function overwriteSettings(newSettings) { + initDone = false; + Object.assign(settings, newSettings); + writeStorage("bomlayout", settings.bomlayout); + writeStorage("bommode", settings.bommode); + writeStorage("canvaslayout", settings.canvaslayout); + writeStorage("bomCheckboxes", settings.checkboxes.join(",")); + document.getElementById("bomCheckboxes").value = settings.checkboxes.join(","); + for (var checkbox of settings.checkboxes) { + writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]); + } + writeStorage("markWhenChecked", settings.markWhenChecked); + padsVisible(settings.renderPads); + document.getElementById("padsCheckbox").checked = settings.renderPads; + fabricationVisible(settings.renderFabrication); + document.getElementById("fabricationCheckbox").checked = settings.renderFabrication; + silkscreenVisible(settings.renderSilkscreen); + document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen; + referencesVisible(settings.renderReferences); + document.getElementById("referencesCheckbox").checked = settings.renderReferences; + valuesVisible(settings.renderValues); + document.getElementById("valuesCheckbox").checked = settings.renderValues; + tracksVisible(settings.renderTracks); + document.getElementById("tracksCheckbox").checked = settings.renderTracks; + zonesVisible(settings.renderZones); + document.getElementById("zonesCheckbox").checked = settings.renderZones; + dnpOutline(settings.renderDnpOutline); + document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline; + setRedrawOnDrag(settings.redrawOnDrag); + document.getElementById("dragCheckbox").checked = settings.redrawOnDrag; + setDarkMode(settings.darkMode); + document.getElementById("darkmodeCheckbox").checked = settings.darkMode; + setHighlightPin1(settings.highlightpin1); + document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + setOffsetBackRotation(settings.offsetBackRotation); + document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation; + initDone = true; + prepCheckboxes(); + changeBomLayout(settings.bomlayout); +} + +function saveFile(filename, blob) { + var link = document.createElement("a"); + var objurl = URL.createObjectURL(blob); + link.download = filename; + link.href = objurl; + link.click(); +} + +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); +} + +var settings = { + canvaslayout: "FB", + bomlayout: "left-right", + bommode: "grouped", + checkboxes: [], + checkboxStoredRefs: {}, + darkMode: false, + highlightpin1: "none", + redrawOnDrag: true, + boardRotation: 0, + offsetBackRotation: false, + renderPads: true, + renderReferences: true, + renderValues: true, + renderSilkscreen: true, + renderFabrication: true, + renderDnpOutline: false, + renderTracks: true, + renderZones: true, + columnOrder: [], + hiddenColumns: [], + netColors: {}, +} + +function initDefaults() { + settings.bomlayout = readStorage("bomlayout"); + if (settings.bomlayout === null) { + settings.bomlayout = config.bom_view; + } + if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) { + settings.bomlayout = config.bom_view; + } + settings.bommode = readStorage("bommode"); + if (settings.bommode === null) { + settings.bommode = "grouped"; + } + if (settings.bommode == "netlist" && !pcbdata.nets) { + settings.bommode = "grouped"; + } + if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) { + settings.bommode = "grouped"; + } + settings.canvaslayout = readStorage("canvaslayout"); + if (settings.canvaslayout === null) { + settings.canvaslayout = config.layer_view; + } + var bomCheckboxes = readStorage("bomCheckboxes"); + if (bomCheckboxes === null) { + bomCheckboxes = config.checkboxes; + } + settings.checkboxes = bomCheckboxes.split(",").filter((e) => e); + document.getElementById("bomCheckboxes").value = bomCheckboxes; + + var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1; + if (highlightpin1 === "false") highlightpin1 = "none"; + if (highlightpin1 === "true") highlightpin1 = "all"; + setHighlightPin1(highlightpin1); + document.forms.highlightpin1.highlightpin1.value = highlightpin1; + + settings.markWhenChecked = readStorage("markWhenChecked") || ""; + populateMarkWhenCheckedOptions(); + + function initBooleanSetting(storageString, def, elementId, func) { + var b = readStorage(storageString); + if (b === null) { + b = def; + } else { + b = (b == "true"); + } + document.getElementById(elementId).checked = b; + func(b); + } + + initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible); + initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible); + initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible); + initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible); + initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible); + if ("tracks" in pcbdata) { + initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible); + initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible); + } else { + document.getElementById("tracksAndZonesCheckboxes").style.display = "none"; + tracksVisible(false); + zonesVisible(false); + } + initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline); + initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag); + initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode); + + var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]); + var hcols = JSON.parse(readStorage("hiddenColumns")); + if (hcols === null) { + hcols = []; + } + settings.hiddenColumns = hcols.filter(e => fields.includes(e)); + + var cord = JSON.parse(readStorage("columnOrder")); + if (cord === null) { + cord = fields; + } else { + cord = cord.filter(e => fields.includes(e)); + if (cord.length != fields.length) + cord = fields; + } + settings.columnOrder = cord; + + settings.boardRotation = readStorage("boardRotation"); + if (settings.boardRotation === null) { + settings.boardRotation = config.board_rotation * 5; + } else { + settings.boardRotation = parseInt(settings.boardRotation); + } + document.getElementById("boardRotation").value = settings.boardRotation / 5; + document.getElementById("rotationDegree").textContent = settings.boardRotation; + initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation); + + settings.netColors = JSON.parse(readStorage("netColors")) || {}; +} + +// Helper classes for user js callbacks. + +const IBOM_EVENT_TYPES = { + ALL: "all", + HIGHLIGHT_EVENT: "highlightEvent", + CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent", + BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent", +} + +const EventHandler = { + callbacks: {}, + init: function () { + for (eventType of Object.values(IBOM_EVENT_TYPES)) + this.callbacks[eventType] = []; + }, + registerCallback: function (eventType, callback) { + this.callbacks[eventType].push(callback); + }, + emitEvent: function (eventType, eventArgs) { + event = { + eventType: eventType, + args: eventArgs, + } + var callback; + for (callback of this.callbacks[eventType]) + callback(event); + for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL]) + callback(event); + } +} +EventHandler.init(); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* PCB rendering code */ + +var emptyContext2d = document.createElement("canvas").getContext("2d"); + +function deg2rad(deg) { + return deg * Math.PI / 180; +} + +function calcFontPoint(linepoint, text, offsetx, offsety, tilt) { + var point = [ + linepoint[0] * text.width + offsetx, + linepoint[1] * text.height + offsety + ]; + // This approximates pcbnew behavior with how text tilts depending on horizontal justification + point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt; + return point; +} + +function drawText(ctx, text, color) { + if ("ref" in text && !settings.renderReferences) return; + if ("val" in text && !settings.renderValues) return; + ctx.save(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.lineWidth = text.thickness; + if ("svgpath" in text) { + ctx.stroke(new Path2D(text.svgpath)); + ctx.restore(); + return; + } + if ("polygons" in text) { + ctx.fill(getPolygonsPath(text)); + ctx.restore(); + return; + } + ctx.translate(...text.pos); + ctx.translate(text.thickness * 0.5, 0); + var angle = -text.angle; + if (text.attr.includes("mirrored")) { + ctx.scale(-1, 1); + angle = -angle; + } + var tilt = 0; + if (text.attr.includes("italic")) { + tilt = 0.125; + } + var interline = text.height * 1.5 + text.thickness; + var txt = text.text.split("\n"); + // KiCad ignores last empty line. + if (txt[txt.length - 1] == '') txt.pop(); + ctx.rotate(deg2rad(angle)); + var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset + offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset + for (var i in txt) { + var lineWidth = text.thickness + interline / 2 * tilt; + for (var j = 0; j < txt[i].length; j++) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + lineWidth += fourSpaces - lineWidth % fourSpaces; + } else { + if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + } + lineWidth += pcbdata.font_data[txt[i][j]].w * text.width; + } + } + var offsetx = -lineWidth * (text.justify[0] + 1) / 2; + var inOverbar = false; + for (var j = 0; j < txt[i].length; j++) { + if (config.kicad_text_formatting) { + if (txt[i][j] == '\t') { + var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width; + offsetx += fourSpaces - offsetx % fourSpaces; + continue; + } else if (txt[i][j] == '~') { + j++; + if (j == txt[i].length) + break; + if (txt[i][j] != '~') { + inOverbar = !inOverbar; + } + } + } + var glyph = pcbdata.font_data[txt[i][j]]; + if (inOverbar) { + var overbarStart = [offsetx, -text.height * 1.4 + offsety]; + var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]]; + + if (!lastHadOverbar) { + overbarStart[0] += text.height * 1.4 * tilt; + lastHadOverbar = true; + } + ctx.beginPath(); + ctx.moveTo(...overbarStart); + ctx.lineTo(...overbarEnd); + ctx.stroke(); + } else { + lastHadOverbar = false; + } + for (var line of glyph.l) { + ctx.beginPath(); + ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt)); + for (var k = 1; k < line.length; k++) { + ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt)); + } + ctx.stroke(); + } + offsetx += glyph.w * text.width; + } + offsety += interline; + } + ctx.restore(); +} + +function drawedge(ctx, scalefactor, edge, color) { + ctx.strokeStyle = color; + ctx.fillStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, edge.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + if ("svgpath" in edge) { + ctx.stroke(new Path2D(edge.svgpath)); + } else { + ctx.beginPath(); + if (edge.type == "segment") { + ctx.moveTo(...edge.start); + ctx.lineTo(...edge.end); + } + if (edge.type == "rect") { + ctx.moveTo(...edge.start); + ctx.lineTo(edge.start[0], edge.end[1]); + ctx.lineTo(...edge.end); + ctx.lineTo(edge.end[0], edge.start[1]); + ctx.lineTo(...edge.start); + } + if (edge.type == "arc") { + ctx.arc( + ...edge.start, + edge.radius, + deg2rad(edge.startangle), + deg2rad(edge.endangle)); + } + if (edge.type == "circle") { + ctx.arc( + ...edge.start, + edge.radius, + 0, 2 * Math.PI); + ctx.closePath(); + } + if (edge.type == "curve") { + ctx.moveTo(...edge.start); + ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end); + } + if("filled" in edge && edge.filled) + ctx.fill(); + else + ctx.stroke(); + } +} + +function getChamferedRectPath(size, radius, chamfpos, chamfratio) { + // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8 + var path = new Path2D(); + var width = size[0]; + var height = size[1]; + var x = width * -0.5; + var y = height * -0.5; + var chamfOffset = Math.min(width, height) * chamfratio; + path.moveTo(x, 0); + if (chamfpos & 4) { + path.lineTo(x, y + height - chamfOffset); + path.lineTo(x + chamfOffset, y + height); + path.lineTo(0, y + height); + } else { + path.arcTo(x, y + height, x + width, y + height, radius); + } + if (chamfpos & 8) { + path.lineTo(x + width - chamfOffset, y + height); + path.lineTo(x + width, y + height - chamfOffset); + path.lineTo(x + width, 0); + } else { + path.arcTo(x + width, y + height, x + width, y, radius); + } + if (chamfpos & 2) { + path.lineTo(x + width, y + chamfOffset); + path.lineTo(x + width - chamfOffset, y); + path.lineTo(0, y); + } else { + path.arcTo(x + width, y, x, y, radius); + } + if (chamfpos & 1) { + path.lineTo(x + chamfOffset, y); + path.lineTo(x, y + chamfOffset); + path.lineTo(x, 0); + } else { + path.arcTo(x, y, x, y + height, radius); + } + path.closePath(); + return path; +} + +function getOblongPath(size) { + return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0); +} + +function getPolygonsPath(shape) { + if (shape.path2d) { + return shape.path2d; + } + if ("svgpath" in shape) { + shape.path2d = new Path2D(shape.svgpath); + } else { + var path = new Path2D(); + for (var polygon of shape.polygons) { + path.moveTo(...polygon[0]); + for (var i = 1; i < polygon.length; i++) { + path.lineTo(...polygon[i]); + } + path.closePath(); + } + shape.path2d = path; + } + return shape.path2d; +} + +function drawPolygonShape(ctx, scalefactor, shape, color) { + ctx.save(); + if (!("svgpath" in shape)) { + ctx.translate(...shape.pos); + ctx.rotate(deg2rad(-shape.angle)); + } + if("filled" in shape && !shape.filled) { + ctx.strokeStyle = color; + ctx.lineWidth = Math.max(1 / scalefactor, shape.width); + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.stroke(getPolygonsPath(shape)); + } else { + ctx.fillStyle = color; + ctx.fill(getPolygonsPath(shape)); + } + ctx.restore(); +} + +function drawDrawing(ctx, scalefactor, drawing, color) { + if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) { + drawedge(ctx, scalefactor, drawing, color); + } else if (drawing.type == "polygon") { + drawPolygonShape(ctx, scalefactor, drawing, color); + } else { + drawText(ctx, drawing, color); + } +} + +function getCirclePath(radius) { + var path = new Path2D(); + path.arc(0, 0, radius, 0, 2 * Math.PI); + path.closePath(); + return path; +} + +function getCachedPadPath(pad) { + if (!pad.path2d) { + // if path2d is not set, build one and cache it on pad object + if (pad.shape == "rect") { + pad.path2d = new Path2D(); + pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size); + } else if (pad.shape == "oval") { + pad.path2d = getOblongPath(pad.size); + } else if (pad.shape == "circle") { + pad.path2d = getCirclePath(pad.size[0] / 2); + } else if (pad.shape == "roundrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0); + } else if (pad.shape == "chamfrect") { + pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio) + } else if (pad.shape == "custom") { + pad.path2d = getPolygonsPath(pad); + } + } + return pad.path2d; +} + +function drawPad(ctx, pad, color, outline) { + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + if (pad.offset) { + ctx.translate(...pad.offset); + } + ctx.fillStyle = color; + ctx.strokeStyle = color; + var path = getCachedPadPath(pad); + if (outline) { + ctx.stroke(path); + } else { + ctx.fill(path); + } + ctx.restore(); +} + +function drawPadHole(ctx, pad, padHoleColor) { + if (pad.type != "th") return; + ctx.save(); + ctx.translate(...pad.pos); + ctx.rotate(-deg2rad(pad.angle)); + ctx.fillStyle = padHoleColor; + if (pad.drillshape == "oblong") { + ctx.fill(getOblongPath(pad.drillsize)); + } else { + ctx.fill(getCirclePath(pad.drillsize[0] / 2)); + } + ctx.restore(); +} + +function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) { + if (highlight) { + // draw bounding box + if (footprint.layer == layer) { + ctx.save(); + ctx.globalAlpha = 0.2; + ctx.translate(...footprint.bbox.pos); + ctx.rotate(deg2rad(-footprint.bbox.angle)); + ctx.translate(...footprint.bbox.relpos); + ctx.fillStyle = colors.pad; + ctx.fillRect(0, 0, ...footprint.bbox.size); + ctx.globalAlpha = 1; + ctx.strokeStyle = colors.pad; + ctx.lineWidth = 3 / scalefactor; + ctx.strokeRect(0, 0, ...footprint.bbox.size); + ctx.restore(); + } + } + // draw drawings + for (var drawing of footprint.drawings) { + if (drawing.layer == layer) { + drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad); + } + } + ctx.lineWidth = 3 / scalefactor; + // draw pads + if (settings.renderPads) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, colors.pad, outline); + if (pad.pin1 && + (settings.highlightpin1 == "all" || + settings.highlightpin1 == "selected" && highlight)) { + drawPad(ctx, pad, colors.outline, true); + } + } + } + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, colors.padHole); + } + } +} + +function drawEdgeCuts(canvas, scalefactor) { + var ctx = canvas.getContext("2d"); + var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color'); + for (var edge of pcbdata.edges) { + drawDrawing(ctx, scalefactor, edge, edgecolor); + } +} + +function drawFootprints(canvas, layer, scalefactor, highlight) { + var ctx = canvas.getContext("2d"); + ctx.lineWidth = 3 / scalefactor; + var style = getComputedStyle(topmostdiv); + + var colors = { + pad: style.getPropertyValue('--pad-color'), + padHole: style.getPropertyValue('--pad-hole-color'), + outline: style.getPropertyValue('--pin1-outline-color'), + } + + for (var i = 0; i < pcbdata.footprints.length; i++) { + var mod = pcbdata.footprints[i]; + var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i); + var h = highlightedFootprints.includes(i); + var d = markedFootprints.has(i); + if (highlight) { + if(h && d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-both'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both'); + } else if (h) { + colors.pad = style.getPropertyValue('--pad-color-highlight'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight'); + } else if (d) { + colors.pad = style.getPropertyValue('--pad-color-highlight-marked'); + colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked'); + } + } + if( h || d || !highlight) { + drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline); + } + } +} + +function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) { + var ctx = canvas.getContext("2d"); + for (var d of pcbdata.drawings[layername][layer]) { + if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) { + drawedge(ctx, scalefactor, d, edgeColor); + } else if (d.type == "polygon") { + drawPolygonShape(ctx, scalefactor, d, polygonColor); + } else { + drawText(ctx, d, textColor); + } + } +} + +function drawTracks(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineCap = "round"; + + var hasHole = (track) => ( + 'drillsize' in track && + track.start[0] == track.end[0] && + track.start[1] == track.end[1]); + + // First draw tracks and tented vias + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (!hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + if ('radius' in track) { + ctx.arc( + ...track.center, + track.radius, + deg2rad(track.startangle), + deg2rad(track.endangle)); + } else { + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + } + ctx.stroke(); + } + } + // Second pass to draw untented vias + var style = getComputedStyle(topmostdiv); + var holeColor = style.getPropertyValue('--pad-hole-color') + + for (var track of pcbdata.tracks[layer]) { + if (highlight && highlightedNet != track.net) continue; + if (hasHole(track)) { + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor; + ctx.lineWidth = track.width; + ctx.beginPath(); + ctx.moveTo(...track.start); + ctx.lineTo(...track.end); + ctx.stroke(); + ctx.strokeStyle = holeColor; + ctx.lineWidth = track.drillsize; + ctx.lineTo(...track.end); + ctx.stroke(); + } + } +} + +function drawZones(canvas, layer, defaultColor, highlight) { + ctx = canvas.getContext("2d"); + ctx.lineJoin = "round"; + for (var zone of pcbdata.zones[layer]) { + if (highlight && highlightedNet != zone.net) continue; + ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor; + if (!zone.path2d) { + zone.path2d = getPolygonsPath(zone); + } + ctx.fill(zone.path2d, zone.fillrule || "nonzero"); + if (zone.width > 0) { + ctx.lineWidth = zone.width; + ctx.stroke(zone.path2d); + } + } +} + +function clearCanvas(canvas, color = null) { + var ctx = canvas.getContext("2d"); + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + if (color) { + ctx.fillStyle = color; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } else { + if (!window.matchMedia("print").matches) + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + ctx.restore(); +} + +function drawNets(canvas, layer, highlight) { + var style = getComputedStyle(topmostdiv); + if (settings.renderZones) { + var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color'); + drawZones(canvas, layer, zoneColor, highlight); + } + if (settings.renderTracks) { + var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color'); + drawTracks(canvas, layer, trackColor, highlight); + } + if (highlight && settings.renderPads) { + var padColor = style.getPropertyValue('--pad-color-highlight'); + var padHoleColor = style.getPropertyValue('--pad-hole-color'); + var ctx = canvas.getContext("2d"); + for (var footprint of pcbdata.footprints) { + // draw pads + var padDrawn = false; + for (var pad of footprint.pads) { + if (highlightedNet != pad.net) continue; + if (pad.layers.includes(layer)) { + drawPad(ctx, pad, padColor, false); + padDrawn = true; + } + } + if (padDrawn) { + // redraw all pad holes because some pads may overlap + for (var pad of footprint.pads) { + drawPadHole(ctx, pad, padHoleColor); + } + } + } + } +} + +function drawHighlightsOnLayer(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.highlight); + } + if (markedFootprints.size > 0 || highlightedFootprints.length > 0) { + drawFootprints(canvasdict.highlight, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, true); + } + if (highlightedNet !== null) { + drawNets(canvasdict.highlight, canvasdict.layer, true); + } +} + +function drawHighlights() { + drawHighlightsOnLayer(allcanvas.front); + drawHighlightsOnLayer(allcanvas.back); +} + +function drawBackground(canvasdict, clear = true) { + if (clear) { + clearCanvas(canvasdict.bg); + clearCanvas(canvasdict.fab); + clearCanvas(canvasdict.silk); + } + + drawNets(canvasdict.bg, canvasdict.layer, false); + drawFootprints(canvasdict.bg, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, false); + + drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom); + + var style = getComputedStyle(topmostdiv); + var edgeColor = style.getPropertyValue('--silkscreen-edge-color'); + var polygonColor = style.getPropertyValue('--silkscreen-polygon-color'); + var textColor = style.getPropertyValue('--silkscreen-text-color'); + if (settings.renderSilkscreen) { + drawBgLayer( + "silkscreen", canvasdict.silk, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } + edgeColor = style.getPropertyValue('--fabrication-edge-color'); + polygonColor = style.getPropertyValue('--fabrication-polygon-color'); + textColor = style.getPropertyValue('--fabrication-text-color'); + if (settings.renderFabrication) { + drawBgLayer( + "fabrication", canvasdict.fab, canvasdict.layer, + canvasdict.transform.s * canvasdict.transform.zoom, + edgeColor, polygonColor, textColor); + } +} + +function prepareCanvas(canvas, flip, transform) { + var ctx = canvas.getContext("2d"); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.scale(transform.zoom, transform.zoom); + ctx.translate(transform.panx, transform.pany); + if (flip) { + ctx.scale(-1, 1); + } + ctx.translate(transform.x, transform.y); + ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + ctx.scale(transform.s, transform.s); +} + +function prepareLayer(canvasdict) { + var flip = (canvasdict.layer === "B"); + for (var c of ["bg", "fab", "silk", "highlight"]) { + prepareCanvas(canvasdict[c], flip, canvasdict.transform); + } +} + +function rotateVector(v, angle) { + angle = deg2rad(angle); + return [ + v[0] * Math.cos(angle) - v[1] * Math.sin(angle), + v[0] * Math.sin(angle) + v[1] * Math.cos(angle) + ]; +} + +function applyRotation(bbox, flip) { + var corners = [ + [bbox.minx, bbox.miny], + [bbox.minx, bbox.maxy], + [bbox.maxx, bbox.miny], + [bbox.maxx, bbox.maxy], + ]; + corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0))); + return { + minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity), + miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity), + maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity), + maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity), + } +} + +function recalcLayerScale(layerdict, width, height) { + var flip = (layerdict.layer === "B"); + var bbox = applyRotation(pcbdata.edges_bbox, flip); + var scalefactor = 0.98 * Math.min( + width / (bbox.maxx - bbox.minx), + height / (bbox.maxy - bbox.miny) + ); + if (scalefactor < 0.1) { + scalefactor = 1; + } + layerdict.transform.s = scalefactor; + if (flip) { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5; + } else { + layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5; + } + layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5; + for (var c of ["bg", "fab", "silk", "highlight"]) { + canvas = layerdict[c]; + canvas.width = width; + canvas.height = height; + canvas.style.width = (width / devicePixelRatio) + "px"; + canvas.style.height = (height / devicePixelRatio) + "px"; + } +} + +function redrawCanvas(layerdict) { + prepareLayer(layerdict); + drawBackground(layerdict); + drawHighlightsOnLayer(layerdict); +} + +function resizeCanvas(layerdict) { + var canvasdivid = { + "F": "frontcanvas", + "B": "backcanvas" + } [layerdict.layer]; + var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio; + var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio; + recalcLayerScale(layerdict, width, height); + redrawCanvas(layerdict); +} + +function resizeAll() { + resizeCanvas(allcanvas.front); + resizeCanvas(allcanvas.back); +} + +function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) { + var A = x - x1; + var B = y - y1; + var C = x2 - x1; + var D = y2 - y1; + + var dot = A * C + B * D; + var len_sq = C * C + D * D; + var dx, dy; + if (len_sq == 0) { + // start and end of the segment coincide + dx = x - x1; + dy = y - y1; + } else { + var param = dot / len_sq; + var xx, yy; + if (param < 0) { + xx = x1; + yy = y1; + } else if (param > 1) { + xx = x2; + yy = y2; + } else { + xx = x1 + param * C; + yy = y1 + param * D; + } + dx = x - xx; + dy = y - yy; + } + return dx * dx + dy * dy <= d * d; +} + +function modulo(n, mod) { + return ((n % mod) + mod) % mod; +} + +function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) { + var dx = x - xc; + var dy = y - yc; + var r_sq = dx * dx + dy * dy; + var rmin = Math.max(0, radius - d); + var rmax = radius + d; + + if (r_sq < rmin * rmin || r_sq > rmax * rmax) + return false; + + var angle1 = modulo(deg2rad(startangle), 2 * Math.PI); + var dx1 = xc + radius * Math.cos(angle1) - x; + var dy1 = yc + radius * Math.sin(angle1) - y; + if (dx1 * dx1 + dy1 * dy1 <= d * d) + return true; + + var angle2 = modulo(deg2rad(endangle), 2 * Math.PI); + var dx2 = xc + radius * Math.cos(angle2) - x; + var dy2 = yc + radius * Math.sin(angle2) - y; + if (dx2 * dx2 + dy2 * dy2 <= d * d) + return true; + + var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI); + if (angle1 > angle2) + return (angle >= angle2 || angle <= angle1); + else + return (angle >= angle1 && angle <= angle2); +} + +function pointWithinPad(x, y, pad) { + var v = [x - pad.pos[0], y - pad.pos[1]]; + v = rotateVector(v, pad.angle); + if (pad.offset) { + v[0] -= pad.offset[0]; + v[1] -= pad.offset[1]; + } + return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v); +} + +function netHitScan(layer, x, y) { + // Check track segments + if (settings.renderTracks && pcbdata.tracks) { + for (var track of pcbdata.tracks[layer]) { + if ('radius' in track) { + if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) { + return track.net; + } + } else { + if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) { + return track.net; + } + } + } + } + // Check pads + if (settings.renderPads) { + for (var footprint of pcbdata.footprints) { + for (var pad of footprint.pads) { + if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) { + return pad.net; + } + } + } + } + return null; +} + +function pointWithinFootprintBbox(x, y, bbox) { + var v = [x - bbox.pos[0], y - bbox.pos[1]]; + v = rotateVector(v, bbox.angle); + return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] && + bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1]; +} + +function bboxHitScan(layer, x, y) { + var result = []; + for (var i = 0; i < pcbdata.footprints.length; i++) { + var footprint = pcbdata.footprints[i]; + if (footprint.layer == layer) { + if (pointWithinFootprintBbox(x, y, footprint.bbox)) { + result.push(i); + } + } + } + return result; +} + +function handlePointerDown(e, layerdict) { + if (e.button != 0 && e.button != 1) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + layerdict.pointerStates[e.pointerId] = { + distanceTravelled: 0, + lastX: e.offsetX, + lastY: e.offsetY, + downTime: Date.now(), + }; +} + +function handleMouseClick(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var x = e.offsetX; + var y = e.offsetY; + var t = layerdict.transform; + var flip = layerdict.layer === "B"; + if (flip) { + x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s; + } else { + x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s; + } + y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s; + var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)); + if ("nets" in pcbdata) { + var net = netHitScan(layerdict.layer, ...v); + if (net !== highlightedNet) { + netClicked(net); + } + } + if (highlightedNet === null) { + var footprints = bboxHitScan(layerdict.layer, ...v); + if (footprints.length > 0) { + footprintsClicked(footprints); + } + } +} + +function handlePointerLeave(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function resetTransform(layerdict) { + layerdict.transform.panx = 0; + layerdict.transform.pany = 0; + layerdict.transform.zoom = 1; + redrawCanvas(layerdict); +} + +function handlePointerUp(e, layerdict) { + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + e.preventDefault(); + e.stopPropagation(); + + if (e.button == 2) { + // Reset pan and zoom on right click. + resetTransform(layerdict); + layerdict.anotherPointerTapped = false; + return; + } + + // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now + var ptr = layerdict.pointerStates[e.pointerId]; + ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY); + + if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) { + if (Object.keys(layerdict.pointerStates).length == 1) { + if (layerdict.anotherPointerTapped) { + // This is the second pointer coming off of a two-finger tap + resetTransform(layerdict); + } else { + // This is just a regular tap + handleMouseClick(e, layerdict); + } + layerdict.anotherPointerTapped = false; + } else { + // This is the first finger coming off of what could become a two-finger tap + layerdict.anotherPointerTapped = true; + } + } else { + if (!settings.redrawOnDrag) { + redrawCanvas(layerdict); + } + layerdict.anotherPointerTapped = false; + } + + delete layerdict.pointerStates[e.pointerId]; +} + +function handlePointerMove(e, layerdict) { + if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) { + return; + } + e.preventDefault(); + e.stopPropagation(); + + if (!e.hasOwnProperty("offsetX")) { + // The polyfill doesn't set this properly + e.offsetX = e.pageX - e.currentTarget.offsetLeft; + e.offsetY = e.pageY - e.currentTarget.offsetTop; + } + + var thisPtr = layerdict.pointerStates[e.pointerId]; + + var dx = e.offsetX - thisPtr.lastX; + var dy = e.offsetY - thisPtr.lastY; + + // If this number is low on pointer up, we count the action as a click + thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy); + + if (Object.keys(layerdict.pointerStates).length == 1) { + // This is a simple drag + layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom; + layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom; + } else if (Object.keys(layerdict.pointerStates).length == 2) { + var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0]; + + var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2)); + var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2)); + + var scaleFactor = newDist / oldDist; + + if (scaleFactor != NaN) { + layerdict.transform.zoom *= scaleFactor; + + var zoomd = (1 - scaleFactor) / layerdict.transform.zoom; + layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd; + layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd; + } + } + + thisPtr.lastX = e.offsetX; + thisPtr.lastY = e.offsetY; + + if (settings.redrawOnDrag) { + redrawCanvas(layerdict); + } +} + +function handleMouseWheel(e, layerdict) { + e.preventDefault(); + e.stopPropagation(); + var t = layerdict.transform; + var wheeldelta = e.deltaY; + if (e.deltaMode == 1) { + // FF only, scroll by lines + wheeldelta *= 30; + } else if (e.deltaMode == 2) { + wheeldelta *= 300; + } + var m = Math.pow(1.1, -wheeldelta / 40); + // Limit amount of zoom per tick. + if (m > 2) { + m = 2; + } else if (m < 0.5) { + m = 0.5; + } + t.zoom *= m; + var zoomd = (1 - m) / t.zoom; + t.panx += devicePixelRatio * e.offsetX * zoomd; + t.pany += devicePixelRatio * e.offsetY * zoomd; + redrawCanvas(layerdict); +} + +function addMouseHandlers(div, layerdict) { + div.addEventListener("pointerdown", function(e) { + handlePointerDown(e, layerdict); + }); + div.addEventListener("pointermove", function(e) { + handlePointerMove(e, layerdict); + }); + div.addEventListener("pointerup", function(e) { + handlePointerUp(e, layerdict); + }); + var pointerleave = function(e) { + handlePointerLeave(e, layerdict); + } + div.addEventListener("pointercancel", pointerleave); + div.addEventListener("pointerleave", pointerleave); + div.addEventListener("pointerout", pointerleave); + + div.onwheel = function(e) { + handleMouseWheel(e, layerdict); + } + for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) { + element.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }, false); + } +} + +function setRedrawOnDrag(value) { + settings.redrawOnDrag = value; + writeStorage("redrawOnDrag", value); +} + +function setBoardRotation(value) { + settings.boardRotation = value * 5; + writeStorage("boardRotation", settings.boardRotation); + document.getElementById("rotationDegree").textContent = settings.boardRotation; + resizeAll(); +} + +function setOffsetBackRotation(value) { + settings.offsetBackRotation = value; + writeStorage("offsetBackRotation", value); + resizeAll(); +} + +function initRender() { + allcanvas = { + front: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("F_bg"), + fab: document.getElementById("F_fab"), + silk: document.getElementById("F_slk"), + highlight: document.getElementById("F_hl"), + layer: "F", + }, + back: { + transform: { + x: 0, + y: 0, + s: 1, + panx: 0, + pany: 0, + zoom: 1, + }, + pointerStates: {}, + anotherPointerTapped: false, + bg: document.getElementById("B_bg"), + fab: document.getElementById("B_fab"), + silk: document.getElementById("B_slk"), + highlight: document.getElementById("B_hl"), + layer: "B", + } + }; + addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front); + addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back); +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* + * Table reordering via Drag'n'Drop + * Inspired by: https://htmldom.dev/drag-and-drop-table-column + */ + +function setBomHandlers() { + + const bom = document.getElementById('bomtable'); + + let dragName; + let placeHolderElements; + let draggingElement; + let forcePopulation; + let xOffset; + let yOffset; + let wasDragged; + + const mouseUpHandler = function(e) { + // Delete dragging element + draggingElement.remove(); + + // Make BOM selectable again + bom.style.removeProperty("userSelect"); + + // Remove listeners + document.removeEventListener('mousemove', mouseMoveHandler); + document.removeEventListener('mouseup', mouseUpHandler); + + if (wasDragged) { + // Redraw whole BOM + populateBomTable(); + } + } + + const mouseMoveHandler = function(e) { + // Notice the dragging + wasDragged = true; + + // Make the dragged element visible + draggingElement.style.removeProperty("display"); + + // Set elements position to mouse position + draggingElement.style.left = `${e.screenX - xOffset}px`; + draggingElement.style.top = `${e.screenY - yOffset}px`; + + // Forced redrawing of BOM table + if (forcePopulation) { + forcePopulation = false; + // Copy array + phe = Array.from(placeHolderElements); + // populate BOM table again + populateBomHeader(dragName, phe); + populateBomBody(dragName, phe); + } + + // Set up array of hidden columns + var hiddenColumns = Array.from(settings.hiddenColumns); + // In the ungrouped mode, quantity don't exist + if (settings.bommode === "ungrouped") + hiddenColumns.push("Quantity"); + // If no checkbox fields can be found, we consider them hidden + if (settings.checkboxes.length == 0) + hiddenColumns.push("checkboxes"); + + // Get table headers and group them into checkboxes, extrafields and normal headers + const bh = document.getElementById("bomhead"); + headers = Array.from(bh.querySelectorAll("th")) + headers.shift() // numCol is not part of the columnOrder + headerGroups = [] + lastCompoundClass = null; + for (i = 0; i < settings.columnOrder.length; i++) { + cElem = settings.columnOrder[i]; + if (hiddenColumns.includes(cElem)) { + // Hidden columns appear as a dummy element + headerGroups.push([]); + continue; + } + elem = headers.filter(e => getColumnOrderName(e) === cElem)[0]; + if (elem.classList.contains("bom-checkbox")) { + if (lastCompoundClass === "bom-checkbox") { + cbGroup = headerGroups.pop(); + cbGroup.push(elem); + headerGroups.push(cbGroup); + } else { + lastCompoundClass = "bom-checkbox"; + headerGroups.push([elem]) + } + } else { + headerGroups.push([elem]) + } + } + + // Copy settings.columnOrder + var columns = Array.from(settings.columnOrder) + + // Set up array with indices of hidden columns + var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e)); + var dragIndex = columns.indexOf(dragName); + var swapIndex = dragIndex; + var swapDone = false; + + // Check if the current dragged element is swapable with the left or right element + if (dragIndex > 0) { + // Get left headers boundingbox + swapIndex = dragIndex - 1; + while (hiddenIndices.includes(swapIndex) && swapIndex > 0) + swapIndex--; + if (!hiddenIndices.includes(swapIndex)) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX < box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + if ((!swapDone) && dragIndex < headerGroups.length - 1) { + // Get right headers boundingbox + swapIndex = dragIndex + 1; + while (hiddenIndices.includes(swapIndex)) + swapIndex++; + if (swapIndex < headerGroups.length) { + box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]); + if (e.clientX > box.left + window.scrollX + (box.width / 2)) { + swapElement = columns[dragIndex]; + columns.splice(dragIndex, 1); + columns.splice(swapIndex, 0, swapElement); + forcePopulation = true; + swapDone = true; + } + } + } + + // Write back change to storage + if (swapDone) { + settings.columnOrder = columns + writeStorage("columnOrder", JSON.stringify(columns)); + } + + } + + const mouseDownHandler = function(e) { + var target = e.target; + if (target.tagName.toLowerCase() != "td") + target = target.parentElement; + + // Used to check if a dragging has ever happened + wasDragged = false; + + // Create new element which will be displayed as the dragged column + draggingElement = document.createElement("div") + draggingElement.classList.add("dragging"); + draggingElement.style.display = "none"; + draggingElement.style.position = "absolute"; + draggingElement.style.overflow = "hidden"; + + // Get bomhead and bombody elements + const bh = document.getElementById("bomhead"); + const bb = document.getElementById("bombody"); + + // Get all compound headers for the current column + var compoundHeaders; + if (target.classList.contains("bom-checkbox")) { + compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox")); + } else { + compoundHeaders = [target]; + } + + // Create new table which will display the column + var newTable = document.createElement("table"); + newTable.classList.add("bom"); + newTable.style.background = "white"; + draggingElement.append(newTable); + + // Create new header element + var newHeader = document.createElement("thead"); + newTable.append(newHeader); + + // Set up array for storing all placeholder elements + placeHolderElements = []; + + // Add all compound headers to the new thead element and placeholders + compoundHeaders.forEach(function(h) { + clone = cloneElementWithDimensions(h); + newHeader.append(clone); + placeHolderElements.push(clone); + }); + + // Create new body element + var newBody = document.createElement("tbody"); + newTable.append(newBody); + + // Get indices for compound headers + var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e)); + + // For each row in the BOM body... + var rows = bb.querySelectorAll("tr"); + rows.forEach(function(row) { + // ..get the cells for the compound column + const tds = row.querySelectorAll("td"); + var copytds = idxs.map(i => tds[i]); + // Add them to the new element and the placeholders + var newRow = document.createElement("tr"); + copytds.forEach(function(td) { + clone = cloneElementWithDimensions(td); + newRow.append(clone); + placeHolderElements.push(clone); + }); + newBody.append(newRow); + }); + + // Compute width for compound header + var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0); + draggingElement.style.width = `${width}px`; + + // Insert the new dragging element and disable selection on BOM + bom.insertBefore(draggingElement, null); + bom.style.userSelect = "none"; + + // Determine the mouse position offset + xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft); + yOffset = e.screenY - compoundHeaders[0].offsetTop; + + // Get name for the column in settings.columnOrder + dragName = getColumnOrderName(target); + + // Change text and class for placeholder elements + placeHolderElements = placeHolderElements.map(function(e) { + newElem = cloneElementWithDimensions(e); + newElem.textContent = ""; + newElem.classList.add("placeholder"); + return newElem; + }); + + // On next mouse move, the whole BOM needs to be redrawn to show the placeholders + forcePopulation = true; + + // Add listeners for move and up on mouse + document.addEventListener('mousemove', mouseMoveHandler); + document.addEventListener('mouseup', mouseUpHandler); + } + + // In netlist mode, there is nothing to reorder + if (settings.bommode === "netlist") + return; + + // Add mouseDownHandler to every column except the numCol + bom.querySelectorAll("th") + .forEach(function(head) { + if (!head.classList.contains("numCol")) { + head.onmousedown = mouseDownHandler; + } + }); + +} + +function getBoundingClientRectFromMultiple(elements) { + var elems = Array.from(elements); + + if (elems.length == 0) + return null; + + var box = elems.shift() + .getBoundingClientRect(); + + elems.forEach(function(elem) { + var elembox = elem.getBoundingClientRect(); + box.left = Math.min(elembox.left, box.left); + box.top = Math.min(elembox.top, box.top); + box.width += elembox.width; + box.height = Math.max(elembox.height, box.height); + }); + + return box; +} + +function cloneElementWithDimensions(elem) { + var newElem = elem.cloneNode(true); + newElem.style.height = window.getComputedStyle(elem).height; + newElem.style.width = window.getComputedStyle(elem).width; + return newElem; +} + +function getBomTableHeaderIndex(elem) { + const bh = document.getElementById('bomhead'); + const ths = Array.from(bh.querySelectorAll("th")); + return ths.indexOf(elem); +} + +function getColumnOrderName(elem) { + var cname = elem.getAttribute("col_name"); + if (cname === "bom-checkbox") + return "checkboxes"; + else + return cname; +} + +function resizableGrid(tablehead) { + var cols = tablehead.firstElementChild.children; + var rowWidth = tablehead.offsetWidth; + + for (var i = 1; i < cols.length; i++) { + if (cols[i].classList.contains("bom-checkbox")) + continue; + cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%'; + } + + for (var i = 1; i < cols.length - 1; i++) { + var div = document.createElement('div'); + div.className = "column-width-handle"; + cols[i].appendChild(div); + setListeners(div); + } + + function setListeners(div) { + var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth; + + div.addEventListener('mousedown', function(e) { + e.preventDefault(); + e.stopPropagation(); + + curCol = e.target.parentElement; + nxtCol = curCol.nextElementSibling; + startX = e.pageX; + + var padding = paddingDiff(curCol); + + rowWidth = curCol.parentElement.offsetWidth; + curColWidth = curCol.clientWidth - padding; + nxtColWidth = nxtCol.clientWidth - padding; + }); + + document.addEventListener('mousemove', function(e) { + if (startX) { + var diffX = e.pageX - startX; + diffX = -Math.min(-diffX, curColWidth - 20); + diffX = Math.min(diffX, nxtColWidth - 20); + + curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%'; + nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%'; + console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`); + } + }); + + document.addEventListener('mouseup', function(e) { + curCol = undefined; + nxtCol = undefined; + startX = undefined; + nxtColWidth = undefined; + curColWidth = undefined + }); + } + + function paddingDiff(col) { + + if (getStyleVal(col, 'box-sizing') == 'border-box') { + return 0; + } + + var padLeft = getStyleVal(col, 'padding-left'); + var padRight = getStyleVal(col, 'padding-right'); + return (parseInt(padLeft) + parseInt(padRight)); + + } + + function getStyleVal(elm, css) { + return (window.getComputedStyle(elm, null).getPropertyValue(css)) + } +} + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +/* DOM manipulation and misc code */ + +var bomsplit; +var canvassplit; +var initDone = false; +var bomSortFunction = null; +var currentSortColumn = null; +var currentSortOrder = null; +var currentHighlightedRowId; +var highlightHandlers = []; +var footprintIndexToHandler = {}; +var netsToHandler = {}; +var markedFootprints = new Set(); +var highlightedFootprints = []; +var highlightedNet = null; +var lastClicked; + +function dbg(html) { + dbgdiv.innerHTML = html; +} + +function redrawIfInitDone() { + if (initDone) { + redrawCanvas(allcanvas.front); + redrawCanvas(allcanvas.back); + } +} + +function padsVisible(value) { + writeStorage("padsVisible", value); + settings.renderPads = value; + redrawIfInitDone(); +} + +function referencesVisible(value) { + writeStorage("referencesVisible", value); + settings.renderReferences = value; + redrawIfInitDone(); +} + +function valuesVisible(value) { + writeStorage("valuesVisible", value); + settings.renderValues = value; + redrawIfInitDone(); +} + +function tracksVisible(value) { + writeStorage("tracksVisible", value); + settings.renderTracks = value; + redrawIfInitDone(); +} + +function zonesVisible(value) { + writeStorage("zonesVisible", value); + settings.renderZones = value; + redrawIfInitDone(); +} + +function dnpOutline(value) { + writeStorage("dnpOutline", value); + settings.renderDnpOutline = value; + redrawIfInitDone(); +} + +function setDarkMode(value) { + if (value) { + topmostdiv.classList.add("dark"); + } else { + topmostdiv.classList.remove("dark"); + } + writeStorage("darkmode", value); + settings.darkMode = value; + redrawIfInitDone(); + if (initDone) { + populateBomTable(); + } +} + +function setShowBOMColumn(field, value) { + if (field === "references") { + var rl = document.getElementById("reflookup"); + rl.disabled = !value; + if (!value) { + rl.value = ""; + updateRefLookup(""); + } + } + + var n = settings.hiddenColumns.indexOf(field); + if (value) { + if (n != -1) { + settings.hiddenColumns.splice(n, 1); + } + } else { + if (n == -1) { + settings.hiddenColumns.push(field); + } + } + + writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns)); + + if (initDone) { + populateBomTable(); + } + + redrawIfInitDone(); +} + + +function setFullscreen(value) { + if (value) { + document.documentElement.requestFullscreen(); + } else { + document.exitFullscreen(); + } +} + +function fabricationVisible(value) { + writeStorage("fabricationVisible", value); + settings.renderFabrication = value; + redrawIfInitDone(); +} + +function silkscreenVisible(value) { + writeStorage("silkscreenVisible", value); + settings.renderSilkscreen = value; + redrawIfInitDone(); +} + +function setHighlightPin1(value) { + writeStorage("highlightpin1", value); + settings.highlightpin1 = value; + redrawIfInitDone(); +} + +function 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 updateNetColors() { + writeStorage("netColors", JSON.stringify(settings.netColors)); + redrawIfInitDone(); +} + +function netColorChangeHandler(net) { + return (event) => { + settings.netColors[net] = event.target.value; + updateNetColors(); + } +} + +function netColorRightClick(net) { + return (event) => { + if(event.button == 2) { + event.preventDefault(); + event.stopPropagation(); + + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + event.target.value = defaultNetColor; + delete settings.netColors[net]; + updateNetColors(); + } + } +} + +function entryMatches(entry) { + if (settings.bommode == "netlist") { + // entry is just a net name + return entry.toLowerCase().indexOf(filter) >= 0; + } + // check refs + if (!settings.hiddenColumns.includes("references")) { + for (var ref of entry) { + if (ref[0].toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + // check fields + for (var i in config.fields) { + var f = config.fields[i]; + if (!settings.hiddenColumns.includes(f)) { + for (var ref of entry) { + if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) { + return true; + } + } + } + } + return false; +} + +function findRefInEntry(entry) { + return entry.filter(r => r[0].toLowerCase() == reflookup); +} + +function highlightFilter(s) { + if (!filter) { + return s; + } + var parts = s.toLowerCase().split(filter); + if (parts.length == 1) { + return s; + } + var r = ""; + var pos = 0; + for (var i in parts) { + if (i > 0) { + r += '<mark class="highlight">' + + s.substring(pos, pos + filter.length) + + '</mark>'; + pos += filter.length; + } + r += s.substring(pos, pos + parts[i].length); + pos += parts[i].length; + } + return r; +} + +function checkboxSetUnsetAllHandler(checkboxname) { + return function () { + var checkboxnum = 0; + while (checkboxnum < settings.checkboxes.length && + settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) { + checkboxnum++; + } + if (checkboxnum >= settings.checkboxes.length) { + return; + } + var allset = true; + var checkbox; + var row; + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + if (!checkbox.checked || checkbox.indeterminate) { + allset = false; + break; + } + } + for (row of bombody.childNodes) { + checkbox = row.childNodes[checkboxnum + 1].childNodes[0]; + checkbox.checked = !allset; + checkbox.indeterminate = false; + checkbox.onchange(); + } + } +} + +function createColumnHeader(name, cls, comparator, is_checkbox = false) { + var th = document.createElement("TH"); + th.innerHTML = name; + th.classList.add(cls); + if (is_checkbox) + th.setAttribute("col_name", "bom-checkbox"); + else + th.setAttribute("col_name", name); + var span = document.createElement("SPAN"); + span.classList.add("sortmark"); + span.classList.add("none"); + th.appendChild(span); + var spacer = document.createElement("div"); + spacer.className = "column-spacer"; + th.appendChild(spacer); + spacer.onclick = function () { + if (currentSortColumn && th !== currentSortColumn) { + // Currently sorted by another column + currentSortColumn.childNodes[1].classList.remove(currentSortOrder); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + if (currentSortColumn && th === currentSortColumn) { + // Already sorted by this column + if (currentSortOrder == "asc") { + // Sort by this column, descending order + bomSortFunction = function (a, b) { + return -comparator(a, b); + } + currentSortColumn.childNodes[1].classList.remove("asc"); + currentSortColumn.childNodes[1].classList.add("desc"); + currentSortOrder = "desc"; + } else { + // Unsort + bomSortFunction = null; + currentSortColumn.childNodes[1].classList.remove("desc"); + currentSortColumn.childNodes[1].classList.add("none"); + currentSortColumn = null; + currentSortOrder = null; + } + } else { + // Sort by this column, ascending order + bomSortFunction = comparator; + currentSortColumn = th; + currentSortColumn.childNodes[1].classList.remove("none"); + currentSortColumn.childNodes[1].classList.add("asc"); + currentSortOrder = "asc"; + } + populateBomBody(); + } + if (is_checkbox) { + spacer.onclick = fancyDblClickHandler( + spacer, spacer.onclick, checkboxSetUnsetAllHandler(name)); + } + return th; +} + +function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) { + while (bomhead.firstChild) { + bomhead.removeChild(bomhead.firstChild); + } + var tr = document.createElement("TR"); + var th = document.createElement("TH"); + th.classList.add("numCol"); + + var vismenu = document.createElement("div"); + vismenu.id = "vismenu"; + vismenu.classList.add("menu"); + + var visbutton = document.createElement("div"); + visbutton.classList.add("visbtn"); + visbutton.classList.add("hideonprint"); + + var viscontent = document.createElement("div"); + viscontent.classList.add("menu-content"); + viscontent.id = "vismenu-content"; + + settings.columnOrder.forEach(column => { + if (typeof column !== "string") + return; + + // Skip empty columns + if (column === "checkboxes" && settings.checkboxes.length == 0) + return; + else if (column === "Quantity" && settings.bommode == "ungrouped") + return; + + var label = document.createElement("label"); + label.classList.add("menu-label"); + + var input = document.createElement("input"); + input.classList.add("visibility_checkbox"); + input.type = "checkbox"; + input.onchange = function (e) { + setShowBOMColumn(column, e.target.checked) + }; + input.checked = !(settings.hiddenColumns.includes(column)); + + label.appendChild(input); + if (column.length > 0) + label.append(column[0].toUpperCase() + column.slice(1)); + + viscontent.appendChild(label); + }); + + viscontent.childNodes[0].classList.add("menu-label-top"); + + vismenu.appendChild(visbutton); + if (settings.bommode != "netlist") { + vismenu.appendChild(viscontent); + th.appendChild(vismenu); + } + tr.appendChild(th); + + var checkboxCompareClosure = function (checkbox) { + return (a, b) => { + var stateA = getCheckboxState(checkbox, a); + var stateB = getCheckboxState(checkbox, b); + if (stateA > stateB) return -1; + if (stateA < stateB) return 1; + return 0; + } + } + var stringFieldCompareClosure = function (fieldIndex) { + return (a, b) => { + var fa = pcbdata.bom.fields[a[0][1]][fieldIndex]; + var fb = pcbdata.bom.fields[b[0][1]][fieldIndex]; + if (fa != fb) return fa > fb ? 1 : -1; + else return 0; + } + } + var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/; + var compareRefs = (a, b) => { + var ra = referenceRegex.exec(a); + var rb = referenceRegex.exec(b); + if (ra === null || rb === null) { + if (a != b) return a > b ? 1 : -1; + return 0; + } else { + if (ra.groups.prefix != rb.groups.prefix) { + return ra.groups.prefix > rb.groups.prefix ? 1 : -1; + } + if (ra.groups.number != rb.groups.number) { + return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1; + } + return 0; + } + } + if (settings.bommode == "netlist") { + tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => { + if (a > b) return -1; + if (a < b) return 1; + return 0; + })); + tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => { + return 0; + })); + } else { + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + var valueIndex = config.fields.indexOf("Value"); + var footprintIndex = config.fields.indexOf("Footprint"); + columns.forEach((column) => { + if (column === placeHolderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + th = createColumnHeader( + checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true); + tr.appendChild(th); + } + } else if (column === "References") { + tr.appendChild(createColumnHeader("References", "references", (a, b) => { + var i = 0; + while (i < a.length && i < b.length) { + if (a[i] != 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) { + const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/; + while (bom.firstChild) { + bom.removeChild(bom.firstChild); + } + highlightHandlers = []; + footprintIndexToHandler = {}; + netsToHandler = {}; + currentHighlightedRowId = null; + var first = true; + var style = getComputedStyle(topmostdiv); + var defaultNetColor = style.getPropertyValue('--track-color').trim(); + 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); + var color = settings.netColors[netname] || defaultNetColor; + td = document.createElement("TD"); + var colorBox = document.createElement("INPUT"); + colorBox.type = "color"; + colorBox.value = color; + colorBox.onchange = netColorChangeHandler(netname); + colorBox.onmouseup = netColorRightClick(netname); + colorBox.oncontextmenu = (e) => e.preventDefault(); + td.appendChild(colorBox); + td.classList.add("color-column"); + tr.appendChild(td); + } else { + if (reflookup) { + references = findRefInEntry(bomentry); + if (references.length == 0) { + continue; + } + } else { + references = bomentry; + } + // Filter hidden columns + var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e)); + columns.forEach((column) => { + if (column === placeholderColumn) { + var n = 1; + if (column === "checkboxes") + n = settings.checkboxes.length; + for (i = 0; i < n; i++) { + td = placeHolderElements.shift(); + tr.appendChild(td); + } + return; + } else if (column === "checkboxes") { + for (var checkbox of settings.checkboxes) { + if (checkbox) { + td = document.createElement("TD"); + var input = document.createElement("input"); + input.type = "checkbox"; + input.onchange = 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"); + var output = new Array(); + for (let item of valueSet) { + const visible = highlightFilter(String(item)); + if (typeof item === 'string' && item.match(urlRegex)) { + output.push(`<a href="${item}" target="_blank">${visible}</a>`); + } else { + output.push(visible); + } + } + td.innerHTML = output.join(", "); + tr.appendChild(td); + } + }); + } + bom.appendChild(tr); + var handler = createRowHighlightHandler(tr.id, references, netname); + 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("topmostdiv").style.height = ""; + document.getElementById("topmostdiv").style.display = "block"; + break; + case 'top-bottom': + document.getElementById("tb-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.remove("split-horizontal"); + document.getElementById("canvasdiv").classList.remove("split-horizontal"); + document.getElementById("frontcanvas").classList.add("split-horizontal"); + document.getElementById("backcanvas").classList.add("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + direction: "vertical", + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + onDragEnd: resizeAll + }); + break; + case 'left-right': + document.getElementById("lr-btn").classList.add("depressed"); + document.getElementById("frontcanvas").style.display = ""; + document.getElementById("backcanvas").style.display = ""; + document.getElementById("topmostdiv").style.height = "100%"; + document.getElementById("topmostdiv").style.display = "flex"; + document.getElementById("bomdiv").classList.add("split-horizontal"); + document.getElementById("canvasdiv").classList.add("split-horizontal"); + document.getElementById("frontcanvas").classList.remove("split-horizontal"); + document.getElementById("backcanvas").classList.remove("split-horizontal"); + if (bomsplit) { + bomsplit.destroy(); + bomsplit = null; + canvassplit.destroy(); + canvassplit = null; + } + bomsplit = Split(['#bomdiv', '#canvasdiv'], { + sizes: [50, 50], + onDragEnd: resizeAll, + gutterSize: 5 + }); + canvassplit = Split(['#frontcanvas', '#backcanvas'], { + sizes: [50, 50], + gutterSize: 5, + direction: "vertical", + onDragEnd: resizeAll + }); + } + settings.bomlayout = layout; + writeStorage("bomlayout", layout); + changeCanvasLayout(settings.canvaslayout); +} + +function changeBomMode(mode) { + document.getElementById("bom-grouped-btn").classList.remove("depressed"); + document.getElementById("bom-ungrouped-btn").classList.remove("depressed"); + document.getElementById("bom-netlist-btn").classList.remove("depressed"); + var chkbxs = document.getElementsByClassName("visibility_checkbox"); + + switch (mode) { + case 'grouped': + document.getElementById("bom-grouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'ungrouped': + document.getElementById("bom-ungrouped-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = false; + } + break; + case 'netlist': + document.getElementById("bom-netlist-btn").classList.add("depressed"); + for (var i = 0; i < chkbxs.length; i++) { + chkbxs[i].disabled = true; + } + } + + writeStorage("bommode", mode); + if (mode != settings.bommode) { + settings.bommode = mode; + bomSortFunction = null; + currentSortColumn = null; + currentSortOrder = null; + clearHighlightedFootprints(); + } + populateBomTable(); +} + +function focusFilterField() { + focusInputField(document.getElementById("filter")); +} + +function focusRefLookupField() { + focusInputField(document.getElementById("reflookup")); +} + +function toggleBomCheckbox(bomrowid, checkboxnum) { + if (!bomrowid || checkboxnum > settings.checkboxes.length) { + return; + } + var bomrow = document.getElementById(bomrowid); + var 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) + "%)"; +} + +function constrain(number, min, max){ + return Math.min(Math.max(parseInt(number), min), max); +} + +document.onkeydown = function (e) { + switch (e.key) { + case "n": + if (document.activeElement.type == "text") { + return; + } + if (currentHighlightedRowId !== null) { + checkBomCheckbox(currentHighlightedRowId, "placed"); + highlightNextRow(); + e.preventDefault(); + } + break; + case "ArrowUp": + highlightPreviousRow(); + e.preventDefault(); + break; + case "ArrowDown": + highlightNextRow(); + e.preventDefault(); + break; + case "ArrowLeft": + case "ArrowRight": + if (document.activeElement.type != "text"){ + e.preventDefault(); + let boardRotationElement = document.getElementById("boardRotation") + settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5 + if (e.key == "ArrowLeft"){ + settings.boardRotation += 3; // 15 degrees + } + else{ + settings.boardRotation -= 3; + } + settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max); + boardRotationElement.value = settings.boardRotation + setBoardRotation(settings.boardRotation); + } + break; + default: + break; + } + if (e.altKey) { + switch (e.key) { + case "f": + focusFilterField(); + e.preventDefault(); + break; + case "r": + focusRefLookupField(); + e.preventDefault(); + break; + case "z": + changeBomLayout("bom-only"); + e.preventDefault(); + break; + case "x": + changeBomLayout("left-right"); + e.preventDefault(); + break; + case "c": + changeBomLayout("top-bottom"); + e.preventDefault(); + break; + case "v": + changeCanvasLayout("F"); + e.preventDefault(); + break; + case "b": + changeCanvasLayout("FB"); + e.preventDefault(); + break; + case "n": + changeCanvasLayout("B"); + e.preventDefault(); + break; + default: + break; + } + if (e.key >= '1' && e.key <= '9') { + toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key)); + e.preventDefault(); + } + } +} + +function hideNetlistButton() { + document.getElementById("bom-ungrouped-btn").classList.remove("middle-button"); + document.getElementById("bom-ungrouped-btn").classList.add("right-most-button"); + document.getElementById("bom-netlist-btn").style.display = "none"; +} + +function topToggle() { + var top = document.getElementById("top"); + var toptoggle = document.getElementById("toptoggle"); + if (top.style.display === "none") { + top.style.display = "flex"; + toptoggle.classList.remove("flipped"); + } else { + top.style.display = "none"; + toptoggle.classList.add("flipped"); + } +} + +window.onload = function (e) { + 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); + +/////////////////////////////////////////////// + +/////////////////////////////////////////////// +// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => { +// for(var tr of bom.childNodes) { +// tr.onclick = tr.onmousemove; +// tr.onmousemove = null; +// }; +// }); + +/////////////////////////////////////////////// + </script> +</head> + +<body> + +<div id="topmostdiv" class="topmostdiv"> + <div id="top"> + <div id="fileinfodiv"> + <table class="fileinfo"> + <tbody> + <tr> + <td id="title" class="title" style="width: 70%"> + Title + </td> + <td id="revision" class="title" style="width: 30%"> + Revision + </td> + </tr> + <tr> + <td id="company"> + Company + </td> + <td id="filedate"> + Date + </td> + </tr> + </tbody> + </table> + </div> + <div id="bomcontrols"> + <div class="hideonprint menu"> + <button class="menubtn"></button> + <div class="menu-content"> + <label class="menu-label menu-label-top" style="width: calc(50% - 18px)"> + <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)"> + Dark mode + </label><!-- This comment eats space! All of it! + --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;"> + <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)"> + Full Screen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)"> + Fab layer + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)"> + Silkscreen + </label> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)"> + References + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)"> + Values + </label> + <div id="tracksAndZonesCheckboxes"> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)"> + Tracks + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)"> + Zones + </label> + </div> + <label class="menu-label" style="width: calc(50% - 18px)"> + <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)"> + Pads + </label><!-- This comment eats space! All of it! + --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;"> + <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)"> + DNP outlined + </label> + <label class="menu-label"> + <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)"> + Continuous redraw on drag + </label> + <label class="menu-label"> + Highlight first pin + <form id="highlightpin1"> + <div class="flexbox"> + <label> + <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')"> + None + </label> + <label> + <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')"> + All + </label> + <label> + <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')"> + Selected + </label> + </div> + </form> + </label> + <label class="menu-label"> + <span>Board rotation</span> + <span style="float: right"><span id="rotationDegree">0</span>°</span> + <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)"> + </label> + <label class="menu-label"> + <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)"> + Offset back rotation + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Bom checkboxes</div> + <input id="bomCheckboxes" class="menu-textbox" type=text + oninput="setBomCheckboxes(this.value)"> + </label> + <label class="menu-label"> + <div style="margin-left: 5px">Mark when checked</div> + <div id="markWhenCheckedContainer"></div> + </label> + <label class="menu-label"> + <span class="shameless-plug"> + <span>Created using</span> + <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a> + <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a> + </span> + </label> + </div> + </div> + <div class="button-container hideonprint"> + <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')" + title="Front only">F + </button> + <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')" + title="Front and Back">FB + </button> + <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')" + title="Back only">B + </button> + </div> + <div class="button-container hideonprint"> + <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')" + title="BOM only"></button> + <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')" + title="BOM left, drawings right"></button> + <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')" + title="BOM top, drawings bot"></button> + </div> + <div class="button-container hideonprint"> + <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')" + title="Grouped BOM"></button> + <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')" + title="Ungrouped BOM"></button> + <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')" + title="Netlist"></button> + </div> + <div class="hideonprint menu"> + <button class="statsbtn"></button> + <div class="menu-content"> + <table class="stats"> + <tbody> + <tr> + <td width="40%">Board stats</td> + <td>Front</td> + <td>Back</td> + <td>Total</td> + </tr> + <tr> + <td>Components</td> + <td id="stats-components-front">~</td> + <td id="stats-components-back">~</td> + <td id="stats-components-total">~</td> + </tr> + <tr> + <td>Groups</td> + <td id="stats-groups-front">~</td> + <td id="stats-groups-back">~</td> + <td id="stats-groups-total">~</td> + </tr> + <tr> + <td>SMD pads</td> + <td id="stats-smd-pads-front">~</td> + <td id="stats-smd-pads-back">~</td> + <td id="stats-smd-pads-total">~</td> + </tr> + <tr> + <td>TH pads</td> + <td colspan=3 id="stats-th-pads">~</td> + </tr> + </tbody> + </table> + <table class="stats"> + <col width="40%"/><col /> + <tbody id="checkbox-stats"> + <tr> + <td colspan=2 style="border-top: 0">Checkboxes</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="hideonprint menu"> + <button class="iobtn"></button> + <div class="menu-content"> + <div class="menu-label menu-label-top"> + <div style="margin-left: 5px;">Save board image</div> + <div class="flexbox"> + <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + <span>X</span> + <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height" + style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)"> + </div> + <label> + <input id="render-save-transparent" type="checkbox"> + Transparent background + </label> + <div class="flexbox"> + <button class="savebtn" onclick="saveImage('F')">Front</button> + <button class="savebtn" onclick="saveImage('B')">Back</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Config and checkbox state</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveSettings()">Export</button> + <button class="savebtn" onclick="loadSettings()">Import</button> + <button class="savebtn" onclick="resetSettings()">Reset</button> + </div> + </div> + <div class="menu-label"> + <span style="margin-left: 5px;">Save bom table as</span> + <div class="flexbox"> + <button class="savebtn" onclick="saveBomTable('csv')">csv</button> + <button class="savebtn" onclick="saveBomTable('txt')">txt</button> + </div> + </div> + </div> + </div> + </div> + </div> + <div id="topdivider"> + <div class="hideonprint"> + <div id="toptoggle" onclick="topToggle()">︽</div> + </div> + </div> + <div id="bot" class="split" style="flex: 1 1"> + <div id="bomdiv" class="split split-horizontal"> + <div style="width: 100%"> + <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup" + oninput="updateRefLookup(this.value)"> + <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter" + oninput="updateFilter(this.value)"> + <div class="button-container hideonprint" style="float: left; margin: 0;"> + <button id="copy" title="Copy bom table to clipboard" + onclick="saveBomTable('clipboard')"></button> + </div> + </div> + <div id="dbg"></div> + <table class="bom" id="bomtable"> + <thead id="bomhead"> + </thead> + <tbody id="bombody"> + </tbody> + </table> + </div> + <div id="canvasdiv" class="split split-horizontal"> + <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden"> + <div style="position: relative; width: 100%; height: 100%;"> + <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas> + <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas> + <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas> + <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas> + </div> + </div> + </div> + </div> +</div> + +</body> + +</html> diff --git a/doc/source/source_rst/hardware/mb/mb_2023.rst b/doc/source/source_rst/hardware/mb/mb_2023.rst index 66fc82328ef8aa217afd24e369e4b10840e8ed95..84509fa1c630719b77f267a23dbba1c5782b8c07 100644 --- a/doc/source/source_rst/hardware/mb/mb_2023.rst +++ b/doc/source/source_rst/hardware/mb/mb_2023.rst @@ -4,38 +4,8 @@ Measurement board v2023 ********************************************** -Specifications -============== - -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -| **Parameter** | **V1.0x** | Units | **v2023** | Units | -+===============================+=======================+===========+=======================+===========+ -|Electrodes |32 | |64 to 128 | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Operating temperature |-0 to 50 |°c |-25 to 50 |°C | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Power consumption of CPU and |18.5 |W |18.5 |W | -|control system | | | | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Voltage injection |12 |V |12 |V | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Battery |9 |V |12 |V | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Current |0 to 40 |mA |0 to 40 |mA | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Min pulse duration |150 |ms |150 |ms | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Input impedance |80 |MOhm |80 |MOhm | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Data storage |micro SD card | |micro SD card | | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ -|Resolution |0.01 |Ohm |0.01 |Ohm | -+-------------------------------+-----------------------+-----------+-----------------------+-----------+ - - - **PART A** Assembly of the measurement board -====================================================== +============================================== Required components diff --git a/doc/source/source_rst/hardware/mb/mb_2024.rst b/doc/source/source_rst/hardware/mb/mb_2024.rst index 65656c363896e2a6324e42d5bd3ed89fd0f61b23..45d2242c6741a33b326f5884f230c7b5316f9e5d 100644 --- a/doc/source/source_rst/hardware/mb/mb_2024.rst +++ b/doc/source/source_rst/hardware/mb/mb_2024.rst @@ -2,14 +2,49 @@ **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.** -Measurement board v2024 -======================= +Measurement board 2024.0.2 +=========================== + +The 2024.0.2 measurement board has been developed to replace the 2023.0.1 measurement board. It offers superior performance compared to its predecessor. +The current measurement component has not evolved and presents no major differences. However, the major upgrade is the Mikroe-1887 module. Specifically, +it provides electrical isolation for the Vmn measurement set. This isolation allows for injection voltages (Vab) up to 200V + + +**PART A** Assembly of the measurement board +-------------------------------------------- + +Required components +------------------- + +`Interactive BOM list <ibom.html>`_ + + +.. figure:: ../../../img/mb.2024.x.x/32.jpg + :width: 700px + :align: center + :height: 450px + :alt: alternate text + :figclass: align-center + + + + +.. csv-table:: List of components + :file: ../../../img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv + :widths: 30, 70, 70, 70, 70, 35, 35 + :header-rows: 1 + + + +.. toctree:: + :maxdepth: 2 + + bom/ibom.html + bom/ibom.html + -You can also include a file directly: -.. raw:: html - :file: ../../../bomlist/ibom.html