From 886d352ec99fe5281c281c16f8d4b9908fb0dcc3 Mon Sep 17 00:00:00 2001 From: Ahmed Abbas Date: Fri, 28 Feb 2020 18:18:36 +0200 Subject: 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 Change-Id: Ief3579e4a9716475c9aaf85b5a349bc2af466cdb --- .../packages/designer/graph.generator.util.ts | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts (limited to 'cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts') diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts new file mode 100644 index 000000000..17596bd33 --- /dev/null +++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts @@ -0,0 +1,79 @@ +import { TopologyTemplate } from './model/designer.topologyTemplate.model'; +import { Injectable } from '@angular/core'; +import { GraphUtil } from './graph.util'; + +/* +============LICENSE_START========================================== +=================================================================== +Copyright (C) 2019 Orange. All rights reserved. +=================================================================== + +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the License); +you may not use this software except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============LICENSE_END============================================ +*/ + +@Injectable({ + providedIn: 'root' +}) +export class GraphGenerator { + + constructor(private graphUtil: GraphUtil) { + } + + /** + * loops over workflows + * create action element + * from steps --> create function element + * add function element to action element + */ + public populate(topologyTempalte: TopologyTemplate, + boardGraph: joint.dia.Graph) { + + Object.keys(topologyTempalte.workflows).forEach(workFlowName => { + console.log('drawing workflow item --> ', workFlowName); + + // create action element + const actionElement = + this.graphUtil.createCustomActionWithName(workFlowName, boardGraph); + + // create board function elements + const workflow = topologyTempalte.workflows[workFlowName].steps; + const stepName = Object.keys(workflow)[0]; + if (stepName) { + const functionType = workflow[stepName].target; + console.log('draw function with ', stepName, functionType); + + const functionElementForBoard = this.graphUtil.dropFunctionOverActionRelativeToParent( + actionElement, + stepName , functionType, boardGraph); + + // TODO handle dg-generic case (multi-step in the same action) + if (functionType === 'dg-generic') { + const props = topologyTempalte.node_templates[stepName].properties; + console.log('dg props', props); + props['dependency-node-template'].forEach(dependencyStepName => { + const dependencyType = topologyTempalte.node_templates[dependencyStepName].type; + console.log('dependencyType', dependencyType); + this.graphUtil.dropFunctionOverActionRelativeToParent( + actionElement, + dependencyStepName, dependencyType, boardGraph); + + }); + } + } + }); + + } + +} -- cgit 1.2.3-korg