Skip to content

Commit

Permalink
Merge pull request #1091 from gabrielburnworth/staging
Browse files Browse the repository at this point in the history
Regimen parameter support
  • Loading branch information
RickCarlino committed Jan 11, 2019
2 parents 4b6a36c + 6ed190a commit 5f054bb
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 6 deletions.
6 changes: 5 additions & 1 deletion webpack/farm_designer/farm_events/edit_fe_form.tsx
Expand Up @@ -39,7 +39,7 @@ import { LocalsList } from "../../sequences/locals_list/locals_list";
import { ResourceIndex } from "../../resources/interfaces";
import { ShouldDisplay, Feature } from "../../devices/interfaces";
import {
addOrEditVarDeclaration, declarationList
addOrEditVarDeclaration, declarationList, getRegimenVariableData
} from "../../sequences/locals_list/declaration_support";
import {
AllowedDeclaration
Expand Down Expand Up @@ -185,6 +185,10 @@ export class EditFEForm extends React.Component<EditFEProps, State> {
}

get variableData() {
if (this.executable.kind === "Regimen") {
const regimenVariables = this.executable.body.body;
return getRegimenVariableData(regimenVariables, this.props.resources);
}
return this.props.resources.sequenceMetas[this.executable.uuid];
}

Expand Down
2 changes: 1 addition & 1 deletion webpack/regimens/editor/active_editor.tsx
Expand Up @@ -36,7 +36,7 @@ export function ActiveEditor(props: ActiveEditorProps) {
sequenceUuid={props.regimen.uuid}
resources={props.resources}
onChange={editRegimenDeclarations(regimenProps)(props.regimen.body.body)}
allowedDeclarations={AllowedDeclaration.variable}
allowedDeclarations={AllowedDeclaration.parameter}
shouldDisplay={props.shouldDisplay} />
<hr />
</div>
Expand Down
@@ -1,7 +1,14 @@
import { declarationList, mergeVariableDeclarations } from "../declaration_support";
import {
declarationList, mergeVariableDeclarations, getRegimenVariableData
} from "../declaration_support";
import { fakeVariableNameSet } from "../../../__test_support__/fake_variables";
import { VariableDeclaration, ParameterDeclaration } from "farmbot";
import {
VariableDeclaration, ParameterDeclaration, ScopeDeclarationBodyItem
} from "farmbot";
import { cloneDeep } from "lodash";
import {
buildResourceIndex
} from "../../../__test_support__/resource_index_builder";

describe("declarationList()", () => {
it("returns undefined", () => {
Expand Down Expand Up @@ -95,3 +102,44 @@ describe("mergeVariableDeclarations()", () => {
expect(result).toEqual(expected);
});
});

describe("getRegimenVariableData()", () => {
it("returns variable data", () => {
const declarations: ScopeDeclarationBodyItem[] = [
{
kind: "variable_declaration", args: {
label: "parent2", data_value: {
kind: "coordinate", args: { x: 1, y: 2, z: 3 }
}
}
},
{
kind: "parameter_declaration", args: {
label: "parent1", data_type: "point"
}
},
];
const result = getRegimenVariableData(declarations, buildResourceIndex().index);
expect(result).toEqual({
parent1: {
celeryNode: {
kind: "parameter_declaration",
args: { label: "parent1", data_type: "point" }
},
dropdown: { label: "Parent1", value: "?" },
vector: undefined
},
parent2: {
celeryNode: {
kind: "variable_declaration",
args: {
label: "parent2",
data_value: { kind: "coordinate", args: { x: 1, y: 2, z: 3 } }
}
},
dropdown: { label: "Coordinate (1, 2, 3)", value: "?" },
vector: { x: 1, y: 2, z: 3 }
}
});
});
});
20 changes: 18 additions & 2 deletions webpack/sequences/locals_list/declaration_support.ts
@@ -1,8 +1,9 @@
import { VariableNameSet } from "../../resources/interfaces";
import { VariableDeclaration, Dictionary } from "farmbot";
import { VariableNameSet, ResourceIndex } from "../../resources/interfaces";
import { VariableDeclaration, Dictionary, ScopeDeclarationBodyItem } from "farmbot";
import { betterCompact } from "../../util";
import { isParameterDeclaration } from "./locals_list";
import { EMPTY_COORD } from "./handle_select";
import { determineVector, determineDropdown } from "../../resources/sequence_meta";

/**
* Create default variable declarations in (execute step, farm event) body
Expand Down Expand Up @@ -56,3 +57,18 @@ export const mergeVariableDeclarations = (
.map(([k, v]) => regimenVars[k] = v);
return Object.values(regimenVars);
};

export const getRegimenVariableData = (
declarations: ScopeDeclarationBodyItem[],
resources: ResourceIndex
): VariableNameSet => {
const varData: VariableNameSet = {};
declarations.map(declaration => {
varData[declaration.args.label] = {
celeryNode: declaration,
vector: determineVector(declaration, resources),
dropdown: determineDropdown(declaration, resources),
};
});
return varData;
};

0 comments on commit 5f054bb

Please sign in to comment.