Use external interactive pinout generator (#5034)
* Use interactive-pinout action * remove scripts
This commit is contained in:
parent
b7308519ac
commit
006caf9c79
|
@ -16,22 +16,50 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Install prerequisite software
|
- name: Generate Pinouts
|
||||||
env:
|
uses: chuckwagoncomputing/interactive-pinout@main
|
||||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
with:
|
||||||
run: |
|
mapping-path: ./firmware/config/boards/*/connectors/*.yaml
|
||||||
misc/actions/pinouts-install.sh
|
warnings: "false"
|
||||||
echo "::add-path::`pwd`/yqdir/"
|
columns: |
|
||||||
|
{
|
||||||
|
"pin":"Pin Number",
|
||||||
|
"ts_name":"TS Name",
|
||||||
|
"type":"Type",
|
||||||
|
"function":"Typical Function",
|
||||||
|
"color":"Pigtail Color"
|
||||||
|
}
|
||||||
|
print-columns: |
|
||||||
|
[
|
||||||
|
"function"
|
||||||
|
]
|
||||||
|
colors: |
|
||||||
|
{
|
||||||
|
"12v":"yellow";
|
||||||
|
"12V":"yellow";
|
||||||
|
"5v":"red",
|
||||||
|
"5V":"red",
|
||||||
|
"at":"green",
|
||||||
|
"av":"brown",
|
||||||
|
"can":"blue",
|
||||||
|
"din":"lime",
|
||||||
|
"etb":"darkcyan",
|
||||||
|
"gnd":"darkgreen",
|
||||||
|
"gp_high":"aqua",
|
||||||
|
"gp_low":"aquamarine",
|
||||||
|
"gp_pp":"cyan",
|
||||||
|
"hall":"darkolivegreen",
|
||||||
|
"hl":"gold",
|
||||||
|
"hs":"indigo",
|
||||||
|
"ign":"magenta",
|
||||||
|
"inj":"maroon",
|
||||||
|
"ls":"lightgreen",
|
||||||
|
"mr":"firebrick",
|
||||||
|
"pgnd":"coral",
|
||||||
|
"sgnd":"olive",
|
||||||
|
"usb":"lightseagreen",
|
||||||
|
"vr":"sienna"
|
||||||
|
}
|
||||||
|
|
||||||
- name: Set FTP variables
|
- name: Upload Pinouts
|
||||||
env:
|
run: tar -czf - pinouts | sshpass -p "${{ secrets.RUSEFI_SSH_PASS }}" ssh -o StrictHostKeyChecking=no "${{ secrets.RUSEFI_SSH_USER }}"@"${{ secrets.RUSEFI_SSH_SERVER }}" "tar -xzf - -C docs"
|
||||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
|
|
||||||
run: |
|
|
||||||
if [ "${{github.ref}}" = "refs/heads/master" ]; then
|
|
||||||
echo "::set-env name=RUSEFI_SSH_SERVER::${{secrets.RUSEFI_SSH_SERVER}}";
|
|
||||||
echo "::set-env name=RUSEFI_SSH_USER::${{secrets.RUSEFI_SSH_USER}}";
|
|
||||||
echo "::set-env name=RUSEFI_SSH_PASS::${{secrets.RUSEFI_SSH_PASS}}";
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Generate documentation
|
|
||||||
run: bash ./misc/jenkins/generate_pinouts/gen_upload_pinouts.sh
|
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
I_AM="pinouts-create.sh:"
|
|
||||||
|
|
||||||
I_AM="gen_upload_pinouts.sh:"
|
|
||||||
|
|
||||||
# yq 3 and 4 have incompatible syntax. We use yq 4.
|
|
||||||
echo ${I_AM} invoking yq version
|
|
||||||
yqdir/yq -V
|
|
||||||
|
|
||||||
if [ -z $1 ] ; then
|
|
||||||
echo "Specific yaml parameter not specified, searching for */connectors/*.yaml"
|
|
||||||
CONNECTORS=$(find -path "./firmware/config/boards/*/connectors/*.yaml")
|
|
||||||
FILES=$(for f in $CONNECTORS; do
|
|
||||||
ORDER=$(yqdir/yq e '.info.order' $f)
|
|
||||||
echo "$f $ORDER"
|
|
||||||
done)
|
|
||||||
CONNECTORS=$(echo "$FILES" | sort -k2 | cut -d ' ' -f 1)
|
|
||||||
else
|
|
||||||
CONNECTORS=$1
|
|
||||||
echo "Processing $CONNECTORS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for c in $CONNECTORS; do
|
|
||||||
echo "${I_AM} processing "$c
|
|
||||||
DIR="pinouts/"$(echo $c | tr '/' '\n' | tail -n +5 | head -n -2 | tr '\n' '/')
|
|
||||||
echo "${I_AM} DIR "$DIR
|
|
||||||
NAME=$(basename $c .yaml)
|
|
||||||
echo "${I_AM} NAME "$NAME
|
|
||||||
mkdir -p $DIR
|
|
||||||
if [ "$(yqdir/yq e '.info.id' $c)" == "null" ]; then
|
|
||||||
echo "${I_AM} Missing yaml id field in info section of $c"
|
|
||||||
# todo fail once all pages are compliant exit 1
|
|
||||||
fi
|
|
||||||
if [ -f $DIR/index.html ]; then
|
|
||||||
bash misc/pinout-gen/append.sh "$(yqdir/yq -o=json e $c)" $DIR/index.html
|
|
||||||
else
|
|
||||||
bash misc/pinout-gen/gen.sh "$(yqdir/yq -o=json e $c)" $DIR/index.html
|
|
||||||
fi
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "${I_AM} something is broken"
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
file $DIR/index.html
|
|
||||||
IMG=$(yqdir/yq e '.info.image.file' $c)
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
echo "IMG "$IMG
|
|
||||||
if [ "$IMG" != "null" ]; then
|
|
||||||
cp $(dirname $c)/$IMG $DIR
|
|
||||||
fi
|
|
||||||
ls $DIR
|
|
||||||
done
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install sshpass
|
|
||||||
wget https://github.com/mikefarah/yq/releases/download/v4.30.8/yq_linux_amd64
|
|
||||||
chmod a+x yq_linux_amd64
|
|
||||||
rm -rf yqdir
|
|
||||||
mkdir yqdir
|
|
||||||
mv yq_linux_amd64 yqdir/yq
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)"/"
|
|
||||||
TEXT=$(sed -e "/\/\/\/DATA\/\/\//{a \ \`$(echo ${1//\//\\/} | tr -d '\n')\ \`,\n///DATA///" -e "d}" $2)
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error in append.sh"
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
echo "$TEXT" > $2
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)"/"
|
|
||||||
JSON="$(echo $1 | sed 's/\\/\\\\\\\\/g')"
|
|
||||||
TEXT=$(sed -e "/###CSS###/{r ${DIR}style.css" -e 'd}' -e "/###JS###/{r ${DIR}script.js" -e 'd}' ${DIR}pinout.html | sed -e "s/\/\/\/DATA\/\/\//\`$(echo ${JSON//\//\\/} | tr -d '\n')\`,\n\/\/\/DATA\/\/\//")
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error in gen.sh"
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
echo "$TEXT" > $2
|
|
|
@ -1,72 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
###CSS###
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
###JS###
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<template id="pin-template">
|
|
||||||
<div class="pin-marker"></div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="table-template">
|
|
||||||
<tr class="data">
|
|
||||||
<td class="pin-data" data-field="pin"></td>
|
|
||||||
<td class="ts-data" data-field="ts_name"></td>
|
|
||||||
<td class="type-data" data-field="type"</td>
|
|
||||||
<td class="function-data" data-field="function"></td>
|
|
||||||
<td class="color-data" data-field="color"></td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="connector-template">
|
|
||||||
<div class="container">
|
|
||||||
<h2 class="connector-name"></h2>
|
|
||||||
<div class="connector-container">
|
|
||||||
<div class="connector-div">
|
|
||||||
<img class="connector-img"></img>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<table class="info-table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
|
||||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
|
||||||
<th class="type-header" data-field="type">Type</th>
|
|
||||||
<th class="function-header" data-field="function">Typical Function</th>
|
|
||||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<h2>Full Pinout Table</h2>
|
|
||||||
<div class="table-wrapper">
|
|
||||||
<table class="pinout-table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
|
||||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
|
||||||
<th class="type-header" data-field="type">Type</th>
|
|
||||||
<th class="function-header" data-field="function">Typical Function</th>
|
|
||||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<a id="board-link"></a>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,236 +0,0 @@
|
||||||
var connectorData = [
|
|
||||||
///DATA///
|
|
||||||
];
|
|
||||||
|
|
||||||
function hideEmptyColumns(table) {
|
|
||||||
var rows = table.querySelector('tbody').children;
|
|
||||||
var tableHead = table.querySelector("thead>tr")
|
|
||||||
var cols = tableHead.children
|
|
||||||
for (var i = 0; i < cols.length; i++) {
|
|
||||||
var empty = true;
|
|
||||||
for (var ii = 0; ii < rows.length; ii++) {
|
|
||||||
empty = rows[ii].children[i].textContent.length > 0 ? false : empty;
|
|
||||||
}
|
|
||||||
if (empty) {
|
|
||||||
tableHead.querySelectorAll('th')[i].style.display = 'none';
|
|
||||||
for (var ii = 0; ii < rows.length; ii++) {
|
|
||||||
rows[ii].children[i].style.display = 'none';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tableHead.querySelectorAll('th')[i].style.display = '';
|
|
||||||
for (var ii = 0; ii < rows.length; ii++) {
|
|
||||||
rows[ii].children[i].style.display = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function addRow(table, pin) {
|
|
||||||
var clone = getRow(table, pin)
|
|
||||||
table.appendChild(clone);
|
|
||||||
}
|
|
||||||
|
|
||||||
function addRow(table, pin, cid) {
|
|
||||||
var clone = getRow(table, pin)
|
|
||||||
var row = clone.querySelector(".data");
|
|
||||||
if (pin.pdiv) {
|
|
||||||
row.addEventListener('click', function(table, pin, cid) {
|
|
||||||
var container;
|
|
||||||
for (var elem = table; elem && elem !== document; elem = elem.parentNode) {
|
|
||||||
if (elem.matches(".container")) {
|
|
||||||
var container = elem;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
clickPin(container.querySelector(".info-table tbody"), pin, cid);
|
|
||||||
container.scrollIntoView()
|
|
||||||
}.bind(null, table, pin, cid));
|
|
||||||
}
|
|
||||||
table.appendChild(clone);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getRow(table, pin) {
|
|
||||||
var template = document.getElementById("table-template");
|
|
||||||
var clone = template.content.cloneNode(true);
|
|
||||||
var row = clone.querySelector(".data");
|
|
||||||
var cells = row.children;
|
|
||||||
for (var i = 0; i < cells.length; i++) {
|
|
||||||
var cell = cells[i];
|
|
||||||
cell.textContent = Array.isArray(pin[cell.dataset.field]) ? pin[cell.dataset.field].join(", ") : pin[cell.dataset.field];
|
|
||||||
}
|
|
||||||
clone.querySelector(".pin-data").dataset.type = pin.type;
|
|
||||||
return clone;
|
|
||||||
}
|
|
||||||
|
|
||||||
function clickPin(table, pin, cid) {
|
|
||||||
var container;
|
|
||||||
for (var elem = table; elem && elem !== document; elem = elem.parentNode) {
|
|
||||||
if (elem.matches(".container")) {
|
|
||||||
container = elem;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
table.parentElement.style.display = "table";
|
|
||||||
table.innerHTML = "";
|
|
||||||
addRow(table, pin, cid);
|
|
||||||
var pins = document.querySelectorAll(".pin-marker");
|
|
||||||
for (var i = 0; i < pins.length; i++) {
|
|
||||||
if (pins[i].dataset.type == pin.type) {
|
|
||||||
pins[i].classList.add("highlight");
|
|
||||||
} else {
|
|
||||||
pins[i].classList.remove("highlight");
|
|
||||||
}
|
|
||||||
pins[i].classList.remove("selected");
|
|
||||||
}
|
|
||||||
pin.pdiv.classList.add("selected");
|
|
||||||
hideEmptyColumns(table.parentElement);
|
|
||||||
if (typeof(cid) != "undefined") {
|
|
||||||
var url = new URL(window.location);
|
|
||||||
url.searchParams.set("connector", cid);
|
|
||||||
url.searchParams.set("pin", pin.pin);
|
|
||||||
window.history.pushState({}, "", url)
|
|
||||||
} else {
|
|
||||||
var url = new URL(window.location);
|
|
||||||
url.search = "";
|
|
||||||
window.history.pushState({}, "", url)
|
|
||||||
}
|
|
||||||
container.scrollIntoView()
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkparams() {
|
|
||||||
var params = new URLSearchParams(window.location.search);
|
|
||||||
var connector = params.get("connector");
|
|
||||||
var pin = params.get("pin");
|
|
||||||
for (var i = 0; i < connectorData.length; i++) {
|
|
||||||
var c = connectorData[i];
|
|
||||||
if (c.info.id == connector) {
|
|
||||||
var table = document.querySelectorAll(".info-table tbody")[i];
|
|
||||||
for (var iii = 0; iii < c.pins.length; iii++) {
|
|
||||||
if (c.pins[iii].pin == pin) {
|
|
||||||
clickPin(table, c.pins[iii], c.info.id);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var images = 0;
|
|
||||||
|
|
||||||
function checkImagesLoaded() {
|
|
||||||
images -= 1;
|
|
||||||
if (images == 0) {
|
|
||||||
checkparams();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.addEventListener('load', function() {
|
|
||||||
window.onpopstate = function(ev) {
|
|
||||||
if (event.state) {
|
|
||||||
checkparams();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
for (var c = 0; c < connectorData.length; c++) {
|
|
||||||
connectorData[c] = JSON.parse(connectorData[c]);
|
|
||||||
var connector = connectorData[c];
|
|
||||||
var template = document.getElementById("connector-template");
|
|
||||||
var clone = template.content.cloneNode(true);
|
|
||||||
document.body.appendChild(clone);
|
|
||||||
var sdiv = document.body.lastChild.previousSibling;
|
|
||||||
var img = sdiv.querySelector(".connector-img");
|
|
||||||
images += 1;
|
|
||||||
img.addEventListener('load', function(connector, sdiv, img) {
|
|
||||||
var cdiv = sdiv.querySelector(".connector-div");
|
|
||||||
var cid = connector.info.id;
|
|
||||||
var ptemplate = document.getElementById("pin-template");
|
|
||||||
var imgHeight = img.naturalHeight;
|
|
||||||
var imgWidth = img.naturalWidth;
|
|
||||||
var table = sdiv.querySelector(".info-table").querySelector("tbody");
|
|
||||||
var fullTable = sdiv.querySelector(".pinout-table").querySelector("tbody");
|
|
||||||
for (var i = 0; i < connector.pins.length; i++) {
|
|
||||||
var pin = connector.pins[i];
|
|
||||||
if (!pin.pin) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var pinfo = {};
|
|
||||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
|
||||||
if (connector.info.pins[ii].pin == pin.pin) {
|
|
||||||
pinfo = connector.info.pins[ii];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!pinfo.x) {
|
|
||||||
addRow(fullTable, connector.pins[i], cid);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var closest = 1000000;
|
|
||||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
|
||||||
var tinfo = connector.info.pins[ii];
|
|
||||||
var distance = Math.pow((tinfo.x - pinfo.x), 2) + Math.pow((tinfo.y - pinfo.y), 2);
|
|
||||||
if (tinfo.pin != pin.pin && (!closest || distance < closest)) {
|
|
||||||
closest = distance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var pclone = ptemplate.content.cloneNode(true);
|
|
||||||
var pdiv = pclone.querySelector("div");
|
|
||||||
pdiv.textContent = pinfo.pin;
|
|
||||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
|
||||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
|
||||||
pdiv.dataset.type = pin.type;
|
|
||||||
pin.pdiv = pdiv;
|
|
||||||
pdiv.addEventListener("click", function(table, pin, cid) {
|
|
||||||
clickPin(table, pin, cid);
|
|
||||||
}.bind(null, table, pin, cid));
|
|
||||||
closest = Math.sqrt(closest);
|
|
||||||
var divheight = cdiv.clientHeight;
|
|
||||||
var divwidth = cdiv.clientWidth;
|
|
||||||
var mult = cdiv.querySelector("img").naturalHeight / divheight;
|
|
||||||
var newheight = (closest / mult)
|
|
||||||
var pxheight = divheight * 0.08;
|
|
||||||
if (newheight < pxheight) {
|
|
||||||
pxheight = newheight;
|
|
||||||
}
|
|
||||||
var height = (pxheight / divheight) * 100;
|
|
||||||
var width = (pxheight / divwidth) * 100;
|
|
||||||
pdiv.style.height = "calc(" + height + "% - 0.21vw)";
|
|
||||||
pdiv.style.width = "calc(" + width + "% - 0.21vw)";
|
|
||||||
pdiv.style.marginTop = "-" + (width / 2) + "%";
|
|
||||||
pdiv.style.marginLeft = "-" + (width / 2) + "%";
|
|
||||||
pdiv.style.fontSize = (height * 1.8) + "px";
|
|
||||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
|
||||||
window.addEventListener('beforeprint', function(pdiv, width, divwidth, event) {
|
|
||||||
pdiv.style.fontSize = "calc(calc(" + width + "px * min(640, " + divwidth + ")) * 0.0055)";
|
|
||||||
}.bind(null, pdiv, width, divwidth));
|
|
||||||
window.addEventListener('afterprint', function(pdiv, pxheight, event) {
|
|
||||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
|
||||||
}.bind(null, pdiv, pxheight));
|
|
||||||
cdiv.appendChild(pdiv);
|
|
||||||
addRow(fullTable, pin, cid);
|
|
||||||
}
|
|
||||||
hideEmptyColumns(sdiv.querySelector('.pinout-table'));
|
|
||||||
checkImagesLoaded();
|
|
||||||
}.bind(null, connector, sdiv, img));
|
|
||||||
if (typeof(connector.info) != "undefined") {
|
|
||||||
img.src = connector.info.image.file;
|
|
||||||
if (document.title.length == 0 && typeof(connector.info.title) != "undefined") {
|
|
||||||
document.title = connector.info.title;
|
|
||||||
}
|
|
||||||
if (typeof(connector.info.board_url) != "undefined" && document.title.length > 0) {
|
|
||||||
document.getElementById("board-link").innerText = document.title;
|
|
||||||
document.getElementById("board-link").href = connector.info.board_url;
|
|
||||||
}
|
|
||||||
if (typeof(connector.info.name) != "undefined") {
|
|
||||||
sdiv.querySelector(".connector-name").innerText = connector.info.name;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
img.parentElement.parentElement.style.height = 0;
|
|
||||||
for (var i = 0; i < connector.pins.length; i++) {
|
|
||||||
var pin = connector.pins[i];
|
|
||||||
if (!pin.pin) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var fullTable = sdiv.querySelector(".pinout-table").querySelector("tbody");
|
|
||||||
addRow(fullTable, pin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,289 +0,0 @@
|
||||||
.pin-marker {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: white;
|
|
||||||
border: 0.21vw black solid;
|
|
||||||
cursor: pointer;
|
|
||||||
color: black;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 200%;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="12v"],
|
|
||||||
[data-type*="12V"] {
|
|
||||||
border-color: yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="5v"],
|
|
||||||
[data-type*="5V"] {
|
|
||||||
border-color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="at"] {
|
|
||||||
border-color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="av"] {
|
|
||||||
border-color: brown;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="can"] {
|
|
||||||
border-color: blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="din"] {
|
|
||||||
border-color: lime;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="etb"] {
|
|
||||||
border-color: darkcyan;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="gnd"] {
|
|
||||||
border-color: darkgreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="gp_high"] {
|
|
||||||
border-color: aqua;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="gp_low"] {
|
|
||||||
border-color: aquamarine;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="gp_pp"] {
|
|
||||||
border-color: cyan;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="hall"] {
|
|
||||||
border-color: darkolivegreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="hl"] {
|
|
||||||
border-color: gold;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="hs"] {
|
|
||||||
border-color: indigo;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="ign"] {
|
|
||||||
border-color: magenta;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="inj"] {
|
|
||||||
border-color: maroon;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="ls"] {
|
|
||||||
border-color: lightgreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="mr"] {
|
|
||||||
border-color: firebrick;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="pgnd"] {
|
|
||||||
border-color: coral;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="sgnd"] {
|
|
||||||
border-color: olive;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="usb"] {
|
|
||||||
border-color: lightseagreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-type*="vr"] {
|
|
||||||
border-color: sienna;
|
|
||||||
}
|
|
||||||
|
|
||||||
#board-link {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pin-marker:hover {
|
|
||||||
transform: scale(2);
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pin-marker.highlight {
|
|
||||||
background-color: #fc935a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pin-marker.selected {
|
|
||||||
background-color: #f15a24;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.connector-container {
|
|
||||||
width: 100%;
|
|
||||||
overflow-x: scroll;
|
|
||||||
position: relative;
|
|
||||||
height: max(3in, 50vh);
|
|
||||||
}
|
|
||||||
|
|
||||||
.connector-div {
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
z-index: 0;
|
|
||||||
width: max-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
.connector-img {
|
|
||||||
height: 100%;
|
|
||||||
min-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
border-collapse: collapse;
|
|
||||||
width: clamp(100%, 100%, 1000px);
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1000px) {
|
|
||||||
table {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 1000px) {
|
|
||||||
table {
|
|
||||||
word-wrap: break-word;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
table tbody tr {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen {
|
|
||||||
td.pin-data {
|
|
||||||
border-color: black;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
table td, table th {
|
|
||||||
border: 1px solid black;
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table tr:nth-child(even){
|
|
||||||
background-color: #fc935a;
|
|
||||||
}
|
|
||||||
|
|
||||||
table tr:hover {
|
|
||||||
background-color: #f15a24;
|
|
||||||
}
|
|
||||||
|
|
||||||
table th {
|
|
||||||
padding-top: 12px;
|
|
||||||
padding-bottom: 12px;
|
|
||||||
text-align: left;
|
|
||||||
background-color: #f15a24;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-table {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
html {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.pin-data {
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
table td, table th {
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
table th {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
table tr:nth-child(even){
|
|
||||||
background-color: #230c00;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
table tr:hover {
|
|
||||||
background-color: #f15a24;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #71b7ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:visited {
|
|
||||||
color: #71b7ff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
.container {
|
|
||||||
height: 99vh;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.info-table, .ts-data, .ts-header, .type-data, .type-header, .color-data, .color-header, thead {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.connector-container {
|
|
||||||
flex: 0 1 auto;
|
|
||||||
height: unset;
|
|
||||||
min-height: 2in;
|
|
||||||
}
|
|
||||||
.connector-div {
|
|
||||||
max-width: 100%;
|
|
||||||
height: unset;
|
|
||||||
}
|
|
||||||
.connector-img {
|
|
||||||
max-width: 100% !important;
|
|
||||||
max-height: 3in;
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
th {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
td:not(.pin-data) {
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
td.pin-data {
|
|
||||||
border-width: 3px;
|
|
||||||
border-radius: 10px;
|
|
||||||
width: 10px;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
html, tr {
|
|
||||||
background-color: white !important;
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width: auto;
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
.table-wrapper {
|
|
||||||
column-count: 4;
|
|
||||||
}
|
|
||||||
table, tbody, tr {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#board-link {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue