Farmbot-Web-App/frontend/regimens/interfaces.ts

94 lines
2.3 KiB
TypeScript
Raw Permalink Normal View History

2019-01-13 17:16:22 -07:00
import { ResourceColor } from "../interfaces";
2017-06-29 12:54:02 -06:00
import { Week } from "./bulk_scheduler/interfaces";
import { AuthState } from "../auth/interfaces";
2019-01-10 20:10:55 -07:00
import { BotState, ShouldDisplay } from "../devices/interfaces";
2018-08-01 07:12:15 -06:00
import { TaggedRegimen, TaggedSequence } from "farmbot";
2019-01-10 20:10:55 -07:00
import { ResourceIndex, UUID, VariableNameSet } from "../resources/interfaces";
2017-06-29 12:54:02 -06:00
export interface CalendarRow {
day: string;
items: RegimenItemCalendarRow[];
}
export interface Props {
dispatch: Function;
sequences: TaggedSequence[];
2019-01-10 20:10:55 -07:00
variableData: VariableNameSet;
2017-06-29 12:54:02 -06:00
auth: AuthState | undefined;
bot: BotState;
current: TaggedRegimen | undefined;
regimens: TaggedRegimen[];
resources: ResourceIndex;
selectedSequence: TaggedSequence | undefined;
dailyOffsetMs: number;
weeks: Week[];
calendar: CalendarRow[];
2019-01-10 20:10:55 -07:00
regimenUsageStats: Record<UUID, boolean | undefined>;
shouldDisplay: ShouldDisplay;
2019-04-09 19:45:59 -06:00
schedulerOpen: boolean;
2017-06-29 12:54:02 -06:00
}
export interface RegimenItemCalendarRow {
regimen: TaggedRegimen;
item: RegimenItem;
name: string;
hhmm: string;
color: string;
/** Numeric field that can be used for sorting purposes. */
sortKey: number;
day: number;
dispatch: Function;
2019-06-28 13:05:19 -06:00
/** Variable label. */
variable: string | undefined;
2017-06-29 12:54:02 -06:00
}
/** Used by UI widgets that modify a regimen */
export interface RegimenProps {
2019-01-10 20:10:55 -07:00
regimen: TaggedRegimen;
2017-06-29 12:54:02 -06:00
dispatch: Function;
}
2017-10-27 07:31:25 -06:00
/** A list of "Sequence" scheduled after a starting point (epoch). */
2017-06-29 12:54:02 -06:00
export interface Regimen {
id?: number;
/** Friendly identifier for humans to easily identify regimens. */
name: string;
2019-01-13 17:16:22 -07:00
color: ResourceColor;
2017-06-29 12:54:02 -06:00
regimen_items: RegimenItem[];
}
export interface RegimenListItemProps {
length: number;
2017-06-29 12:54:02 -06:00
regimen: TaggedRegimen;
dispatch: Function;
inUse: boolean;
2017-06-29 12:54:02 -06:00
index: number;
}
/** Individual step that a regimen will execute at a point in time. */
export interface RegimenItem {
id?: number;
sequence_id: number;
regimen_id?: number;
/** Time (in milliseconds) to wait before executing the sequence */
time_offset: number;
}
export interface AddRegimenProps {
dispatch: Function;
className?: string;
children?: React.ReactNode;
length: number;
2017-06-29 12:54:02 -06:00
}
export interface RegimensListProps {
dispatch: Function;
regimens: TaggedRegimen[];
regimen: TaggedRegimen | undefined;
usageStats: Record<UUID, boolean | undefined>;
2017-06-29 12:54:02 -06:00
}
export interface RegimensListState {
searchTerm: string;
}