Skip to content

Commit 2144629

Browse files
committed
feat: add meta tag to scenario page
1 parent 6189573 commit 2144629

51 files changed

Lines changed: 88 additions & 49 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

output/scenario.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<body class="timeline-body">
1111

1212
<div class="timeline-header">
13-
<a class="timeline-back" href="overview.html">&larr; Back to overview</a>
1413
<h1 id="timelineTitle">Run Timeline</h1>
1514
</div>
1615

@@ -19,6 +18,7 @@ <h1 id="timelineTitle">Run Timeline</h1>
1918
<input type="file" id="fileInput" accept=".json">
2019
<label for="fileInput"><span class="icon">&#128194;</span> <span id="fileLabel">Drop timeseries .json here</span></label>
2120
</div>
21+
<div class="cards" id="metaCards" style="margin-bottom:16px"></div>
2222
<div class="chart-card full-chart" style="margin-bottom:30px">
2323
<canvas id="chartTimeline" style="max-height:600px;height:60vh"></canvas>
2424
</div>

output/scenario.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,28 @@ function destroyTimeline() {
2626
if (timelineChart) { try { timelineChart.destroy(); } catch(e) {} timelineChart = null; }
2727
}
2828

29+
function renderMeta(data) {
30+
const fmt = v => { if (v == null || !isFinite(v)) return '-'; const r = Number(v).toFixed(2); return r === '-0.00' ? '0.00' : r; };
31+
const meta = data;
32+
document.getElementById('metaCards').innerHTML = `
33+
<div class="card"><div class="label">Scenario</div><div class="value" style="font-size:18px">${esc(meta.scenario_description || '')}</div></div>
34+
<div class="card"><div class="label">Region</div><div class="value">${esc(meta.region || '')}</div></div>
35+
<div class="card"><div class="label">Model</div><div class="value">${esc(meta.model || '')}</div></div>
36+
<div class="card"><div class="label">Years</div><div class="value">${meta.historical_years ? meta.historical_years.join(', ') : '-'}</div></div>
37+
<div class="card"><div class="label">Start</div><div class="value" style="font-size:22px">${meta.start_time ? new Date(meta.start_time).toLocaleDateString(undefined, {month:'short', day:'numeric'}) : '-'}</div></div>
38+
<div class="card"><div class="label">CO\u2082 Savings</div><div class="value ${meta.co2_savings_pct > 0.01 ? 'pos' : meta.co2_savings_pct < -0.01 ? 'neg' : 'zero'}" style="font-size:22px">${fmt(meta.co2_savings_pct)}%</div></div>
39+
<div class="card"><div class="label">Score</div><div class="value">${meta.score != null && isFinite(meta.score) ? Number(meta.score).toFixed(4) : '-'}</div></div>
40+
<div class="card"><div class="label">Pauses</div><div class="value">${meta.num_pauses != null ? meta.num_pauses : '-'}</div></div>
41+
<div class="card"><div class="label">Wall Time</div><div class="value">${fmt(meta.total_wall_time_h)}h</div></div>
42+
<div class="card"><div class="label">Overhead</div><div class="value">${fmt(meta.actual_overhead_pct)}%</div></div>
43+
<div class="card"><div class="label">Status</div><div class="value">${meta.completed ? '<span style="font-size:20px;font-weight:700;color:var(--accent2)">\u2713 Done</span>' : '<span style="font-size:14px;font-weight:600;color:var(--red)">' + esc(meta.stop_reason || 'Incomplete') + '</span>'}</div></div>
44+
`;
45+
}
46+
2947
function renderTimeline(data) {
3048
destroyTimeline();
3149
document.getElementById('dropZone').style.display = 'none';
50+
renderMeta(data);
3251
const n = data.carbon_intensity.length;
3352
if (n === 0) return;
3453

@@ -158,6 +177,12 @@ function renderTimeline(data) {
158177
});
159178
}
160179

180+
function esc(s) {
181+
const d = document.createElement('div');
182+
d.textContent = s;
183+
return d.innerHTML;
184+
}
185+
161186
// ── Load from JSON string (shared by fetch + file drop) ──────────
162187
function loadData(data) {
163188
if (!data || !data.carbon_intensity || !data.carbon_intensity.length) {

output/timeseries/0.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/1.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/10.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/11.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/12.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/13.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/14.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

output/timeseries/15.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)