4e0e5c977fc67f220b03e802da64b5b4f90fe229
[ccsdk/cds.git] /
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';
6
7
8 @Component({
9     selector: 'app-metadata-tab',
10     templateUrl: './metadata-tab.component.html',
11     styleUrls: ['./metadata-tab.component.css']
12 })
13 export class MetadataTabComponent implements OnInit {
14     packageNameAndVersionEnables = true;
15     counter = 0;
16     tags = new Set<string>();
17     customKeysMap = new Map();
18     modes: any[] = [
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();
24     errorMessage: string;
25     versionPattern = '(\d+)\.(\d+)\.(\d+)';
26
27     constructor(
28         private route: ActivatedRoute,
29         private packageCreationService: PackageCreationService,
30         private packageCreationStore: PackageCreationStore
31     ) {
32
33     }
34
35     ngOnInit() {
36         this.metaDataTab.templateTags = this.tags;
37         this.metaDataTab.mapOfCustomKey = this.customKeysMap;
38         this.metaDataTab.mode = this.modeType;
39
40         const id = this.route.snapshot.paramMap.get('id');
41         id ? this.packageNameAndVersionEnables = false :
42             this.packageNameAndVersionEnables = true;
43         this.packageCreationStore.state$.subscribe(element => {
44
45             if (element && element.metaData) {
46
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.tags.delete('');
52                 this.metaDataTab.templateTags = this.tags;
53                 console.log(element);
54                 if (element.metaData.mode && element.metaData.mode.includes('DEFAULT')) {
55                     this.metaDataTab.mode = 'Designer Mode';
56                     this.modeType = this.metaDataTab.mode;
57                 }
58
59                 this.customKeysMap = element.metaData.mapOfCustomKey;
60                 this.metaDataTab.mapOfCustomKey = this.customKeysMap;
61                 // this.tags = element.metaData.templateTags;
62
63             }
64         });
65     }
66
67     removeTag(value) {
68         // console.log(event);
69         this.tags.delete(value);
70     }
71
72     addTag(event) {
73         const value = event.target.value;
74         console.log(value);
75         if (value && value.trim().length > 0) {
76             event.target.value = '';
77             this.tags.add(value.trim());
78         }
79     }
80
81     removeKey(event, key) {
82         console.log(event);
83         this.customKeysMap.delete(key);
84     }
85
86     addCustomKey() {
87         // tslint:disable-next-line: no-string-literal
88         const key = document.getElementsByClassName('mapKey')[0];
89         // tslint:disable-next-line: no-string-literal
90         const value = document.getElementsByClassName('mapValue')[0];
91
92         // tslint:disable-next-line: no-string-literal
93         if (key['value'] && value['value']) {
94             // tslint:disable-next-line: no-string-literal
95             this.customKeysMap.set(key['value'], value['value']);
96             // tslint:disable-next-line: no-string-literal
97             key['value'] = '';
98             // tslint:disable-next-line: no-string-literal
99             value['value'] = '';
100         }
101     }
102
103     validatePackageNameAndVersion() {
104         if (this.metaDataTab.name && this.metaDataTab.version) {
105             this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
106                 if (element) {
107                     this.errorMessage = 'Package name already exists with this version. Use different name or different version number.';
108                 } else if (!this.metaDataTab.version.match(this.versionPattern)) {
109                     this.errorMessage = 'version should be as example 1.0.0';
110                 } else {
111                     this.errorMessage = '';
112                 }
113             });
114         }
115
116     }
117
118     saveMetaDataToStore() {
119         this.packageCreationStore.changeMetaData(this.metaDataTab);
120     }
121
122     checkRequiredElements() {
123         const newMetaData = new MetaDataTabModel();
124         newMetaData.description = this.metaDataTab.description;
125         newMetaData.name = this.metaDataTab.name;
126         newMetaData.version = this.metaDataTab.version;
127         newMetaData.templateTags = this.metaDataTab.templateTags;
128         newMetaData.mapOfCustomKey = this.metaDataTab.mapOfCustomKey;
129         newMetaData.mode = this.metaDataTab.mode;
130         this.packageCreationStore.changeMetaData(newMetaData);
131     }
132
133
134 }