farmbot-web-frontend
Version:
Farmbot web frontend.
50 lines (44 loc) • 1.39 kB
text/typescript
import { ReduxAction } from "../interfaces";
import { Sequence } from "../sequences/interfaces";
import { Color } from "../interfaces.ts";
/** Used by UI widgets that modify a regimen */
export interface RegimenProps {
regimen?: Regimen;
dispatch: Function;
};
/**
* A Regimen, as returned from the '/api/regemins' endpoint (JSON).
*/
export interface RegimenApiResponse {
id: number;
color: string;
device_id: string;
name: string;
}
/** A list of "sequences" scheduled after a starting point (epoch). */
export interface Regimen {
id?: number;
/** Friendly identifier for humans to easily identify regimens. */
name: string;
color: Color;
regimen_items: RegimenItem[];
dirty?: boolean;
};
/** Individual step that a regimen will execute at a point in time. */
export interface RegimenItem {
id?: number;
regimen_id?: number;
sequence: Sequence;
/** Time (in milliseconds) to wait before executing the sequence */
time_offset: number;
};
/** How Regimen state is stored in the application. Used by Regimen reducer mostly */
export interface RegimensState {
current: number;
all: Regimen[];
}
/** Used by regimen reducer to route incoming stream of Redux actions */
export interface RegimensActionHandler {
[actionName: string]: (state: RegimensState,
action: ReduxAction<any>) => RegimensState;
}