9e3bec9031
- Parse F1 debug data via family-independent temp formula (bits 4-14 scaled by 2**(i-8), sign at bit 0) - Save sensor+debug temps side-by-side to debug_info.csv - Wire READ DEBUG button in StatusActionsPanel - Rename ReplayChart → RunChart; move into GraphTab - Extract PanelBox/SectionTitle/PanelSlider in ReadoutPanel to cut ~300 lines of duplicated styling - Add rightRailWidth token to Theme for consistent rail sizing - Wrap ReadoutPanel in ScrollView so Thresholds card stays reachable when E-C delta rows appear
50 lines
1.4 KiB
QML
50 lines
1.4 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import ISC
|
|
import ISC.Tabs.components
|
|
|
|
// ===== Graph Tab =====
|
|
// Whole-run multi-sensor line chart (C# parity: tabGraph/chartData). Static
|
|
// snapshot recomputed whenever a file is loaded — not live-updating during
|
|
// a stream. RunChart adds wheel zoom, drag pan, and a visible-range
|
|
// min/max/avg strip. See specs/plans/2026-07-10-graph-tab.md and
|
|
// docs/adr/0003-pyqtgraph-for-multi-sensor-charts.md.
|
|
Item {
|
|
id: root
|
|
anchors.fill: parent
|
|
|
|
function refresh() {
|
|
if (!streamController.loadedFile) {
|
|
chart.seriesData = []
|
|
chart.sensorNames = []
|
|
return
|
|
}
|
|
chart.sensorNames = streamController.graphSensorNames
|
|
? streamController.graphSensorNames.split(",") : []
|
|
chart.seriesData = JSON.parse(streamController.graphSeriesJson || "[]")
|
|
}
|
|
|
|
Connections {
|
|
target: streamController
|
|
function onLoadedFileChanged() { root.refresh() }
|
|
}
|
|
|
|
Component.onCompleted: root.refresh()
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
anchors.margins: Theme.panelPadding
|
|
color: Theme.cardBackground
|
|
border.color: Theme.cardBorder
|
|
border.width: 1
|
|
radius: Theme.radiusMd
|
|
|
|
RunChart {
|
|
id: chart
|
|
anchors.fill: parent
|
|
anchors.margins: 8
|
|
title: "Sensor Temperature Over Time"
|
|
}
|
|
}
|
|
}
|