Skip to content

Commit 695c19b

Browse files
committed
Refine OFDMA Pre-EQ chart titles and order
- move Estimated Frequency Response chart above Pre-EQ Magnitude Response - remove from Chan Est wording from the Estimated Frequency Response title - remove Overlay Current vs Last Update wording from the Pre-EQ Magnitude Response title - regenerate visual preview and docs page for Ofdma-PreEq-GetCapture - 2026-02-28 10:43:19
1 parent 3d575f9 commit 695c19b

20 files changed

Lines changed: 661946 additions & 98598 deletions

File tree

CODING_AGENTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979
- Warning = yellow
8080
- OK = green
8181
- NOK = red
82+
- In dark mode, all chart x/y axis labels, axis titles, and tick text must be white.
83+
- In light mode, all chart x/y axis labels, axis titles, and tick text must be dark (near-black/navy) for contrast.
8284
- Regression / trend / fitted reference lines must use a high-contrast color distinct from waveform traces (prefer dashed).
8385
- Default regression/reference line color: white.
8486
- If white reduces readability against the chart/waveform palette, use a dark red contrast line (for example `#c62828`) or another clearly contrasting color and document the choice in the visual remarks.

docs/visual-previews/PyPNM-CMTS/ServingGroup/Downstream/ChannelEstCoeff/Results/basic.html

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

docs/visual-previews/PyPNM-CMTS/ServingGroup/Downstream/FecSummary/Results/basic.html

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

docs/visual-previews/PyPNM-CMTS/ServingGroup/Downstream/RxMER/Results/basic.html

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

docs/visual-previews/PyPNM-CMTS/ServingGroup/Upstream/OFDMA/PreEqualization/Results/basic.html

Lines changed: 163 additions & 0 deletions
Large diffs are not rendered by default.

docs/visual-previews/SingleCapture/Ofdma-PreEq-GetCapture.html

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

