summaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab
diff options
context:
space:
mode:
Diffstat (limited to 'cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab')
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.css0
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html88
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.spec.ts25
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts137
4 files changed, 250 insertions, 0 deletions
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.css b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.css
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.css
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
new file mode 100644
index 000000000..a94687b37
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
@@ -0,0 +1,88 @@
+<div class="card creat-card">
+ <div class="single-line">
+ <label class="label-name">Mode</label>
+ <label name="trst" *ngFor="let mode of modes; let i = index">
+ <input class="form-check-input" [(ngModel)]="metaDataTab.mode" type="radio"
+ name="exampleRadios" id="exampleRadios1" value={{mode.name}}>
+
+ <span>
+ <i [className]="mode.style" aria-hidden="true" [id]="mode.name"></i>
+ {{mode.name}}
+ </span>
+ </label>
+ </div>
+
+</div>
+<div class="card creat-card">
+ <div class="single-line">
+ <label class="label-name">Name</label>
+ <div class="label-input">
+ <input type="input"
+ [(ngModel)]="metaDataTab.name" placeholder="Topology name.vLB.CDS">
+ </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="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>
+ <hr/>
+ <div class="single-line">
+ <label class="label-name">tags</label>
+ <div class="label-input">
+ <input type="input" [(ngModel)]="metaDataTab.tags"
+ placeholder="Ex., vDNS-CDS">
+ </div>
+ </div>
+</div>
+<div id="container">
+ <div id="target">
+ <div class="card creat-card">
+ <div class="single-line">
+ <h5 class="label-name">
+ Custom key <a class="delete-key" (click)="deleteCustomKey($event)">Delete</a>
+ </h5>
+
+ </div>
+ <div class="single-line">
+ <label class="label-name">Name</label>
+ <div class="label-input">
+ <input name="key" type="input" placeholder="Enter Name">
+ </div>
+ </div>
+ <hr/>
+ <div class="single-line">
+ <label class="label-name">Value</label>
+ <div class="label-input">
+ <input name="value" type="input"
+ placeholder="Enter Value">
+ </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>
+ </div>
+</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.spec.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.spec.ts
new file mode 100644
index 000000000..90586d900
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MetadataTabComponent } from './metadata-tab.component';
+
+describe('MetadataTabComponent', () => {
+ let component: MetadataTabComponent;
+ let fixture: ComponentFixture<MetadataTabComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ MetadataTabComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MetadataTabComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
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
new file mode 100644
index 000000000..894716711
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
@@ -0,0 +1,137 @@
+import {Component, OnInit} from '@angular/core';
+import {PackageCreationService} from '../package-creation.service';
+import {PackageCreationUtils} from '../package-creation.utils';
+import {Router} from '@angular/router';
+import {FilesContent, FolderNodeElement, MetaDataFile, MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
+import * as JSZip from 'jszip';
+import {PackageCreationStore} from '../package-creation.store';
+
+
+@Component({
+ selector: 'app-metadata-tab',
+ templateUrl: './metadata-tab.component.html',
+ styleUrls: ['./metadata-tab.component.css']
+})
+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'}];
+ private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
+
+ private folder: FolderNodeElement = new FolderNodeElement();
+ private zipFile: JSZip = new JSZip();
+ private filesData: any = [];
+ private errorMessage: string;
+
+ constructor(private packageCreationService: PackageCreationService, private packageCreationUtils: PackageCreationUtils,
+ private router: Router, private packageCreationStore: PackageCreationStore) {
+
+ }
+
+ ngOnInit() {
+ this.packageCreationStore.changeMetaData(this.metaDataTab);
+ }
+
+ saveMetaData() {
+ this.setModeType(this.metaDataTab);
+ this.setEntryPoint(this.metaDataTab);
+
+ this.addToscaMetaDataFile(this.metaDataTab);
+
+ // const vlbDefinition: VlbDefinition = new VlbDefinition();
+ // this.fillVLBDefinition(vlbDefinition, this.metaDataTab);
+
+ this.filesData.push(this.folder.TREE_DATA);
+ this.saveBluePrint();
+ this.packageCreationService.refreshPackages();
+ this.router.navigate(['/packages']);
+
+ }
+
+ addToscaMetaDataFile(metaDataTab: MetaDataTabModel) {
+ const filename = 'TOSCA.meta';
+ FilesContent.putData(filename, MetaDataFile.getObjectInstance(this.metaDataTab));
+ }
+
+ 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';
+ }
+ }
+
+ saveBluePrint() {
+ this.create();
+ this.zipFile.generateAsync({type: 'blob'})
+ .then(blob => {
+ this.packageCreationService.savePackage(blob);
+
+ });
+ }
+
+
+ create() {
+ this.folder.TREE_DATA.forEach((path) => {
+
+ const name = path.name;
+ if (path.children) {
+ this.zipFile.folder(name);
+ path.children.forEach(children => {
+ const name2 = children.name;
+ if (FilesContent.getMapOfFilesNamesAndContent().has(name2)) {
+ this.zipFile.file(name + '/' + name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
+ } else {
+ }
+
+ });
+
+ }
+ });
+ }
+
+ private setEntryPoint(metaDataTab: MetaDataTabModel) {
+ if (metaDataTab.mode.startsWith('DEFAULT')) {
+ metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
+ } else {
+ metaDataTab.entryFileName = '';
+ }
+
+
+ }
+
+ /* private fillVLBDefinition(vlbDefinition: VlbDefinition, metaDataTab: MetaDataTabModel) {
+
+ const metadata: Metadata = new Metadata();
+ metadata.template_author = 'Shaaban';
+ metadata.template_name = metaDataTab.templateName;
+ metadata.template_tags = metaDataTab.tags;
+
+ metadata.dictionary_group = 'default';
+ metadata.template_version = metaDataTab.version;
+ metadata['author-email'] = 'shaaban.altanany.ext@orange.com';
+ metadata['user-groups'] = 'ADMIN';
+ vlbDefinition.tosca_definitions_version = metaDataTab.version;
+ vlbDefinition.metadata = metadata;
+ const value = this.packageCreationUtils.transformToJson(vlbDefinition);
+ console.log(value);
+ FilesContent.putData('vLB_CDS.json', value);
+ }*/
+
+ validatePackageNameAndVersion() {
+ if (this.metaDataTab.name && this.metaDataTab.version) {
+ this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
+ if (element) {
+ this.errorMessage = 'the package with name and version is exists';
+ } else {
+ this.errorMessage = ' ';
+ }
+ });
+ }
+
+ }
+}