mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-28 11:35:48 +01:00
Show single day in bottom charts label
This commit is contained in:
parent
694227a3b1
commit
5272d017ac
@ -141,6 +141,11 @@ public abstract class AbstractActivityChartFragment<D extends ChartsData> extend
|
||||
akNotWorn = new ActivityConfig(ActivityKind.NOT_WORN, getString(R.string.abstract_chart_fragment_kind_not_worn), AK_NOT_WORN_COLOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSingleDay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected Integer getColorFor(ActivityKind activityKind) {
|
||||
switch (activityKind) {
|
||||
case DEEP_SLEEP:
|
||||
|
@ -154,6 +154,7 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
protected void onMadeVisibleInActivity() {
|
||||
super.onMadeVisibleInActivity();
|
||||
showDateBar(true);
|
||||
updateDateInfo(getStartDate(), getEndDate());
|
||||
if (mChartDirty) {
|
||||
refresh();
|
||||
}
|
||||
@ -187,6 +188,14 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
return toTimestamp(getStartDate());
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this chart shows data only for a single day. The day is expected to match
|
||||
* the end timestamp.
|
||||
*/
|
||||
protected boolean isSingleDay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected int toTimestamp(Date date) {
|
||||
return (int) ((date.getTime() / 1000));
|
||||
}
|
||||
@ -236,6 +245,8 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
if (!shiftDates(startDate, endDate, offset)) {
|
||||
return;
|
||||
}
|
||||
|
||||
updateDateInfo(getStartDate(), getEndDate());
|
||||
}
|
||||
refreshIfVisible();
|
||||
}
|
||||
@ -316,7 +327,6 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
if (chartsHost != null) {
|
||||
if (chartsHost.getDevice() != null) {
|
||||
mChartDirty = false;
|
||||
updateDateInfo(getStartDate(), getEndDate());
|
||||
if (refreshTask != null && refreshTask.getStatus() != AsyncTask.Status.FINISHED) {
|
||||
refreshTask.cancel(true);
|
||||
}
|
||||
@ -383,8 +393,8 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
|
||||
private void updateDateInfo(final Date from, final Date to) {
|
||||
int dateFlags = DateUtils.FORMAT_SHOW_WEEKDAY;
|
||||
if (from.equals(to)) {
|
||||
getChartsHost().setDateInfo(DateTimeUtils.formatDate(from, dateFlags));
|
||||
if (isSingleDay() || from.equals(to)) {
|
||||
getChartsHost().setDateInfo(DateTimeUtils.formatDate(to, dateFlags));
|
||||
} else {
|
||||
getChartsHost().setDateInfo(DateTimeUtils.formatDateRange(from, to, dateFlags));
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
|
||||
public class SleepChartFragment extends AbstractActivityChartFragment<SleepChartFragment.MyChartsData> {
|
||||
public class DaySleepChartFragment extends AbstractActivityChartFragment<DaySleepChartFragment.MyChartsData> {
|
||||
protected static final Logger LOG = LoggerFactory.getLogger(ActivitySleepChartFragment.class);
|
||||
|
||||
private LineChart mActivityChart;
|
||||
@ -93,6 +93,10 @@ public class SleepChartFragment extends AbstractActivityChartFragment<SleepChart
|
||||
private boolean SHOW_CHARTS_AVERAGE = prefs.getBoolean("charts_show_average", true);
|
||||
private int sleepLinesLimit = prefs.getInt("chart_sleep_lines_limit", 6);
|
||||
|
||||
@Override
|
||||
protected boolean isSingleDay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MyChartsData refreshInBackground(ChartsHost chartsHost, DBHandler db, GBDevice device) {
|
@ -30,7 +30,6 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.HeartRateUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
@ -34,14 +34,12 @@ import com.github.mikephil.charting.components.YAxis;
|
||||
import com.github.mikephil.charting.data.Entry;
|
||||
import com.github.mikephil.charting.data.LineData;
|
||||
import com.github.mikephil.charting.data.LineDataSet;
|
||||
import com.github.mikephil.charting.formatter.DefaultAxisValueFormatter;
|
||||
import com.github.mikephil.charting.formatter.ValueFormatter;
|
||||
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@ -82,9 +80,9 @@ public class Spo2ChartFragment extends AbstractChartFragment<Spo2ChartFragment.S
|
||||
CHART_TEXT_COLOR = GBApplication.getSecondaryTextColor(requireContext());
|
||||
|
||||
if (prefs.getBoolean("chart_heartrate_color", false)) {
|
||||
CHART_LINE_COLOR = ContextCompat.getColor(getContext(), R.color.chart_heartrate_alternative);
|
||||
CHART_LINE_COLOR = ContextCompat.getColor(requireContext(), R.color.chart_heartrate_alternative);
|
||||
} else {
|
||||
CHART_LINE_COLOR = ContextCompat.getColor(getContext(), R.color.chart_heartrate);
|
||||
CHART_LINE_COLOR = ContextCompat.getColor(requireContext(), R.color.chart_heartrate);
|
||||
}
|
||||
|
||||
SPO2_AVERAGE_LABEL = requireContext().getString(R.string.charts_legend_spo2_average);
|
||||
@ -124,7 +122,7 @@ public class Spo2ChartFragment extends AbstractChartFragment<Spo2ChartFragment.S
|
||||
mSpo2Chart.setData(chartsData.getData());
|
||||
mSpo2Chart.getAxisLeft().removeAllLimitLines();
|
||||
|
||||
LOG.info("SpO2 average: " + spo2Data.getAverage());
|
||||
LOG.debug("SpO2 average: {}", spo2Data.getAverage());
|
||||
|
||||
if (spo2Data.getAverage() > 0 && SHOW_CHARTS_AVERAGE) {
|
||||
final LimitLine averageLine = new LimitLine(spo2Data.getAverage());
|
||||
@ -142,6 +140,11 @@ public class Spo2ChartFragment extends AbstractChartFragment<Spo2ChartFragment.S
|
||||
return requireContext().getString(R.string.pref_header_spo2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSingleDay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater,
|
||||
final ViewGroup container,
|
||||
|
@ -150,6 +150,11 @@ public class TemperatureChartFragment extends AbstractChartFragment<TemperatureC
|
||||
mTemperatureChart.animateX(ANIM_TIME, Easing.EaseInOutQuart);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSingleDay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getTSStart() {
|
||||
return getTSEnd() - TOTAL_DAYS*24*60*60;
|
||||
|
@ -94,6 +94,11 @@ public class WeightChartFragment extends AbstractChartFragment<WeightChartFragme
|
||||
weightTargetKg = prefs.getInt(ActivityUser.PREF_USER_GOAL_WEIGHT_KG, ActivityUser.defaultUserGoalWeightKg);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSingleDay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected WeightChartsData refreshInBackground(ChartsHost chartsHost, DBHandler db, GBDevice device) {
|
||||
long tsStart = getTSStart() * 1000L;
|
||||
|
@ -6,7 +6,7 @@ import androidx.fragment.app.FragmentManager;
|
||||
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBFragment;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.charts.SleepChartFragment;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.charts.DaySleepChartFragment;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.charts.WeekSleepChartFragment;
|
||||
|
||||
public class SleepFragmentAdapter extends NestedFragmentAdapter {
|
||||
@ -19,12 +19,12 @@ public class SleepFragmentAdapter extends NestedFragmentAdapter {
|
||||
public Fragment createFragment(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return new SleepChartFragment();
|
||||
return new DaySleepChartFragment();
|
||||
case 1:
|
||||
return WeekSleepChartFragment.newInstance(7);
|
||||
case 2:
|
||||
return WeekSleepChartFragment.newInstance(30);
|
||||
}
|
||||
return new SleepChartFragment();
|
||||
return new DaySleepChartFragment();
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:layout_weight="1"
|
||||
android:text="Today" />
|
||||
android:text="@string/stats_empty_value" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -58,7 +58,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text="<<<" />
|
||||
android:text="<<<"
|
||||
tools:ignore="HardcodedText"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/charts_previous_week"
|
||||
@ -67,7 +68,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text="<<" />
|
||||
android:text="<<"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/charts_previous_day"
|
||||
@ -76,7 +78,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text="<" />
|
||||
android:text="<"
|
||||
tools:ignore="HardcodedText"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/charts_next_day"
|
||||
@ -85,7 +88,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text=">" />
|
||||
android:text=">"
|
||||
tools:ignore="HardcodedText"/>
|
||||
<Button
|
||||
android:id="@+id/charts_next_week"
|
||||
android:layout_width="wrap_content"
|
||||
@ -93,7 +97,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text=">>" />
|
||||
android:text=">>"
|
||||
tools:ignore="HardcodedText"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/charts_next_month"
|
||||
@ -102,7 +107,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="0dp"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:text=">>>" />
|
||||
android:text=">>>"
|
||||
tools:ignore="HardcodedText"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
Loading…
Reference in New Issue
Block a user