import * as React from "react"; import { copy, remove, StepParams } from "./step_tiles"; import { Step, Sequence } from "./interfaces"; import { changeStep } from "./actions"; import { t } from "i18next"; /** Removes un-executable sequences, such as "self" or unsaved ones */ function filterSequenceList(sequences: Sequence[], sequence: Sequence) { let isSaved = (s: Sequence) => !!s.id; let notRecursive = (me: Sequence, you: Sequence) => me !== you; return sequences .filter(function(seq) { // Can't function recurseCant use unsaved sequences. return isSaved(seq) && notRecursive(sequence, seq); }); } interface SequenceSelectBoxParams { dispatch: Function; step: Step; sequence: Sequence; sequences: Sequence[]; index: number; } function SequenceSelectBox({dispatch, step, sequence, sequences, index}: SequenceSelectBoxParams) { let eligibleSequences: Sequence[] = filterSequenceList(sequences, sequence); function iter(seq: Sequence) { if (seq.id) { return ; } else { throw new Error("Sequence must have ID.") } }; function change(e: React.FormEvent) { let update = { command: { value: "0", operator: ">", variable: "time", sub_sequence_id: (e.target as any).value } }; let newStep = _.assign<{}, Step>({}, step, update); dispatch(changeStep(index, newStep)); }; let choices = eligibleSequences.map(iter); let ssid = step.command.sub_sequence_id; let subSeq = _.find(eligibleSequences, (s) => s.id === ssid) || { id: "" }; return ; } // Execute block was too complex to be kept in step_tiles.tsx. export function ExecuteBlock({dispatch, step, index, sequence, sequences}: StepParams) { // HACK: if_statement is temporarily being called "execute". // TODO: Make a "real" execute block. return (
copy({ dispatch, step }) } /> remove({ dispatch, index }) } />
); }