farmbot-web-frontend
Version:
Farmbot web frontend.
63 lines (57 loc) • 1.78 kB
text/typescript
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;
// };