backuplano/suca2.js
2024-12-22 10:56:26 +01:00

98 lines
2.7 KiB
JavaScript

import { parse } from 'https://cdn.jsdelivr.net/npm/csv-parse@5.5.6/+esm'
const rows = "abcdefghilmopqrst".split("")
const parse_csv = text => {
return new Promise((resolve, reject) => {
parse(text, (err, data) => {
if (err) reject(err)
else resolve(data)
})
})
}
const div = (className, innerText) => {
const e = document.createElement("div")
e.className = className
if (innerText) e.innerText = innerText
return e
}
async function on_content_loaded() {
const all_data = await Promise.all(
rows.map(
row => fetch(`data/row_${row}.csv`)
.then(x => x.text())
.then(parse_csv)
)
)
// const table = document.createElement("table")
// for (const row in all_data) {
// const row_data = all_data[row]
// const row_letter = rows[row]
// for (const element in row_data) {
// const tr = document.createElement("tr")
// for (const value in row_data[element]) {
// const td = document.createElement("td")
// td.innerText = row_data[element][value]
// tr.appendChild(td)
// }
// table.appendChild(tr)
// }
// }
// document.body.appendChild(table)
const cards = all_data.map((row_data, i) => {
return {
"name": `Row ${rows[i].toUpperCase()}`,
"cards": row_data.slice(1).map((card_data, i) => {
return {
"code": card_data[0],
"name": card_data[2],
"sigs": card_data.slice(3)
}
})
}
})
let backplane = div("backplane")
cards.map(row_data => {
let row = div("row")
let name = div("name", row_data.name)
row.appendChild(name)
let cards = div("cards")
row.appendChild(cards)
row_data.cards.map(card => {
let card_div = div("card")
card_div.appendChild(div("code", card.code))
card_div.appendChild(div("name", card.name))
let sigs = div("sigs")
card.sigs
.map((i, sig) => {
const s = sig || "\u00A0"
return div("sig", `${i} ${s}`)
})
.forEach(sig => sigs.appendChild(sig))
card_div.appendChild(sigs)
row.appendChild(card_div)
return card_div
})
.forEach(card_div => cards.appendChild(card_div))
return row
})
.forEach(row => backplane.appendChild(row))
document.body.appendChild(backplane)
}
document.addEventListener("DOMContentLoaded", on_content_loaded)