From 437ec6c9b7938513f9fe4b5bb52f9ca586de8c40 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 23 Feb 2017 08:49:55 +0100 Subject: [PATCH] Minor improvements to the WIP week sleep chart --- .../charts/AbstractWeekChartFragment.java | 12 +++++++++-- .../charts/WeekSleepChartFragment.java | 21 +++++++++++++++++++ .../charts/WeekStepsChartFragment.java | 12 +++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java index 478437bd..4dec8275 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractWeekChartFragment.java @@ -18,6 +18,7 @@ import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.PieData; import com.github.mikephil.charting.data.PieDataSet; import com.github.mikephil.charting.data.PieEntry; +import com.github.mikephil.charting.formatter.IValueFormatter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,7 +91,8 @@ public abstract class AbstractWeekChartFragment extends AbstractChartFragment { } BarDataSet set = new BarDataSet(entries, ""); - set.setColor(akActivity.color); + set.setColor(getMainColor()); + set.setValueFormatter(getFormatter()); BarData barData = new BarData(set); barData.setValueTextColor(Color.GRAY); //prevent tearing other graph elements with the black text. Another approach would be to hide the values cmpletely with data.setDrawValues(false); @@ -112,7 +114,7 @@ public abstract class AbstractWeekChartFragment extends AbstractChartFragment { List colors = new ArrayList<>(); entries.add(new PieEntry(totalValue, "")); //we don't want labels on the pie chart - colors.add(akActivity.color); + colors.add(getMainColor()); if (totalValue < mTargetValue) { entries.add(new PieEntry((mTargetValue - totalValue))); //we don't want labels on the pie chart @@ -120,6 +122,7 @@ public abstract class AbstractWeekChartFragment extends AbstractChartFragment { } PieDataSet set = new PieDataSet(entries, ""); + set.setValueFormatter(getFormatter()); set.setColors(colors); data.setDataSet(set); //this hides the values (numeric) added to the set. These would be shown aside the strings set with addXValue above @@ -260,4 +263,9 @@ public abstract class AbstractWeekChartFragment extends AbstractChartFragment { abstract int getGoal(); abstract int getTotalForSamples(List activitySamples); + + abstract IValueFormatter getFormatter(); + + abstract Integer getMainColor(); } + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java index 4582d2b0..98cddf1f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekSleepChartFragment.java @@ -1,12 +1,18 @@ package nodomain.freeyourgadget.gadgetbridge.activities.charts; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.formatter.IValueFormatter; +import com.github.mikephil.charting.utils.ViewPortHandler; + import java.util.List; +import java.util.concurrent.TimeUnit; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmount; import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmounts; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; +import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils; public class WeekSleepChartFragment extends AbstractWeekChartFragment { @Override @@ -31,4 +37,19 @@ public class WeekSleepChartFragment extends AbstractWeekChartFragment { } return (int) (totalSeconds / 60); } + + @Override + IValueFormatter getFormatter() { + return new IValueFormatter() { + @Override + public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { + return DateTimeUtils.formatDurationHoursMinutes((long) value, TimeUnit.MINUTES); + } + }; + } + + @Override + Integer getMainColor() { + return akLightSleep.color; + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java index d4dd6ce8..97a1a9c9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/WeekStepsChartFragment.java @@ -1,5 +1,7 @@ package nodomain.freeyourgadget.gadgetbridge.activities.charts; +import com.github.mikephil.charting.formatter.IValueFormatter; + import java.util.List; import nodomain.freeyourgadget.gadgetbridge.R; @@ -27,4 +29,14 @@ public class WeekStepsChartFragment extends AbstractWeekChartFragment { ActivityAnalysis analysis = new ActivityAnalysis(); return analysis.calculateTotalSteps(activitySamples); } + + @Override + IValueFormatter getFormatter() { + return null; + } + + @Override + Integer getMainColor() { + return akActivity.color; + } }