FarmBot/Farmbot-Web-App

View on GitHub
frontend/plants/grid/interfaces.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { BotPosition } from "../../devices/interfaces";
import { DesignerState } from "../../farm_designer/interfaces";

export type PlantGridKey =
  | "startX"
  | "startY"
  | "spacingH"
  | "spacingV"
  | "numPlantsH"
  | "numPlantsV";
export type PlantGridData = Record<PlantGridKey, number>;

export interface PlantGridState {
  status: "clean" | "dirty",
  grid: PlantGridData;
  gridId: string;
  offsetPacking: boolean;
  cameraView: boolean;
  previous: string;
  autoPreview: boolean;
}

export interface PlantGridProps {
  xy_swap: boolean;
  openfarm_slug?: string;
  itemName: string;
  dispatch: Function;
  botPosition: BotPosition;
  spread?: number | undefined;
  radius?: number;
  close?: () => void;
  z?: number;
  meta?: Record<string, string | undefined>;
  designer?: DesignerState;
}

export interface PlantGridInitOption {
  grid: PlantGridData;
  gridId: string;
  offsetPacking: boolean;
  openfarm_slug?: string;
  itemName: string;
  radius?: number;
  z?: number;
  meta?: Record<string, string | undefined>;
  designer?: DesignerState;
}

interface GridInputPropsBase {
  grid: PlantGridData;
  xy_swap: boolean;
  onChange(key: PlantGridKey, value: number): void;
  preview(): void;
}

export interface GridInputProps extends GridInputPropsBase {
  disabled: boolean;
  botPosition: BotPosition;
  onUseCurrentPosition(position: Record<"x" | "y", number>): void;
  itemType: "points" | "plants";
}

export interface InputCellProps extends GridInputPropsBase {
  gridKey: PlantGridKey;
  itemType: "points" | "plants";
}