init: server build project template
This commit is contained in:
+24
@@ -0,0 +1,24 @@
|
||||
const fmt = n => n.toLocaleString('ru-RU') + ' ₽';
|
||||
fetch('data.json').then(r => r.json()).then(d => {
|
||||
document.getElementById('total').textContent = fmt(d.total);
|
||||
|
||||
new Chart(document.getElementById('chNodes'), {
|
||||
type: 'pie',
|
||||
data: { labels: Object.keys(d.per_node), datasets: [{ data: Object.values(d.per_node) }] },
|
||||
options: { plugins: { title: { display: true, text: 'Бюджет по узлам' } } }
|
||||
});
|
||||
new Chart(document.getElementById('chCats'), {
|
||||
type: 'doughnut',
|
||||
data: { labels: Object.keys(d.per_cat), datasets: [{ data: Object.values(d.per_cat) }] },
|
||||
options: { plugins: { title: { display: true, text: 'Бюджет по категориям' } } }
|
||||
});
|
||||
|
||||
const tb = document.querySelector('#tbl tbody');
|
||||
d.rows.forEach(r => {
|
||||
const links = r.links.map(l => `<a href="${l.url}" target="_blank">${l.title}</a>`).join(' · ');
|
||||
tb.insertAdjacentHTML('beforeend',
|
||||
`<tr><td>${r.node}</td><td>${r.cat}</td><td>${r.name}</td><td>${r.qty}</td>
|
||||
<td class="num">${r.price.toLocaleString('ru-RU')}</td>
|
||||
<td class="num">${r.sub.toLocaleString('ru-RU')}</td><td>${links}</td></tr>`);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
<!doctype html>
|
||||
<html lang="ru"><head>
|
||||
<meta charset="utf-8"><title>Server Build — Dashboard</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<style>
|
||||
body{font:14px/1.5 system-ui,sans-serif;max-width:1100px;margin:2rem auto;padding:0 1rem;color:#222}
|
||||
h1{margin-bottom:.2rem} .total{font-size:2rem;font-weight:600;color:#1f7a1f}
|
||||
.grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:1.5rem 0}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th,td{padding:.45rem .6rem;border-bottom:1px solid #eee;text-align:left}
|
||||
th{background:#f6f8fa} td.num{text-align:right;font-variant-numeric:tabular-nums}
|
||||
a{color:#0969da;text-decoration:none} a:hover{text-decoration:underline}
|
||||
</style></head><body>
|
||||
<h1>Server Build — Dashboard</h1>
|
||||
<div class="total" id="total">— ₽</div>
|
||||
<div class="grid">
|
||||
<canvas id="chNodes"></canvas>
|
||||
<canvas id="chCats"></canvas>
|
||||
</div>
|
||||
<table id="tbl"><thead><tr>
|
||||
<th>Узел</th><th>Категория</th><th>Наименование</th><th>Кол-во</th>
|
||||
<th class="num">Цена</th><th class="num">Сумма</th><th>Ссылки</th>
|
||||
</tr></thead><tbody></tbody></table>
|
||||
<script src="app.js"></script>
|
||||
</body></html>
|
||||
Reference in New Issue
Block a user