mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-16 05:34:05 +02:00
don't calculate zero measurements into the trendline calculations
This commit is contained in:
@@ -484,22 +484,36 @@ public class ChartMeasurementView extends LineChart {
|
|||||||
|
|
||||||
private void addTrendLine(List<ILineDataSet> lineDataSets) {
|
private void addTrendLine(List<ILineDataSet> lineDataSets) {
|
||||||
|
|
||||||
List<ScaleMeasurement> scaleMeasurementsAsTrendlineList = getScaleMeasurementsAsTrendline(scaleMeasurementList);
|
|
||||||
|
|
||||||
for (MeasurementView view : measurementViews) {
|
for (MeasurementView view : measurementViews) {
|
||||||
if (view instanceof FloatMeasurementView && view.isVisible()) {
|
if (view instanceof FloatMeasurementView && view.isVisible()) {
|
||||||
final FloatMeasurementView measurementView = (FloatMeasurementView) view;
|
final FloatMeasurementView measurementView = (FloatMeasurementView) view;
|
||||||
|
|
||||||
final List<Entry> lineEntries = new ArrayList<>();
|
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++) {
|
for (int i=0; i<scaleMeasurementsAsTrendlineList.size(); i++) {
|
||||||
ScaleMeasurement measurement = scaleMeasurementsAsTrendlineList.get(i);
|
ScaleMeasurement measurement = scaleMeasurementsAsTrendlineList.get(i);
|
||||||
float value = measurementView.getMeasurementValue(measurement);
|
float value = measurementView.getMeasurementValue(measurement);
|
||||||
|
|
||||||
if (value == 0.0f) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Entry entry = new Entry();
|
Entry entry = new Entry();
|
||||||
entry.setX(convertDateToInt(measurement.getDateTime()));
|
entry.setX(convertDateToInt(measurement.getDateTime()));
|
||||||
entry.setY(value);
|
entry.setY(value);
|
||||||
|
Reference in New Issue
Block a user