1 import {Component, OnInit} from '@angular/core';
2 import {PackageCreationService} from '../package-creation.service';
3 import {MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
4 import {PackageCreationStore} from '../package-creation.store';
5 import {ActivatedRoute} from '@angular/router';
9 selector: 'app-metadata-tab',
10 templateUrl: './metadata-tab.component.html',
11 styleUrls: ['./metadata-tab.component.css']
13 export class MetadataTabComponent implements OnInit {
14 packageNameAndVersionEnables = true;
16 tags = new Set<string>();
17 customKeysMap = new Map();
19 {name: 'Designer Mode', style: 'mode-icon icon-topologyView-active'}];
20 /* {name: 'Scripting Mode', style: 'mode-icon icon-topologySource'},
21 {name: 'Generic Script Mode', style: 'mode-icon icon-topologySource'}];*/
22 modeType = this.modes[0].name;
23 metaDataTab: MetaDataTabModel = new MetaDataTabModel();
25 versionPattern = '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$';
28 private route: ActivatedRoute,
29 private packageCreationService: PackageCreationService,
30 private packageCreationStore: PackageCreationStore
36 this.metaDataTab.templateTags = this.tags;
37 this.metaDataTab.mapOfCustomKey = this.customKeysMap;
38 this.metaDataTab.mode = this.modeType;
40 const id = this.route.snapshot.paramMap.get('id');
41 id ? this.packageNameAndVersionEnables = false :
42 this.packageNameAndVersionEnables = true;
43 this.packageCreationStore.state$.subscribe(element => {
45 if (element && element.metaData) {
47 this.metaDataTab.name = element.metaData.name;
48 this.metaDataTab.version = element.metaData.version;
49 this.metaDataTab.description = element.metaData.description;
50 this.tags = element.metaData.templateTags;
51 this.metaDataTab.templateTags = this.tags;
53 if (element.metaData.mode && element.metaData.mode.includes('DEFAULT')) {
54 this.metaDataTab.mode = 'Designer Mode';
55 this.modeType = this.metaDataTab.mode;
58 this.customKeysMap = element.metaData.mapOfCustomKey;
59 this.metaDataTab.mapOfCustomKey = this.customKeysMap;
60 // this.tags = element.metaData.templateTags;
67 // console.log(event);
68 this.tags.delete(value);
72 const value = event.target.value;
74 if (value && value.trim().length > 0) {
75 event.target.value = '';
80 removeKey(event, key) {
82 this.customKeysMap.delete(key);
86 // tslint:disable-next-line: no-string-literal
87 const key = document.getElementsByClassName('mapKey')[0];
88 // tslint:disable-next-line: no-string-literal
89 const value = document.getElementsByClassName('mapValue')[0];
91 // tslint:disable-next-line: no-string-literal
92 if (key['value'] && value['value']) {
93 // tslint:disable-next-line: no-string-literal
94 this.customKeysMap.set(key['value'], value['value']);
95 // tslint:disable-next-line: no-string-literal
97 // tslint:disable-next-line: no-string-literal
102 validatePackageNameAndVersion() {
103 if (this.metaDataTab.name && this.metaDataTab.version) {
104 this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
106 this.errorMessage = 'Package name already exists with this version. Use different name or different version number.';
107 } else if (!this.metaDataTab.version.match(this.versionPattern)) {
108 this.errorMessage = 'version should be as example 1.0.0';
110 this.errorMessage = '';
117 saveMetaDataToStore() {
118 this.packageCreationStore.changeMetaData(this.metaDataTab);
121 checkRequiredElements() {
122 const newMetaData = new MetaDataTabModel();
123 newMetaData.description = this.metaDataTab.description;
124 newMetaData.name = this.metaDataTab.name;
125 newMetaData.version = this.metaDataTab.version;
126 newMetaData.templateTags = this.metaDataTab.templateTags;
127 newMetaData.mapOfCustomKey = this.metaDataTab.mapOfCustomKey;
128 newMetaData.mode = this.metaDataTab.mode;
129 this.packageCreationStore.changeMetaData(newMetaData);