summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--cds-ui/designer-client/angular.json3
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/DesignerCreationMode.ts57
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/GenericCreationMode.ts12
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreation.ts13
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationBuilder.ts24
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationModes.ts54
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/ScriptingCreationMode.ts11
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.html6
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.ts10
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html9
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts48
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts16
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/ModeType.ts5
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/metadata/MetaDataTab.model.ts15
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/template-mapping.model.ts11
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html111
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts3
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.css1
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html101
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts86
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts7
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html40
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts17
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/TemplateType.ts5
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html204
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts67
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html160
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts31
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/packages-dashboard/package-list/package-list.component.html4
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.html2
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.ts29
-rw-r--r--cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html14
-rwxr-xr-xcds-ui/designer-client/src/assets/icomoon/fonts/icomoon.eotbin5400 -> 9268 bytes
-rwxr-xr-xcds-ui/designer-client/src/assets/icomoon/fonts/icomoon.svg29
-rwxr-xr-xcds-ui/designer-client/src/assets/icomoon/fonts/icomoon.ttfbin5236 -> 9104 bytes
-rwxr-xr-xcds-ui/designer-client/src/assets/icomoon/fonts/icomoon.woffbin5312 -> 9180 bytes
-rwxr-xr-xcds-ui/designer-client/src/assets/icomoon/style.css65
-rw-r--r--cds-ui/designer-client/src/styles.css433
-rw-r--r--ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt2
-rw-r--r--ms/blueprintsprocessor/application/src/main/resources/hazelcast/hazelcast.yaml3
-rw-r--r--ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/api/DeviceInfo.kt4
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt32
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/DatabaseResourceAssignmentProcessor.kt2
-rw-r--r--ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt26
-rw-r--r--ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt10
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt24
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterUtils.kt117
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5679.yaml3
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5680.yaml3
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5681.yaml3
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5682.yaml3
-rw-r--r--ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast.yaml3
-rw-r--r--ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt2
-rw-r--r--pom.xml2
55 files changed, 1524 insertions, 422 deletions
diff --git a/README.md b/README.md
index 8513e0f98..5c7ef103a 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-## Format code with ktlint checkstyle tool use the following command
+##### Format code with ktlint checkstyle tool use the following command
-mvn process-source -P format
+`mvn process-sources -P format`
## Reference
diff --git a/cds-ui/designer-client/angular.json b/cds-ui/designer-client/angular.json
index 436a0df6d..6219bf68a 100644
--- a/cds-ui/designer-client/angular.json
+++ b/cds-ui/designer-client/angular.json
@@ -36,6 +36,7 @@
"scripts": [
"./node_modules/ace-builds/src-min/ace.js",
"./node_modules/ace-builds/src-min/theme-eclipse.js",
+ "./node_modules/ace-builds/src-min/theme-tomorrow_night_bright.js",
"./node_modules/ace-builds/src-min/mode-json.js",
"./node_modules/ace-builds/src-min/mode-javascript.js",
"./node_modules/ace-builds/src-min/mode-python.js",
@@ -49,6 +50,8 @@
"./node_modules/ace-builds/src-min/ext-beautify.js",
"./node_modules/ace-builds/src-min/ext-searchbox.js",
"./node_modules/ace-builds/src-min/ext-language_tools.js",
+ "./node_modules/ace-builds/src-min/worker-json.js",
+ "./node_modules/ace-builds/src-min/worker-javascript.js",
"./node_modules/jquery/dist/jquery.js",
"./node_modules/lodash/index.js",
"./node_modules/backbone/backbone.js",
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/DesignerCreationMode.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/DesignerCreationMode.ts
new file mode 100644
index 000000000..41b81eea3
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/DesignerCreationMode.ts
@@ -0,0 +1,57 @@
+import {PackageCreationModes} from './PackageCreationModes';
+import {CBAPackage, Scripts} from '../mapping-models/CBAPacakge.model';
+import {FilesContent} from '../mapping-models/metadata/MetaDataTab.model';
+import {Import, Metadata, VlbDefinition} from '../mapping-models/definitions/VlbDefinition';
+import {PackageCreationUtils} from '../package-creation.utils';
+
+
+export class DesignerCreationMode extends PackageCreationModes {
+
+ constructor() {
+ super();
+ }
+
+ execute(cbaPackage: CBAPackage, packageCreationUtils: PackageCreationUtils) {
+ this.addToscaMetaDataFile(cbaPackage.metaData);
+ this.createDefinitionsFolder(cbaPackage, packageCreationUtils);
+ this.addScriptsFolder(cbaPackage.scripts);
+ }
+
+ private addScriptsFolder(scripts: Scripts) {
+ scripts.files.forEach((key, value) => {
+ FilesContent.putData(key, value);
+ });
+ }
+
+ private createDefinitionsFolder(cbaPackage: CBAPackage, packageCreationUtils: PackageCreationUtils) {
+ cbaPackage.definitions.imports.forEach((key, valueOfFile) => {
+ FilesContent.putData(key, valueOfFile);
+ });
+
+ const filenameEntry = 'Definitions/vLB_CDS.json';
+ const vlbDefinition: VlbDefinition = new VlbDefinition();
+ const metadata: Metadata = new Metadata();
+
+ metadata.template_author = 'Shaaban Ebrahim';
+ metadata.template_name = cbaPackage.metaData.name;
+ metadata.template_tags = cbaPackage.metaData.tags;
+ metadata.template_version = cbaPackage.metaData.version;
+ metadata['author-email'] = 'shaaban.eltanany.ext@orange.com';
+ metadata['user-groups'] = 'test';
+ cbaPackage.definitions.metaDataTab.mapOfCustomKey.forEach((key, customKeyValue) => {
+ metadata[key] = customKeyValue;
+ });
+ vlbDefinition.metadata = metadata;
+ const files: Import[] = [];
+ cbaPackage.definitions.imports.forEach((key, valueOfFile) => {
+ files.push({file: valueOfFile});
+ });
+ console.log(vlbDefinition);
+ vlbDefinition.imports = files;
+ const value = packageCreationUtils.transformToJson(vlbDefinition);
+ FilesContent.putData(filenameEntry, value);
+ console.log('hello there');
+ console.log(FilesContent.getMapOfFilesNamesAndContent());
+
+ }
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/GenericCreationMode.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/GenericCreationMode.ts
new file mode 100644
index 000000000..58409eea8
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/GenericCreationMode.ts
@@ -0,0 +1,12 @@
+/*import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './PackageCreationModes';
+
+export class GenericCreationMode extends PackageCreationModes {
+
+ execute(cbaPackage: CBAPackage) {
+ this.addToscaMetaDataFile(cbaPackage.metaData);
+ }
+
+
+}
+*/
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreation.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreation.ts
deleted file mode 100644
index e1d28105f..000000000
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreation.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {CBAPackage} from '../mapping-models/CBAPacakge.model';
-
-export abstract class PackageCreation {
-
- abstract setModeType(cbaPackage: CBAPackage);
-
- abstract setEntryPoint(cbaPackage: CBAPackage);
-
- createToscaMetaData(cbaPackage: CBAPackage) {
-
- }
-
-}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationBuilder.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationBuilder.ts
new file mode 100644
index 000000000..08443cca1
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationBuilder.ts
@@ -0,0 +1,24 @@
+import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {ModeType} from '../mapping-models/ModeType';
+import {DesignerCreationMode} from './DesignerCreationMode';
+import {PackageCreationModes} from './PackageCreationModes';
+
+
+export class PackageCreationBuilder {
+
+ constructor() {
+ }
+
+ public static getCreationMode(cbaPackage: CBAPackage): PackageCreationModes {
+ let creationMode: PackageCreationModes;
+ /*if (cbaPackage.metaData.mode.includes(ModeType.Generic)) {
+ creationMode = new GenericCreationMode();
+ } else */
+ if (cbaPackage.metaData.mode.includes(ModeType.Designer)) {
+ creationMode = new DesignerCreationMode();
+ } /*else if (cbaPackage.metaData.mode.includes(ModeType.Scripting)) {
+ creationMode = new ScriptingCreationMode();
+ }*/
+ return creationMode;
+ }
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationModes.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationModes.ts
new file mode 100644
index 000000000..400304aab
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/PackageCreationModes.ts
@@ -0,0 +1,54 @@
+import {CBAPackage} from '../mapping-models/CBAPacakge.model';
+import {ModeType} from '../mapping-models/ModeType';
+import {FilesContent, MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
+import {PackageCreationUtils} from '../package-creation.utils';
+
+
+export abstract class PackageCreationModes {
+
+ protected constructor() {
+ }
+
+ public static setEntryPoint(metaDataTab: MetaDataTabModel) {
+ if (metaDataTab.mode.startsWith(ModeType.Designer)) {
+ metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
+ } else {
+ // TODO Not implemented
+ metaDataTab.entryFileName = '';
+ }
+ return metaDataTab;
+ }
+
+ public static mapModeType(cbaPackage: CBAPackage) {
+ if (cbaPackage.metaData.mode.startsWith('Scripting')) {
+ cbaPackage.metaData.mode = ModeType.Scripting;
+ } else if (cbaPackage.metaData.mode.startsWith('Designer')) {
+ cbaPackage.metaData.mode = ModeType.Designer;
+ } else {
+ cbaPackage.metaData.mode = ModeType.Generic;
+ }
+ return cbaPackage;
+ }
+
+ getValueOfMetaData(metaDataTab: MetaDataTabModel): string {
+ return 'TOSCA-Meta-File-Version: 1.0.0\n' +
+ 'CSAR-Version: 1.0\n' +
+ 'Created-By: Shaaban Ebrahim <shaaban.eltanany.ext@orange.con>\n' +
+ 'Entry-Definitions:' + metaDataTab.entryFileName + '\n' +
+ 'Template-Name:' + metaDataTab.name + '\n' +
+ 'Template-Version:' + metaDataTab.version + '\n' +
+ 'Template-Type: ' + metaDataTab.mode + '\n' +
+ 'Template-Tags:' + metaDataTab.tags;
+
+ }
+
+ protected addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
+ const filename = 'TOSCA-Metadata/TOSCA.meta';
+ FilesContent.putData(this.getValueOfMetaData(metaDataTab), filename);
+ }
+
+
+ abstract execute(cbaPackage: CBAPackage, packageCreationUtils: PackageCreationUtils) ;
+
+
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/ScriptingCreationMode.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/ScriptingCreationMode.ts
new file mode 100644
index 000000000..21dce171d
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/creationModes/ScriptingCreationMode.ts
@@ -0,0 +1,11 @@
+/*import {CBAPackage, Definition, Scripts} from '../mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './PackageCreationModes';
+import {FilesContent} from '../mapping-models/metadata/MetaDataTab.model';
+
+export class ScriptingCreationMode extends PackageCreationModes {
+ execute(cbaPackage: CBAPackage) {
+ }
+
+
+}
+*/
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.html
index dde21297a..6fb1dcfd8 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.html
@@ -1 +1,5 @@
-<ace-editor [(text)]="dslDefinition.content" [mode]="lang" #editor style="height:150px;"></ace-editor>
+<ace-editor [(text)]="dslDefinition.content" [mode]="'javascript'" [autoUpdateContent]="true"
+ [durationBeforeCallback]="1000" [theme]="'tomorrow_night_bright'" #editor style="height:300px;">
+</ace-editor>
+
+<!-- <app-source-editor [lang]="'javascript'" (textChanged)="textChanged($event)" [(text)]="dslDefinition.content"></app-source-editor> --> \ No newline at end of file
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.ts
index 032ba0b7f..7171e730e 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/dsl-definitions-tab/dsl-definitions-tab.component.ts
@@ -1,6 +1,6 @@
-import {Component, OnInit} from '@angular/core';
-import {DslDefinition} from '../mapping-models/CBAPacakge.model';
-import {PackageCreationStore} from '../package-creation.store';
+import { Component, OnInit } from '@angular/core';
+import { DslDefinition } from '../mapping-models/CBAPacakge.model';
+import { PackageCreationStore } from '../package-creation.store';
@Component({
selector: 'app-dsl-definitions-tab',
@@ -19,4 +19,8 @@ export class DslDefinitionsTabComponent implements OnInit {
this.packageCreationStore.changeDslDefinition(this.dslDefinition);
}
+
+ textChanged(event) {
+ console.log('event changed');
+ }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html
index 5cd888828..344e7f599 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html
@@ -39,7 +39,7 @@
<button class="btn btn-link collapsed" data-toggle="collapse"
[attr.data-target]="'#id-'+mapIndex" aria-expanded="false"
[attr.aria-controls]="'id-'+mapIndex">
- <i class="icon-file-code"></i> Definitions/{{file.key}}
+ <i class="icon-file-code"></i> {{file.key}}
</button>
<a class="accordion-delete" (click)="removeFile(mapIndex)"><i class="icon-delete"></i></a>
</h5>
@@ -47,7 +47,10 @@
<div [id]="'id-'+mapIndex" class="collapse" [attr.aria-labelledby]="'head-'+mapIndex"
data-parent="#accordion">
<div class="card-body">
- {{file.value}}
+ <ace-editor [(text)]="file.value" [mode]="'json'" [autoUpdateContent]="true"
+ [durationBeforeCallback]="1000" [theme]="'tomorrow_night_bright'" #editor
+ style="height:300px;">
+ </ace-editor>
</div>
</div>
</div>
@@ -90,7 +93,7 @@
</button>
</div>
<div class="modal-body">
- <ngx-file-drop dropZoneLabel="Drop files here" (onFileDrop)="dropped($event)"
+ <ngx-file-drop accept=".json" dropZoneLabel="Drop files here" (onFileDrop)="dropped($event)"
(onFileOver)="fileOver($event)" (onFileLeave)="fileLeave($event)">
<ng-template ngx-file-drop-content-tmp let-openFileSelector="openFileSelector">
<div class="folder-upload">
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
index a8ba164f3..106fe3090 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
@@ -1,7 +1,7 @@
-import {Component, OnInit} from '@angular/core';
-import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';
-import {PackageCreationStore} from '../package-creation.store';
-import {PackageCreationUtils} from '../package-creation.utils';
+import { Component, OnInit } from '@angular/core';
+import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';
+import { PackageCreationStore } from '../package-creation.store';
+import { PackageCreationUtils } from '../package-creation.utils';
@Component({
@@ -39,33 +39,13 @@ export class ImportsTabComponent implements OnInit {
console.log(fileEntry.name);
this.fileNames.add(fileEntry.name);
- } /*else {
- const directorEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
- this.filesUnderDirectory = directorEntry.getFile('');
- // const fileEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
- /* this.uploadedFile.push(droppedFile);
- const formData = new FormData()
- formData.append('logo', fileEntry, droppedFile.relativePath);
- console.log(formData);*/
- /* // It was a directory (empty directories are added, otherwise only files)
- const fileEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
- console.log(droppedFile.relativePath, fileEntry);
-
-
- const formData = new FormData();
- formData.append('logo', droppedFile, droppedFile.relativePath);
- console.log(formData);
-
- //this.packageCreationStore.addDefinition(droppedFile.relativePath, this.getContent(droppedFile.relativePath));
-*/
- /* }*/
+ }
}
}
removeFile(fileIndex: number) {
- console.log(this.uploadedFiles[fileIndex]);
- console.log(this.uploadedFiles);
- this.packageCreationStore.removeFileFromDefinition(this.uploadedFiles[fileIndex].name);
+ const filename = 'Definitions/' + this.uploadedFiles[fileIndex].name;
+ this.packageCreationStore.removeFileFromDefinition(filename);
this.uploadedFiles.splice(fileIndex, 1);
}
@@ -77,23 +57,13 @@ export class ImportsTabComponent implements OnInit {
console.log(event);
}
- /* readFileContent(file: File): string | ArrayBuffer {
- const fileReader = new FileReader();
- // let content: string | ArrayBuffer = '';
- fileReader.onload = (e) => {
- content = fileReader.result;
- };
- fileReader.readAsText(file);
- return content;
- }
- */
setFilesToStore() {
for (const droppedFile of this.uploadedFiles) {
droppedFile.file((file: File) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
- this.packageCreationStore.addDefinition(droppedFile.name,
- this.packageCreationUtils.transformToJson(fileReader.result));
+ this.packageCreationStore.addDefinition('Definitions/' + droppedFile.name,
+ fileReader.result.toString());
};
fileReader.readAsText(file);
});
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts
index 78a9b5212..d94a64ca3 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts
@@ -47,17 +47,33 @@ export class Scripts {
}
}
+
+export class Template {
+ public files: Map<string, string>;
+
+ constructor() {
+ this.files = new Map<string, string>();
+ }
+
+ public setTemplates(key: string, value: string) {
+ this.files.set(key, value);
+ return this;
+ }
+}
+
export class CBAPackage {
public metaData: MetaDataTabModel;
public definitions: Definition;
public scripts: Scripts;
+ public templates: Template;
constructor() {
this.definitions = new Definition();
this.scripts = new Scripts();
this.metaData = new MetaDataTabModel();
+ this.templates = new Template();
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/ModeType.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/ModeType.ts
new file mode 100644
index 000000000..d6f9a978f
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/ModeType.ts
@@ -0,0 +1,5 @@
+export enum ModeType {
+ Scripting = 'KOTLIN_SCRIPT',
+ Designer = 'DEFAULT',
+ Generic = 'GENERIC_SCRIPT'
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/metadata/MetaDataTab.model.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/metadata/MetaDataTab.model.ts
index 194e660c7..df723d58f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/metadata/MetaDataTab.model.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/metadata/MetaDataTab.model.ts
@@ -45,17 +45,6 @@ Content-Type: application/vnd.oasis.bpmn*/
export class MetaDataFile {
- static getValueOfMetaData(metaDataTab: MetaDataTabModel): string {
- return 'TOSCA-Meta-File-Version: 1.0.0\n' +
- 'CSAR-Version: 1.0\n' +
- 'Created-By: Shaaban Ebrahim <shaaban.eltanany.ext@orange.con>\n' +
- 'Entry-Definitions:' + metaDataTab.entryFileName + '\n' +
- 'Template-Name:' + metaDataTab.name + '\n' +
- 'Template-Version:' + metaDataTab.version + '\n' +
- 'Template-Type: ' + metaDataTab.mode + '\n' +
- 'Template-Tags:' + metaDataTab.tags;
-
- }
}
@@ -118,4 +107,8 @@ export class FilesContent {
public static putData(fileName: string, content: string) {
FilesContent.mapOfFilesNamesAndContent.set(fileName, content);
}
+
+ public static clear() {
+ this.mapOfFilesNamesAndContent = new Map<string, string>();
+ }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/template-mapping.model.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/template-mapping.model.ts
new file mode 100644
index 000000000..400ef21c4
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/template-mapping.model.ts
@@ -0,0 +1,11 @@
+export class Template {
+ public name: string;
+ public type: string;
+ public content: string;
+}
+export class Mapping { }
+
+export class TemplateMapping {
+ public template: Template;
+ public mapping: Mapping;
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
index a94687b37..09393c403 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
@@ -11,40 +11,62 @@
</span>
</label>
</div>
+ <div class="single-line">
+ <label class="label-name">Dictionary Library Instance</label>
+ <div class="label-input">
+ <select class="form-control" id="exampleFormControlSelect1">
+ <option>Library Instance 1</option>
+ <option>Library Instance 2</option>
+ <option>Library Instance 3</option>
+ <option>Library Instance 4</option>
+ <option>Library Instance 5</option>
+ </select>
+ </div>
+ </div>
</div>
<div class="card creat-card">
- <div class="single-line">
- <label class="label-name">Name</label>
+ <div class="single-line-model error">
+ <label class="label-name">Name <span>*</span></label>
<div class="label-input">
<input type="input"
[(ngModel)]="metaDataTab.name" placeholder="Topology name.vLB.CDS">
</div>
+ <div class="model-note-container error-message">
+ Package name already exists with this version. Please enter a different name or enter different version number.
+ </div>
</div>
- <hr/>
- <div class="single-line">
- <label class="label-name">Description</label>
- <div class="label-input">
- <input type="input" [(ngModel)]="metaDataTab.description"
- placeholder="Descripe the package">
- </div>
- </div>
- <hr/>
- <div class="single-line">
- <label class="label-name">Version</label>
+
+ <div class="single-line-model">
+ <label class="label-name">Version <span>*</span></label>
<div class="label-input">
<input type="input" [(ngModel)]="metaDataTab.version"
(input)="validatePackageNameAndVersion()"
placeholder="Example: 1.0.0">
</div>
- <div><label style="color: red">{{errorMessage}}</label></div>
+ <div class="model-note-container error-message">{{errorMessage}}</div>
</div>
- <hr/>
- <div class="single-line">
+ <div class="single-line-model">
+ <label class="label-name">Description</label>
+ <div class="label-input">
+ <input type="input" [(ngModel)]="metaDataTab.description"
+ placeholder="Descripe the package">
+ </div>
+ </div>
+
+ <div class="single-line-model">
<label class="label-name">tags</label>
<div class="label-input">
<input type="input" [(ngModel)]="metaDataTab.tags"
placeholder="Ex., vDNS-CDS">
+
+ </div>
+ <div class="model-note-container tag-notes">Seprate tags with comma or space</div>
+ <div class="model-note-container tages-container">
+ <span class="single-tage">vDNS-CDS <a href="#"> <i class="fa fa-times-circle"></i></a></span>
+ <span class="single-tage">vDNS-CDS <a href="#"> <i class="fa fa-times-circle"></i></a></span>
+ <span class="single-tage">vDNS-CDS <a href="#"> <i class="fa fa-times-circle"></i></a></span>
+ <span class="single-tage">vDNS-CDS <a href="#"> <i class="fa fa-times-circle"></i></a></span>
</div>
</div>
</div>
@@ -53,35 +75,58 @@
<div class="card creat-card">
<div class="single-line">
<h5 class="label-name">
- Custom key <a class="delete-key" (click)="deleteCustomKey($event)">Delete</a>
+ Custom key
</h5>
</div>
- <div class="single-line">
- <label class="label-name">Name</label>
+ <div class="single-custom-key">
+ <div class="single-line-custom-key">
+ <label class="label-name"><span>1-</span> Name</label>
<div class="label-input">
- <input name="key" type="input" placeholder="Enter Name">
+ <input name="key" type="input" placeholder="Enter name">
</div>
</div>
- <hr/>
- <div class="single-line">
+ <div class="single-line-custom-key">
<label class="label-name">Value</label>
<div class="label-input">
<input name="value" type="input"
- placeholder="Enter Value">
+ placeholder="Enter value">
</div>
</div>
+ <div class="single-line-custom-key-delete"><button class="custom-key-delete"><i aria-hidden="true" class="icon-delete"></i></button></div>
+ </div>
+ <div class="single-custom-key">
+ <div class="single-line-custom-key">
+ <label class="label-name"><span>2-</span> Name</label>
+ <div class="label-input">
+ <input name="key" type="input" placeholder="Enter name">
+ </div>
+ </div>
+ <div class="single-line-custom-key">
+ <label class="label-name">Value</label>
+ <div class="label-input">
+ <input name="value" type="input"
+ placeholder="Enter value">
+ </div>
+ </div>
+ <div class="single-line-custom-key-delete"><button class="custom-key-delete"><i aria-hidden="true" class="icon-delete"></i></button></div>
+ </div>
- </div>
- </div>
-</div>
-<div class="card creat-card">
- <div class="single-line">
- <div name="custom key">
- <button class="custom-key" (click)="createAnotherCustomKeyDiv()"><i
- class="fa fa-plus" aria-hidden="true"></i> Add a custom key
- </button>
-
+ <div class="single-custom-key">
+ <div class="single-line-custom-key">
+ <label class="label-name"><span>3-</span> Name</label>
+ <div class="label-input">
+ <input name="key" type="input" placeholder="Enter name">
+ </div>
+ </div>
+ <div class="single-line-custom-key">
+ <label class="label-name">Value</label>
+ <div class="label-input">
+ <input name="value" type="input"
+ placeholder="Enter value">
+ </div>
+ </div>
+ </div>
</div>
</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
index 710ca924a..97040ee90 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
@@ -14,7 +14,8 @@ export class MetadataTabComponent implements OnInit {
counter = 0;
modes: object[] = [
{name: 'Designer Mode', style: 'mode-icon icon-designer-mode'},
- {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'}];
+ {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'},
+ {name: 'Generic Script Mode', style: 'mode-icon icon-generic-script-mode'}];
private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
private errorMessage: string;
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.css b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.css
index e69de29bb..8b1378917 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.css
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.css
@@ -0,0 +1 @@
+
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html
index 73f917f52..906904855 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html
@@ -1,21 +1,27 @@
<app-header></app-header>
<div class="new-wrapper">
+ <div class="container-fluid main-container">
<header class="page-title">
<div class="row">
- <h2 class="col m-0">CBA Packages
- <span>({{numberOfPackages}} packages)</span>
+ <h2 class="col m-0">
+ <ul class="breadcrumb-header">
+ <li>CBA Packages</li>
+ <li>Package Name</li>
+ </ul>
</h2>
- <div class="col">
+ <div class="col d-flex justify-content-end header-button-save">
+ <button class="float btn btn-sm btn-outline-secondary" disabled>Discard Changes</button>
+ <button class="float btn btn-sm btn-primary" (click)="saveBluePrint()">Save</button>
</div>
</div>
</header>
- <div class="main-container">
- <div class="container-fluid body-container creat-container-all">
- <div class="creat-container">
+ <div class="container-fluid body-container">
+
+ <div class="container">
<div class="creat-action-container">
<a href="#" class="action-button">
<i class="icon-clone" aria-hidden="true"></i>
@@ -27,20 +33,81 @@
<span>Archive</span>
</a>
- <a href="#" class="action-button">
+ <a href="#" class="action-button delete">
<i class="icon-delete" aria-hidden="true"></i>
<span>Delete</span>
</a>
</div>
- <nav class="row">
- <div class="col pr-0">
- <button class="float btn btn-sm btn-primary" (click)="saveBluePrint()">Save</button>
- <button class="float btn btn-sm btn-outline-secondary" disabled>Cancel</button>
+
+ <div class="card creat-card view-package-container">
+ <div class="row">
+ <div class="col-8">
+ <div class="row">
+ <div class="col d-flex">
+ <i class="package-type-icon icon-designer-mode"></i>
+ <div class="package-name-container">
+ <div class="row">
+ <div class="col-12 package-name deployed">
+ Package Name
+ <span>.vLB.CDS</span>
+ <i class="icon-deploy"></i>
+ </div>
+ <div class="col-12 package-description">
+ Last modified Oct 4, 2019 03:48 PM By Ahmed Abbas
+ </div>
+ </div>
+ <!-- <div class="row">
+ <div class="col-4">
+ <div class="package-view-title">Author Name</div>
+ <p>Abdelmuhaimen Seaudi</p>
+ </div>
+ <div class="col-4">
+ <div class="package-view-title">Author Email</div>
+ <p>abdelmuhaimen.seaudi@orange.com</p>
+ </div>
+ <div class="col-4">
+ <div class="package-view-title">Contributions</div>
+ <ul class="package-contributers">
+ <li>
+ <button type="button" class="border-fade" data-toggle="tooltip"
+ data-placement="bottom"
+ title="User name">
+ <img src="/assets/img/img-user1.jpeg">
+ </button>
+ </li>
+ <li>
+ <button type="button" data-toggle="tooltip" data-placement="bottom"
+ title="User name">
+ <img src="/assets/img/img-user2.jpg">
+ </button>
+ </li>
+ <li>
+ <button type="button" data-toggle="tooltip" data-placement="bottom"
+ title="User name">
+ <img src="/assets/img/img-user3.jpg">
+ </button>
+ </li>
+ <li>
+ <a href="">5 contributors</a>
+ </li>
+ </ul>
+ </div>
+ </div> -->
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-4 package-view-button">
+ <button class="btn btn-sm btn-outline-secondary"><i class="fa fa-play-circle"></i> Deploy</button>
+ <button class="btn btn-sm btn-primary">Designer Mode</button>
+ </div>
</div>
- </nav>
+
+ </div>
+
<nav class="row">
<!--Nav Tabs-->
- <div class="col pr-0">
+ <div class="col">
<div class="nav nav-tabs " id="nav-tab" role="tablist">
<a class="nav-item nav-link active" id="nav-metadata-tab" data-toggle="tab"
href="#nav-metadata"
@@ -85,12 +152,16 @@
</div>
<div class="tab-pane fade" id="nav-authentication" role="tabpanel"
aria-labelledby="nav-authentication-tab">
- <app-dsl-definitions-tab></app-dsl-definitions-tab>
+ <div class="card creat-card">
+ <div class="editor-container">
+ <app-dsl-definitions-tab></app-dsl-definitions-tab>
+ </div>
+ </div>
</div>
</div>
</div>
</div>
</div>
</div>
- </div>
+</div>
</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts
index cdf8cf38b..c15a5dd4f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts
@@ -20,11 +20,15 @@ limitations under the License.
*/
import {Component, OnInit} from '@angular/core';
-import {FilesContent, FolderNodeElement, MetaDataFile, MetaDataTabModel} from './mapping-models/metadata/MetaDataTab.model';
-// import {saveAs} from 'file-saver/dist/FileSaver';
+import {FilesContent, FolderNodeElement, MetaDataTabModel} from './mapping-models/metadata/MetaDataTab.model';
+
import * as JSZip from 'jszip';
import {PackageCreationStore} from './package-creation.store';
import {Definition} from './mapping-models/CBAPacakge.model';
+import {PackageCreationModes} from './creationModes/PackageCreationModes';
+import {PackageCreationBuilder} from './creationModes/PackageCreationBuilder';
+import {PackageCreationUtils} from './package-creation.utils';
+
@Component({
selector: 'app-package-creation',
@@ -42,7 +46,10 @@ export class PackageCreationComponent implements OnInit {
private filesData: any = [];
private definition: Definition = new Definition();
- constructor(private packageCreationStore: PackageCreationStore) {
+ // adding initial referencing to designer mode
+
+
+ constructor(private packageCreationStore: PackageCreationStore, private packageCreationUtils: PackageCreationUtils) {
}
ngOnInit() {
@@ -53,17 +60,12 @@ export class PackageCreationComponent implements OnInit {
this.packageCreationStore.state$.subscribe(
cbaPackage => {
console.log(cbaPackage);
- this.metaDataTab = cbaPackage.metaData;
- this.setModeType(this.metaDataTab);
- this.setEntryPoint(this.metaDataTab);
- this.addToscaMetaDataFile(this.metaDataTab);
-
- this.definition = cbaPackage.definitions;
- this.definition.metaDataTab = cbaPackage.metaData;
- this.createDefinitionsFolder(this.definition);
- // const vlbDefinition: VlbDefinition = new VlbDefinition();
- // this.fillVLBDefinition(vlbDefinition, this.metaDataTab);
-
+ FilesContent.clear();
+ let packageCreationModes: PackageCreationModes;
+ cbaPackage = PackageCreationModes.mapModeType(cbaPackage);
+ cbaPackage.metaData = PackageCreationModes.setEntryPoint(cbaPackage.metaData);
+ packageCreationModes = PackageCreationBuilder.getCreationMode(cbaPackage);
+ packageCreationModes.execute(cbaPackage, this.packageCreationUtils);
this.filesData.push(this.folder.TREE_DATA);
this.saveBluePrintToDataBase();
});
@@ -71,29 +73,6 @@ export class PackageCreationComponent implements OnInit {
}
- private addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
- const filename = 'TOSCA-Metadata/TOSCA.meta';
- FilesContent.putData(filename, MetaDataFile.getValueOfMetaData(metaDataTab));
- }
-
-// TODO use enumerator
- private setModeType(metaDataTab: MetaDataTabModel) {
- if (metaDataTab.mode.startsWith('Scripting')) {
- metaDataTab.mode = 'KOTLIN_SCRIPT';
- } else if (metaDataTab.mode.startsWith('Designer')) {
- metaDataTab.mode = 'DEFAULT';
- } else {
- metaDataTab.mode = 'GENERIC_SCRIPT';
- }
- }
-
- private setEntryPoint(metaDataTab: MetaDataTabModel) {
- if (metaDataTab.mode.startsWith('DEFAULT')) {
- metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
- } else {
- metaDataTab.entryFileName = '';
- }
- }
saveBluePrintToDataBase() {
this.create();
@@ -105,7 +84,11 @@ export class PackageCreationComponent implements OnInit {
create() {
- this.folder.TREE_DATA.forEach((path) => {
+ FilesContent.getMapOfFilesNamesAndContent().forEach((key, value) => {
+ this.zipFile.folder(key.split('/')[0]);
+ this.zipFile.file(key, value);
+ });
+ /*this.folder.TREE_DATA.forEach((path) => {
const name = path.name;
if (path.children) {
this.zipFile.folder(name);
@@ -114,37 +97,14 @@ export class PackageCreationComponent implements OnInit {
if (FilesContent.getMapOfFilesNamesAndContent().has(name2)) {
this.zipFile.file(name + '/' + name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
} else {
+ // this.zipFile.file(name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
}
});
}
- });
+ });*/
}
- private createDefinitionsFolder(definition: Definition) {
- this.definition.imports.forEach((key, value) => {
- FilesContent.putData(key, value);
- });
-
- /*const filenameEntry = 'vLB_CDS.json';
- const vlbDefinition: VlbDefinition = new VlbDefinition();
- const metadata: MetaDataTabModel = new MetaDataTabModel();
-
- metadata.templateAuthor = ' lldkslds';
- metadata.templateName = ' lldkslds';
- metadata.templateTags = ' lldkslds';
- metadata.templateVersion = ' lldkslds';
- metadata['author-email'] = ' lldkslds';
- metadata['user-groups'] = ' lldkslds';
- vlbDefinition.metadata = metadata;
-
- vlbDefinition.imports = [{
- file: 'Definitions/data_types.json'
- }];
-
- const value = this.packageCreationUtils.transformToJson(vlbDefinition);
- FilesContent.putData(filenameEntry, value);*/
- }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts
index 3e37952b2..3dae2e570 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts
@@ -86,4 +86,11 @@ export class PackageCreationStore extends Store<CBAPackage> {
saveBluePrint(blob) {
this.packageCreationService.savePackage(blob);
}
+
+ addTemplate(filePath: string, fileContent: string) {
+ this.setState({
+ ...this.state,
+ templates: this.state.templates.setTemplates(filePath, fileContent)
+ });
+ }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
index 1685b7eaf..824152035 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
@@ -5,7 +5,7 @@
<a class="enter-link" href="#"><i class="icon-enter"></i></a>
</div>
<span class="import-container-span">Or you can also <a data-target="#scriptsModal" data-toggle="modal"
- href="#">Import File</a></span>
+ href="#">Import File</a></span>
</div>
@@ -15,23 +15,25 @@
<label class="label-name">File</label>
</div>
</div>
- <div *ngFor="let file of scriptsFiles | keyvalue; let mapIndex = index" id="accordion">
+ <div *ngFor="let file of scriptsFiles | keyvalue; let mapIndex = index" id="accordion-script">
<div class="card">
- <div [id]="'head-'+mapIndex" class="card-header">
+ <div [id]="'head-script-'+mapIndex" class="card-header">
<h5 class="mb-0 d-flex justify-content-between">
- <button [attr.aria-controls]="'id-'+mapIndex" [attr.data-target]="'#id-'+mapIndex"
- aria-expanded="false" class="btn btn-link collapsed"
- data-toggle="collapse">
- <i class="icon-file-code"></i> Definitions/{{file.key}}
+ <button [attr.aria-controls]="'id-script-'+mapIndex" [attr.data-target]="'#id-script-'+mapIndex"
+ aria-expanded="false" class="btn btn-link collapsed" data-toggle="collapse">
+ <i class="icon-file-code"></i> {{file.key}}
</button>
<a (click)="removeFile(mapIndex)" class="accordion-delete"><i class="icon-delete"></i></a>
</h5>
</div>
- <div [attr.aria-labelledby]="'head-'+mapIndex" [id]="'id-'+mapIndex" class="collapse"
- data-parent="#accordion">
+ <div [attr.aria-labelledby]="'head-script-'+mapIndex" [id]="'id-script-'+mapIndex" class="collapse"
+ data-parent="#accordion-script">
<div class="card-body">
- {{file.value}}
+ <ace-editor [(text)]="file.value" [mode]="'kotlin'" [autoUpdateContent]="true"
+ [durationBeforeCallback]="1000" [theme]="'tomorrow_night_bright'" #editor
+ style="height:300px;">
+ </ace-editor>
</div>
</div>
</div>
@@ -42,7 +44,7 @@
</div>
<div aria-hidden="true" aria-labelledby="scriptsModalLabel" class="modal fade" id="scriptsModal" role="dialog"
- tabindex="-1">
+ tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
@@ -52,11 +54,11 @@
</button>
</div>
<div class="modal-body">
- <ngx-file-drop (onFileDrop)="dropped($event)" (onFileLeave)="fileLeave($event)"
- (onFileOver)="fileOver($event)" dropZoneLabel="Drop files here">
+ <ngx-file-drop accept=".kt" (onFileDrop)="dropped($event)" (onFileLeave)="fileLeave($event)"
+ (onFileOver)="fileOver($event)" dropZoneLabel="Drop files here">
<ng-template let-openFileSelector="openFileSelector" ngx-file-drop-content-tmp>
<div class="folder-upload">
- <img src="assets/img/folder-upload.svg"/>
+ <img src="assets/img/folder-upload.svg" />
</div>
<div class="folder-upload-text">
Drag & Drop file
@@ -72,16 +74,16 @@
<div *ngFor="let item of uploadedFiles; let i=index" class="upload-table">
<table class="table">
<thead>
- <tr>
- <th>Name : {{ item.name }}</th>
- </tr>
+ <tr>
+ <th>Name : {{ item.name }}</th>
+ </tr>
</thead>
</table>
</div>
</div>
<div class="modal-footer">
<button (click)="resetTheUploadedFiles()" class="btn btn-sm btn-secondary" data-dismiss="modal"
- type="button">Cancel
+ type="button">Cancel
</button>
<button (click)="setFilesToStore()" class="btn btn-sm btn-primary" data-dismiss="modal" type="button">
Import
@@ -89,4 +91,4 @@
</div>
</div>
</div>
-</div>
+</div> \ No newline at end of file
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
index 43b9b503c..eee291bba 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
@@ -1,7 +1,9 @@
-import {Component, OnInit} from '@angular/core';
-import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';
-import {PackageCreationStore} from '../package-creation.store';
-import {PackageCreationUtils} from '../package-creation.utils';
+import { Component, OnInit } from '@angular/core';
+import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';
+import { PackageCreationStore } from '../package-creation.store';
+import { PackageCreationUtils } from '../package-creation.utils';
+import 'ace-builds/src-noconflict/ace';
+import 'ace-builds/webpack-resolver';
@Component({
selector: 'app-scripts-tab',
@@ -43,7 +45,8 @@ export class ScriptsTabComponent implements OnInit {
removeFile(fileIndex: number) {
console.log(this.uploadedFiles[fileIndex]);
- this.packageCreationStore.removeFileFromState(this.uploadedFiles[fileIndex].name);
+ const filename = 'Scripts/' + this.uploadedFiles[fileIndex].name;
+ this.packageCreationStore.removeFileFromState(filename);
this.uploadedFiles.splice(fileIndex, 1);
}
@@ -61,8 +64,8 @@ export class ScriptsTabComponent implements OnInit {
droppedFile.file((file: File) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
- this.packageCreationStore.addScripts(droppedFile.name,
- this.packageCreationUtils.transformToJson(fileReader.result));
+ this.packageCreationStore.addScripts('Scripts/' + droppedFile.name,
+ fileReader.result.toString());
};
fileReader.readAsText(file);
});
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/TemplateType.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/TemplateType.ts
new file mode 100644
index 000000000..17a4bfae6
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/TemplateType.ts
@@ -0,0 +1,5 @@
+export enum TemplateType {
+ Velocity = 'vtl',
+ Koltin = 'kt',
+ Jinja = 'Unknown'
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html
index f6afb4929..3c92bc7c7 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.html
@@ -1,64 +1,12 @@
<h6 class="create-title">CREATE</h6>
<div class="card creat-card">
- <div class="single-line">
- <label class="label-name">Name</label>
- <div class="label-input">
- <input type="input" placeholder="Topology name.vLB.CDS">
- </div>
- </div>
- <hr />
- <div class="single-line">
- <label class="label-name">Management Type</label>
- <div class="label-input">
- <div class="row">
- <div class="col-md-4 d-flex">
- <a class="select-type active" href="#">
- <div class="select-type-icon"><span class="icon-template-mapping"></span></div>
- <div>Template And Support Mapping</div>
- </a>
- </div>
- <div class="col-md-4 d-flex">
- <a class="select-type" href="#">
- <div class="select-type-icon"><span class="icon-template"></span></div>
- <div>Template Only</div>
- </a>
- </div>
- <div class="col-md-4 d-flex">
- <a class="select-type" href="#">
- <div class="select-type-icon"><span class="icon-mapping"></span></div>
- <div>Mapping Only</div>
- </a>
-
- </div>
- </div>
+ <div class="single-line-model">
+ <label class="label-name">Name
+ <span _ngcontent-uew-c3="">*</span>
+ </label>
- </div>
- </div>
- <hr />
- <div class="single-line">
- <label class="label-name">Type</label>
<div class="label-input">
- <label name="trst">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value=Velcoity>
-
- <span>
- Velcoity
- </span>
- </label>
- <label name="trst">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value=Velcoity>
-
- <span>
- Jinja
- </span>
- </label>
- <label name="trst">
- <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value=Velcoity>
-
- <span>
- Kotlin
- </span>
- </label>
+ <input type="input" [(ngModel)]="fileName" placeholder="Topology name.vLB.CDS">
</div>
</div>
</div>
@@ -69,7 +17,7 @@
<div class="card-header" id="headingOne">
<h5 class="mb-0 d-flex justify-content-between">
<button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true"
- aria-controls="collapseOne">
+ aria-controls="collapseOne">
1. Create Template
</button>
@@ -78,13 +26,42 @@
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
<div class="card-body">
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3
- wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum
- eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla
- assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt
- sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer
- farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus
- labore sustainable VHS.
+ <div class="single-line">
+ <label class="label-name">Template Type</label>
+ <div class="label-input">
+ <label name="trst">
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1"
+ value=Velcoity>
+
+ <span>
+ Velcoity
+ </span>
+ </label>
+ <label name="trst">
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1"
+ value=Velcoity>
+
+ <span>
+ Jinja
+ </span>
+ </label>
+ <label name="trst">
+ <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1"
+ value=Velcoity>
+
+ <span>
+ Kotlin
+ </span>
+ </label>
+ </div>
+ </div>
+ <div class="create-template-import">Use the editor to add parameters or you can also <a href="#"
+ data-toggle="modal"
+ data-target="#exampleModal">Import
+ File</a></div>
+ <div class="editor-container">
+ <app-dsl-definitions-tab></app-dsl-definitions-tab>
+ </div>
</div>
</div>
</div>
@@ -92,22 +69,101 @@
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseTwo"
- aria-expanded="false" aria-controls="collapseTwo">
+ aria-expanded="false" aria-controls="collapseTwo">
2. Manage Mapping
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
<div class="card-body">
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3
- wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum
- eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla
- assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt
- sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer
- farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus
- labore sustainable VHS.
+ <h6 class="text-center">Select a source to load config parameters</h6>
+ <div class="text-center">
+ <a href="#" class="mapping-source-load">
+ <i class="icon-current-template"></i>
+ <br/>
+ <span>Use Current Template Instance</span>
+ </a>
+ <a href="#" data-toggle="modal" data-target="#exampleModal" class="mapping-source-load">
+ <i class="icon-Upload-attribute"></i>
+ <br/>
+ <div>Upload attribute list</div>
+ <div class="source-load-note">(Should be comma delimited file)</div>
+ </a>
+ <!-- <a href="#" class="mapping-source-load">
+ <i class="icon-import-cds"></i>
+ <br/>
+ <span>Import from SDC Model</span>
+ </a> -->
+ </div>
+
+ <div class="table-container">
+
+
+ </div>
</div>
+
+
</div>
+
+
+ </div>
+
+ <div class="template-mapping-action">
+ <button class="btn btn-sm btn-outline-secondary">Cancel</button>
+ <button class="btn btn-sm btn-primary">Finish</button>
</div>
</div>
-</div> \ No newline at end of file
+</div>
+
+
+<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
+ aria-hidden="true">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title" id="exampleModalLabel">Import File</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <ngx-file-drop dropZoneLabel="Drop files here" (onFileDrop)="dropped($event)"
+ (onFileOver)="fileOver($event)" (onFileLeave)="fileLeave($event)">
+ <ng-template ngx-file-drop-content-tmp let-openFileSelector="openFileSelector">
+ <div class="folder-upload">
+ <img src="assets/img/folder-upload.svg"/>
+ </div>
+ <div class="folder-upload-text">
+ Drag & Drop file
+ </div>
+ <div class="folder-upload-text">or
+ <button type="button" class="btn btn-sm btn-primary" (click)="openFileSelector()">Browse
+ Files
+ </button>
+ </div>
+ <div class="folder-upload-type">Allowed file type: json</div>
+ </ng-template>
+ </ngx-file-drop>
+ <div class="upload-table" *ngFor="let item of uploadedFiles; let i=index">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Name : {{ item.name }}</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
+ </div>
+
+ <div class="modal-footer">
+ <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal"
+ (click)="resetTheUploadedFiles()">Cancel
+ </button>
+ <button type="button" class="btn btn-sm btn-primary" data-dismiss="modal"
+ (click)="setFilesToStore()">
+ Import
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts
index 3a938c5ae..752bd510b 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-creation/templ-mapp-creation.component.ts
@@ -1,15 +1,68 @@
-import { Component, OnInit } from '@angular/core';
+import {Component, EventEmitter, OnInit, Output} from '@angular/core';
+import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';
+import {PackageCreationStore} from '../../package-creation.store';
@Component({
- selector: 'app-templ-mapp-creation',
- templateUrl: './templ-mapp-creation.component.html',
- styleUrls: ['./templ-mapp-creation.component.css']
+ selector: 'app-templ-mapp-creation',
+ templateUrl: './templ-mapp-creation.component.html',
+ styleUrls: ['./templ-mapp-creation.component.css']
})
export class TemplMappCreationComponent implements OnInit {
- constructor() { }
+ public uploadedFiles: FileSystemFileEntry[] = [];
+ private fileNames: Set<string> = new Set();
- ngOnInit() {
- }
+ public files: NgxFileDropEntry[] = [];
+ fileName: any;
+ constructor(private packageCreationStore: PackageCreationStore) {
+ }
+
+ ngOnInit() {
+ }
+
+ public dropped(files: NgxFileDropEntry[]) {
+ this.files = files;
+ for (const droppedFile of files) {
+ // Is it a file? & Not added before
+ if (droppedFile.fileEntry.isFile && !this.fileNames.has(droppedFile.fileEntry.name)) {
+ const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;
+ this.uploadedFiles.push(fileEntry);
+ this.fileNames.add(fileEntry.name);
+
+ }
+ }
+ }
+
+ removeFile(fileIndex: number) {
+ /*const filename = 'Definitions/' + this.uploadedFiles[fileIndex].name;
+ this.packageCreationStore.removeFileFromDefinition(filename);
+ this.uploadedFiles.splice(fileIndex, 1);*/
+ }
+
+ setFilesToStore() {
+ for (const droppedFile of this.uploadedFiles) {
+ droppedFile.file((file: File) => {
+ const fileReader = new FileReader();
+ fileReader.onload = (e) => {
+ this.packageCreationStore.addTemplate('Templates/' + this.fileName,
+ fileReader.result.toString());
+ };
+ fileReader.readAsText(file);
+ });
+
+ }
+ }
+
+ public fileOver(event) {
+ console.log(event);
+ }
+
+ public fileLeave(event) {
+ console.log(event);
+ }
+
+ resetTheUploadedFiles() {
+ this.uploadedFiles = [];
+ }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html
index ef233ad99..ddf06c824 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.html
@@ -1,6 +1,156 @@
-<h6>Basic List Template and mapping</h6>
-<div>
- <a (click)="openCreationView()" class="action-button">
- <span>Create</span>
+
+
+ <a (click)="openCreationView()" class="create-template-mapping-button">
+ <i class="fa fa-plus"></i> <span>Create</span>
</a>
-</div> \ No newline at end of file
+
+
+<div class="template-mapping-accordion">
+ <div id="accordion">
+ <div class="card">
+ <div class="card-header" id="headingThree">
+ <h5 class="mb-0 d-flex justify-content-between">
+ <button class="btn btn-link" data-toggle="collapse" data-target="#collapseThree" aria-expanded="true"
+ aria-controls="collapseThree">
+ Template and Mapping List
+ </button>
+
+ </h5>
+ </div>
+
+ <div id="collapseThree" class="collapse show" aria-labelledby="headingThree" data-parent="#accordion">
+ <div class="card-body max-height-list" *ngFor="let file of templates.files | keyvalue; let mapIndex = index">
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list active">{{file.key}}
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ <!-- <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Mapping</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ </a>
+ </div>-->
+ </div>
+ <!-- <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Mapping</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Mapping</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Mapping</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Mapping</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ </a>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <a href="#" class="template-mapping-list">hostname
+
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-1
+ <span>Template</span>
+ </a>
+ </div>
+ <div class="col">
+ <a href="#" class="template-mapping-list">vf-module-2
+ <span>Mapping</span>
+ <span>Template</span>
+ </a>
+ </div>
+ </div>-->
+ </div>
+ </div>
+ </div>
+
+ </div>
+</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts
index 525e58128..5cb41c35e 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/template-mapping/templ-mapp-listing/templ-mapp-listing.component.ts
@@ -1,20 +1,29 @@
-import { Component, OnInit, Output, EventEmitter } from '@angular/core';
+import {Component, EventEmitter, OnInit, Output} from '@angular/core';
+import {PackageCreationStore} from '../../package-creation.store';
+import {Template} from '../../mapping-models/CBAPacakge.model';
@Component({
- selector: 'app-templ-mapp-listing',
- templateUrl: './templ-mapp-listing.component.html',
- styleUrls: ['./templ-mapp-listing.component.css']
+ selector: 'app-templ-mapp-listing',
+ templateUrl: './templ-mapp-listing.component.html',
+ styleUrls: ['./templ-mapp-listing.component.css']
})
export class TemplMappListingComponent implements OnInit {
- @Output() showCreationViewParentNotification = new EventEmitter<any>();
+ @Output() showCreationViewParentNotification = new EventEmitter<any>();
+ private templates: Template;
- constructor() { }
+ constructor(private packageCreationStore: PackageCreationStore) {
+ this.packageCreationStore.state$.subscribe(cba => {
+ if (cba.templates) {
+ this.templates = cba.templates;
+ }
+ });
+ }
- ngOnInit() {
- }
+ ngOnInit() {
+ }
- openCreationView() {
- this.showCreationViewParentNotification.emit('tell parent to open create views');
- }
+ openCreationView() {
+ this.showCreationViewParentNotification.emit('tell parent to open create views');
+ }
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/packages-dashboard/package-list/package-list.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/packages-dashboard/package-list/package-list.component.html
index f45b2fed7..7f6c0a6f4 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/packages-dashboard/package-list/package-list.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/packages-dashboard/package-list/package-list.component.html
@@ -7,11 +7,11 @@
</div>
<div class="card-footer row">
<div class="col">
- <a routerLink="/packages/createPackage" role="button" aria-pressed="true" class="btn-create-package float">Create Package
+ <a routerLink="/packages/createPackage" role="button" aria-pressed="true" class="btn-create-package float">Create
</a>
</div>
<div class="col">
- <a href="#" role="button" aria-pressed="true" class="btn-import-package float">Import Package
+ <a href="#" role="button" aria-pressed="true" class="btn-import-package float">Import
</a>
</div>
</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.html
index 24423cfac..2f647f9b9 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.html
@@ -1 +1 @@
-<ace-editor (textChanged)="onChange($event)" [(text)]="Data" [mode]="lang" #editor style="height:150px;"></ace-editor>
+<ace-editor (textChanged)="onChange($event)" [(text)]="text" [mode]="lang" #editor style="height:150px;"></ace-editor> \ No newline at end of file
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.ts
index a63dfa7e0..8f4c376a3 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/source-editor/source-editor.component.ts
@@ -1,4 +1,5 @@
-import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
+import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
+import { AceEditorComponent } from 'ng2-ace-editor';
// import 'brace/ext/searchbox';
// import 'ace-builds/webpack-resolver';
// import 'brace';
@@ -13,12 +14,10 @@ import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild
export class SourceEditorComponent implements OnInit, AfterViewInit {
- @Input() Data: string;
- @Output() DataChange = new EventEmitter();
+ @Input() text: string;
+ @Output() textChange = new EventEmitter();
@Input() lang: string;
- mode = 'json';
- @ViewChild('editor', {static: false}) editor;
- text = '';
+ @ViewChild('editor', { static: false }) editor: AceEditorComponent;
ngOnInit(): void {
// throw new Error("Method not implemented.");
@@ -26,10 +25,18 @@ export class SourceEditorComponent implements OnInit, AfterViewInit {
ngAfterViewInit() {
- this.editor.setTheme('eclipse');
+ console.log(this.lang);
+ this.editor.setTheme('eclipse');
this.editor.getEditor().setOptions({
- enableBasicAutocompletion: true
+ enableBasicAutocompletion: true,
+ // fontSize: '14pt',
+ // maxLines: 4096,
+ // behavioursEnabled: true,
+ // wrapBehavioursEnabled: true,
+ // showPrintMargin: true,
+ // indentedSoftWrap: true,
+ // wrap: true,
});
this.editor.getEditor().commands.addCommand({
@@ -41,9 +48,7 @@ export class SourceEditorComponent implements OnInit, AfterViewInit {
});
}
- onChange($event: {}) {
- console.log('editor action');
- console.log(this.Data);
- console.log($event);
+ onChange(editor) {
+ this.textChange.emit(this.text);
}
}
diff --git a/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html b/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
index 24b492ffb..f57ab100b 100644
--- a/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
+++ b/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
@@ -8,21 +8,21 @@
<a routerLink="packages/list">Packages</a>
<span class="icon">
<!-- <i class="fa fa-dashboard"></i> -->
- <img src="../assets/img/icon-nav-packages.svg">
+ <i class="icon-package"></i>
</span>
</li>
<li class="menu-hasdropdown">
<a href="#">Data Dictionary</a>
<span class="icon">
- <img src="../assets/img/icon-nav-dictionary.svg">
+ <i class="icon-dictionary"></i>
</span>
- <label title="toggle menu" for="settings">
+ <!-- <label title="toggle menu" for="settings">
<span class="downarrow">
<i class="fa fa-caret-down"></i>
</span>
</label>
<input type="checkbox" class="sub-menu-checkbox" id="settings" />
- <ul class="sub-menu-dropdown">
+ <ul class="sub-menu-dropdown">
<li>
<a href="">Link</a>
</li>
@@ -33,7 +33,7 @@
<a href="">Link</a>
</li>
</ul>
- </li>
+ </li> -->
<!-- <li>
<a href="#">Favourites</a>
<span class="icon">
@@ -53,7 +53,7 @@
<div class="dropdown">
<input class="dropdown-toggle" type="text">
<div class="dropdown-text">User name</div>
- <ul class="dropdown-content">
+ <!-- <ul class="dropdown-content">
<li>
<a href="#">Settings</a>
</li>
@@ -63,7 +63,7 @@
<li>
<a href="#">Log out</a>
</li>
- </ul>
+ </ul> -->
</div>
</li>
</ul>
diff --git a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.eot b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.eot
index b04c6c41e..b21dc0253 100755
--- a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.eot
+++ b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.eot
Binary files differ
diff --git a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.svg b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.svg
index 22693eb7a..af56e61c0 100755
--- a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.svg
+++ b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.svg
@@ -7,15 +7,22 @@
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="0" d="" />
-<glyph unicode="&#xe900;" glyph-name="clone" horiz-adv-x="830" d="M205.943 684.214c16.494 0 29.864 13.274 29.864 29.652v202.771h249.198c16.494 0 29.871-13.274 29.871-29.659v-136.986h-81.325c-8.034 0-15.633-3.229-21.148-8.698l-234.083-232.43c-5.253-5.209-8.761-12.739-8.761-20.953v-367.34h-137.965c-16.502 0-29.871 13.282-29.871 29.659v533.986h204.219zM176.072 874.7v-131.175h-132.112zM463.4 487.909v202.771h249.176c16.502 0 29.871-13.282 29.871-29.659v-690.013c0-16.385-13.369-29.659-29.871-29.659h-453.41c-16.494 0-29.871 13.274-29.871 29.659v487.242h204.242c16.487 0 29.864 13.267 29.864 29.659zM403.665 517.568h-132.112l132.112 131.153zM685.427 892.834v67.166l-90.194-89.555 90.194-89.555v67.166c49.734 0 90.194-40.174 90.194-89.555v-44.777h45.097v44.777c0 74.072-60.693 134.332-135.292 134.332z" />
-<glyph unicode="&#xe901;" glyph-name="delete" d="M170.667 49.778c0-62.578 51.2-113.778 113.778-113.778h455.111c62.578 0 113.778 51.2 113.778 113.778v682.667h-682.667v-682.667zM910.222 903.111h-199.111l-56.889 56.889h-284.444l-56.889-56.889h-199.111v-113.778h796.444v113.778z" />
-<glyph unicode="&#xe902;" glyph-name="designer-mode" d="M1024 793.672c0 71.312-58.064 129.328-129.434 129.328h-765.132c-71.37 0-129.434-58.016-129.434-129.328v-530.574c0-32.88 12.344-62.934 32.646-85.778-19.814-14.932-32.646-38.648-32.646-65.302 0-76.654 62.414-139.018 139.132-139.018h745.734c76.718 0 139.132 62.364 139.132 139.018 0 26.654-12.832 50.37-32.646 65.302 20.304 22.844 32.648 52.898 32.648 85.778zM60 793.672c0 38.228 31.148 69.328 69.434 69.328h765.132c38.286 0 69.434-31.1 69.434-69.328v-530.574c0-38.228-31.148-69.328-69.434-69.328h-203.372c-27.154 0-49.246-22.084-49.246-49.226 0-8.080-6.596-14.654-14.702-14.654h-230.492c-8.106 0-14.702 6.574-14.702 14.654 0 27.142-22.092 49.226-49.246 49.226h-203.372c-38.286 0-69.434 31.1-69.434 69.328zM884.868 33h-745.736c-43.634 0-79.132 35.448-79.132 79.018 0 11.994 9.784 21.752 21.806 21.752h241.022c5.242-36.078 36.396-63.878 73.926-63.878h230.492c37.53 0 68.684 27.802 73.926 63.878h241.022c12.024 0 21.806-9.758 21.806-21.752 0-43.57-35.498-79.018-79.132-79.018zM597.9 290.358c2.062-8.968 8.128-16.494 16.456-20.416 4.050-1.908 8.416-2.86 12.782-2.86 4.608 0 9.21 1.060 13.438 3.178l95.882 48.032c6.012 3.012 10.838 7.956 13.704 14.040l152.756 324.352c22.62 48.028 1.948 105.504-46.082 128.124h0.002c-23.268 10.958-49.408 12.2-73.606 3.496-24.202-8.704-43.562-26.31-54.52-49.576l-152.758-324.352c-2.866-6.084-3.604-12.954-2.096-19.508zM803.536 731.846c9.118 3.278 18.97 2.812 27.734-1.318h0.002c18.096-8.524 25.886-30.18 17.364-48.278l-14.16-30.064-65.642 30.916 14.16 30.064c4.128 8.766 11.422 15.4 20.542 18.68zM743.268 628.82l65.644-30.914-108.612-230.616-52.482-26.292-13.16 57.208zM161.846 267.084h290.574c16.568 0 30 13.432 30 30v234.358c0 16.568-13.432 30-30 30h-290.574c-16.568 0-30-13.432-30-30v-234.358c0-16.568 13.432-30 30-30zM191.846 501.442h230.574v-174.358h-230.574zM161.846 730.892h371.668c16.568 0 30 13.432 30 30s-13.432 30-30 30h-371.668c-16.568 0-30-13.432-30-30s13.432-30 30-30zM161.846 630.892h281.668c16.568 0 30 13.432 30 30s-13.432 30-30 30h-281.668c-16.568 0-30-13.432-30-30s13.432-30 30-30z" />
-<glyph unicode="&#xe903;" glyph-name="scripting-mode" d="M407.383 250.611c-0.418 2.89-1.966 5.494-4.302 7.243l-118.568 88.668 118.568 88.668c2.337 1.749 3.884 4.353 4.302 7.243 0.415 2.89-0.33 5.825-2.082 8.168l-18.836 25.185c-3.645 4.869-10.539 5.866-15.408 2.22l-164.036-122.669c-2.777-2.076-4.416-5.343-4.416-8.816s1.639-6.74 4.416-8.816l164.036-122.669c1.975-1.481 4.29-2.192 6.583-2.192 3.353 0 6.664 1.522 8.825 4.412l18.836 25.185c1.749 2.343 2.497 5.277 2.082 8.168zM816.975 355.338l-164.030 122.669c-4.869 3.642-11.762 2.645-15.404-2.22l-18.836-25.185c-1.749-2.34-2.497-5.277-2.082-8.168 0.418-2.887 1.963-5.494 4.302-7.243l118.565-88.668-118.565-88.668c-2.34-1.749-3.884-4.356-4.302-7.243-0.415-2.89 0.33-5.828 2.082-8.168l18.836-25.185c2.164-2.89 5.472-4.412 8.825-4.412 2.293 0 4.604 0.714 6.583 2.192l164.030 122.669c2.777 2.076 4.416 5.343 4.416 8.816s-1.642 6.74-4.419 8.816zM617.258 543.483l-28.969 12.25c-2.686 1.139-5.718 1.157-8.426 0.063-2.705-1.098-4.865-3.224-6.001-5.913l-172.977-409.119c-2.368-5.598 0.252-12.058 5.853-14.426l28.969-12.25c1.368-0.582 2.827-0.868 4.287-0.868 1.406 0 2.812 0.27 4.139 0.808 2.705 1.098 4.862 3.224 6.001 5.913l172.977 409.119c2.365 5.598-0.255 12.055-5.853 14.423zM968.962 933.384h-913.924c-30.346 0-55.038-24.692-55.038-55.038v-860.691c0-30.346 24.692-55.038 55.038-55.038h913.924c30.346 0 55.038 24.692 55.038 55.038v860.691c0 30.35-24.692 55.038-55.038 55.038zM860.058 848.993c25.145 0 45.603-20.458 45.603-45.603s-20.458-45.603-45.603-45.603c-25.145 0-45.603 20.458-45.603 45.603s20.458 45.603 45.603 45.603zM705.414 848.993c25.145 0 45.603-20.458 45.603-45.603s-20.458-45.603-45.603-45.603c-25.145 0-45.603 20.458-45.603 45.603s20.458 45.603 45.603 45.603zM139.637 826.977h183.985c13.027 0 23.588-10.558 23.588-23.588s-10.561-23.588-23.588-23.588h-183.985c-13.027 0-23.588 10.558-23.588 23.588s10.561 23.588 23.588 23.588zM936.58 57.984c0-3.956-3.221-7.18-7.183-7.18h-834.794c-3.96 0-7.183 3.224-7.183 7.18v592.746h849.161v-592.746z" />
-<glyph unicode="&#xe904;" glyph-name="archive" d="M945.238 644.924h-866.463c-10.674 0-19.905-3.895-27.697-11.691-7.796-7.792-11.691-17.024-11.691-27.691v-590.772c0-10.665 3.895-19.901 11.691-27.691 7.792-7.796 17.024-11.7 27.697-11.7h866.463c10.667 0 19.893 3.904 27.691 11.7 7.79 7.788 11.685 17.024 11.685 27.691v590.772c0 10.674-3.88 19.897-11.685 27.691-7.79 7.796-17.024 11.691-27.691 11.691zM618.454 459.694c-7.788-7.794-17.024-11.691-27.691-11.691h-157.539c-10.661 0-19.893 3.899-27.691 11.691-7.792 7.796-11.691 17.024-11.691 27.697 0 10.665 3.899 19.897 11.691 27.691 7.796 7.796 17.028 11.695 27.691 11.695h157.554c10.659 0 19.888-3.899 27.691-11.695 7.79-7.792 11.685-17.024 11.685-27.691 0-10.672-3.904-19.901-11.7-27.697zM1012.32 908.927c-7.798 7.796-17.024 11.691-27.693 11.691h-945.242c-10.665 0-19.897-3.895-27.691-11.691-7.794-7.792-11.693-17.024-11.693-27.691v-157.539c0-10.665 3.899-19.893 11.695-27.691 7.794-7.796 17.024-11.691 27.691-11.691h945.227c10.665 0 19.901 3.895 27.706 11.691 7.788 7.796 11.682 17.024 11.682 27.691v157.539c0 10.674-3.895 19.899-11.682 27.691z" />
-<glyph unicode="&#xe905;" glyph-name="enter" d="M677.571 437.241h-644.248c-18.395 0-33.323 14.929-33.323 33.323s14.929 33.323 33.323 33.323h644.248c18.395 0 33.323-14.929 33.323-33.323s-14.929-33.323-33.323-33.323zM499.849 259.519c-8.534 0-17.060 3.238-23.552 9.771-13.017 13.017-13.017 34.121 0 47.146l154.177 154.169-154.177 154.177c-13.017 13.017-13.017 34.129 0 47.146 13.025 13.017 34.129 13.017 47.146 0l177.722-177.73c13.017-13.017 13.017-34.121 0-47.137l-177.722-177.722c-6.533-6.582-15.059-9.82-23.593-9.82v0zM533.173-18.18c-202.21 0-380.728 121.651-454.884 309.957-6.753 17.060 1.684 36.431 18.793 43.184 17.060 6.663 36.48-1.643 43.232-18.842 64.027-162.573 218.245-267.652 392.859-267.652 232.726 0 422.098 189.372 422.098 422.098s-189.372 422.098-422.098 422.098c-174.614 0-328.832-105.079-392.859-267.652-6.801-17.199-26.172-25.505-43.232-18.842-17.109 6.753-25.546 26.123-18.793 43.184 74.156 188.306 252.675 309.957 454.884 309.957 269.475 0 488.744-219.27 488.744-488.744s-219.27-488.744-488.744-488.744z" />
-<glyph unicode="&#xe906;" glyph-name="file-code" horiz-adv-x="768" d="M512 960h-512v-1024h768v768l-256 256zM448 640h256v-640h-640v896h384v-256zM512 704v192l192-192h-192zM268.8 128h-44.8l-128 160 128 160h44.8l-128-160zM499.2 128h44.8l128 160-128 160h-44.8l128-160zM300.8 64h38.4l134.4 448h-51.2z" />
-<glyph unicode="&#xe907;" glyph-name="drag-menu" horiz-adv-x="372" d="M169.256 845.363c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 591.728c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 338.091c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 84.455c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 845.363c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 591.728c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 338.091c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 84.455c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546z" />
-<glyph unicode="&#xe908;" glyph-name="mapping" horiz-adv-x="1698" d="M439.686 447.811c0 118.806-96.658 215.464-215.464 215.464s-215.464-96.658-215.464-215.464c0-118.806 96.658-215.464 215.464-215.464s215.464 96.658 215.464 215.464zM224.222 293.908c-84.863 0-153.903 69.040-153.903 153.903s69.040 153.903 153.903 153.903c84.863 0 153.903-69.040 153.903-153.903s-69.040-153.903-153.903-153.903zM612.057 878.739c16.965 0 30.781 13.815 30.781 30.781 0 16.989-13.815 30.781-30.781 30.781s-30.781-13.791-30.781-30.781c0-16.965 13.815-30.781 30.781-30.781zM488.935 940.3h-169.293c-8.092 0-16.040-3.294-21.763-9.018s-9.018-13.671-9.018-21.763v-147.747c0-16.965 13.815-30.781 30.781-30.781s30.781 13.815 30.781 30.781v116.966h138.513c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM612.057 16.883c-16.965 0-30.781-13.815-30.781-30.781s13.815-30.781 30.781-30.781c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM488.935 16.883h-138.513v116.966c0 16.965-13.815 30.781-30.781 30.781s-30.781-13.815-30.781-30.781v-147.747c0-8.092 3.294-16.040 9.018-21.763s13.671-9.018 21.763-9.018h169.293c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM1129.404 550.103c-13.736 14.479-36.54 15.296-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.293-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.74-1.37 1.444-2.107 2.117zM1654.962 471.362h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624zM1129.404 843.097c-13.736 14.479-36.54 15.296-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.296-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.74-1.37 1.444-2.107 2.117zM1654.962 764.356h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624zM1129.404 257.112c-13.736 14.479-36.54 15.293-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.293-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.736-1.37 1.441-2.107 2.117zM1654.962 178.368h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624z" />
-<glyph unicode="&#xe909;" glyph-name="template-mapping" horiz-adv-x="1843" d="M872 448c0-66.273-53.727-120-120-120s-120 53.727-120 120c0 66.273 53.727 120 120 120s120-53.727 120-120zM892 448c0 77.195-62.805 140-140 140s-140-62.805-140-140c0-77.195 62.805-140 140-140s140 62.805 140 140zM752 348c-55.141 0-100 44.859-100 100s44.859 100 100 100c55.141 0 100-44.859 100-100s-44.859-100-100-100zM252 960h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232 728h-192v192h192v-192zM252 208h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232-24h-192v192h192v-192zM252 584h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232 352h-192v192h192v-192zM332 428h140l-32-24c-8.836-6.625-10.625-19.164-4-28 3.93-5.234 9.938-8 16.016-8 4.18 0 8.383 1.305 11.984 4l80 60c0.102 0.070 8 6 8 16 0 6.172-3.039 12.305-8 16l-80 60c-8.836 6.633-21.375 4.836-28-4s-4.836-21.375 4-28l32-24h-140c-11.047 0-20-8.953-20-20s8.953-20 20-20zM332 804h169.711l140-140h-49.711c-11.047 0-20-8.953-20-20s8.953-20 20-20h100c12.82 0 22.789 13.312 19.203 25.602l-28 96c-3.094 10.602-14.203 16.703-24.805 13.602-10.602-3.094-16.688-14.195-13.594-24.805l6.961-23.875-127.625 127.625c-3.75 3.742-8.836 5.852-14.141 5.852h-178c-11.047 0-20-8.953-20-20s8.953-20 20-20zM692 268h-100c-11.047 0-20-8.953-20-20s8.953-20 20-20h49.711l-140-140h-169.711c-11.047 0-20-8.953-20-20s8.953-20 20-20h178c5.305 0 10.391 2.109 14.141 5.859l127.625 127.625-6.969-23.883c-3.094-10.609 3-21.711 13.602-24.797 1.875-0.547 3.758-0.813 5.609-0.813 8.664 0 16.641 5.68 19.195 14.406 0 0 27.867 95.562 28 96 3.578 12.297-6.437 25.602-19.203 25.602v0zM1004 728c11.023 0 20 8.977 20 20 0 11.039-8.977 20-20 20s-20-8.961-20-20c0-11.023 8.977-20 20-20zM924 768h-110c-5.258 0-10.422-2.141-14.141-5.859s-5.859-8.883-5.859-14.141v-96c0-11.023 8.977-20 20-20s20 8.977 20 20v76h90c11.023 0 20 8.977 20 20s-8.977 20-20 20zM1004 168c-11.023 0-20-8.977-20-20s8.977-20 20-20c11.023 0 20 8.977 20 20s-8.977 20-20 20zM924 168h-90v76c0 11.023-8.977 20-20 20s-20-8.977-20-20v-96c0-5.258 2.141-10.422 5.859-14.141s8.883-5.859 14.141-5.859h110c11.023 0 20 8.977 20 20s-8.977 20-20 20zM1387.759 524.215c-11.101 11.702-29.53 12.362-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.359-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.598-1.108 1.167-1.702 1.711zM1812.494 460.58h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598zM1387.759 761.001c-11.101 11.702-29.53 12.362-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.362-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.598-1.108 1.167-1.702 1.711zM1812.494 697.366h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598zM1387.759 287.432c-11.101 11.702-29.53 12.359-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.359-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.595-1.108 1.164-1.702 1.711zM1812.494 223.794h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598z" />
-<glyph unicode="&#xe90a;" glyph-name="template" horiz-adv-x="1109" d="M253.953 960h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798 726.202h-193.488v193.488h193.488v-193.488zM1054.115 856.806h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828zM253.953 573.023h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798 339.225h-193.488v193.488h193.488v-193.488zM1054.115 469.829h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828zM253.953 211.845h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798-21.953h-193.488v193.488h193.488v-193.488zM1054.115 108.651h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828z" />
+<glyph unicode="&#xe900;" glyph-name="generic-script-mode" d="M972.8 960h-921.6c-28.228 0-51.2-22.972-51.2-51.2v-85.334h1024v85.334c0 28.228-22.972 51.2-51.2 51.2zM85.334 857.6c-9.42 0-17.066 7.628-17.066 17.066s7.646 17.066 17.066 17.066c9.42 0 17.066-7.628 17.066-17.066s-7.646-17.066-17.066-17.066zM153.6 857.6c-9.42 0-17.066 7.628-17.066 17.066s7.646 17.066 17.066 17.066c9.42 0 17.066-7.628 17.066-17.066s-7.646-17.066-17.066-17.066zM221.866 857.6c-9.42 0-17.066 7.628-17.066 17.066s7.646 17.066 17.066 17.066c9.42 0 17.066-7.628 17.066-17.066s-7.644-17.066-17.066-17.066zM1024 789.333v-802.134c0-28.228-22.972-51.2-51.2-51.2v0h-921.6c-28.228 0-51.2 22.972-51.2 51.2v0 802.134h1024zM938.667 704h-853.333v-682.667h853.333v682.667zM211.98 523.269c2.331-2.331 5.39-3.502 8.45-3.502s6.12 1.165 8.456 3.502c4.668 4.668 4.668 12.239 0 16.907l-29.027 29.027 29.027 29.021c4.668 4.674 4.668 12.239 0 16.907s-12.239 4.668-16.907 0l-37.477-37.477c-2.243-2.243-3.502-5.284-3.502-8.45 0-3.172 1.259-6.213 3.502-8.456l37.477-37.477zM330.606 569.203l-29.027-29.027c-4.668-4.668-4.668-12.239 0.006-16.907 2.331-2.331 5.39-3.502 8.45-3.502s6.12 1.172 8.45 3.502l37.484 37.484c4.668 4.668 4.668 12.239 0 16.9l-37.484 37.484c-4.668 4.668-12.233 4.668-16.9 0-4.674-4.674-4.674-12.239 0-16.907l29.021-29.027zM247.413 520.595c1.433-0.561 2.916-0.829 4.368-0.829 4.773 0 9.279 2.879 11.13 7.584l29.445 74.961c2.418 6.144-0.611 13.080-6.755 15.498-6.138 2.412-13.080-0.611-15.492-6.755l-29.451-74.961c-2.412-6.144 0.611-13.087 6.755-15.498zM189.72 449.635h80.532c6.599 0 11.952 5.353 11.952 11.959 0 6.599-5.353 11.952-11.952 11.952h-80.532c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.347-11.959 11.952-11.959zM455.733 473.546h-141.584c-6.599 0-11.952-5.353-11.952-11.952 0-6.606 5.353-11.959 11.952-11.959h141.584c6.606 0 11.959 5.353 11.959 11.959 0 6.599-5.353 11.952-11.959 11.952zM189.72 399.214h34.306c6.599 0 11.952 5.353 11.952 11.959 0 6.599-5.353 11.952-11.952 11.952h-34.306c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.347-11.959 11.952-11.959zM411.999 423.125c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.347-11.959 11.952-11.959h20.889c6.606 0 11.959 5.353 11.959 11.959 0 6.599-5.353 11.952-11.959 11.952h-20.889zM380.535 411.173c0 6.599-5.353 11.952-11.952 11.952h-102.611c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.347-11.959 11.952-11.959h102.611c6.599 0 11.952 5.353 11.952 11.959zM458.842 411.173c0-6.606 5.353-11.959 11.952-11.959h39.129c6.606 0 11.959 5.353 11.959 11.959 0 6.599-5.353 11.952-11.959 11.952h-39.129c-6.599 0-11.952-5.353-11.952-11.952zM393.74 559.612h41.273c6.606 0 11.959 5.353 11.959 11.959 0 6.599-5.353 11.952-11.959 11.952h-41.273c-6.606 0-11.959-5.353-11.959-11.952 0-6.606 5.353-11.959 11.959-11.959zM481.239 559.612h251.829c6.606 0 11.952 5.353 11.952 11.959 0 6.599-5.347 11.952-11.952 11.952h-251.829c-6.606 0-11.959-5.353-11.959-11.952 0-6.606 5.353-11.959 11.959-11.959zM694.818 530.927h-102.013c-6.599 0-11.952-5.353-11.952-11.959 0-6.599 5.353-11.952 11.952-11.952h102.013c6.599 0 11.952 5.353 11.952 11.952 0 6.606-5.353 11.959-11.952 11.959zM554.555 530.927h-35.066c-6.606 0-11.952-5.353-11.952-11.959 0-6.599 5.347-11.952 11.952-11.952h35.066c6.606 0 11.952 5.353 11.952 11.952 0 6.606-5.347 11.959-11.952 11.959zM393.74 507.016h85.904c6.599 0 11.952 5.353 11.952 11.952 0 6.606-5.353 11.959-11.952 11.959h-85.904c-6.606 0-11.959-5.353-11.959-11.959 0-6.599 5.353-11.952 11.959-11.952zM368.732 373.128h-80.526c-6.606 0-11.959-5.353-11.959-11.952s5.353-11.952 11.959-11.952h80.526c6.599 0 11.952 5.353 11.952 11.952s-5.353 11.952-11.952 11.952zM251.588 373.128h-61.868c-6.606 0-11.952-5.353-11.952-11.952s5.347-11.952 11.952-11.952h61.868c6.606 0 11.952 5.353 11.952 11.952s-5.347 11.952-11.952 11.952zM514.71 373.128h-105.197c-6.606 0-11.952-5.353-11.952-11.952s5.347-11.952 11.952-11.952h105.197c6.599 0 11.952 5.353 11.952 11.952s-5.353 11.952-11.952 11.952v0zM656.973 434.535h-57.525c-6.599 0-11.952-5.353-11.952-11.952 0-6.606 5.353-11.959 11.952-11.959h57.525c6.606 0 11.952 5.353 11.952 11.959 0 6.599-5.347 11.952-11.952 11.952v0zM756.793 410.624h81.205c6.606 0 11.959 5.353 11.959 11.959 0 6.599-5.353 11.952-11.959 11.952h-81.205c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.353-11.959 11.952-11.959zM716.187 434.535h-18.608c-6.606 0-11.959-5.353-11.959-11.952 0-6.606 5.353-11.959 11.959-11.959h18.608c6.606 0 11.952 5.353 11.952 11.959 0 6.599-5.347 11.952-11.952 11.952zM599.448 280.357h57.525c6.606 0 11.952 5.347 11.952 11.952 0 6.599-5.347 11.952-11.952 11.952h-57.525c-6.599 0-11.952-5.353-11.952-11.952 0-6.606 5.353-11.952 11.952-11.952v0zM756.793 280.357h81.205c6.606 0 11.959 5.347 11.959 11.952 0 6.599-5.353 11.952-11.959 11.952h-81.205c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.353-11.952 11.952-11.952zM697.579 280.357h18.608c6.606 0 11.959 5.347 11.959 11.952 0 6.599-5.353 11.952-11.959 11.952h-18.608c-6.606 0-11.952-5.353-11.952-11.952 0-6.606 5.347-11.952 11.952-11.952zM656.973 173.988h-57.525c-6.599 0-11.952-5.353-11.952-11.952s5.353-11.952 11.952-11.952h57.525c6.606 0 11.952 5.353 11.952 11.952s-5.347 11.952-11.952 11.952v0zM837.998 173.988h-81.205c-6.606 0-11.952-5.353-11.952-11.952s5.347-11.952 11.952-11.952h81.205c6.606 0 11.959 5.353 11.959 11.952s-5.353 11.952-11.959 11.952v0zM716.187 173.988h-18.608c-6.606 0-11.959-5.353-11.959-11.952s5.353-11.952 11.959-11.952h18.608c6.606 0 11.952 5.353 11.952 11.952s-5.347 11.952-11.952 11.952z" />
+<glyph unicode="&#xe901;" glyph-name="clone" horiz-adv-x="830" d="M205.943 684.214c16.494 0 29.864 13.274 29.864 29.652v202.771h249.198c16.494 0 29.871-13.274 29.871-29.659v-136.986h-81.325c-8.034 0-15.633-3.229-21.148-8.698l-234.083-232.43c-5.253-5.209-8.761-12.739-8.761-20.953v-367.34h-137.965c-16.502 0-29.871 13.282-29.871 29.659v533.986h204.219zM176.072 874.7v-131.175h-132.112zM463.4 487.909v202.771h249.176c16.502 0 29.871-13.282 29.871-29.659v-690.013c0-16.385-13.369-29.659-29.871-29.659h-453.41c-16.494 0-29.871 13.274-29.871 29.659v487.242h204.242c16.487 0 29.864 13.267 29.864 29.659zM403.665 517.568h-132.112l132.112 131.153zM685.427 892.834v67.166l-90.194-89.555 90.194-89.555v67.166c49.734 0 90.194-40.174 90.194-89.555v-44.777h45.097v44.777c0 74.072-60.693 134.332-135.292 134.332z" />
+<glyph unicode="&#xe902;" glyph-name="delete" d="M170.667 49.778c0-62.578 51.2-113.778 113.778-113.778h455.111c62.578 0 113.778 51.2 113.778 113.778v682.667h-682.667v-682.667zM910.222 903.111h-199.111l-56.889 56.889h-284.444l-56.889-56.889h-199.111v-113.778h796.444v113.778z" />
+<glyph unicode="&#xe903;" glyph-name="designer-mode" d="M1024 793.672c0 71.312-58.064 129.328-129.434 129.328h-765.132c-71.37 0-129.434-58.016-129.434-129.328v-530.574c0-32.88 12.344-62.934 32.646-85.778-19.814-14.932-32.646-38.648-32.646-65.302 0-76.654 62.414-139.018 139.132-139.018h745.734c76.718 0 139.132 62.364 139.132 139.018 0 26.654-12.832 50.37-32.646 65.302 20.304 22.844 32.648 52.898 32.648 85.778zM60 793.672c0 38.228 31.148 69.328 69.434 69.328h765.132c38.286 0 69.434-31.1 69.434-69.328v-530.574c0-38.228-31.148-69.328-69.434-69.328h-203.372c-27.154 0-49.246-22.084-49.246-49.226 0-8.080-6.596-14.654-14.702-14.654h-230.492c-8.106 0-14.702 6.574-14.702 14.654 0 27.142-22.092 49.226-49.246 49.226h-203.372c-38.286 0-69.434 31.1-69.434 69.328zM884.868 33h-745.736c-43.634 0-79.132 35.448-79.132 79.018 0 11.994 9.784 21.752 21.806 21.752h241.022c5.242-36.078 36.396-63.878 73.926-63.878h230.492c37.53 0 68.684 27.802 73.926 63.878h241.022c12.024 0 21.806-9.758 21.806-21.752 0-43.57-35.498-79.018-79.132-79.018zM597.9 290.358c2.062-8.968 8.128-16.494 16.456-20.416 4.050-1.908 8.416-2.86 12.782-2.86 4.608 0 9.21 1.060 13.438 3.178l95.882 48.032c6.012 3.012 10.838 7.956 13.704 14.040l152.756 324.352c22.62 48.028 1.948 105.504-46.082 128.124h0.002c-23.268 10.958-49.408 12.2-73.606 3.496-24.202-8.704-43.562-26.31-54.52-49.576l-152.758-324.352c-2.866-6.084-3.604-12.954-2.096-19.508zM803.536 731.846c9.118 3.278 18.97 2.812 27.734-1.318h0.002c18.096-8.524 25.886-30.18 17.364-48.278l-14.16-30.064-65.642 30.916 14.16 30.064c4.128 8.766 11.422 15.4 20.542 18.68zM743.268 628.82l65.644-30.914-108.612-230.616-52.482-26.292-13.16 57.208zM161.846 267.084h290.574c16.568 0 30 13.432 30 30v234.358c0 16.568-13.432 30-30 30h-290.574c-16.568 0-30-13.432-30-30v-234.358c0-16.568 13.432-30 30-30zM191.846 501.442h230.574v-174.358h-230.574zM161.846 730.892h371.668c16.568 0 30 13.432 30 30s-13.432 30-30 30h-371.668c-16.568 0-30-13.432-30-30s13.432-30 30-30zM161.846 630.892h281.668c16.568 0 30 13.432 30 30s-13.432 30-30 30h-281.668c-16.568 0-30-13.432-30-30s13.432-30 30-30z" />
+<glyph unicode="&#xe904;" glyph-name="scripting-mode" d="M407.383 250.611c-0.418 2.89-1.966 5.494-4.302 7.243l-118.568 88.668 118.568 88.668c2.337 1.749 3.884 4.353 4.302 7.243 0.415 2.89-0.33 5.825-2.082 8.168l-18.836 25.185c-3.645 4.869-10.539 5.866-15.408 2.22l-164.036-122.669c-2.777-2.076-4.416-5.343-4.416-8.816s1.639-6.74 4.416-8.816l164.036-122.669c1.975-1.481 4.29-2.192 6.583-2.192 3.353 0 6.664 1.522 8.825 4.412l18.836 25.185c1.749 2.343 2.497 5.277 2.082 8.168zM816.975 355.338l-164.030 122.669c-4.869 3.642-11.762 2.645-15.404-2.22l-18.836-25.185c-1.749-2.34-2.497-5.277-2.082-8.168 0.418-2.887 1.963-5.494 4.302-7.243l118.565-88.668-118.565-88.668c-2.34-1.749-3.884-4.356-4.302-7.243-0.415-2.89 0.33-5.828 2.082-8.168l18.836-25.185c2.164-2.89 5.472-4.412 8.825-4.412 2.293 0 4.604 0.714 6.583 2.192l164.030 122.669c2.777 2.076 4.416 5.343 4.416 8.816s-1.642 6.74-4.419 8.816zM617.258 543.483l-28.969 12.25c-2.686 1.139-5.718 1.157-8.426 0.063-2.705-1.098-4.865-3.224-6.001-5.913l-172.977-409.119c-2.368-5.598 0.252-12.058 5.853-14.426l28.969-12.25c1.368-0.582 2.827-0.868 4.287-0.868 1.406 0 2.812 0.27 4.139 0.808 2.705 1.098 4.862 3.224 6.001 5.913l172.977 409.119c2.365 5.598-0.255 12.055-5.853 14.423zM968.962 933.384h-913.924c-30.346 0-55.038-24.692-55.038-55.038v-860.691c0-30.346 24.692-55.038 55.038-55.038h913.924c30.346 0 55.038 24.692 55.038 55.038v860.691c0 30.35-24.692 55.038-55.038 55.038zM860.058 848.993c25.145 0 45.603-20.458 45.603-45.603s-20.458-45.603-45.603-45.603c-25.145 0-45.603 20.458-45.603 45.603s20.458 45.603 45.603 45.603zM705.414 848.993c25.145 0 45.603-20.458 45.603-45.603s-20.458-45.603-45.603-45.603c-25.145 0-45.603 20.458-45.603 45.603s20.458 45.603 45.603 45.603zM139.637 826.977h183.985c13.027 0 23.588-10.558 23.588-23.588s-10.561-23.588-23.588-23.588h-183.985c-13.027 0-23.588 10.558-23.588 23.588s10.561 23.588 23.588 23.588zM936.58 57.984c0-3.956-3.221-7.18-7.183-7.18h-834.794c-3.96 0-7.183 3.224-7.183 7.18v592.746h849.161v-592.746z" />
+<glyph unicode="&#xe905;" glyph-name="archive" d="M945.238 644.924h-866.463c-10.674 0-19.905-3.895-27.697-11.691-7.796-7.792-11.691-17.024-11.691-27.691v-590.772c0-10.665 3.895-19.901 11.691-27.691 7.792-7.796 17.024-11.7 27.697-11.7h866.463c10.667 0 19.893 3.904 27.691 11.7 7.79 7.788 11.685 17.024 11.685 27.691v590.772c0 10.674-3.88 19.897-11.685 27.691-7.79 7.796-17.024 11.691-27.691 11.691zM618.454 459.694c-7.788-7.794-17.024-11.691-27.691-11.691h-157.539c-10.661 0-19.893 3.899-27.691 11.691-7.792 7.796-11.691 17.024-11.691 27.697 0 10.665 3.899 19.897 11.691 27.691 7.796 7.796 17.028 11.695 27.691 11.695h157.554c10.659 0 19.888-3.899 27.691-11.695 7.79-7.792 11.685-17.024 11.685-27.691 0-10.672-3.904-19.901-11.7-27.697zM1012.32 908.927c-7.798 7.796-17.024 11.691-27.693 11.691h-945.242c-10.665 0-19.897-3.895-27.691-11.691-7.794-7.792-11.693-17.024-11.693-27.691v-157.539c0-10.665 3.899-19.893 11.695-27.691 7.794-7.796 17.024-11.691 27.691-11.691h945.227c10.665 0 19.901 3.895 27.706 11.691 7.788 7.796 11.682 17.024 11.682 27.691v157.539c0 10.674-3.895 19.899-11.682 27.691z" />
+<glyph unicode="&#xe906;" glyph-name="enter" d="M677.571 437.241h-644.248c-18.395 0-33.323 14.929-33.323 33.323s14.929 33.323 33.323 33.323h644.248c18.395 0 33.323-14.929 33.323-33.323s-14.929-33.323-33.323-33.323zM499.849 259.519c-8.534 0-17.060 3.238-23.552 9.771-13.017 13.017-13.017 34.121 0 47.146l154.177 154.169-154.177 154.177c-13.017 13.017-13.017 34.129 0 47.146 13.025 13.017 34.129 13.017 47.146 0l177.722-177.73c13.017-13.017 13.017-34.121 0-47.137l-177.722-177.722c-6.533-6.582-15.059-9.82-23.593-9.82v0zM533.173-18.18c-202.21 0-380.728 121.651-454.884 309.957-6.753 17.060 1.684 36.431 18.793 43.184 17.060 6.663 36.48-1.643 43.232-18.842 64.027-162.573 218.245-267.652 392.859-267.652 232.726 0 422.098 189.372 422.098 422.098s-189.372 422.098-422.098 422.098c-174.614 0-328.832-105.079-392.859-267.652-6.801-17.199-26.172-25.505-43.232-18.842-17.109 6.753-25.546 26.123-18.793 43.184 74.156 188.306 252.675 309.957 454.884 309.957 269.475 0 488.744-219.27 488.744-488.744s-219.27-488.744-488.744-488.744z" />
+<glyph unicode="&#xe907;" glyph-name="file-code" horiz-adv-x="768" d="M512 960h-512v-1024h768v768l-256 256zM448 640h256v-640h-640v896h384v-256zM512 704v192l192-192h-192zM268.8 128h-44.8l-128 160 128 160h44.8l-128-160zM499.2 128h44.8l128 160-128 160h-44.8l128-160zM300.8 64h38.4l134.4 448h-51.2z" />
+<glyph unicode="&#xe908;" glyph-name="drag-menu" horiz-adv-x="372" d="M169.256 845.363c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 591.728c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 338.091c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM169.256 84.455c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 845.363c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 591.728c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 338.091c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546zM372.165 84.455c0-46.693-37.852-84.546-84.546-84.546s-84.546 37.852-84.546 84.546c0 46.693 37.852 84.546 84.546 84.546s84.546-37.852 84.546-84.546z" />
+<glyph unicode="&#xe909;" glyph-name="mapping" horiz-adv-x="1698" d="M439.686 447.811c0 118.806-96.658 215.464-215.464 215.464s-215.464-96.658-215.464-215.464c0-118.806 96.658-215.464 215.464-215.464s215.464 96.658 215.464 215.464zM224.222 293.908c-84.863 0-153.903 69.040-153.903 153.903s69.040 153.903 153.903 153.903c84.863 0 153.903-69.040 153.903-153.903s-69.040-153.903-153.903-153.903zM612.057 878.739c16.965 0 30.781 13.815 30.781 30.781 0 16.989-13.815 30.781-30.781 30.781s-30.781-13.791-30.781-30.781c0-16.965 13.815-30.781 30.781-30.781zM488.935 940.3h-169.293c-8.092 0-16.040-3.294-21.763-9.018s-9.018-13.671-9.018-21.763v-147.747c0-16.965 13.815-30.781 30.781-30.781s30.781 13.815 30.781 30.781v116.966h138.513c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM612.057 16.883c-16.965 0-30.781-13.815-30.781-30.781s13.815-30.781 30.781-30.781c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM488.935 16.883h-138.513v116.966c0 16.965-13.815 30.781-30.781 30.781s-30.781-13.815-30.781-30.781v-147.747c0-8.092 3.294-16.040 9.018-21.763s13.671-9.018 21.763-9.018h169.293c16.965 0 30.781 13.815 30.781 30.781s-13.815 30.781-30.781 30.781zM1129.404 550.103c-13.736 14.479-36.54 15.296-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.293-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.74-1.37 1.444-2.107 2.117zM1654.962 471.362h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624zM1129.404 843.097c-13.736 14.479-36.54 15.296-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.296-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.74-1.37 1.444-2.107 2.117zM1654.962 764.356h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624zM1129.404 257.112c-13.736 14.479-36.54 15.293-51.275 1.83l-117.198-111.703-49.442 51.275c-13.736 14.479-36.54 15.293-51.275 1.83-14.185-14.861-14.185-38.244 0-53.105l75.078-76.911c6.498-7.276 15.885-11.3 25.636-10.988 9.66 0.137 18.875 4.087 25.636 10.988l142.834 135.509c14.16 12.99 15.107 35.001 2.114 49.158-0.666 0.736-1.37 1.441-2.107 2.117zM1654.962 178.368h-421.178c-20.228 0-36.624-16.397-36.624-36.624s16.397-36.624 36.624-36.624h421.178c20.228 0 36.624 16.397 36.624 36.624s-16.397 36.624-36.624 36.624z" />
+<glyph unicode="&#xe90a;" glyph-name="template-mapping" horiz-adv-x="1843" d="M872 448c0-66.273-53.727-120-120-120s-120 53.727-120 120c0 66.273 53.727 120 120 120s120-53.727 120-120zM892 448c0 77.195-62.805 140-140 140s-140-62.805-140-140c0-77.195 62.805-140 140-140s140 62.805 140 140zM752 348c-55.141 0-100 44.859-100 100s44.859 100 100 100c55.141 0 100-44.859 100-100s-44.859-100-100-100zM252 960h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232 728h-192v192h192v-192zM252 208h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232-24h-192v192h192v-192zM252 584h-232c-11.047 0-20-8.953-20-20v-232c0-11.047 8.953-20 20-20h232c11.047 0 20 8.953 20 20v232c0 11.047-8.953 20-20 20zM232 352h-192v192h192v-192zM332 428h140l-32-24c-8.836-6.625-10.625-19.164-4-28 3.93-5.234 9.938-8 16.016-8 4.18 0 8.383 1.305 11.984 4l80 60c0.102 0.070 8 6 8 16 0 6.172-3.039 12.305-8 16l-80 60c-8.836 6.633-21.375 4.836-28-4s-4.836-21.375 4-28l32-24h-140c-11.047 0-20-8.953-20-20s8.953-20 20-20zM332 804h169.711l140-140h-49.711c-11.047 0-20-8.953-20-20s8.953-20 20-20h100c12.82 0 22.789 13.312 19.203 25.602l-28 96c-3.094 10.602-14.203 16.703-24.805 13.602-10.602-3.094-16.688-14.195-13.594-24.805l6.961-23.875-127.625 127.625c-3.75 3.742-8.836 5.852-14.141 5.852h-178c-11.047 0-20-8.953-20-20s8.953-20 20-20zM692 268h-100c-11.047 0-20-8.953-20-20s8.953-20 20-20h49.711l-140-140h-169.711c-11.047 0-20-8.953-20-20s8.953-20 20-20h178c5.305 0 10.391 2.109 14.141 5.859l127.625 127.625-6.969-23.883c-3.094-10.609 3-21.711 13.602-24.797 1.875-0.547 3.758-0.813 5.609-0.813 8.664 0 16.641 5.68 19.195 14.406 0 0 27.867 95.562 28 96 3.578 12.297-6.437 25.602-19.203 25.602v0zM1004 728c11.023 0 20 8.977 20 20 0 11.039-8.977 20-20 20s-20-8.961-20-20c0-11.023 8.977-20 20-20zM924 768h-110c-5.258 0-10.422-2.141-14.141-5.859s-5.859-8.883-5.859-14.141v-96c0-11.023 8.977-20 20-20s20 8.977 20 20v76h90c11.023 0 20 8.977 20 20s-8.977 20-20 20zM1004 168c-11.023 0-20-8.977-20-20s8.977-20 20-20c11.023 0 20 8.977 20 20s-8.977 20-20 20zM924 168h-90v76c0 11.023-8.977 20-20 20s-20-8.977-20-20v-96c0-5.258 2.141-10.422 5.859-14.141s8.883-5.859 14.141-5.859h110c11.023 0 20 8.977 20 20s-8.977 20-20 20zM1387.759 524.215c-11.101 11.702-29.53 12.362-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.359-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.598-1.108 1.167-1.702 1.711zM1812.494 460.58h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598zM1387.759 761.001c-11.101 11.702-29.53 12.362-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.362-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.598-1.108 1.167-1.702 1.711zM1812.494 697.366h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598zM1387.759 287.432c-11.101 11.702-29.53 12.359-41.439 1.479l-94.715-90.273-39.957 41.439c-11.101 11.702-29.53 12.359-41.439 1.479-11.464-12.010-11.464-30.907 0-42.917l60.675-62.157c5.252-5.881 12.838-9.132 20.718-8.88 7.807 0.11 15.254 3.303 20.718 8.88l115.433 109.513c11.444 10.498 12.209 28.287 1.708 39.728-0.538 0.595-1.108 1.164-1.702 1.711zM1812.494 223.794h-340.379c-16.347 0-29.598-13.251-29.598-29.598s13.251-29.598 29.598-29.598h340.379c16.347 0 29.598 13.251 29.598 29.598s-13.251 29.598-29.598 29.598z" />
+<glyph unicode="&#xe90b;" glyph-name="template" horiz-adv-x="1109" d="M253.953 960h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798 726.202h-193.488v193.488h193.488v-193.488zM1054.115 856.806h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828zM253.953 573.023h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798 339.225h-193.488v193.488h193.488v-193.488zM1054.115 469.829h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828zM253.953 211.845h-233.798c-11.133 0-20.155-9.023-20.155-20.155v-233.798c0-11.133 9.023-20.155 20.155-20.155h233.798c11.133 0 20.155 9.023 20.155 20.155v233.798c0 11.133-9.023 20.155-20.155 20.155zM233.798-21.953h-193.488v193.488h193.488v-193.488zM1054.115 108.651h-518.829c-24.917 0-45.116-13.354-45.116-29.828s20.198-29.828 45.116-29.828h518.829c24.917 0 45.116 13.354 45.116 29.828s-20.198 29.828-45.116 29.828z" />
+<glyph unicode="&#xe90c;" glyph-name="Upload-attribute" horiz-adv-x="931" d="M529.597 725.461h108.895l-167.074 177.515v-117.847c0-32.818 25.36-59.668 58.177-59.668zM347.605 280.926h-193.925c-10.441 0-17.901 7.458-17.901 17.901s7.458 17.901 17.901 17.901h205.857c11.932 28.342 26.851 53.702 44.752 77.569h-250.609c-10.441 0-17.901 7.458-17.901 17.901s7.458 17.901 17.901 17.901h284.918c53.702 47.735 125.304 77.569 202.875 77.569 7.458 0 13.427 0 22.376-1.492v183.482h-134.254c-52.21 0-93.98 41.769-93.98 93.98v146.189h-343.098c-44.752 0-79.061-35.8-79.061-80.553v-681.72c0-44.752 35.8-79.061 79.061-79.061h268.511c-14.918 35.8-23.868 76.078-23.868 117.847 1.492 25.36 4.475 50.719 10.441 74.586zM153.682 543.471h226.743c10.441 0 17.901-7.458 17.901-17.901s-7.458-17.901-17.901-17.901h-226.743c-10.441 0-17.901 7.458-17.901 17.901 0 8.95 7.458 17.901 17.901 17.901zM641.475 471.868c-147.681 0-267.019-119.337-267.019-267.019s119.337-267.019 267.019-267.019c147.681 0 267.019 119.337 267.019 267.019s-120.83 267.019-267.019 267.019zM783.19 200.374c-2.983-2.983-7.458-4.475-11.932-4.475s-8.95 1.492-13.427 5.967l-98.454 107.403v-255.085c0-10.441-7.458-17.901-17.901-17.901s-17.901 7.458-17.901 17.901v255.085l-99.946-107.403c-5.967-7.458-17.901-7.458-25.36-1.492s-7.458 17.901-1.492 25.36l131.272 140.223c2.983 2.983 7.458 5.967 13.427 5.967 4.475 0 8.95-1.492 13.427-5.967l131.272-140.223c5.967-7.458 4.475-17.901-2.983-25.36z" />
+<glyph unicode="&#xe90d;" glyph-name="import-cds" horiz-adv-x="1271" d="M373.922 551.955c-4.153 0-7.839-2.815-8.912-6.821l-187.326-467.415v-16.35c0-11.999-0.773-16.35 9.241-16.35h731.938c18.904 0 35.549 12.744 40.064 29.648l167.225 460.935c0 0 0 10.222 0 16.35h-752.23zM353.172 584.661h674.859v102.495c0 24.645-20.053 44.677-44.677 44.677h-404.776l-81.76 114.466h-307.158c-24.624 0-44.677-20.053-44.677-44.677v-683.478l168.143 436.897c4.494 16.876 21.147 29.619 40.044 29.619z" />
+<glyph unicode="&#xe90e;" glyph-name="current-template" horiz-adv-x="1327" d="M522.495 853.894l13.749-77.003h653.568v-718.647h-1052.314v795.65h384.991zM625.163 468.903h-77.003v-205.329h77.003v205.329zM471.169 545.894h-77.003v-282.332h77.003v282.332zM779.157 571.561h-77.003v-307.992h77.003v307.992zM933.15 520.231h-77.003v-256.665h77.003v256.665z" />
+<glyph unicode="&#xe90f;" glyph-name="package" horiz-adv-x="1205" d="M1154.309 638.745h-70.074v125.852c0 30.258-24.616 54.854-54.854 54.854h-497.001l-100.392 140.549h-377.133c-30.238 0-54.854-24.616-54.854-54.854v-877.166h0.12c-0.1-11.304 3.413-22.367 10.481-31.624 9.838-12.85 24.737-20.199 40.9-20.199h898.691c23.211 0 43.651 15.641 49.192 36.402l205.322 562.959v3.554c0 34.575-21.203 59.673-50.397 59.673zM40.157 905.146c0 8.112 6.606 14.697 14.697 14.697h356.452l100.392-140.549h517.662c8.112 0 14.697-6.586 14.697-14.697v-125.852h-788.44c-2.891 0-5.763-0.241-8.553-0.723-19.536-3.273-35.78-17.528-40.619-35.659l-166.29-453.512v756.294zM961.134 24.686c-1.325-4.919-5.843-8.373-10.943-8.373h-898.691c-4.879 0-7.73 2.791-8.995 4.457-1.265 1.646-3.213 5.14-2.47 8.192l204.619 561.252c1.325 4.919 5.843 8.373 10.943 8.373h898.711c7.63 0 9.577-10.963 10.079-16.444l-203.254-557.458zM743.632 478.118c-21.744 0-39.427-17.683-39.427-39.427 0-6.801 1.728-13.201 4.771-18.793l-64.588-64.588c-8.904 6.933-20.048 11.099-32.179 11.099s-23.275-4.166-32.185-11.092l-50.394 50.394c2.313 3.91 3.726 8.404 3.726 13.267 0 14.496-11.789 26.284-26.284 26.284s-26.284-11.789-26.284-26.284c0-14.496 11.789-26.284 26.284-26.284 4.863 0 9.357 1.413 13.267 3.726l50.394-50.394c-6.926-8.91-11.092-20.055-11.092-32.185s4.166-23.275 11.092-32.179l-83.217-83.223c-7.005 6.354-16.264 10.264-26.442 10.264-21.744 0-39.427-17.683-39.427-39.427s17.683-39.427 39.427-39.427c21.744 0 39.427 17.683 39.427 39.427 0 6.801-1.728 13.201-4.771 18.793l84.301 84.301c7.268-5.651 16.034-9.436 25.614-10.639v-66.763c-18.616-3.141-32.856-19.332-32.856-38.835 0-21.744 17.683-39.427 39.427-39.427s39.427 17.683 39.427 39.427c0 19.497-14.24 35.688-32.856 38.835v66.763c9.581 1.203 18.347 4.987 25.614 10.639l50.394-50.394c-2.32-3.916-3.732-8.411-3.732-13.274 0-14.496 11.789-26.284 26.284-26.284s26.284 11.789 26.284 26.284c0 14.496-11.789 26.284-26.284 26.284-4.863 0-9.357-1.413-13.267-3.726l-50.394 50.394c6.926 8.91 11.092 20.055 11.092 32.185s-4.166 23.275-11.092 32.179l63.51 63.51c6.998-6.354 16.257-10.264 26.436-10.264 21.744 0 39.427 17.683 39.427 39.427s-17.683 39.427-39.427 39.427z" />
+<glyph unicode="&#xe910;" glyph-name="dictionary" d="M991.457 533.163c-13.803 0-24.993-11.19-24.993-24.993v-203.273c0-13.803 11.19-24.993 24.993-24.993s24.993 11.19 24.993 24.993v203.273c-0.003 13.803-11.193 24.993-24.993 24.993v0zM960.173 959.5h-856.973c-56.907 0-103.2-34.087-103.2-75.984v-835.988c0-48.869 54-88.628 120.377-88.628h799.807c13.6 0 25.733 5.969 30.91 15.209 5.203 9.287 2.297 19.877-7.403 26.98-16.927 12.389-26.247 28.882-26.247 46.439 0 20.432 12.837 39.437 34.62 51.827h8.11c31.030 0 56.277 18.586 56.277 41.435v194.1c0 10.163-11.19 18.402-24.993 18.402s-24.993-8.239-24.993-18.402v-194.1c0-2.555-2.82-4.631-6.29-4.631h-839.797c-25.133 0-50.023-5.925-70.39-16.77v764.128c0 21.602 23.87 39.18 53.213 39.18h856.973c3.47 0 6.29-2.076 6.29-4.631v-144.885c0-10.163 11.19-18.402 24.993-18.402s24.993 8.239 24.993 18.402v144.885c0 22.847-25.247 41.435-56.277 41.435v0zM886.563 99.357c-12.343-15.459-19.107-33.27-19.107-51.829 0-18.522 6.64-36.286 19.090-51.827h-766.17c-38.813 0-70.39 23.249-70.39 51.827s31.577 51.827 70.39 51.827l766.187 0.002zM348.708 760.797c-53.594 0-97.198-43.604-97.198-97.198v-217.009c0-53.594 43.604-97.198 97.198-97.198h319.034c53.594 0 97.198 43.604 97.198 97.198v217.009c0 53.594-43.604 97.198-97.198 97.198h-319.034zM723.265 663.599v-217.009c0-30.617-24.909-55.523-55.523-55.523h-319.034c-30.617 0-55.526 24.909-55.526 55.523v217.009c0 30.617 24.909 55.526 55.526 55.526h319.034c30.617 0 55.523-24.909 55.523-55.526v0zM627.88 590.463c-6.871 0-9.357 1.746-14.802 5.569-7.384 5.184-17.496 12.282-36.054 12.282s-28.67-7.1-36.054-12.282c-5.445-3.823-7.931-5.569-14.802-5.569s-9.357 1.746-14.802 5.569c-7.384 5.184-17.498 12.282-36.054 12.282s-28.668-7.1-36.049-12.284c-5.445-3.823-7.931-5.569-14.8-5.569s-9.354 1.744-14.797 5.569c-7.384 5.184-17.496 12.284-36.052 12.284-10.213 0-18.492-8.279-18.492-18.492s8.279-18.492 18.492-18.492c6.869 0 9.354-1.744 14.797-5.569 7.384-5.184 17.496-12.284 36.052-12.284s28.668 7.1 36.052 12.284c5.443 3.823 7.929 5.569 14.797 5.569 6.871 0 9.357-1.746 14.805-5.569 7.384-5.184 17.498-12.282 36.054-12.282s28.668 7.1 36.054 12.282c5.445 3.823 7.931 5.569 14.805 5.569s9.357-1.746 14.802-5.569c7.384-5.184 17.496-12.282 36.054-12.282 10.213 0 18.492 8.279 18.492 18.492s-8.284 18.492-18.497 18.492v0zM497.633 493.266c-5.575 0-7.592 1.417-12.010 4.518-5.991 4.206-14.195 9.965-29.253 9.965s-23.262-5.761-29.253-9.965c-4.418-3.102-6.435-4.518-12.010-4.518s-7.592 1.417-12.012 4.518c-5.991 4.206-14.197 9.965-29.253 9.965-8.286 0-15.004-6.717-15.004-15.004s6.717-15.004 15.004-15.004c5.575 0 7.592-1.417 12.010-4.518 5.991-4.206 14.197-9.965 29.253-9.965s23.26 5.761 29.253 9.965c4.418 3.102 6.435 4.518 12.012 4.518 5.575 0 7.592-1.417 12.010-4.518 5.991-4.206 14.197-9.965 29.253-9.965 8.286 0 15.004 6.717 15.004 15.004s-6.717 15.004-15.004 15.004z" />
+<glyph unicode="&#xe911;" glyph-name="deploy" d="M890.522 252.945l-95.505-137.216-67.396 55.313c-7.27 5.99-18.039 4.898-24.013-2.355-5.99-7.287-4.932-18.057 2.372-24.013l81.681-67.055c3.072-2.526 6.895-3.891 10.82-3.891 0.768 0 1.553 0.051 2.338 0.171 4.71 0.649 8.943 3.243 11.674 7.151l106.052 152.388c5.376 7.731 3.482 18.364-4.267 23.757-7.748 5.461-18.364 3.516-23.757-4.25zM802.133 379.733c-122.334 0-221.867-99.533-221.867-221.867s99.533-221.867 221.867-221.867c122.334 0 221.867 99.533 221.867 221.867s-99.533 221.867-221.867 221.867zM802.133-29.867c-103.509 0-187.733 84.224-187.733 187.733s84.224 187.733 187.733 187.733c103.509 0 187.733-84.224 187.733-187.733s-84.224-187.733-187.733-187.733zM945.357 960h-866.714c-43.366 0-78.643-35.277-78.643-78.643v-201.097c0-16.623 5.359-31.898 14.251-44.527h995.482c8.909 12.629 14.268 27.904 14.268 44.51v201.114c0 43.366-35.277 78.643-78.643 78.643zM179.2 704c-42.342 0-76.8 34.458-76.8 76.8s34.458 76.8 76.8 76.8c42.342 0 76.8-34.458 76.8-76.8s-34.458-76.8-76.8-76.8zM580.267 789.333c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM614.4 738.133c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM648.533 789.333c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM682.667 738.133c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM716.8 789.333c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM750.933 738.133c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM785.067 789.333c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM819.2 738.133c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM853.333 789.333c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM887.467 738.133c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM529.067 157.867c0 42.871 10.206 83.319 27.904 119.467h-542.72c-8.892-12.629-14.251-27.904-14.251-44.51v-201.097c0-43.383 35.277-78.66 78.643-78.66h543.471c-56.9 50.091-93.047 123.221-93.047 204.8zM179.2 55.467c-42.342 0-76.8 34.458-76.8 76.8s34.458 76.8 76.8 76.8c42.342 0 76.8-34.458 76.8-76.8s-34.458-76.8-76.8-76.8zM14.251 601.6c-8.892-12.629-14.251-27.904-14.251-44.51v-201.097c0-16.623 5.359-31.898 14.251-44.527h562.278c49.22 72.055 131.959 119.467 225.587 119.467 87.433 0 165.205-41.472 215.211-105.609 4.147 9.421 6.656 19.695 6.656 30.652v201.114c0 16.623-5.359 31.881-14.251 44.51h-995.482zM179.2 379.733c-42.342 0-76.8 34.458-76.8 76.8s34.458 76.8 76.8 76.8c42.342 0 76.8-34.458 76.8-76.8s-34.458-76.8-76.8-76.8zM580.267 465.067c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM648.533 465.067c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM716.8 465.067c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM785.067 465.067c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067zM853.333 465.067c-9.421 0-17.067 7.646-17.067 17.067s7.646 17.067 17.067 17.067c9.421 0 17.067-7.646 17.067-17.067s-7.646-17.067-17.067-17.067z" />
</font></defs></svg> \ No newline at end of file
diff --git a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.ttf b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.ttf
index 1f3af3988..67d9da298 100755
--- a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.ttf
+++ b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.ttf
Binary files differ
diff --git a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.woff b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.woff
index e5f2266d2..6378c642f 100755
--- a/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.woff
+++ b/cds-ui/designer-client/src/assets/icomoon/fonts/icomoon.woff
Binary files differ
diff --git a/cds-ui/designer-client/src/assets/icomoon/style.css b/cds-ui/designer-client/src/assets/icomoon/style.css
index 6294f3088..cc5d3fb83 100755
--- a/cds-ui/designer-client/src/assets/icomoon/style.css
+++ b/cds-ui/designer-client/src/assets/icomoon/style.css
@@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
- src: url('fonts/icomoon.eot?3g19qh');
- src: url('fonts/icomoon.eot?3g19qh#iefix') format('embedded-opentype'),
- url('fonts/icomoon.ttf?3g19qh') format('truetype'),
- url('fonts/icomoon.woff?3g19qh') format('woff'),
- url('fonts/icomoon.svg?3g19qh#icomoon') format('svg');
+ src: url('fonts/icomoon.eot?3iboyv');
+ src: url('fonts/icomoon.eot?3iboyv#iefix') format('embedded-opentype'),
+ url('fonts/icomoon.ttf?3iboyv') format('truetype'),
+ url('fonts/icomoon.woff?3iboyv') format('woff'),
+ url('fonts/icomoon.svg?3iboyv#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
@@ -25,36 +25,57 @@
-moz-osx-font-smoothing: grayscale;
}
-.icon-mapping:before {
- content: "\e908";
+.icon-package:before {
+ content: "\e90f";
}
-.icon-template-mapping:before {
- content: "\e909";
+.icon-dictionary:before {
+ content: "\e910";
}
-.icon-template:before {
- content: "\e90a";
+.icon-deploy:before {
+ content: "\e911";
}
-.icon-drag-menu:before {
- content: "\e907";
+.icon-Upload-attribute:before {
+ content: "\e90c";
}
-.icon-file-code:before {
- content: "\e906";
+.icon-import-cds:before {
+ content: "\e90d";
}
-.icon-enter:before {
- content: "\e905";
+.icon-current-template:before {
+ content: "\e90e";
}
-.icon-clone:before {
+.icon-generic-script-mode:before {
content: "\e900";
}
-.icon-delete:before {
+.icon-clone:before {
content: "\e901";
}
-.icon-designer-mode:before {
+.icon-delete:before {
content: "\e902";
}
-.icon-scripting-mode:before {
+.icon-designer-mode:before {
content: "\e903";
}
-.icon-archive:before {
+.icon-scripting-mode:before {
content: "\e904";
}
+.icon-archive:before {
+ content: "\e905";
+}
+.icon-enter:before {
+ content: "\e906";
+}
+.icon-file-code:before {
+ content: "\e907";
+}
+.icon-drag-menu:before {
+ content: "\e908";
+}
+.icon-mapping:before {
+ content: "\e909";
+}
+.icon-template-mapping:before {
+ content: "\e90a";
+}
+.icon-template:before {
+ content: "\e90b";
+}
diff --git a/cds-ui/designer-client/src/styles.css b/cds-ui/designer-client/src/styles.css
index 91bc3f9ad..36cb20804 100644
--- a/cds-ui/designer-client/src/styles.css
+++ b/cds-ui/designer-client/src/styles.css
@@ -92,8 +92,13 @@ body{
color: #fff;
}
.menu-dropdown li .icon{
- padding: 2px 6px;
+ text-align: center;
+ font-size: 16px;
color: #fff;
+ line-height: 33px;
+}
+.menu-dropdown a{
+ cursor: pointer;
}
.menu-dropdown li.active .icon{
color: #fff;
@@ -409,7 +414,6 @@ height: 40px;
padding: 10px 10px 10px 32px;
font-weight: bold;
font-size: 10px;
- text-transform: uppercase;
border-radius: 2px;
border-width: .5px;
border-style: solid;
@@ -470,7 +474,7 @@ height: 40px;
border-bottom-color: #ECEDF2 !important;
}
.nav-link{
- padding: 15px 20px 15px 0 !important;
+ padding: 15px 20px 15px 20px !important;
text-transform: uppercase !important;
font-size: 12px;
font-weight: bold;
@@ -495,6 +499,8 @@ height: 40px;
padding-right: 20px !important;
color: #C3CDDB;
font-weight: normal;
+ position: absolute;
+ left: 0px;
}
.nav-tabs .nav-link:first-child::before{
content: none;
@@ -579,8 +585,9 @@ height: 40px;
width: 0px;
height: 0px;
border-style: solid;
- border-width: 5px 4px 0 4px;
- border-color: #555 transparent transparent transparent;
+ /* border-width: 5px 4px 0 4px;
+ border-color: #555 transparent transparent transparent; */
+ border:0px
}
.dropdown-toggle{
font-size: 0;
@@ -718,9 +725,12 @@ height: 40px;
.main-container{
padding: 0 !important;
}
+.header-button-save button{
+ border-radius: 50px;
+}
/*Page Title*/
.page-title{
- padding: 21px 30px;
+ padding: 15px 30px 14px;
background:#fff;
border-left: solid 1px #FAFAFA;
margin-bottom: 21px;
@@ -728,10 +738,14 @@ height: 40px;
box-shadow: 0 4px 10px 0 #eef0f5;
position: relative;
z-index: 8;
+ position: fixed;
+ width: calc(100% - 50px);
}
.page-title h2{
font-size: 16px;
font-weight: bold;
+ padding-top: 3px;
+ padding-bottom: 2px;
}
.page-title h2 span{
color: #BABBC3;
@@ -739,7 +753,7 @@ height: 40px;
}
/*Content*/
.body-container{
- padding: 0 30px !important;
+ padding: 90px 30px 0 !important;
}
.search-filter-col{
padding-right: 0 !important;
@@ -924,14 +938,13 @@ height: 40px;
}
.addPaackage-card a{
margin: 0 0 14px;
- padding: 10px 10px 10px 32px;
+ padding: 10px 20px 10px 42px;
font-weight: bold;
- font-size: 10px;
- text-transform: uppercase;
+ font-size: 13px;
border-radius: 2px;
- border-width: .5px;
+ border-width: 0px;
border-style: solid;
- background-position: 10px center;
+ background-position: 20px center;
background-repeat: no-repeat;
text-align: left;
}
@@ -957,6 +970,8 @@ height: 40px;
.btn-import-package:hover{
color: #1B3E6F;
background-image: url(../src/assets/img/icon-import-blue.svg);
+ background-size: 16px;
+ background-color: #C3CDDB;
}
/***Actions Menu***/
.packages-card .dropdown{
@@ -1460,6 +1475,42 @@ padding-left: 20px !important;
.btn + .btn{
margin-left: 10px;
}
+ .package-view-button button{
+ width: 150px;
+ float: right;
+ }
+.package-view-button{
+ margin-top: 6px;
+}
+.package-view-button .btn-primary{
+ background-color: #1B3E6F !important;
+ border-color: #1B3E6F !important;
+
+ /* margin-bottom: 10px; */
+}
+.package-view-button .btn-outline-secondary{
+ background-color: #fff !important;
+ border-color: #D0DFF1 !important;
+ color: #1B3E6F !important;
+ margin-left: 10px;
+}
+.package-view-title {
+ font-size: 11px;
+ color: #1B3E6F;
+ font-weight: bold;
+ margin-bottom: 5px;
+ margin-top: 20px;
+}
+.package-view-title+p{
+ font-size: 11px;
+ margin-bottom: 0px;
+}
+.package-view-title+ul{
+ margin-bottom: 0px;
+}
+.package-view-button .btn-outline-secondary i{
+ font-size: 18px;
+}
.card.creat-card{
margin: 0;
border-radius: 2px;
@@ -1469,9 +1520,61 @@ padding-left: 20px !important;
.card.creat-card .single-line{
padding: 15px 25px 15px;
}
+.card.creat-card .single-line-model{
+ padding: 0px;
+}
+.card.creat-card .editor-container{
+ padding: 25px;
+}
.single-line label{
margin-bottom: 0px;
}
+ .single-line-model label{
+ margin-bottom: 0px;
+ border-bottom: 1px solid #efefef;
+ padding: 15px 25px;
+ }
+ .single-line-model .label-name{
+ width: 325px;
+ }
+ .single-line-model .label-input{
+ width: calc(100% - 325px);
+ }
+
+ .single-line-model input{
+ border-bottom: 1px solid #efefef !important;
+ padding: 15px 25px 15px 0px;
+ }
+ .model-note-container{
+ width: calc(100% - 325px);
+ padding: 0px 25px 0px 0px ;
+ margin-left: 325px;
+ }
+ .error-message{
+ font-size:11px ;
+ }
+ .tages-container{
+ margin-bottom: 25px;
+ }
+ .tag-notes{
+font-size: 11px;
+color: #C3CDDB;
+padding: 5px 25px 5px 0px;
+margin-bottom: 5px;
+ }
+ .single-tage{
+ background: #E0E8F2;
+ font-size: 13px;
+ color: #1B3E6F;
+ border-radius: 50px;
+ padding: 5px 10px;
+ margin-right:10px;
+ margin-bottom: 10px;
+ }
+ .single-tage a{
+ color: #1B3E6F;
+ font-size: 14px;
+ }
.label-name{
width: 300px;
display: inline-block;
@@ -1479,6 +1582,9 @@ padding-left: 20px !important;
font-size: 14px;
font-weight: bold;
}
+ .label-name span{
+ color:#FF6469 ;
+ }
.delete-key{
color: #FF6469;
font-size: 10px;
@@ -1506,13 +1612,20 @@ padding-left: 20px !important;
margin-left: 20px;
margin-right: 50px;
font-size: 14px;
+ display: flex;
+}
+.form-check-input+span i{
+ margin-right: 5px;
+ margin-left: 5px;
}
+
.label-input input{
margin-bottom: 0px;
outline: 0px;
border: 0px;
font-size: 14px;
width: 100%;
+ color: #1B3E6F;
}
.label-input input[type=radio]{
width: auto;
@@ -1530,21 +1643,33 @@ padding-left: 20px !important;
background: none;
background: url(/assets/img/arrow.svg) center right no-repeat;
background-size: 10spx;
- width: 100%;
+ width: auto;
-webkit-appearance: none;
-moz-appearance: none;
text-indent: 1px;
text-overflow: '';
font-size: 14px;
-
+ padding-left: 0px;
+ color: #1B3E6F;
+ padding-right: 20px;
+ }
+ .single-line select:focus{
+ box-shadow: 0 0 0 0;
}
.single-line select option:first-child{
color: #C3CDDB;
}
- .single-line input::placeholder{
+ .single-line-model input::placeholder{
font-size: 14px;
color: #C3CDDB;
}
+ .single-line-model.error{
+ color:#FF6469;
+ }
+ .single-line-model.error input{
+ color:#FF6469;
+ border-bottom: 1px solid #FF6469 !important;
+ }
.single-line .custom-key{
background: none;
border: 0px;
@@ -1558,6 +1683,51 @@ padding-left: 20px !important;
padding:70px 100px 70px 70px;
position: relative;
}
+.single-custom-key{
+ width: 100%;
+}
+.single-line-custom-key{
+ width: 45%;
+ display: inline-block;
+}
+.single-line-custom-key-delete{
+ width: 10%;
+ display: inline-block;
+ border-bottom: 1px solid #efefef;
+ padding: 12px;
+}
+.single-line-custom-key label{
+ width: 150px;
+ margin-bottom: 0px;
+ border-bottom: 1px solid #efefef;
+ padding: 15px 25px;
+}
+.single-line-custom-key input{
+
+ border-bottom: 1px solid #efefef !important;
+ padding: 15px 25px;
+}
+.single-line-custom-key input::placeholder{
+ font-size: 14px;
+ color: #C3CDDB;
+ }
+ .single-line-custom-key .label-input{
+ width: calc(100% - 150px);
+ }
+ .single-line-custom-key .label-name span{
+ color: #C3CDDB !important;
+ margin-right: 20px;
+ }
+.custom-key-delete{
+ background: transparent;
+ color: #FF6469;
+ outline: 0px;
+ border: 0px;
+}
+.custom-key-delete:focus{
+ outline: 0px;
+ border: 0px;
+}
hr {
margin-top: 0rem !important;
margin-bottom: 0rem !important;
@@ -1592,12 +1762,18 @@ hr {
font-size: 17px;
display: inline-block;
}
+.action-button.delete{
+ color: #BABBC3;
+}
+.action-button.delete i{
+ color: #BABBC3;
+}
+.action-button.delete:hover{
+ color: #FF6469;
+}
.mode-icon{
font-size: 20px;
}
-.mode-icon.green{
- color: #5DBDBA;
-}
.action-button span{
width: 100%;
display: inline-block;
@@ -1673,11 +1849,14 @@ hr {
.nav-tabs .nav-link{
position: relative;
}
+.nav-tabs .nav-link.tab-done{
+ padding-left: 40px !important;
+}
.nav-tabs .nav-link.tab-done::after{
content: "\f058";
position: absolute;
font-family: 'FontAwesome';
- left: 3px;
+ left: 17px;
font-size: 16px;
top: 11px;
color: #66BB00;
@@ -1769,7 +1948,7 @@ hr {
border: 0px !important;
}
.card-header{
- padding: 10px 25px !important;
+ padding: 0px 25px !important;
background: #F4F9FE !important;
border-radius: 0px !important;
border-bottom: 1px solid #ECEDF2 !important;
@@ -1783,6 +1962,7 @@ hr {
width: 100%;
text-align: left;
padding-left: 0px !important;
+ font-size:14px;
}
.accordion .card{
margin-bottom: 0px !important;
@@ -1852,6 +2032,219 @@ hr {
position: absolute;
top: 13px;
}
+.ace-tomorrow-night-bright .ace_print-margin{
+ background: #eee !important;
+}
+.ace_editor{
+ line-height: 25px;
+ border: 1px solid #ECEDF2;
+ background-color: #fff;
+ color: #1B3E6F;
+}
+.ace-tomorrow-night-bright .ace_gutter{
+ background: #1B3E6F !important;
+ border-right: 0px !important;
+ color: #fff !important;
+}
+.ace-tomorrow-night-bright .ace_gutter-active-line {
+ background-color: #265699;
+}
+.ace-tomorrow-night-bright .ace_cursor{
+ color: #265699;
+}
+.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {
+ background: #eee;
+}
+.breadcrumb-header{
+ padding: 0px;
+ margin: 0px;
+}
+.breadcrumb-header li{
+ list-style: none;
+ display: inline-block;
+ font-size: 12px;
+}
+.breadcrumb-header li::after{
+ content: "/";
+ padding: 0px 10px;
+ font-size: 16px;
+ color: #C3CDDB;
+}
+.breadcrumb-header li:last-child::after{
+ display: none;
+}
+
+.breadcrumb-header li:last-child{
+background: #F4F9FE;
+border-radius: 50px;
+color: #C3CDDB;
+padding: 4px 10px;
+}
+.breadcrumb-header li:first-child{
+ font-size: 16px;
+ font-weight: bold;
+ padding: 0px;
+ color: #1B3E6F;
+ border-radius: 0px;
+ background: transparent;
+ padding: 4px 0px 3px;
+}
+.create-template-import{
+ width: 100%;
+ margin: 30px 0px 10px ;
+}
+
+.create-template-import a:hover{
+ text-decoration: none;
+}
+.mapping-source-load {
+ color: #1B3E6F;
+ font-size: 10px;
+ font-weight: bold;
+ display: inline-table;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ margin:15px 30px 10px;
+}
+.mapping-source-load:hover{
+ text-decoration: none;
+}
+.mapping-source-load i {
+ color: #1B3E6F;
+ font-size: 36px;
+ padding: 10px;
+ background: #F4F9FE;
+ border-radius: 100px;
+ width: 70px;
+ height: 70px;
+ display: inline-block;
+ line-height: 52px;
+ margin-bottom: 20px;
+}
+.source-load-note{
+ color:#C3CDDB ;
+ font-size: 8px;
+}
+.template-mapping-list{
+ background: #F4F9FE;
+ border: 1px solid #E9F3FF;
+ padding: 5px 10px;
+ box-shadow: 0 2px 6px 0 rgba(47, 83, 151, 0.1);
+ width: 100%;
+ display: inline-block;
+ margin-bottom: 20px;
+ color: #1B3E6F;
+}
+.template-mapping-list:hover, .template-mapping-list.active {
+ background: #1B3E6F;
+ text-decoration: none;
+ color: #fff;
+}
+.template-mapping-list span{
+ background: #fff;
+ color: #2A81ED;
+ font-size: 8px;
+ float: right;
+ border-radius: 50px;
+ padding: 3px 10px;
+ margin-top: 1px;
+ margin-left: 5px;
+
+}
+.max-height-list{
+ max-height: 232px;
+ padding-bottom: 5px !important;
+ overflow: auto;
+}
+.create-template-mapping-button{
+background: #C3CDDB;
+border-radius: 50px;
+font-size: 12px;
+padding: 10px 20px;
+margin-bottom: 20px;
+ display: inline-block;
+ cursor: pointer;
+}
+.create-template-mapping-button i{
+margin-right: 5px;
+ }
+.view-package-container{
+ padding: 20px;
+}
+.package-type-icon{
+ color: #fff;
+ background: #1B3E6F;
+ width: 40px;
+ height: 40px;
+ border-radius: 40px;
+ display: inline-block;
+ text-align: center;
+ line-height: 38px;
+ font-size: 20px;
+ margin-right: 20px;
+}
+.package-name-container{
+ width: calc(100% - 60px);
+ display: inline-block;
+}
+.package-name{
+font-size: 14px;
+color: #1B3E6F;
+font-weight: bold;
+margin-top: 3px;
+}
+.package-name span{
+ font-size: 10px;
+ color: #C3CDDB;
+}
+.package-name i{
+ font-size: 12px;
+ color: #C3CDDB;
+ margin-left: 5px;
+}
+.package-name.deployed i{
+ color: #66BB00;
+}
+.package-description{
+ color: #D0D7E4;
+ font-size: 12px;
+ font-weight: normal;
+}
+.template-mapping-action{
+ width: 100%;
+ text-align: center;
+ margin-bottom: 30px;
+}
+.template-mapping-action button{
+ border-radius: 50px;
+}
+.template-mapping-action .btn-primary{
+ background:#5DBDBA !important ;
+ border-color:#5DBDBA !important ;
+ color: #fff !important ;
+}
+.template-mapping-action .btn-outline-secondary{
+ background:#fff !important ;
+ border-color:#ECEDF2 !important ;
+ color: #C3CDDB !important ;
+}
+.table-container{
+ width: 100%;
+}
+/*
+ server-side-angular-way.component.css
+*/
+.no-data-available {
+ text-align: center;
+}
+
+/*
+ src/styles.css (i.e. your global style)
+*/
+.dataTables_empty {
+ display: none;
+}
+
/* Extra small devices (portrait phones, less than 576px) */
@media (max-width: 575.98px) {
.page-title{
diff --git a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt
index 16cb5d6e2..f7296d421 100644
--- a/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt
+++ b/ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BluePrintProcessorCluster.kt
@@ -88,6 +88,6 @@ open class BluePrintProcessorCluster(private val bluePrintClusterService: BluePr
@PreDestroy
fun shutDown() = runBlocking {
- bluePrintClusterService.shutDown(Duration.ofSeconds(1))
+ bluePrintClusterService.shutDown(Duration.ofMillis(1))
}
}
diff --git a/ms/blueprintsprocessor/application/src/main/resources/hazelcast/hazelcast.yaml b/ms/blueprintsprocessor/application/src/main/resources/hazelcast/hazelcast.yaml
index bacbe2a45..5c74682e0 100644
--- a/ms/blueprintsprocessor/application/src/main/resources/hazelcast/hazelcast.yaml
+++ b/ms/blueprintsprocessor/application/src/main/resources/hazelcast/hazelcast.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/api/DeviceInfo.kt b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/api/DeviceInfo.kt
index 2f10bb56b..4456cb0de 100644
--- a/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/api/DeviceInfo.kt
+++ b/ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/api/DeviceInfo.kt
@@ -32,8 +32,8 @@ class DeviceInfo {
var connectTimeout: Long = 30
@get:JsonIgnore
var source: String? = null
- @get:JsonIgnore
- var replyTimeout: Int = 20
+ @get:JsonProperty("reply-time-out")
+ var replyTimeout: Int = 30
@get:JsonIgnore
var idleTimeout: Int = 99999
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
index 51e93a3c1..7272a3d63 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionService.kt
@@ -152,8 +152,7 @@ open class ResourceResolutionServiceImpl(
// Resource Assignment Artifact Definition Name
val artifactMapping = "$artifactPrefix-mapping"
- val resolvedContent: String
- log.info("Resolving resource for template artifact($artifactTemplate) with resource assignment artifact($artifactMapping)")
+ log.info("Resolving resource with resource assignment artifact($artifactMapping)")
val resourceAssignmentContent =
bluePrintRuntimeService.resolveNodeTemplateArtifact(nodeTemplateName, artifactMapping)
@@ -189,14 +188,20 @@ open class ResourceResolutionServiceImpl(
val resolvedParamJsonContent =
ResourceAssignmentUtils.generateResourceDataForAssignments(resourceAssignments.toList())
- resolvedContent = blueprintTemplateService.generateContent(
- bluePrintRuntimeService, nodeTemplateName,
- artifactTemplate, resolvedParamJsonContent, false,
- mutableMapOf(
- ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE to
- properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE].asJsonPrimitive()
+ val artifactTemplateDefinition = bluePrintRuntimeService.bluePrintContext().checkNodeTemplateArtifact(nodeTemplateName, artifactTemplate)
+
+ val resolvedContent = if (artifactTemplateDefinition != null) {
+ blueprintTemplateService.generateContent(
+ bluePrintRuntimeService, nodeTemplateName,
+ artifactTemplate, resolvedParamJsonContent, false,
+ mutableMapOf(
+ ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE to
+ properties[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_OCCURRENCE].asJsonPrimitive()
+ )
)
- )
+ } else {
+ resolvedParamJsonContent
+ }
if (isToStore(properties)) {
templateResolutionDBService.write(properties, resolvedContent, bluePrintRuntimeService, artifactPrefix)
@@ -211,8 +216,7 @@ open class ResourceResolutionServiceImpl(
resourceDefinitions: MutableMap<String, ResourceDefinition>,
resolveDefinition: String,
sources: List<String>
- ):
- MutableMap<String, JsonNode> {
+ ): MutableMap<String, JsonNode> {
// Populate Dummy Resource Assignments
val resourceAssignments = createResourceAssignments(resourceDefinitions, resolveDefinition, sources)
@@ -397,8 +401,10 @@ open class ResourceResolutionServiceImpl(
if (resourceResolution.status == BluePrintConstants.STATUS_SUCCESS) {
resourceAssignmentList.forEach {
if (compareOne(resourceResolution, it)) {
- log.info("Resource ({}) already resolved: value=({})", it.name,
- if (hasLogProtect(it.property)) LOG_REDACTED else resourceResolution.value)
+ log.info(
+ "Resource ({}) already resolved: value=({})", it.name,
+ if (hasLogProtect(it.property)) LOG_REDACTED else resourceResolution.value
+ )
// Make sure to recreate value as per the defined type.
val value = resourceResolution.value!!.asJsonType(it.property!!.type)
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/DatabaseResourceAssignmentProcessor.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/DatabaseResourceAssignmentProcessor.kt
index 53698ca82..e43b45e7d 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/DatabaseResourceAssignmentProcessor.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/processor/DatabaseResourceAssignmentProcessor.kt
@@ -132,7 +132,7 @@ open class DatabaseResourceAssignmentProcessor(
private fun populateNamedParameter(inputKeyMapping: Map<String, String>): Map<String, Any> {
val namedParameters = HashMap<String, Any>()
inputKeyMapping.forEach {
- val expressionValue = raRuntimeService.getDictionaryStore(it.value).textValue()
+ val expressionValue = raRuntimeService.getResolutionStore(it.value).textValue()
logger.trace("Reference dictionary key (${it.key}) resulted in value ($expressionValue)")
namedParameters[it.key] = expressionValue
}
diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
index 264b45789..2f338a3a1 100644
--- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
+++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt
@@ -202,20 +202,20 @@ class ResourceResolutionServiceTest {
"resource-assignment"
)
- resourceResolutionService.resolveResources(
- resourceAssignmentRuntimeService,
- "resource-assignment",
- artifactPrefix,
- props
+ assertNotNull(
+ resourceResolutionService.resolveResources(
+ resourceAssignmentRuntimeService,
+ "resource-assignment",
+ artifactPrefix,
+ props
+ ), "Couldn't Resolve Resources for artifact $artifactPrefix"
)
}
}
@Test
fun testResolveResourcesWithResourceIdAndResourceType() {
-
props[ResourceResolutionConstants.RESOURCE_RESOLUTION_INPUT_RESOLUTION_KEY] = ""
-
runBlocking {
Assert.assertNotNull("failed to create ResourceResolutionService", resourceResolutionService)
@@ -245,11 +245,13 @@ class ResourceResolutionServiceTest {
"resource-assignment"
)
- resourceResolutionService.resolveResources(
- resourceAssignmentRuntimeService,
- "resource-assignment",
- artifactPrefix,
- props
+ assertNotNull(
+ resourceResolutionService.resolveResources(
+ resourceAssignmentRuntimeService,
+ "resource-assignment",
+ artifactPrefix,
+ props
+ ), "Couldn't Resolve Resources for artifact $artifactPrefix"
)
}
}
diff --git a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt
index a112b6e6c..7c0970202 100644
--- a/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt
+++ b/ms/blueprintsprocessor/modules/blueprints/blueprint-core/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/core/service/BluePrintContext.kt
@@ -231,15 +231,17 @@ class BluePrintContext(val serviceTemplate: ServiceTemplate) {
return nodeTemplateByName(nodeTemplateName).artifacts
}
- fun nodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition {
+ fun checkNodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition? {
return nodeTemplateArtifacts(nodeTemplateName)?.get(artifactName)
+ }
+
+ fun nodeTemplateArtifact(nodeTemplateName: String, artifactName: String): ArtifactDefinition {
+ return checkNodeTemplateArtifact(nodeTemplateName, artifactName)
?: throw BluePrintException("could't get NodeTemplate($nodeTemplateName)'s ArtifactDefinition($artifactName)")
}
fun nodeTemplateArtifactForArtifactType(nodeTemplateName: String, artifactType: String): ArtifactDefinition {
- return nodeTemplateArtifacts(nodeTemplateName)?.filter { it.value.type == artifactType }?.map { it.value }?.get(
- 0
- )
+ return nodeTemplateArtifacts(nodeTemplateName)?.filter { it.value.type == artifactType }?.map { it.value }?.get(0)
?: throw BluePrintException("could't get NodeTemplate($nodeTemplateName)'s Artifact Type($artifactType)")
}
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt
index 83a04d653..09641458c 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterService.kt
@@ -27,6 +27,7 @@ import com.hazelcast.config.FileSystemYamlConfig
import com.hazelcast.config.MemberAttributeConfig
import com.hazelcast.core.Hazelcast
import com.hazelcast.core.HazelcastInstance
+import com.hazelcast.cp.CPSubsystemManagementService
import com.hazelcast.cp.lock.FencedLock
import com.hazelcast.scheduledexecutor.IScheduledExecutorService
import kotlinx.coroutines.delay
@@ -48,6 +49,7 @@ open class HazlecastClusterService : BluePrintClusterService {
private val log = logger(HazlecastClusterService::class)
lateinit var hazelcast: HazelcastInstance
+ lateinit var cpSubsystemManagementService: CPSubsystemManagementService
var joinedClient = false
var joinedLite = false
@@ -57,7 +59,10 @@ open class HazlecastClusterService : BluePrintClusterService {
when (configuration) {
is Config -> {
joinedLite = configuration.isLiteMember
- Hazelcast.newHazelcastInstance(configuration)
+ val hazelcastInstance = Hazelcast.newHazelcastInstance(configuration)
+ /** Promote as CP Member */
+ promoteAsCPMember(hazelcastInstance)
+ hazelcastInstance
}
is ClientConfig -> {
joinedClient = true
@@ -99,7 +104,10 @@ open class HazlecastClusterService : BluePrintClusterService {
hazelcastServerConfiguration.properties = configuration.properties
hazelcastServerConfiguration.memberAttributeConfig = memberAttributeConfig
joinedLite = hazelcastServerConfiguration.isLiteMember
- Hazelcast.newHazelcastInstance(hazelcastServerConfiguration)
+ val hazelcastInstance = Hazelcast.newHazelcastInstance(hazelcastServerConfiguration)
+ /** Promote as CP Member */
+ promoteAsCPMember(hazelcastInstance)
+ hazelcastInstance
}
}
else -> {
@@ -169,11 +177,17 @@ open class HazlecastClusterService : BluePrintClusterService {
override suspend fun shutDown(duration: Duration) {
if (::hazelcast.isInitialized && clusterJoined()) {
delay(duration.toMillis())
- hazelcast.lifecycleService.terminate()
+ HazlecastClusterUtils.terminate(hazelcast)
}
}
/** Utils */
+ suspend fun promoteAsCPMember(hazelcastInstance: HazelcastInstance) {
+ if (!joinedClient && !joinedLite) {
+ HazlecastClusterUtils.promoteAsCPMember(hazelcastInstance)
+ }
+ }
+
suspend fun myHazelcastApplicationMembers(): Map<String, Member> {
check(::hazelcast.isInitialized) { "failed to start and join cluster" }
check(!isClient()) { "not supported for cluster client members." }
@@ -198,11 +212,11 @@ open class BlueprintsClusterMembershipListener(val hazlecastClusterService: Hazl
private val log = logger(BlueprintsClusterMembershipListener::class)
override fun memberRemoved(membershipEvent: MembershipEvent) {
- log.info("${hazlecastClusterService.hazelcast.cluster.localMember} : Member Removed: $membershipEvent")
+ log.info("MembershipEvent: $membershipEvent")
}
override fun memberAdded(membershipEvent: MembershipEvent) {
- log.info("${hazlecastClusterService.hazelcast.cluster.localMember} : Member Added : $membershipEvent")
+ log.info("MembershipEvent: $membershipEvent")
}
}
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterUtils.kt b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterUtils.kt
new file mode 100644
index 000000000..70970f6da
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/core/cluster/HazlecastClusterUtils.kt
@@ -0,0 +1,117 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.core.cluster
+
+import com.hazelcast.core.HazelcastInstance
+import com.hazelcast.cp.CPGroup
+import com.hazelcast.cp.CPMember
+import com.hazelcast.cp.CPSubsystemManagementService
+import com.hazelcast.instance.impl.HazelcastInstanceProxy
+import org.onap.ccsdk.cds.controllerblueprints.core.logger
+import java.util.UUID
+import java.util.concurrent.TimeUnit
+
+object HazlecastClusterUtils {
+
+ private val log = logger(HazlecastClusterUtils::class)
+
+ /** Promote [hazelcastInstance] member to CP Member */
+ fun promoteAsCPMember(hazelcastInstance: HazelcastInstance) {
+ when (hazelcastInstance) {
+ is HazelcastInstanceProxy -> {
+ val cpSubsystemManagementService = cpSubsystemManagementService(hazelcastInstance)
+ cpSubsystemManagementService.promoteToCPMember()
+ .toCompletableFuture().get()
+ log.info("Promoted as CP member(${hazelcastInstance.cluster.localMember})")
+ val clusterCPMembers = clusterCPMembers(hazelcastInstance)
+ log.info("CP Members(${clusterCPMembers.size}): $clusterCPMembers")
+ val cpGroupMembers = cpGroupMembers(hazelcastInstance)
+ log.info("CP Group Members(${cpGroupMembers.size}): $cpGroupMembers")
+ }
+ else -> log.debug("Client instance not eligible for CP Member promotion")
+ }
+ }
+
+ /** Terminate [hazelcastInstance] member */
+ fun terminate(hazelcastInstance: HazelcastInstance) {
+ log.info("Terminating Member : ${hazelcastInstance.cluster.localMember}")
+ hazelcastInstance.lifecycleService.terminate()
+ }
+
+ /** Remove [hazelcastInstance] member from cluster CP Member List*/
+ fun removeFromCPMember(hazelcastInstance: HazelcastInstance) {
+ // check CP Member, then remove */
+ val localCPMemberUuid = localCPMemberUUID(hazelcastInstance)
+ localCPMemberUuid?.let { uuid ->
+ removeFromCPMember(hazelcastInstance, uuid)
+ }
+ }
+
+ /** Remove [removeCPMemberUuid] member from cluster CP Member List, using [hazelcastInstance]*/
+ fun removeFromCPMember(hazelcastInstance: HazelcastInstance, removeCPMemberUuid: UUID) {
+ val cpSubsystemManagementService = cpSubsystemManagementService(hazelcastInstance)
+ cpSubsystemManagementService.removeCPMember(removeCPMemberUuid)
+ .toCompletableFuture().get()
+ log.info("Removed CP member($removeCPMemberUuid)")
+ }
+
+ /** Get [hazelcastInstance] CP Group members*/
+ fun cpGroupMembers(hazelcastInstance: HazelcastInstance): List<CPMember> {
+ return cpGroup(hazelcastInstance).members().toList()
+ }
+
+ /** Get [hazelcastInstance] CP Group[groupName] members*/
+ fun cpGroup(
+ hazelcastInstance: HazelcastInstance,
+ groupName: String? = CPGroup.METADATA_CP_GROUP_NAME
+ ): CPGroup {
+ return cpSubsystemManagementService(hazelcastInstance).getCPGroup(groupName)
+ .toCompletableFuture().get()
+ }
+
+ /** Get [hazelcastInstance] CP member UUIDs*/
+ fun clusterCPMemberUUIDs(hazelcastInstance: HazelcastInstance): List<UUID> {
+ return clusterCPMembers(hazelcastInstance).map { it.uuid }
+ }
+
+ /** Get [hazelcastInstance] CP members*/
+ fun clusterCPMembers(hazelcastInstance: HazelcastInstance): List<CPMember> {
+ return cpSubsystemManagementService(hazelcastInstance).cpMembers.toCompletableFuture().get().toList()
+ }
+
+ /** Get CPSubsystemManagementService for [hazelcastInstance] */
+ fun cpSubsystemManagementService(hazelcastInstance: HazelcastInstance): CPSubsystemManagementService {
+ val cpSubsystemManagementService = hazelcastInstance.cpSubsystem.cpSubsystemManagementService
+ cpSubsystemManagementService.awaitUntilDiscoveryCompleted(3, TimeUnit.MINUTES)
+ return cpSubsystemManagementService
+ }
+
+ /** Get local CPMemberUUID for [hazelcastInstance] */
+ fun localCPMemberUUID(hazelcastInstance: HazelcastInstance) = localCPMember(hazelcastInstance)?.uuid
+
+ /** Check local member is CP member for [hazelcastInstance] */
+ fun checkLocalMemberIsCPMember(hazelcastInstance: HazelcastInstance): Boolean {
+ return localCPMember(hazelcastInstance) != null
+ }
+
+ /** Get local CP member for [hazelcastInstance] */
+ fun localCPMember(hazelcastInstance: HazelcastInstance) =
+ cpSubsystemManagementService(hazelcastInstance).localCPMember
+
+ /** Get local CP member UUID for [hazelcastInstance] */
+ fun localMemberUUID(hazelcastInstance: HazelcastInstance) = hazelcastInstance.cluster.localMember.uuid
+}
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5679.yaml b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5679.yaml
index cbf488c95..e7ac273ed 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5679.yaml
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5679.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5680.yaml b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5680.yaml
index 356be1d05..cb493d169 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5680.yaml
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5680.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5681.yaml b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5681.yaml
index d256f49e3..e60b0c506 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5681.yaml
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5681.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5682.yaml b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5682.yaml
index 9c7d566db..3cb10a08b 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5682.yaml
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast-5682.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast.yaml b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast.yaml
index dcecf454f..ab5d44804 100644
--- a/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast.yaml
+++ b/ms/blueprintsprocessor/modules/commons/processor-core/src/test/resources/hazelcast/hazelcast.yaml
@@ -6,6 +6,9 @@ hazelcast:
cp-subsystem:
cp-member-count: 3
group-size: 3
+ session-time-to-live-seconds: 60
+ session-heartbeat-interval-seconds: 5
+ missing-cp-member-auto-removal-seconds: 120
# network:
# join:
# multicast:
diff --git a/ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt b/ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt
index ebd9d553d..06100f1fc 100644
--- a/ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt
+++ b/ms/blueprintsprocessor/modules/services/workflow-service/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/ImperativeWorkflowExecutionService.kt
@@ -144,7 +144,7 @@ open class ImperativeBluePrintWorkflowService(private val nodeTemplateExecutionS
nodeInput: ExecutionServiceInput,
nodeOutput: ExecutionServiceOutput
): EdgeLabel {
- log.info("Executing workflow($workflowName[${this.workflowId}])'s step($${node.id})")
+ log.info("Executing workflow($workflowName[${this.workflowId}])'s step(${node.id})")
val step = bluePrintRuntimeService.bluePrintContext().workflowStepByName(this.workflowName, node.id)
checkNotEmpty(step.target) { "couldn't get step target for workflow(${this.workflowName})'s step(${node.id})" }
val nodeTemplateName = step.target!!
diff --git a/pom.xml b/pom.xml
index a7b563c2e..65de1c54a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,7 @@ limitations under the License.
<modules>
<module>ms</module>
- <!-- <module>cds-ui</module>-->
+ <module>cds-ui</module>
<module>components</module>
</modules>