UNPKG

farmbot-web-frontend

Version:
63 lines (57 loc) 1.78 kB
import { Regimen } from "./interfaces"; import { Color } from "../interfaces"; import { RegimenItem } from "./interfaces"; /** RegimenItem, as presented by the REST API */ export interface ApiRegimenItem { id?: number; regimen_id?: number; time_offset: number; sequence_id: number; }; /** Regimen, as presented by the REST API */ export interface ApiRegimen { name: string; color: Color; regimen_items: ApiRegimenItem[]; }; /** * Transforms local Regimen object into format suitable for use with FarmBot * API's "/api/regimens" endpoint. // export function regimenItemDeserializer(input: ApiRegimenItem): RegimenItem[] { // return {}; // }; */ export function regimenSerializer(input: Regimen): ApiRegimen { const regimen = _.clone<Regimen>(input); const regimen_items = regimen .regimen_items .map<ApiRegimenItem>(function wow(r) { if (r && r.sequence && r.sequence.id) { return { time_offset: r.time_offset, sequence_id: r.sequence.id }; } else { throw new Error(`Array regimen.regimen_items may only contain objects with an "id" property.`); } }); return { name: regimen.name, color: regimen.color, regimen_items }; }; // export function regimenItemDeserializer(input: ApiRegimenItem[]): RegimenItem[] { // let output = input.map<RegimenItem>((i) => { // return { // // sequence: { // // color: Color; // // name: string; // // steps: Steps; // // }, // timeOffset: i.time_offset // }; // }); // return output; // };