summaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts
diff options
context:
space:
mode:
authorAhmed Abbas <ahmad.helmy@orange.com>2020-02-28 18:18:36 +0200
committerKAPIL SINGAL <ks220y@att.com>2020-02-28 18:20:27 +0000
commit886d352ec99fe5281c281c16f8d4b9908fb0dcc3 (patch)
treeec279d227f4e58f6cfe60c6a2aa3f5b0d9c7df78 /cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts
parentdc3e41335d7ceb42901b8fd4ccace72825552302 (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/graph.generator.util.ts')
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/graph.generator.util.ts79
1 files changed, 79 insertions, 0 deletions
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);
+
+ });
+ }
+ }
+ });
+
+ }
+
+}