Starting assembly of V1.3: iBom generated
This commit is contained in:
1 parent
7abd3392db
commit
ea6a8f200d
1 file changed
+83
-14
@@ -801,6 +801,17 @@ a {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<script type="text/javascript" >
|
||||
@@ -875,11 +886,11 @@ var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b)
|
||||
///////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////
|
||||
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "fields": ["Value", "MPN", "SPN"]}
|
||||
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "fields": ["Value", "MPN"]}
|
||||
///////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////
|
||||
var pcbdata = JSON.parse(LZString.decompressFromBase64("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 truncated
|
||||
var pcbdata = JSON.parse(LZString.decompressFromBase64("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 truncated
|
||||
///////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////
|
||||
@@ -951,36 +962,55 @@ function focusInputField(input) {
|
||||
input.select();
|
||||
}
|
||||
|
||||
function copyToClipboard() {
|
||||
function saveBomTable(output) {
|
||||
var text = '';
|
||||
for (var node of bomhead.childNodes[0].childNodes) {
|
||||
if (node.firstChild) {
|
||||
text = text + node.firstChild.nodeValue;
|
||||
text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
|
||||
}
|
||||
if (node != bomhead.childNodes[0].lastChild) {
|
||||
text += '\t';
|
||||
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) {
|
||||
text = text + '✓';
|
||||
val += '✓';
|
||||
}
|
||||
} else if (node.nodeName == "MARK") {
|
||||
text = text + node.firstChild.nodeValue;
|
||||
val += node.firstChild.nodeValue;
|
||||
} else {
|
||||
text = text + node.nodeValue;
|
||||
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 += '\t';
|
||||
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;
|
||||
@@ -999,6 +1029,12 @@ function copyToClipboard() {
|
||||
|
||||
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++) {
|
||||
@@ -1501,6 +1537,11 @@ function drawText(ctx, text, color) {
|
||||
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;
|
||||
@@ -1751,7 +1792,7 @@ function getCachedPadPath(pad) {
|
||||
function drawPad(ctx, pad, color, outline) {
|
||||
ctx.save();
|
||||
ctx.translate(...pad.pos);
|
||||
ctx.rotate(deg2rad(pad.angle));
|
||||
ctx.rotate(-deg2rad(pad.angle));
|
||||
if (pad.offset) {
|
||||
ctx.translate(...pad.offset);
|
||||
}
|
||||
@@ -1770,7 +1811,7 @@ function drawPadHole(ctx, pad, padHoleColor) {
|
||||
if (pad.type != "th") return;
|
||||
ctx.save();
|
||||
ctx.translate(...pad.pos);
|
||||
ctx.rotate(deg2rad(pad.angle));
|
||||
ctx.rotate(-deg2rad(pad.angle));
|
||||
ctx.fillStyle = padHoleColor;
|
||||
if (pad.drillshape == "oblong") {
|
||||
ctx.fill(getOblongPath(pad.drillsize));
|
||||
@@ -2017,7 +2058,6 @@ function drawBackground(canvasdict, clear = true) {
|
||||
function prepareCanvas(canvas, flip, transform) {
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
var fontsize = 1.55;
|
||||
ctx.scale(transform.zoom, transform.zoom);
|
||||
ctx.translate(transform.panx, transform.pany);
|
||||
if (flip) {
|
||||
@@ -2174,7 +2214,7 @@ function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d)
|
||||
|
||||
function pointWithinPad(x, y, pad) {
|
||||
var v = [x - pad.pos[0], y - pad.pos[1]];
|
||||
v = rotateVector(v, -pad.angle);
|
||||
v = rotateVector(v, pad.angle);
|
||||
if (pad.offset) {
|
||||
v[0] -= pad.offset[0];
|
||||
v[1] -= pad.offset[1];
|
||||
@@ -3979,6 +4019,10 @@ function updateCheckboxStats(checkbox) {
|
||||
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":
|
||||
@@ -3999,6 +4043,23 @@ document.onkeydown = function (e) {
|
||||
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;
|
||||
}
|
||||
@@ -4166,6 +4227,7 @@ window.matchMedia("print").addListener(resizeAll);
|
||||
<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>
|
||||
@@ -4273,6 +4335,13 @@ window.matchMedia("print").addListener(resizeAll);
|
||||
<button class="savebtn" onclick="loadSettings()">Import</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>
|
||||
@@ -4308,7 +4377,7 @@ window.matchMedia("print").addListener(resizeAll);
|
||||
oninput="updateFilter(this.value)">
|
||||
<div class="button-container hideonprint" style="float: left; margin: 0;">
|
||||
<button id="copy" title="Copy bom table to clipboard"
|
||||
onclick="copyToClipboard()"></button>
|
||||
onclick="saveBomTable('clipboard')"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dbg"></div>
|
||||
|
||||
Reference in new issue
Block a user