diff options
author | Ahmed Abbas <ahmad.helmy@orange.com> | 2020-02-28 18:18:36 +0200 |
---|---|---|
committer | KAPIL SINGAL <ks220y@att.com> | 2020-02-28 18:20:27 +0000 |
commit | 886d352ec99fe5281c281c16f8d4b9908fb0dcc3 (patch) | |
tree | ec279d227f4e58f6cfe60c6a2aa3f5b0d9c7df78 /cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts | |
parent | dc3e41335d7ceb42901b8fd4ccace72825552302 (diff) |
add designer funcionality - declarative workflow
- save source editor to store
- generate graph based on json data from source editor
- make functions retrieved from server
- prevent multible functions inside action if the first fn is not dg-generic
- dg generic case (mutli functions inside single action)
- arrange elements that are generated automcatilly using DirectedGraph lib dagree
Issue-ID: CCSDK-1779
Issue-ID: CCSDK-1783
Issue-ID: CCSDK-2017
Signed-off-by: Ahmed Abbas <ahmad.helmy@orange.com>
Change-Id: Ief3579e4a9716475c9aaf85b5a349bc2af466cdb
Diffstat (limited to 'cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts')
-rw-r--r-- | cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts | 102 |
1 files changed, 75 insertions, 27 deletions
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts index f2972d03b..c37accdb4 100644 --- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.store.ts @@ -22,7 +22,6 @@ limitations under the License. import {Injectable} from '@angular/core'; import {Store} from '../../../../common/core/stores/Store'; import {DesignerService} from './designer.service'; -import {ModelType} from './model/ModelType.model'; import {DesignerDashboardState} from './model/designer.dashboard.state'; import { DeclarativeWorkflow } from './model/designer.workflow'; import { NodeTemplate } from './model/desinger.nodeTemplate.model'; @@ -37,18 +36,6 @@ export class DesignerStore extends Store<DesignerDashboardState> { super(new DesignerDashboardState()); } - public retrieveFuntions() { - const modelDefinitionType = 'node_type'; - this.designerService.getFunctions(modelDefinitionType).subscribe( - (modelTypeList: ModelType[]) => { - console.log(modelTypeList); - this.setState({ - ...this.state, - serverFunctions: modelTypeList, - }); - }); - } - /** * adds empty workflow with name only. * called when blank action is added to the board @@ -59,37 +46,98 @@ export class DesignerStore extends Store<DesignerDashboardState> { ...this.state, template: { ...this.state.template, - workflows: - this.state.template.workflows.set(workflowName, new DeclarativeWorkflow()) + workflows: { + ...this.state.template.workflows, + [workflowName]: new DeclarativeWorkflow() + } } }); } - addStepToDeclarativeWorkFlow(workflowName: string, stepType: string) { - const currentWorkflow: DeclarativeWorkflow = this.state.template.workflows.get(workflowName); - currentWorkflow.steps = { - target: stepType, - description: '' - }; - const allNewWorkflowsMap = - this.state.template.workflows.set(workflowName, currentWorkflow); + addStepToDeclarativeWorkFlow(workflowName: string, stepName: string, stepType: string) { this.setState({ ...this.state, template: { ...this.state.template, - workflows: allNewWorkflowsMap + workflows: { + ...this.state.template.workflows, + [workflowName]: { + ...this.state.template.workflows[workflowName], + steps: { + [stepName]: { + target: stepType, + description: '' + } + } + } + } } }); } + saveSourceContent(code: string) { + const topologtTemplate = JSON.parse(code); + this.setState({ + ...this.state, + sourceContent: code, + template: topologtTemplate + }); + } + + + /** + * adding node tempates is a separate action of adding the steps to the workflow + * you can add node template and don't add workflow step when you add dependencies for the + * dg-generic function for example + */ + addNodeTemplate(nodeTemplateName: string, type: string) { + this.setState({ + ...this.state, + template: { + ...this.state.template, + node_templates: { + ...this.state.template.node_templates, + [nodeTemplateName]: new NodeTemplate(type) + } + } + }); + } + + addDgGenericNodeTemplate(nodeTemplateName: string) { + const node = new NodeTemplate('dg-generic'); + node.properties = { + 'dependency-node-template': [] + }; + this.setState({ + ...this.state, + template: { + ...this.state.template, + node_templates: { + ...this.state.template.node_templates, + [nodeTemplateName]: node + } + } + }); + } - addNodeTemplate(nodeTemplateName: string) { + addDgGenericDependency(dgGenericNodeName: string, dependency: string) { + const props = this.state.template.node_templates[dgGenericNodeName].properties; this.setState({ ...this.state, template: { ...this.state.template, - node_templates: - this.state.template.node_templates.set(nodeTemplateName, new NodeTemplate()) + node_templates: { + ...this.state.template.node_templates, + [dgGenericNodeName]: { + ...this.state.template.node_templates[dgGenericNodeName], + properties: { + 'dependency-node-template': [ + ...props['dependency-node-template'], + dependency + ] + } + } + } } }); } |