Fix a crash when removing smart meters

This commit is contained in:
Michael Zanetti 2021-10-22 13:46:48 +02:00
parent d47f3cbf59
commit 1dfbfcaffc

View File

@ -245,19 +245,28 @@ MainViewBase {
XYPoint { x: xAxis.min.getTime(); y: 0 } XYPoint { x: xAxis.min.getTime(); y: 0 }
} }
property AreaSeries areaSeries: null
Component.onCompleted: { Component.onCompleted: {
var indexInModel = consumers.indexOf(consumer.thing) var indexInModel = consumers.indexOf(consumer.thing)
print("creating series", consumer.thing.name, index, indexInModel) print("creating series", consumer.thing.name, index, indexInModel)
seriesAdapter.ensureSamples(xAxis.min, xAxis.max) seriesAdapter.ensureSamples(xAxis.min, xAxis.max)
var areaSeries = chartView.createSeries(ChartView.SeriesTypeArea, consumer.thing.name, xAxis, yAxis) areaSeries = chartView.createSeries(ChartView.SeriesTypeArea, consumer.thing.name, xAxis, yAxis)
areaSeries.useOpenGL = true areaSeries.useOpenGL = true
areaSeries.upperSeries = upperSeries; areaSeries.upperSeries = upperSeries;
if (index > 0) { seriesAdapter.baseSeries = Qt.binding(function() {
areaSeries.lowerSeries = consumersRepeater.itemAt(index - 1).lineSeries if (index > 0) {
seriesAdapter.baseSeries = consumersRepeater.itemAt(index - 1).lineSeries return consumersRepeater.itemAt(index - 1).lineSeries
} else { } else {
areaSeries.lowerSeries = lowerSeries; return null;
} }
})
areaSeries.lowerSeries = Qt.binding(function() {
if (index > 0) {
return consumersRepeater.itemAt(index - 1).lineSeries
} else {
return lowerSeries;
}
})
var color = Style.accentColor var color = Style.accentColor
for (var j = 0; j <= indexInModel; j+=2) { for (var j = 0; j <= indexInModel; j+=2) {
@ -271,6 +280,9 @@ MainViewBase {
areaSeries.borderColor = color; areaSeries.borderColor = color;
areaSeries.borderWidth = 0; areaSeries.borderWidth = 0;
} }
Component.onDestruction: {
chartView.removeSeries(areaSeries)
}
} }
} }