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

142 lines
3.2 KiB
TypeScript
Raw Permalink Normal View History

2019-11-25 09:08:51 -07:00
import { Color } from "farmbot/dist/corpus";
2019-12-13 14:26:57 -07:00
import { TaggedSequence } from "farmbot";
2019-12-18 12:28:15 -07:00
import { DeepPartial } from "redux";
import { Folder } from "farmbot/dist/resources/api_resources";
2019-12-19 18:30:02 -07:00
import { VariableNameSet, UUID } from "../resources/interfaces";
2019-11-25 09:08:51 -07:00
export interface FolderMeta {
open: boolean;
editing: boolean;
sequences: string[];
}
2019-11-25 19:56:02 -07:00
interface FolderUI {
2019-11-26 14:49:18 -07:00
id: number;
2019-11-25 09:08:51 -07:00
name: string;
/** We can change this to `TaggedResource` later.
* Not going to optimize prematurely -RC */
content: string[];
2019-11-26 14:49:18 -07:00
color: Color;
open: boolean;
editing: boolean;
2019-11-25 09:08:51 -07:00
}
/** A top-level directory */
2019-11-26 14:49:18 -07:00
export interface FolderNodeInitial extends FolderUI {
2019-11-25 09:08:51 -07:00
kind: "initial";
children: FolderNodeMedial[];
2019-11-25 09:08:51 -07:00
}
/** A mid-level directory. */
2019-11-26 09:15:04 -07:00
export interface FolderNodeMedial extends FolderUI {
2019-11-25 09:08:51 -07:00
kind: "medial";
2019-11-26 09:15:04 -07:00
children: FolderNodeTerminal[];
2019-11-25 09:08:51 -07:00
}
/** A leaf node on the directory tree.
* Never has a child */
2019-11-26 09:15:04 -07:00
export interface FolderNodeTerminal extends FolderUI {
2019-11-25 09:08:51 -07:00
kind: "terminal";
2019-12-06 12:45:18 -07:00
children?: undefined;
2019-11-25 09:08:51 -07:00
}
2019-11-26 14:49:18 -07:00
export type FolderUnion =
| FolderNodeInitial
| FolderNodeMedial
| FolderNodeTerminal;
2019-11-25 09:08:51 -07:00
export interface RootFolderNode {
folders: FolderNodeInitial[];
2019-12-05 09:12:14 -07:00
noFolder: string[];
2019-11-25 09:08:51 -07:00
}
2019-11-25 19:56:02 -07:00
export interface FolderNode {
2019-11-25 09:08:51 -07:00
id: number;
color: Color;
2019-11-25 11:18:22 -07:00
parent_id?: number;
2019-11-25 19:56:02 -07:00
name: string;
2019-11-25 09:08:51 -07:00
}
2019-12-13 14:26:57 -07:00
export interface FolderProps {
rootFolder: RootFolderNode;
sequences: Record<string, TaggedSequence>;
searchTerm: string | undefined;
2019-12-19 18:30:02 -07:00
dispatch: Function;
resourceUsage: Record<UUID, boolean | undefined>;
sequenceMetas: Record<UUID, VariableNameSet | undefined>;
2019-12-13 14:26:57 -07:00
}
2019-12-20 09:17:55 -07:00
export interface FolderNodeState {
settingsOpen: boolean;
}
2019-12-13 14:26:57 -07:00
export interface FolderState {
toggleDirection: boolean;
movedSequenceUuid?: string;
2019-12-21 12:47:19 -07:00
stashedUuid?: string;
2019-12-18 14:23:37 -07:00
}
2019-12-13 14:26:57 -07:00
2019-12-20 09:17:55 -07:00
export interface FolderPanelTopProps {
searchTerm: string | undefined;
toggleDirection: boolean;
toggleAll(): void;
}
2019-12-13 14:26:57 -07:00
export interface FolderNodeProps {
node: FolderUnion;
sequences: Record<string, TaggedSequence>;
movedSequenceUuid: string | undefined;
2019-12-21 12:47:19 -07:00
startSequenceMove(sequenceUuid: UUID): void;
toggleSequenceMove(sequenceUuid?: UUID): void;
2019-12-13 14:26:57 -07:00
onMoveEnd(folderId: number): void;
2019-12-19 18:30:02 -07:00
dispatch: Function;
resourceUsage: Record<UUID, boolean | undefined>;
sequenceMetas: Record<UUID, VariableNameSet | undefined>;
2019-12-13 14:26:57 -07:00
}
2019-12-23 15:38:48 -07:00
export interface FolderButtonClusterProps {
node: FolderUnion;
2019-12-21 12:47:19 -07:00
close(): void;
}
export interface FolderNameInputProps {
node: FolderUnion;
}
2019-12-13 14:26:57 -07:00
export interface FolderItemProps {
2019-12-21 12:47:19 -07:00
startSequenceMove(sequenceUuid: UUID): void;
toggleSequenceMove(sequenceUuid?: UUID): void;
2019-12-13 14:26:57 -07:00
sequence: TaggedSequence;
2019-12-21 12:47:19 -07:00
movedSequenceUuid: UUID | undefined;
2019-12-19 18:30:02 -07:00
dispatch: Function;
variableData: VariableNameSet | undefined;
inUse: boolean;
2019-12-13 14:26:57 -07:00
}
2019-12-18 12:28:15 -07:00
2019-12-21 12:47:19 -07:00
export interface SequenceDropAreaProps {
dropAreaVisible: boolean;
onMoveEnd(id: number): void;
toggleSequenceMove(sequenceUuid?: UUID): void;
folderId: number;
folderName: string;
}
export interface SequenceDropAreaState {
hovered: boolean;
}
2019-12-18 12:28:15 -07:00
export interface AddFolderBtn {
folder?: DeepPartial<Folder>;
2019-12-21 12:47:19 -07:00
close?(): void;
2019-12-18 12:28:15 -07:00
}
export interface AddSequenceProps {
folderId?: number;
2019-12-21 12:47:19 -07:00
close?(): void;
2019-12-18 12:28:15 -07:00
}
export interface ToggleFolderBtnProps {
expanded: boolean;
onClick(): void;
}