1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-15 13:14:22 +02:00

don't calculate zero measurements into the trendline calculations

This commit is contained in:
oliexdev
2020-12-11 07:31:07 +01:00
parent 3edb9e6a78
commit 3dbbbec3b2

View File

@@ -484,22 +484,36 @@ public class ChartMeasurementView extends LineChart {
private void addTrendLine(List<ILineDataSet> lineDataSets) {
List<ScaleMeasurement> scaleMeasurementsAsTrendlineList = getScaleMeasurementsAsTrendline(scaleMeasurementList);
for (MeasurementView view : measurementViews) {
if (view instanceof FloatMeasurementView && view.isVisible()) {
final FloatMeasurementView measurementView = (FloatMeasurementView) view;
final List<Entry> lineEntries = new ArrayList<>();
ArrayList<ScaleMeasurement> nonZeroScaleMeasurementList = new ArrayList<>();
// filter first all zero measurements out, so that the follow-up trendline calculations are not based on them
for (int i=0; i<scaleMeasurementList.size(); i++) {
ScaleMeasurement measurement = scaleMeasurementList.get(i);
float value = measurementView.getMeasurementValue(measurement);
if (value != 0.0f) {
nonZeroScaleMeasurementList.add(measurement);
}
}
// check if we have some data left otherwise skip the measurement
if (nonZeroScaleMeasurementList.isEmpty()) {
continue;
}
// calculate the trendline from the non-zero scale measurement list
List<ScaleMeasurement> scaleMeasurementsAsTrendlineList = getScaleMeasurementsAsTrendline(nonZeroScaleMeasurementList);
for (int i=0; i<scaleMeasurementsAsTrendlineList.size(); i++) {
ScaleMeasurement measurement = scaleMeasurementsAsTrendlineList.get(i);
float value = measurementView.getMeasurementValue(measurement);
if (value == 0.0f) {
continue;
}
Entry entry = new Entry();
entry.setX(convertDateToInt(measurement.getDateTime()));
entry.setY(value);