From 50d4703acc4f01195620e2404d7aa3737fd8c0e4 Mon Sep 17 00:00:00 2001 From: Chris Nowak Date: Tue, 12 Sep 2023 14:42:26 -0400 Subject: [PATCH 1/5] Fix steps daily data, other style tweaks --- .../DailyDataChart/DailyDataChart.css | 2 +- .../DeviceDataMonthChart.css | 2 +- .../presentational/Button/Button.css | 2 +- src/components/presentational/Card/Card.css | 2 +- .../daily-data-providers/combined-steps.ts | 49 ++++++++++++------- src/helpers/globalCss.ts | 13 +++-- 6 files changed, 43 insertions(+), 27 deletions(-) diff --git a/src/components/container/DailyDataChart/DailyDataChart.css b/src/components/container/DailyDataChart/DailyDataChart.css index 5ba63e7a..6dd22cd9 100644 --- a/src/components/container/DailyDataChart/DailyDataChart.css +++ b/src/components/container/DailyDataChart/DailyDataChart.css @@ -30,7 +30,7 @@ .mdhui-daily-data-chart .mdhui-daily-data-tooltip { padding: 8px; background: var(--mdhui-background-color-0); - border-radius: 5px; + border-radius: var(--mdhui-card-border-radius); box-shadow: var(--mdhui-box-shadow-1); animation: fadein 1s; -moz-animation: fadein 1s; diff --git a/src/components/container/DeviceDataMonthChart/DeviceDataMonthChart.css b/src/components/container/DeviceDataMonthChart/DeviceDataMonthChart.css index b8010cad..53ceec0b 100644 --- a/src/components/container/DeviceDataMonthChart/DeviceDataMonthChart.css +++ b/src/components/container/DeviceDataMonthChart/DeviceDataMonthChart.css @@ -55,7 +55,7 @@ padding: 4px; font-size: 12px; background: var(--mdhui-background-color-0); - border-radius: 5px; + border-radius: var(--mdhui-card-border-radius); box-shadow: var(--mdhui-box-shadow-0); animation: fadein 1s; -moz-animation: fadein 1s; diff --git a/src/components/presentational/Button/Button.css b/src/components/presentational/Button/Button.css index faf90558..39980954 100644 --- a/src/components/presentational/Button/Button.css +++ b/src/components/presentational/Button/Button.css @@ -7,7 +7,7 @@ line-height: 17px; color: #FFF; border: none; - border-radius: 5px; + border-radius: var(--mdhui-card-border-radius); cursor: pointer; font-weight: bold; text-align: center; diff --git a/src/components/presentational/Card/Card.css b/src/components/presentational/Card/Card.css index 1b4af07c..d272703d 100644 --- a/src/components/presentational/Card/Card.css +++ b/src/components/presentational/Card/Card.css @@ -1,5 +1,5 @@ .mdhui-card { - border-radius: 5px; + border-radius: var(--mdhui-card-border-radius); margin: 16px; background: var(--mdhui-background-color-0); box-shadow: var(--mdhui-box-shadow-0); diff --git a/src/helpers/daily-data-providers/combined-steps.ts b/src/helpers/daily-data-providers/combined-steps.ts index 2fb681a7..ddbbf1d3 100644 --- a/src/helpers/daily-data-providers/combined-steps.ts +++ b/src/helpers/daily-data-providers/combined-steps.ts @@ -1,29 +1,40 @@ import { add } from "date-fns"; import { appleHealthStepsDataProvider, fitbitStepsDataProvider, garminStepsDataProvider } from "."; import getDayKey from "../get-day-key"; +import MyDataHelps from "@careevolution/mydatahelps-js"; export default function (startDate: Date, endDate: Date) { - var fitbitSteps = fitbitStepsDataProvider(startDate, endDate); - var appleSteps = appleHealthStepsDataProvider(startDate, endDate); - var garminSteps = garminStepsDataProvider(startDate, endDate); + let providers: Promise<{ [key: string]: number }>[] = []; - return Promise.all([fitbitSteps, appleSteps, garminSteps]).then((values) => { - var data: { [key: string]: number } = {}; - while (startDate < endDate) { - var dayKey = getDayKey(startDate); - var steps: number | null = null; - if (values[0][dayKey]) { - steps = values[0][dayKey]; - } + return MyDataHelps.getDataCollectionSettings().then((settings) => { + if (settings.fitbitEnabled) { + providers.push(fitbitStepsDataProvider(startDate, endDate)); + } + if (settings.garminEnabled) { + providers.push(garminStepsDataProvider(startDate, endDate)); + } + if (settings.queryableDeviceDataTypes.find(s => s.namespace == "AppleHealth" && s.type == "HourlySteps")) { + providers.push(appleHealthStepsDataProvider(startDate, endDate)); + } - if (values[1][dayKey] && (steps == null || values[1][dayKey] > steps)) { - steps = values[1][dayKey]; + return Promise.all(providers).then((values) => { + var data: { [key: string]: number } = {}; + while (startDate < endDate) { + var dayKey = getDayKey(startDate); + var steps: number | null = null; + values.forEach((value) => { + if (value[dayKey] || steps == null || steps < value[dayKey]) { + steps = value[dayKey]; + } + }); + if (steps) { + data[dayKey] = steps; + } + startDate = add(startDate, { days: 1 }); } - if (steps) { - data[dayKey] = steps; - } - startDate = add(startDate, { days: 1 }); - } - return data; + return data; + }); }); + + } diff --git a/src/helpers/globalCss.ts b/src/helpers/globalCss.ts index 74ec09cd..6a26952e 100644 --- a/src/helpers/globalCss.ts +++ b/src/helpers/globalCss.ts @@ -7,6 +7,10 @@ export const core = css` --mdhui-color-warning: #FF671D; --mdhui-color-danger: #eb5546; --mdhui-fadein-animation: fadein 1s; + + --mdhui-card-border-radius: 12px; + --mdhui-font-family: ui-rounded, -apple-system, Helvetica, Arial, sans-serif; + --mdhui-modal-overlay-color: rgba(0, 0, 0, 0.5); } @media (prefers-reduced-motion) { @@ -59,13 +63,14 @@ export const lightColorScheme = css` --mdhui-text-color-3: #999; --mdhui-text-color-4: #bbb; - --mdhui-box-shadow-color-0: #ddd; + --mdhui-box-shadow-color-0: rgba(0, 0, 0, 0.05); --mdhui-box-shadow-color-1: #aaa; - --mdhui-box-shadow-0: 0px 9px 9px 0px var(--mdhui-box-shadow-color-0); + --mdhui-box-shadow-0: 0px 4px 4px 0px var(--mdhui-box-shadow-color-0); --mdhui-box-shadow-1: 0px 0px 5px 0px var(--mdhui-box-shadow-color-1); --mdhui-overlay-gradient:linear-gradient(to left, rgba(255, 255, 255, 0) 0%, rgba(255, 244, 240, 0.2) 100%); + } ` @@ -113,9 +118,9 @@ html { body { padding: 0; margin: 0; - font-family: ui-rounded, -apple-system, Helvetica, Arial, sans-serif; + font-family: var(--mdhui-font-family); background: var(--mdhui-background-color-1); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - line-height: 1.2em; + line-height: 1.2; }`; \ No newline at end of file From b143e19a9cf5e83688c93548c3f55b05c18e91d6 Mon Sep 17 00:00:00 2001 From: Chris Nowak Date: Tue, 12 Sep 2023 14:43:20 -0400 Subject: [PATCH 2/5] early exit --- src/helpers/daily-data-providers/combined-steps.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/helpers/daily-data-providers/combined-steps.ts b/src/helpers/daily-data-providers/combined-steps.ts index ddbbf1d3..1299a8b1 100644 --- a/src/helpers/daily-data-providers/combined-steps.ts +++ b/src/helpers/daily-data-providers/combined-steps.ts @@ -17,6 +17,10 @@ export default function (startDate: Date, endDate: Date) { providers.push(appleHealthStepsDataProvider(startDate, endDate)); } + if (!providers.length) { + return {}; + } + return Promise.all(providers).then((values) => { var data: { [key: string]: number } = {}; while (startDate < endDate) { From 7ab54b81da755e91b092854b3a781ec3c608ec52 Mon Sep 17 00:00:00 2001 From: Chris Nowak Date: Tue, 12 Sep 2023 15:03:45 -0400 Subject: [PATCH 3/5] Fixing a couple other issues --- .../DailyDataChart/DailyDataChart.stories.tsx | 16 ++++++++++++++++ .../DateRangeCoordinator.stories.tsx | 16 +++------------- .../daily-data-providers/combined-steps.ts | 2 -- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/components/container/DailyDataChart/DailyDataChart.stories.tsx b/src/components/container/DailyDataChart/DailyDataChart.stories.tsx index 5811bf6c..93072ced 100644 --- a/src/components/container/DailyDataChart/DailyDataChart.stories.tsx +++ b/src/components/container/DailyDataChart/DailyDataChart.stories.tsx @@ -58,6 +58,22 @@ export const stepsBarChart = { render: render }; + +export const stepsLiveBarChart = { + args: { + title: "Steps", + options: { + + }, + intervalType: "Week", + weekStartsOn: "6DaysAgo", + dailyDataType: DailyDataType.Steps, + valueFormatter: (value: number) => Number(value.toFixed(0)).toLocaleString(), + chartType: "Bar" + }, + render: render +}; + export const stepsAreaChart = { args: { title: "Steps", diff --git a/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx b/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx index 7ac19c6c..8c7ade1c 100644 --- a/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx +++ b/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { DailyDataQueryResult } from "../../../helpers/query-daily-data"; +import { DailyDataQueryResult, DailyDataType } from "../../../helpers/query-daily-data"; import { Card, Layout } from "../../presentational"; import DateRangeCoordinator, { DateRangeCoordinatorProps } from "./DateRangeCoordinator"; import DailyDataChart from "../../container/DailyDataChart/DailyDataChart"; @@ -12,19 +12,9 @@ let render = (args: DateRangeCoordinatorProps) => Number(value.toFixed(0)).toLocaleString()} - chartType="Line" - previewDataProvider={(start: Date, end: Date) => { - let data: DailyDataQueryResult = {}; - let currentDate = new Date(start); - while (currentDate < end) { - let dayKey = getDayKey(currentDate); - data[dayKey] = Math.random() * 100; - currentDate = add(currentDate, { days: 1 }); - } - return Promise.resolve(data); - }} /> Date: Tue, 12 Sep 2023 15:04:26 -0400 Subject: [PATCH 4/5] Revert story change --- .../DateRangeCoordinator.stories.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx b/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx index 8c7ade1c..7ac19c6c 100644 --- a/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx +++ b/src/components/presentational/DateRangeCoordinator/DateRangeCoordinator.stories.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { DailyDataQueryResult, DailyDataType } from "../../../helpers/query-daily-data"; +import { DailyDataQueryResult } from "../../../helpers/query-daily-data"; import { Card, Layout } from "../../presentational"; import DateRangeCoordinator, { DateRangeCoordinatorProps } from "./DateRangeCoordinator"; import DailyDataChart from "../../container/DailyDataChart/DailyDataChart"; @@ -12,9 +12,19 @@ let render = (args: DateRangeCoordinatorProps) => Number(value.toFixed(0)).toLocaleString()} - chartType="Bar" /> { + let data: DailyDataQueryResult = {}; + let currentDate = new Date(start); + while (currentDate < end) { + let dayKey = getDayKey(currentDate); + data[dayKey] = Math.random() * 100; + currentDate = add(currentDate, { days: 1 }); + } + return Promise.resolve(data); + }} /> Date: Tue, 12 Sep 2023 15:21:58 -0400 Subject: [PATCH 5/5] Fix query device data to catch errors --- src/helpers/daily-data-providers/query-all-device-data.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/helpers/daily-data-providers/query-all-device-data.ts b/src/helpers/daily-data-providers/query-all-device-data.ts index 3ce6267f..989e03f3 100644 --- a/src/helpers/daily-data-providers/query-all-device-data.ts +++ b/src/helpers/daily-data-providers/query-all-device-data.ts @@ -1,4 +1,4 @@ -import MyDataHelps, { DeviceDataPoint, DeviceDataPointQuery, Guid, } from '@careevolution/mydatahelps-js'; +import MyDataHelps, { DeviceDataPoint, DeviceDataPointQuery, Guid, } from '@careevolution/mydatahelps-js'; export default function queryAllDeviceData(parameters: DeviceDataPointQuery) { var allDeviceDataPoints: DeviceDataPoint[] = []; @@ -14,6 +14,8 @@ export default function queryAllDeviceData(parameters: DeviceDataPointQuery) { } else { return allDeviceDataPoints; } + }).catch(function (error) { + return allDeviceDataPoints; }); } return queryPage();