docs/visual/PyPNM-CMTS/ServingGroup/Downstream/ChannelEstCoeff/Results/basic.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,12 @@ const template = `
318318
const root = document.getElementById('channelsRoot');
319319
if (!root || !Array.isArray(serviceGroups)) return;
320320
const palette=['#3b82f6','#16a34a','#ef4444','#f59e0b','#06b6d4','#a855f7','#eab308','#f97316','#22c55e','#ec4899'];
321+
const darkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
322+
const axisText = darkMode ? '#eaf0ff' : '#132038';
323+
const gridColor = darkMode ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.08)';
321324
function createLineChart(canvas,datasets,titleText,xTitle,yTitle){
322325
if(!canvas||!window.Chart||!datasets||!datasets.length) return null;
323-
return new Chart(canvas,{type:'line',data:{datasets},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'nearest',intersect:false},plugins:{legend:{display:false},title:titleText?{display:true,text:titleText}:{display:false},tooltip:{callbacks:{title:(items)=>items.length?(xTitle==='MHz'?(String(Math.round(items[0].parsed.x))+' MHz'):('Index '+items[0].parsed.x)):'' ,label:(ctx)=>(String(ctx.dataset.label)+': '+ctx.parsed.y.toFixed(2))}}},scales:{x:{type:'linear',title:{display:true,text:xTitle},ticks:{callback:(v)=>xTitle==='MHz'?String(Math.round(v)):String(v)}},y:{title:{display:true,text:yTitle}}}}});
326+
return new Chart(canvas,{type:'line',data:{datasets},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'nearest',intersect:false},plugins:{legend:{display:false},title:titleText?{display:true,text:titleText,color:axisText}:{display:false},tooltip:{callbacks:{title:(items)=>items.length?(xTitle==='MHz'?(String(Math.round(items[0].parsed.x))+' MHz'):('Index '+items[0].parsed.x)):'' ,label:(ctx)=>(String(ctx.dataset.label)+': '+ctx.parsed.y.toFixed(2))}}},scales:{x:{type:'linear',title:{display:true,text:xTitle,color:axisText},ticks:{callback:(v)=>xTitle==='MHz'?String(Math.round(v)):String(v),color:axisText},grid:{color:gridColor}},y:{title:{display:true,text:yTitle,color:axisText},ticks:{color:axisText},grid:{color:gridColor}}}}});
324327
}
325328
serviceGroups.forEach((sg)=>{
326329
const sgCard=document.createElement('section'); sgCard.className='channel-card';

docs/visual/PyPNM-CMTS/ServingGroup/Downstream/FecSummary/Results/basic.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,9 @@ const template = `
306306
const root = document.getElementById('channelsRoot');
307307
if (!root || !Array.isArray(serviceGroups)) return;
308308
const palette=['#3b82f6','#16a34a','#ef4444','#f59e0b','#06b6d4','#a855f7','#eab308','#f97316','#22c55e','#ec4899','#0ea5e9','#84cc16'];
309+
const darkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
310+
const axisText = darkMode ? '#eaf0ff' : '#132038';
311+
const gridColor = darkMode ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.08)';
309312
function fmtCompactLocal(v){
310313
const x = Number(v);
311314
if (!Number.isFinite(x)) return 'N/A';
@@ -317,7 +320,7 @@ const template = `
317320

318321
function createLineChart(canvas,datasets,titleText,xTitle,yTitle){
319322
if(!canvas||!window.Chart||!datasets||!datasets.length) return null;
320-
return new Chart(canvas,{type:'line',data:{datasets},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'nearest',intersect:false},plugins:{legend:{display:false},title:titleText?{display:true,text:titleText}:{display:false},tooltip:{callbacks:{title:(items)=>items.length?('Time '+new Date(items[0].parsed.x*1000).toISOString().replace('T',' ').replace('.000Z',' UTC')):'',label:(ctx)=>(String(ctx.dataset.label)+': '+Math.round(ctx.parsed.y))}}},scales:{x:{type:'linear',title:{display:true,text:xTitle},ticks:{callback:(v)=>{const d=new Date(v*1000);return isNaN(d.getTime())?String(v):d.toISOString().slice(11,19);}}},y:{title:{display:true,text:yTitle},beginAtZero:true}}}});
323+
return new Chart(canvas,{type:'line',data:{datasets},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'nearest',intersect:false},plugins:{legend:{display:false},title:titleText?{display:true,text:titleText,color:axisText}:{display:false},tooltip:{callbacks:{title:(items)=>items.length?('Time '+new Date(items[0].parsed.x*1000).toISOString().replace('T',' ').replace('.000Z',' UTC')):'',label:(ctx)=>(String(ctx.dataset.label)+': '+Math.round(ctx.parsed.y))}}},scales:{x:{type:'linear',title:{display:true,text:xTitle,color:axisText},ticks:{callback:(v)=>{const d=new Date(v*1000);return isNaN(d.getTime())?String(v):d.toISOString().slice(11,19);},color:axisText},grid:{color:gridColor}},y:{title:{display:true,text:yTitle,color:axisText},ticks:{color:axisText},grid:{color:gridColor},beginAtZero:true}}}});
321324
}
322325
function setVisibleYRange(chart){
323326
if(!chart || !chart.data || !Array.isArray(chart.data.datasets)) return;

docs/visual/PyPNM-CMTS/ServingGroup/Downstream/RxMER/Results/basic.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,9 @@ const template = `
376376
if (!root || !Array.isArray(serviceGroups)) return;
377377

378378
const palette = ['#3b82f6', '#16a34a', '#ef4444', '#f59e0b', '#06b6d4', '#a855f7', '#eab308', '#f97316', '#22c55e', '#ec4899'];
379+
const darkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
380+
const axisText = darkMode ? '#eaf0ff' : '#132038';
381+
const gridColor = darkMode ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.08)';
379382

380383
function createLineChart(canvas, datasets, titleText) {
381384
if (!canvas || !window.Chart || !datasets || !datasets.length) return;
@@ -388,7 +391,7 @@ const template = `
388391
interaction: { mode: 'nearest', intersect: false },
389392
plugins: {
390393
legend: { display: false },
391-
title: titleText ? { display: true, text: titleText } : { display: false },
394+
title: titleText ? { display: true, text: titleText, color: axisText } : { display: false },
392395
tooltip: {
393396
callbacks: {
394397
title: (items) => items.length ? (String(Math.round(items[0].parsed.x)) + ' MHz') : '',
@@ -399,11 +402,14 @@ const template = `
399402
scales: {
400403
x: {
401404
type: 'linear',
402-
title: { display: true, text: 'MHz' },
403-
ticks: { callback: (v) => String(Math.round(v)) }
405+
title: { display: true, text: 'MHz', color: axisText },
406+
ticks: { callback: (v) => String(Math.round(v)), color: axisText },
407+
grid: { color: gridColor }
404408
},
405409
y: {
406-
title: { display: true, text: 'RxMER (dB)' }
410+
title: { display: true, text: 'RxMER (dB)', color: axisText },
411+
ticks: { color: axisText },
412+
grid: { color: gridColor }
407413
}
408414
}
409415
}

0 commit comments

Comments
 (0)