Skip to content

Commit

Permalink
Build fixes, plus accepting a few coderabbit suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
ajmenca committed Jun 4, 2024
1 parent 300a1e8 commit e1875e4
Show file tree
Hide file tree
Showing 12 changed files with 39 additions and 39 deletions.
6 changes: 3 additions & 3 deletions src/components/container/DailyDataChart/DailyDataChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ export default function DailyDataChart(props: DailyDataChartProps) {
intervalStart = getDefaultIntervalStart(intervalType, props.weekStartsOn);
}

let intervalEnd = intervalType == "Week" ? add(intervalStart, { days: 7 })
: intervalType == "Month" ? add(intervalStart, { months: 1 })
let intervalEnd = intervalType === "Week" ? add(intervalStart, { days: 7 })
: intervalType === "Month" ? add(intervalStart, { months: 1 })
: intervalStart;
function loadCurrentInterval() {
setCurrentData(null);
Expand Down Expand Up @@ -94,7 +94,7 @@ export default function DailyDataChart(props: DailyDataChartProps) {
}
}, [props.intervalType, props.weekStartsOn, dateRangeContext]);

var data: any[] | undefined = [];
var data: { timestamp: number, value?: number, rawValue?: number, date?: Date }[] | undefined = [];
var chartHasData: boolean = false;
if (currentData) {
Object.keys(currentData).forEach((dateStr) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import { Card, DateRangeCoordinator, Layout } from "../../presentational";
import SurveyAnswerChart, { SurveyAnswerChartProps } from "./SurveyAnswerChart";
import { SurveyAnswer } from "@careevolution/mydatahelps-js";
import add from "date-fns/add";
import { predicatableRandomNumber } from "../../../helpers/predictableRandomNumber";
import { predictableRandomNumber } from "../../../helpers/predictableRandomNumber";
import { getDayKey } from "../../../helpers";

export default { title: "Container/SurveyAnswerChart", component: SurveyAnswerChart, parameters: { layout: 'fullscreen' } };
let render = (args: SurveyAnswerChartProps) => <Layout colorScheme="auto"><Card><SurveyAnswerChart {...args} /></Card></Layout>

async function generateSurveyResponse(date: Date, resultIdentifier: string, surveyName: string, rangeStart: number, rangeEnd: number): Promise<SurveyAnswer> {
var answer = await predicatableRandomNumber(getDayKey(date)+resultIdentifier);
var answer = await predictableRandomNumber(getDayKey(date)+resultIdentifier);
return {
"id": "00000000-0000-0000-0000-000000000000",
"surveyID": "00000000-0000-0000-0000-000000000000",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export default function SurveyAnswerChart(props:SurveyAnswerChartProps) {
intervalStart = getDefaultIntervalStart(intervalType, props.weekStartsOn);
}

let intervalEnd = intervalType == "Week" ? add(intervalStart, { days: 7 })
let intervalEnd = intervalType === "Week" ? add(intervalStart, { days: 7 })
: intervalType === "Month" ? add(intervalStart, { months: 1 })
: intervalType === "6Month" ? add(intervalStart, { months: 6 }) :
intervalStart;
Expand Down Expand Up @@ -132,7 +132,7 @@ export default function SurveyAnswerChart(props:SurveyAnswerChartProps) {
}

if (active && payload && payload.length) {
if(payload.length == 1){
if(payload.length === 1){
return (
<div className="mdhui-time-series-tooltip">
<div className="mdhui-single-value-tooltip-value">
Expand Down
2 changes: 1 addition & 1 deletion src/components/container/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export { default as ConnectDevicesMenu } from "./ConnectDevicesMenu"
export { default as ConnectEhr } from "./ConnectEhr"
export { default as ConnectFitbit } from "./ConnectFitbit"
export { default as ConnectGarmin } from "./ConnectGarmin"
export { default as DailyDataChart } from "./DailyDataChart"
export { default as DailyDataChart } from "./DailyDataChart"
export { default as DeviceDataMonthChart, DeviceDataChartLine } from "./DeviceDataMonthChart"
export { default as DeviceDataMonthCharts } from "./DeviceDataMonthCharts"
export { default as ExternalAccountList } from "./ExternalAccountList"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ let children = <Card>
intervalType="Week"
weekStartsOn="6DaysAgo"
chartType="Line"
charts={[{ label: "Pain Level", surveyName: "Pain Survey", stepIdentifier: "PainToday", resultIdentifier: "PainToday" }]}
series={[{ dataKey: "Pain Level", surveyName: "Pain Survey", stepIdentifier: "PainToday", resultIdentifier: "PainToday" }]}
previewDataProvider={(start: Date, end: Date) => {
function generateSurveyResponse(date: Date, resultIdentifier: string, surveyName: string): SurveyAnswer {
return {
Expand All @@ -42,7 +42,7 @@ let children = <Card>
"insertedDate": date.toISOString()
};
}
var data = [];
let data = [];
let currentDate = new Date(start);
while (currentDate < end) {
data.push(generateSurveyResponse(currentDate, "PainToday", 'Pain Survey'));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ export interface DateRangeNavigatorProps {
}

export default function (props: DateRangeNavigatorProps) {
var duration: Duration = props.intervalType == "Month" ? { months: 1 }
: props.intervalType == "Day" ? { days: 1 }
: props.intervalType == "6Month" ? { months: 6 }
const duration: Duration = props.intervalType === "Month" ? { months: 1 }
: props.intervalType === "Day" ? { days: 1 }
: props.intervalType === "6Month" ? { months: 6 }
: { weeks: 1 };

var nextInterval = function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import { Card, Layout } from "..";
import add from "date-fns/add";
import TimeSeriesChart, { TimeSeriesChartProps } from "./TimeSeriesChart";
import addDays from "date-fns/addDays";
import { predicatableRandomNumber } from "../../../helpers/predictableRandomNumber";
import { predictableRandomNumber } from "../../../helpers/predictableRandomNumber";

export default {
title: "Presentational/TimeSeriesChart",
component: TimeSeriesChart,
parameters: { layout: 'fullscreen' },
};
let render = (args: TimeSeriesChartProps, { loaded: { randomData } }: any) => <Layout colorScheme="auto"><Card><TimeSeriesChart {...args} data={randomData} /></Card></Layout>
const render = (args: TimeSeriesChartProps, { loaded: { randomData } }: any) => <Layout colorScheme="auto"><Card><TimeSeriesChart {...args} data={randomData} /></Card></Layout>

interface TimeSeriesChartTest {
args: TimeSeriesChartProps,
Expand All @@ -21,12 +21,12 @@ interface TimeSeriesChartTest {


async function getRandomData(start: Date, end: Date) {
var responses = [];
const responses = [];
let currentDate = new Date(start);
while (currentDate < end) {
responses.push({
timestamp: currentDate.setHours(0,0,0,0),
value: (await predicatableRandomNumber(currentDate.toISOString())) % 200
value: (await predictableRandomNumber(currentDate.toISOString())) % 200
});
currentDate = add(currentDate, { days: 1 });
}
Expand All @@ -40,7 +40,7 @@ async function getRandomDataWithGaps(start: Date, end: Date) {
if (currentDate.getDate() % 3 !== 0) {
responses.push({
timestamp: currentDate.setHours(0, 0, 0, 0),
value: (await predicatableRandomNumber(currentDate.toISOString())) % 200
value: (await predictableRandomNumber(currentDate.toISOString())) % 200
});
}
currentDate = add(currentDate, { days: 1 });
Expand All @@ -54,9 +54,9 @@ async function getRandomMultipointData(start: Date, end: Date) {
while (currentDate < end) {
responses.push({
timestamp: currentDate.setHours(0,0,0,0),
key1: (await predicatableRandomNumber(currentDate.toISOString()+"key1")) % 200,
key2: (await predicatableRandomNumber(currentDate.toISOString()+"key2")) % 200,
key3: (await predicatableRandomNumber(currentDate.toISOString()+"key3")) % 200,
key1: (await predictableRandomNumber(`${currentDate.toISOString()}key1`)) % 200,
key2: (await predictableRandomNumber(`${currentDate.toISOString()}key2`)) % 200,
key3: (await predictableRandomNumber(`${currentDate.toISOString()}key3`)) % 200,
});
currentDate = add(currentDate, { days: 1 });
}
Expand All @@ -73,7 +73,7 @@ async function getRandomIntradayData(start: Date) {
while (currentTime < endTime) {
responses.push({
timestamp: currentTime,
value: (await predicatableRandomNumber(currentTime.toISOString())) % 200
value: (await predictableRandomNumber(currentTime.toISOString())) % 200
});
currentTime = add(currentTime, { minutes: 5 });
console.log(currentTime);
Expand All @@ -82,7 +82,7 @@ async function getRandomIntradayData(start: Date) {
return responses;
}

var tooltip = function ({ active, payload, label }: any): React.JSX.Element | null {
var tooltip = ({ active, payload, label }: any): React.JSX.Element | null => {
if(active && payload && payload.length){
return <table className="mdhui-daily-data-tooltip">
{payload.map((p: any, index: number) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface TimeSeriesChartProps {
title?: string
intervalType?: "Week" | "Month" | "6Month" | "Day",
intervalStart: Date,
data: any[] | undefined,
data: Record<string,any>[] | undefined,
expectedDataInterval?: Duration,
series: ChartSeries[] | AreaChartSeries[],
chartHasData: boolean,
Expand All @@ -34,14 +34,14 @@ export default function TimeSeriesChart(props: TimeSeriesChartProps) {
let currentDate = new Date(value);
if (intervalType == "Month") {
return <text className={isToday(currentDate) ? "today" : ""} fill="var(--mdhui-text-color-2)" x={x} y={y + 15} textAnchor="middle" fontSize="12">{currentDate.getDate()}</text>;
} else if (intervalType == "6Month" ){
} else if (intervalType === "6Month" ){
let monthLabel = currentDate.getDate() === 1 ? format(currentDate, "LLL") : "";
let dayLabel = currentDate.getDate().toString();
return <>
<text className={isToday(currentDate) ? "today" : ""} fill="var(--mdhui-text-color-2)" x={x} y={y + 8} textAnchor="middle" fontSize="11">{monthLabel}</text>
<text className={isToday(currentDate) ? "today" : ""} fill="var(--mdhui-text-color-2)" x={x} y={y + 24} textAnchor="middle" fontSize="12">{dayLabel}</text>
</>;
} else if (intervalType == "Week" ){
} else if (intervalType === "Week" ){
let dayOfWeek: string = "";
for (let i = 0; i < 7; i++) {
if (currentDate.getTime() == value) {
Expand All @@ -54,7 +54,7 @@ export default function TimeSeriesChart(props: TimeSeriesChartProps) {
<text className={isToday(currentDate) ? "today" : ""} fill="var(--mdhui-text-color-2)" x={x} y={y + 8} textAnchor="middle" fontSize="11">{dayOfWeek}</text>
<text className={isToday(currentDate) ? "today" : ""} fill="var(--mdhui-text-color-2)" x={x} y={y + 24} textAnchor="middle" fontSize="12">{currentDate.getDate()}</text>
</>;
} else if ( intervalType == "Day"){
} else if ( intervalType === "Day"){
const startTime = new Date(props.intervalStart);
startTime.setHours(0, 0, 0, 0);
return <>
Expand Down Expand Up @@ -183,7 +183,7 @@ export default function TimeSeriesChart(props: TimeSeriesChartProps) {

const keys = props.series.map( s => s.dataKey);

let dataToDisplay: any[] | undefined;
let dataToDisplay: Record<string,any>[] | undefined;
if(props.data && props.expectedDataInterval) {
dataToDisplay = [];
for(var i = 0; i < props.data.length-1; ++i) {
Expand Down
2 changes: 1 addition & 1 deletion src/components/presentational/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export { default as Calendar } from "./Calendar"
export { default as CalendarDay, CalendarDayStateConfiguration } from "./CalendarDay"
export { default as Card } from "./Card"
export { default as CardTitle } from "./CardTitle"
export { default as DataChart, LineChartOptions, BarChartOptions, AreaChartOptions, BarChartThreshold } from "./TimeSeriesChart";
export { default as DataChart } from "./TimeSeriesChart";
export { default as DateRangeCoordinator, DateRangeContext } from "./DateRangeCoordinator"
export { default as DateRangeNavigator } from "./DateRangeNavigator"
export { default as DateRangeTitle } from "./DateRangeTitle"
Expand Down
10 changes: 5 additions & 5 deletions src/helpers/date-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,19 @@ export function getMonthName(month: number) {
}

export function titleForDateRange(intervalType: "Day" | "Week" | "Month" | "6Month", intervalStart: Date, variant?: "short" | "long") {
var duration: Duration = intervalType == "Month" ? { months: 1 } : intervalType == "Day" ? { days: 1 } : { weeks: 1 };
var duration: Duration = intervalType === "Month" ? { months: 1 } : intervalType === "Day" ? { days: 1 } : { weeks: 1 };
var intervalEnd = add(intervalStart, duration);

if(intervalType == "6Month" && intervalStart.getDate() == 1){
if(intervalType === "6Month" && intervalStart.getDate() === 1){
return `${getMonthName(intervalStart.getMonth())} - ${getMonthName(sub(intervalEnd, { months: 1}).getMonth())}`;
}
else if (intervalType == "Month" && intervalStart.getDate() == 1) {
else if (intervalType === "Month" && intervalStart.getDate() === 1) {
return `${getMonthName(intervalStart.getMonth())} ${intervalStart.getFullYear()}`;
}
else if (intervalType == "Week" || intervalType == "Month" || intervalType == "6Month") {
else if (intervalType === "Week" || intervalType === "Month" || intervalType === "6Month") {
return `${format(intervalStart, "MM/dd/yyyy")} - ${format(sub(intervalEnd, { days: 1 }), "MM/dd/yyyy")}`;
}
else if (intervalType == "Day") {
else if (intervalType === "Day") {
if (variant === "long") {
return `${getDayOfWeek(intervalStart)}, ${getFullDateString(intervalStart)}`;
}
Expand Down
4 changes: 2 additions & 2 deletions src/helpers/predictableRandomNumber.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
//poor man's seeded javascript rng
//just for generating a relatively large random integer from a string seed
export async function predicatableRandomNumber(message: string) {
export async function predictableRandomNumber(message: string) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hash = await crypto.subtle.digest("SHA-1", data);
const hashArray = Array.from(new Uint8Array(hash)).map(t => t.toString());
return parseInt(hashArray.reduce((accumulator, currentValue) => {
return Number.parseInt(hashArray.reduce((accumulator, currentValue) => {
return accumulator + currentValue
}, ""));
}
6 changes: 3 additions & 3 deletions src/helpers/query-daily-data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { FontAwesomeSvgIcon } from "react-fontawesome-svg-icon";
import { faPersonRunning } from "@fortawesome/free-solid-svg-icons";
import React from "react";
import { defaultFormatter } from "./daily-data-types/formatters";
import { predicatableRandomNumber } from "./predictableRandomNumber";
import { predictableRandomNumber } from "./predictableRandomNumber";

export type DailyDataQueryResult = { [key: string]: number };
export type DailyDataProvider = (startDate: Date, endDate: Date) => Promise<DailyDataQueryResult>;
Expand Down Expand Up @@ -63,8 +63,8 @@ export async function queryPreviewDailyData(type: string, startDate: Date, endDa

//Modulo repeatable random numbers to get a value in range.
while (startDate < endDate && startDate < new Date()) {
var dayKey = getDayKey(startDate);
var value: number = ((await predicatableRandomNumber(dayKey + "_" + type)) % (range[1] - range[0])) + range[0];
const dayKey = getDayKey(startDate);
const value: number = ((await predictableRandomNumber(dayKey + "_" + type)) % (range[1] - range[0])) + range[0];
result[dayKey] = value;
startDate = add(startDate, { days: 1 });
}
Expand Down

0 comments on commit e1875e4

Please sign in to comment.