convert Week interface to Record<T, U> type
parent
07449575e6
commit
421d99ce41
|
@ -1,4 +1,4 @@
|
|||
import { Week } from "./interfaces";
|
||||
import { Week, DAYS } from "./interfaces";
|
||||
import { Sequence } from "../../sequences/interfaces";
|
||||
import { RegimenItem } from "../../regimens/interfaces";
|
||||
|
||||
|
@ -9,14 +9,10 @@ export function groupRegimenItemsByWeek(weeks: Week[], OFFSET: number,
|
|||
const ONE_WEEK = 604800000;
|
||||
const ONE_DAY = 86400000;
|
||||
|
||||
let keys = ["day1", "day2", "day3", "day4", "day5", "day6", "day7"];
|
||||
|
||||
return weeks
|
||||
// Collect all of the true/false values in weekX.days. These indicate
|
||||
// whether we should add a sequence on that day or not.
|
||||
.map((week) =>
|
||||
keys.map((key) =>
|
||||
(week.days as { [day: string]: boolean })[key]))
|
||||
.map((week) => DAYS.map((key) => week.days[key]))
|
||||
// [[true,false,false,true] . . . ]
|
||||
// Convert true values to an offset, in milliseconds from the
|
||||
// start point.
|
||||
|
@ -37,7 +33,7 @@ export function groupRegimenItemsByWeek(weeks: Week[], OFFSET: number,
|
|||
// Sort the array. Using a comparator function because failing to do so
|
||||
// results in funny execution times on day 0.
|
||||
.sort(function (a, b) {
|
||||
if (a < b) { return -1; };
|
||||
if (a < b) { return -1; }
|
||||
return (a > b) ? 1 : 0;
|
||||
})
|
||||
// Transform the sorted array of values into a regimenItem[] array.
|
||||
|
|
|
@ -16,16 +16,27 @@ export interface BulkEditorProps {
|
|||
dispatch: Function;
|
||||
}
|
||||
|
||||
type WeekDay =
|
||||
| "day1"
|
||||
| "day2"
|
||||
| "day3"
|
||||
| "day4"
|
||||
| "day5"
|
||||
| "day6"
|
||||
| "day7";
|
||||
|
||||
export const DAYS: WeekDay[] = [
|
||||
"day1",
|
||||
"day2",
|
||||
"day3",
|
||||
"day4",
|
||||
"day5",
|
||||
"day6",
|
||||
"day7"
|
||||
];
|
||||
|
||||
export interface Week {
|
||||
days: {
|
||||
day1: boolean;
|
||||
day2: boolean;
|
||||
day3: boolean;
|
||||
day4: boolean;
|
||||
day5: boolean;
|
||||
day6: boolean;
|
||||
day7: boolean;
|
||||
};
|
||||
days: Record<WeekDay, boolean>;
|
||||
}
|
||||
|
||||
export interface ToggleDayParams {
|
||||
|
|
|
@ -1,23 +1,20 @@
|
|||
import * as React from "react";
|
||||
import { WeekRowProps, DayProps } from "./interfaces";
|
||||
import { WeekRowProps, DayProps, DAYS } from "./interfaces";
|
||||
import { toggleDay } from "./actions";
|
||||
import { t } from "i18next";
|
||||
|
||||
let DAYS = [1, 2, 3, 4, 5, 6, 7];
|
||||
|
||||
export function WeekRow({ index, dispatch, week }: WeekRowProps) {
|
||||
return <div className="week-row">
|
||||
<label className="week-label">{t("Week")} {index + 1}</label>
|
||||
{
|
||||
DAYS.map(function (day) {
|
||||
DAYS.map(function (day, i) {
|
||||
let id = `${index}-${day}`;
|
||||
let lookup = `day${day}`;
|
||||
return <Day day={day}
|
||||
week={index}
|
||||
return <Day day={i}
|
||||
week={i}
|
||||
dispatch={dispatch}
|
||||
id={id}
|
||||
key={id}
|
||||
active={(week.days as { [day: string]: boolean })[lookup]} />;
|
||||
active={week.days[day]} />;
|
||||
})
|
||||
}
|
||||
</div>;
|
||||
|
|
Loading…
Reference in New Issue