widget-data-graph reads trackAgainstAverage without checking whether the average series exists at all. With a stored showAverageData = false and trackAgainstAverage = true, the widget renders two ways that contradict what is on screen:
applyTitleAndAnnotationValues (widget-data-graph.component.ts:839) puts point.data.sma in the widget's big reading. The rolling stats are computed for every point regardless of the toggle, so the number is smoothed while no smoothed line is drawn.
createDatasets gives the Value dataset borderWidth: 0 and a fill, because it expects the Average dataset to supply the line. That dataset is never created, so the graph shows a shaded band and no line.
The same unguarded read appears in applyDynamicTrackAverageStyling and in the theme-colour paths around lines 636-762 — roughly ten call sites. The fix is to derive the effective flag once (trackAgainstAverage && showAverageData) and use it everywhere, with a spec for the mismatched pair.
The pair is not in the seed config, and after #600 the settings dialog resets it on open, so new configs cannot produce it. Existing stored dashboards can still carry it.
widget-data-graphreadstrackAgainstAveragewithout checking whether the average series exists at all. With a storedshowAverageData = falseandtrackAgainstAverage = true, the widget renders two ways that contradict what is on screen:applyTitleAndAnnotationValues(widget-data-graph.component.ts:839) putspoint.data.smain the widget's big reading. The rolling stats are computed for every point regardless of the toggle, so the number is smoothed while no smoothed line is drawn.createDatasetsgives the Value datasetborderWidth: 0and a fill, because it expects the Average dataset to supply the line. That dataset is never created, so the graph shows a shaded band and no line.The same unguarded read appears in
applyDynamicTrackAverageStylingand in the theme-colour paths around lines 636-762 — roughly ten call sites. The fix is to derive the effective flag once (trackAgainstAverage && showAverageData) and use it everywhere, with a spec for the mismatched pair.The pair is not in the seed config, and after #600 the settings dialog resets it on open, so new configs cannot produce it. Existing stored dashboards can still carry it.