213 lines
5.0 KiB
TypeScript
213 lines
5.0 KiB
TypeScript
import { ResourceColor } from "../interfaces";
|
|
import {
|
|
Sequence as CeleryScriptSequence,
|
|
SequenceBodyItem,
|
|
LegalArgString,
|
|
SyncStatus,
|
|
ALLOWED_CHANNEL_NAMES,
|
|
Xyz,
|
|
FarmwareConfig,
|
|
ALLOWED_MESSAGE_TYPES,
|
|
Vector3,
|
|
} from "farmbot";
|
|
import { StepMoveDataXfer, StepSpliceDataXfer } from "../draggable/interfaces";
|
|
import { TaggedSequence } from "farmbot";
|
|
import { ResourceIndex, VariableNameSet, UUID } from "../resources/interfaces";
|
|
import { ShouldDisplay } from "../devices/interfaces";
|
|
import { GetWebAppConfigValue } from "../config_storage/actions";
|
|
import { Folders } from "../folders/component";
|
|
|
|
export interface HardwareFlags {
|
|
findHomeEnabled: Record<Xyz, boolean>;
|
|
stopAtHome: Record<Xyz, boolean>;
|
|
stopAtMax: Record<Xyz, boolean>;
|
|
negativeOnly: Record<Xyz, boolean>;
|
|
axisLength: Record<Xyz, number>;
|
|
}
|
|
|
|
export interface CheckConflictCaseProps {
|
|
axis: Xyz;
|
|
target: number;
|
|
hardwareFlags: HardwareFlags;
|
|
}
|
|
|
|
export interface MoveAbsoluteWarningProps {
|
|
vector: Vector3 | undefined;
|
|
offset: Vector3;
|
|
hardwareFlags: HardwareFlags | undefined;
|
|
}
|
|
|
|
export interface Props {
|
|
dispatch: Function;
|
|
sequences: TaggedSequence[];
|
|
sequence: TaggedSequence | undefined;
|
|
resources: ResourceIndex;
|
|
syncStatus: SyncStatus;
|
|
hardwareFlags: HardwareFlags;
|
|
farmwareData: FarmwareData;
|
|
shouldDisplay: ShouldDisplay;
|
|
getWebAppConfigValue: GetWebAppConfigValue;
|
|
menuOpen: boolean;
|
|
stepIndex: number | undefined;
|
|
folderData: Folders["props"];
|
|
}
|
|
|
|
export interface SequenceEditorMiddleProps {
|
|
dispatch: Function;
|
|
sequence: TaggedSequence | undefined;
|
|
resources: ResourceIndex;
|
|
syncStatus: SyncStatus;
|
|
hardwareFlags: HardwareFlags;
|
|
farmwareData: FarmwareData;
|
|
shouldDisplay: ShouldDisplay;
|
|
getWebAppConfigValue: GetWebAppConfigValue;
|
|
menuOpen: boolean;
|
|
}
|
|
|
|
export interface ActiveMiddleProps extends SequenceEditorMiddleProps {
|
|
sequence: TaggedSequence;
|
|
}
|
|
|
|
export interface SequenceHeaderProps {
|
|
dispatch: Function;
|
|
sequence: TaggedSequence;
|
|
syncStatus: SyncStatus;
|
|
resources: ResourceIndex;
|
|
shouldDisplay: ShouldDisplay;
|
|
menuOpen: boolean;
|
|
variablesCollapsed: boolean;
|
|
toggleVarShow: () => void;
|
|
getWebAppConfigValue: GetWebAppConfigValue;
|
|
}
|
|
|
|
export type ChannelName = ALLOWED_CHANNEL_NAMES;
|
|
|
|
export const INT_NUMERIC_FIELDS = ["milliseconds", "pin_mode", "pin_number",
|
|
"pin_value", "rhs", "sequence_id", "speed"];
|
|
|
|
export const FLOAT_NUMERIC_FIELDS = ["x", "y", "z"];
|
|
|
|
export const NUMERIC_FIELDS = INT_NUMERIC_FIELDS.concat(FLOAT_NUMERIC_FIELDS);
|
|
|
|
export enum MessageType {
|
|
success = "success",
|
|
busy = "busy",
|
|
warn = "warn",
|
|
error = "error",
|
|
info = "info",
|
|
fun = "fun",
|
|
debug = "debug",
|
|
assertion = "assertion",
|
|
}
|
|
|
|
export const MESSAGE_TYPES = Object.keys(MessageType);
|
|
|
|
// tslint:disable-next-line:no-any
|
|
export const isMessageType = (x: any): x is ALLOWED_MESSAGE_TYPES =>
|
|
MESSAGE_TYPES.includes(x);
|
|
|
|
export interface Sequence extends CeleryScriptSequence {
|
|
id?: number;
|
|
color: ResourceColor;
|
|
name: string;
|
|
}
|
|
|
|
export interface SequenceReducerState {
|
|
current: string | undefined;
|
|
menuOpen: boolean;
|
|
stepIndex: number | undefined;
|
|
}
|
|
|
|
export interface SequencesListProps {
|
|
sequences: TaggedSequence[];
|
|
resourceUsage: Record<UUID, boolean | undefined>;
|
|
sequence: TaggedSequence | undefined;
|
|
dispatch: Function;
|
|
sequenceMetas: Record<UUID, VariableNameSet | undefined>;
|
|
}
|
|
|
|
export interface SequencesListState {
|
|
searchTerm: string;
|
|
}
|
|
|
|
export interface MoveAbsState {
|
|
more: boolean;
|
|
}
|
|
|
|
export interface StepButtonParams {
|
|
current: TaggedSequence | undefined;
|
|
step: SequenceBodyItem;
|
|
dispatch: Function;
|
|
children?: React.ReactNode;
|
|
color: "blue"
|
|
| "green"
|
|
| "orange"
|
|
| "yellow"
|
|
| "brown"
|
|
| "red"
|
|
| "purple"
|
|
| "pink"
|
|
| "gray";
|
|
index?: number | undefined;
|
|
}
|
|
|
|
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;
|
|
fieldOverride?: boolean;
|
|
}
|
|
|
|
export interface StepTitleBarProps {
|
|
step: SequenceBodyItem;
|
|
index: number;
|
|
dispatch: Function;
|
|
sequence: TaggedSequence;
|
|
}
|
|
|
|
export interface SelectSequence {
|
|
type: "SELECT_SEQUENCE";
|
|
payload: string;
|
|
}
|
|
|
|
export type DataXferObj = StepMoveDataXfer | StepSpliceDataXfer;
|
|
|
|
export type dispatcher = (a: Function | { type: string }) => DataXferObj;
|
|
|
|
export type FarmwareConfigs = { [x: string]: FarmwareConfig[] };
|
|
|
|
export interface FarmwareData {
|
|
farmwareNames: string[];
|
|
firstPartyFarmwareNames: string[];
|
|
showFirstPartyFarmware: boolean;
|
|
farmwareConfigs: FarmwareConfigs;
|
|
cameraDisabled: boolean;
|
|
}
|
|
|
|
export interface StepParams {
|
|
currentSequence: TaggedSequence;
|
|
currentStep: SequenceBodyItem;
|
|
dispatch: Function;
|
|
index: number;
|
|
resources: ResourceIndex;
|
|
hardwareFlags?: HardwareFlags;
|
|
farmwareData?: FarmwareData;
|
|
shouldDisplay?: ShouldDisplay;
|
|
confirmStepDeletion: boolean;
|
|
showPins?: boolean;
|
|
expandStepOptions?: boolean;
|
|
}
|