151 lines
3.2 KiB
TypeScript
151 lines
3.2 KiB
TypeScript
import { Color } from "../interfaces";
|
|
import { AuthState } from "../auth/interfaces";
|
|
import {
|
|
Sequence as CeleryScriptSequence,
|
|
SequenceBodyItem,
|
|
LegalArgString,
|
|
SyncStatus
|
|
} from "farmbot";
|
|
import { StepMoveDataXfer, StepSpliceDataXfer } from "../draggable/interfaces";
|
|
import {
|
|
TaggedSequence
|
|
} from "../resources/tagged_resources";
|
|
import { ResourceIndex } from "../resources/interfaces";
|
|
import { JSXChildren } from "../util";
|
|
|
|
export interface Props {
|
|
dispatch: Function;
|
|
sequences: TaggedSequence[];
|
|
sequence: TaggedSequence | undefined;
|
|
auth: AuthState | undefined;
|
|
resources: ResourceIndex;
|
|
syncStatus: SyncStatus;
|
|
consistent: boolean;
|
|
autoSyncEnabled: boolean;
|
|
}
|
|
|
|
export interface SequenceEditorMiddleProps {
|
|
dispatch: Function;
|
|
sequence: TaggedSequence | undefined;
|
|
resources: ResourceIndex;
|
|
syncStatus: SyncStatus;
|
|
consistent: boolean;
|
|
autoSyncEnabled: boolean;
|
|
}
|
|
|
|
export interface ActiveMiddleProps extends SequenceEditorMiddleProps {
|
|
sequence: TaggedSequence;
|
|
syncStatus: SyncStatus;
|
|
consistent: boolean;
|
|
autoSyncEnabled: boolean;
|
|
}
|
|
|
|
export type CHANNEL_NAME = "toast" | "ticker";
|
|
|
|
export const NUMERIC_FIELDS = ["milliseconds", "pin_mode", "pin_number",
|
|
"pin_value", "rhs", "sequence_id", "speed", "x", "y", "z"];
|
|
|
|
export interface Sequence extends CeleryScriptSequence {
|
|
id?: number;
|
|
color: Color;
|
|
name: string;
|
|
}
|
|
|
|
export interface SequenceReducerState {
|
|
current: string | undefined;
|
|
}
|
|
|
|
export interface SequencesListProps {
|
|
sequences: TaggedSequence[];
|
|
sequence: TaggedSequence | undefined;
|
|
dispatch: Function;
|
|
auth: AuthState | undefined;
|
|
}
|
|
|
|
export interface SequencesListState {
|
|
searchTerm: string;
|
|
}
|
|
|
|
/** Used when dispatching an updated message type. */
|
|
export interface MessageParams {
|
|
value: string | number;
|
|
index: number;
|
|
}
|
|
|
|
export interface MoveAbsState {
|
|
isToolSelected: boolean;
|
|
}
|
|
|
|
export interface StepButtonParams {
|
|
current: TaggedSequence | undefined;
|
|
step: SequenceBodyItem;
|
|
dispatch: Function;
|
|
children?: JSXChildren;
|
|
color: "blue"
|
|
| "green"
|
|
| "orange"
|
|
| "yellow"
|
|
| "brown"
|
|
| "red"
|
|
| "purple"
|
|
| "pink"
|
|
| "gray";
|
|
}
|
|
|
|
export interface CopyParams {
|
|
dispatch: Function;
|
|
step: SequenceBodyItem;
|
|
}
|
|
|
|
export interface RemoveParams {
|
|
index: number;
|
|
dispatch: Function;
|
|
}
|
|
|
|
export interface StepInputProps {
|
|
step: SequenceBodyItem;
|
|
sequence: TaggedSequence;
|
|
field: LegalArgString;
|
|
dispatch: Function;
|
|
type_?: "text" | "hidden" | undefined;
|
|
index: number;
|
|
}
|
|
|
|
export interface StepTitleBarProps {
|
|
step: SequenceBodyItem;
|
|
index: number;
|
|
dispatch: Function;
|
|
sequence: TaggedSequence;
|
|
}
|
|
|
|
export type CHANGE_STEP = "CHANGE_STEP";
|
|
|
|
export type CHANGE_STEP_SELECT = "CHANGE_STEP_SELECT" | "UPDATE_SUB_SEQUENCE";
|
|
|
|
export interface ChangeStepSelect {
|
|
type: CHANGE_STEP_SELECT;
|
|
payload: {
|
|
value: number | string;
|
|
index: number;
|
|
field: string;
|
|
type?: string;
|
|
};
|
|
}
|
|
|
|
export interface SelectSequence {
|
|
type: "SELECT_SEQUENCE";
|
|
payload: string;
|
|
}
|
|
|
|
export type DataXferObj = StepMoveDataXfer | StepSpliceDataXfer;
|
|
|
|
export type dispatcher = (a: Function | { type: string }) => DataXferObj;
|
|
|
|
export interface StepParams {
|
|
currentSequence: TaggedSequence;
|
|
currentStep: SequenceBodyItem;
|
|
dispatch: Function;
|
|
index: number;
|
|
resources: ResourceIndex;
|
|
}
|