feat(tabs): update all tab views, dialogs, and session controller
This commit is contained in:
@@ -27,18 +27,20 @@ Item {
|
||||
Label {
|
||||
text: "Line Chart"
|
||||
color: Theme.headingColor
|
||||
font.pixelSize: 13
|
||||
font.pixelSize: Theme.fontSm
|
||||
font.bold: true
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
Item { Layout.fillWidth: true }
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// Refresh button — pulls data from deviceController
|
||||
Button {
|
||||
id: refreshBtn
|
||||
text: "REFRESH"
|
||||
font.pixelSize: 10
|
||||
font.pixelSize: Theme.fontXs
|
||||
font.weight: Font.Medium
|
||||
implicitHeight: 26
|
||||
implicitWidth: 72
|
||||
@@ -68,7 +70,7 @@ Item {
|
||||
Label {
|
||||
text: "Source:"
|
||||
color: Theme.bodyColor
|
||||
font.pixelSize: 10
|
||||
font.pixelSize: Theme.fontXs
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
|
||||
@@ -77,7 +79,7 @@ Item {
|
||||
model: ["Parsed Data", "Live Trend"]
|
||||
currentIndex: 0
|
||||
implicitHeight: 26
|
||||
font.pixelSize: 11
|
||||
font.pixelSize: Theme.fontXs
|
||||
background: Rectangle {
|
||||
color: Theme.fieldBackground
|
||||
border.color: Theme.fieldBorder
|
||||
@@ -95,13 +97,15 @@ Item {
|
||||
onCurrentIndexChanged: reloadData()
|
||||
}
|
||||
|
||||
Item { Layout.fillWidth: true }
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Label {
|
||||
id: statusLabel
|
||||
text: "Ready"
|
||||
color: Theme.bodyColor
|
||||
font.pixelSize: 10
|
||||
font.pixelSize: Theme.fontXs
|
||||
font.italic: true
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
}
|
||||
@@ -125,8 +129,7 @@ Item {
|
||||
gridColor: Theme.softBorder
|
||||
axisColor: Theme.bodyColor
|
||||
textColor: Theme.headingColor
|
||||
seriesColors: [Theme.sensorLow, Theme.sensorHigh, Theme.sensorInRange,
|
||||
"#FFA726", "#AB47BC", "#00BCD4"]
|
||||
seriesColors: [Theme.sensorLow, Theme.sensorHigh, Theme.sensorInRange, "#FFA726", "#AB47BC", "#00BCD4"]
|
||||
showLegend: true
|
||||
}
|
||||
}
|
||||
@@ -137,44 +140,44 @@ Item {
|
||||
function reloadData() {
|
||||
if (sourceSelector.currentIndex === 0) {
|
||||
// Parsed data from DeviceController
|
||||
loadParsedData()
|
||||
loadParsedData();
|
||||
} else {
|
||||
// Live trend from SessionController
|
||||
loadLiveTrend()
|
||||
loadLiveTrend();
|
||||
}
|
||||
}
|
||||
|
||||
function loadParsedData() {
|
||||
statusLabel.text = "Loading..."
|
||||
var result = deviceController.getChartData()
|
||||
statusLabel.text = "Loading...";
|
||||
var result = deviceController.getChartData();
|
||||
if (!result || !result.success) {
|
||||
graph.seriesData = []
|
||||
graph.sensorNames = []
|
||||
graph.title = "Sensor Temperature Over Time"
|
||||
statusLabel.text = "No data — read a wafer first"
|
||||
return
|
||||
graph.seriesData = [];
|
||||
graph.sensorNames = [];
|
||||
graph.title = "Sensor Temperature Over Time";
|
||||
statusLabel.text = "No data — read a wafer first";
|
||||
return;
|
||||
}
|
||||
|
||||
graph.seriesData = result.series || []
|
||||
graph.sensorNames = result.sensor_names || []
|
||||
graph.title = "Sensor Temperature Over Time"
|
||||
statusLabel.text = (result.series ? result.series.length : 0) + " sensors loaded"
|
||||
graph.seriesData = result.series || [];
|
||||
graph.sensorNames = result.sensor_names || [];
|
||||
graph.title = "Sensor Temperature Over Time";
|
||||
statusLabel.text = (result.series ? result.series.length : 0) + " sensors loaded";
|
||||
}
|
||||
|
||||
function loadLiveTrend() {
|
||||
// Live trend: connects to streamController.trendData
|
||||
// The trend data comes as a JSON array of per-frame averages
|
||||
statusLabel.text = "Connecting to live trend..."
|
||||
statusLabel.text = "Connecting to live trend...";
|
||||
// We need at least one data point
|
||||
if (streamController.stats && streamController.stats.avg !== undefined) {
|
||||
// Build a single-series graph from the trend buffer
|
||||
// For now show a placeholder — the trendData signal handles updates
|
||||
graph.title = "Live Average Temperature"
|
||||
graph.yLabel = "Avg Temperature (°C)"
|
||||
graph.xLabel = "Time (s)"
|
||||
statusLabel.text = "Live trend — waiting for data..."
|
||||
graph.title = "Live Average Temperature";
|
||||
graph.yLabel = "Avg Temperature (°C)";
|
||||
graph.xLabel = "Time (s)";
|
||||
statusLabel.text = "Live trend — waiting for data...";
|
||||
} else {
|
||||
statusLabel.text = "No live data — start a stream on the Wafer Map tab"
|
||||
statusLabel.text = "No live data — start a stream on the Wafer Map tab";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +187,7 @@ Item {
|
||||
target: deviceController
|
||||
function onParsedDataReady(result) {
|
||||
if (sourceSelector.currentIndex === 0) {
|
||||
root.reloadData()
|
||||
root.reloadData();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -194,14 +197,14 @@ Item {
|
||||
function onTrendData(avgsJson) {
|
||||
if (sourceSelector.currentIndex === 1) {
|
||||
try {
|
||||
var avgs = JSON.parse(avgsJson)
|
||||
var avgs = JSON.parse(avgsJson);
|
||||
if (avgs && avgs.length > 0) {
|
||||
graph.seriesData = [avgs]
|
||||
graph.sensorNames = ["Average"]
|
||||
graph.title = "Live Average Temperature"
|
||||
graph.yLabel = "Avg Temperature (°C)"
|
||||
graph.xLabel = "Frame"
|
||||
statusLabel.text = "Live: " + avgs.length + " data points"
|
||||
graph.seriesData = [avgs];
|
||||
graph.sensorNames = ["Average"];
|
||||
graph.title = "Live Average Temperature";
|
||||
graph.yLabel = "Avg Temperature (°C)";
|
||||
graph.xLabel = "Frame";
|
||||
statusLabel.text = "Live: " + avgs.length + " data points";
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore parse errors
|
||||
@@ -213,7 +216,7 @@ Item {
|
||||
// On startup, try to load parsed data if available
|
||||
Component.onCompleted: {
|
||||
if (deviceController.dataRowCount > 0) {
|
||||
reloadData()
|
||||
reloadData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user