6018ad535ae3a8d428b0f3e52b5122b125457225
[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     private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
24     private errorMessage: string;
25
26     constructor(
27         private route: ActivatedRoute,
28         private packageCreationService: PackageCreationService,
29         private packageCreationStore: PackageCreationStore
30     ) {
31
32     }
33
34     ngOnInit() {
35         this.metaDataTab.templateTags = this.tags;
36         this.metaDataTab.mapOfCustomKey = this.customKeysMap;
37         this.metaDataTab.mode = this.modeType;
38
39         const id = this.route.snapshot.paramMap.get('id');
40         id ? this.packageNameAndVersionEnables = false :
41             this.packageNameAndVersionEnables = true;
42         this.packageCreationStore.state$.subscribe(element => {
43
44             if (element && element.metaData) {
45
46                 this.metaDataTab.name = element.metaData.name;
47                 this.metaDataTab.version = element.metaData.version;
48                 this.metaDataTab.description = element.metaData.description;
49                 this.tags = element.metaData.templateTags;
50                 this.metaDataTab.templateTags = this.tags;
51                 console.log(element);
52                 if (element.metaData.mode && element.metaData.mode.includes('DEFAULT')) {
53                     this.metaDataTab.mode = 'Designer Mode';
54                     this.modeType = this.metaDataTab.mode;
55                 }
56
57                 this.customKeysMap = element.metaData.mapOfCustomKey;
58                 // this.tags = element.metaData.templateTags;
59
60             }
61         });
62     }
63
64     removeTag(value) {
65         // console.log(event);
66         this.tags.delete(value);
67     }
68
69     addTag(event) {
70         const value = event.target.value;
71         console.log(value);
72         if (value && value.trim().length > 0) {
73             event.target.value = '';
74             this.tags.add(value);
75         }
76     }
77
78     removeKey(event, key) {
79         console.log(event);
80         this.customKeysMap.delete(key);
81     }
82
83     addCustomKey() {
84         // tslint:disable-next-line: no-string-literal
85         const key = document.getElementsByClassName('mapKey')[0];
86         // tslint:disable-next-line: no-string-literal
87         const value = document.getElementsByClassName('mapValue')[0];
88
89         // tslint:disable-next-line: no-string-literal
90         if (key['value'] && value['value']) {
91             // tslint:disable-next-line: no-string-literal
92             this.customKeysMap.set(key['value'], value['value']);
93             // tslint:disable-next-line: no-string-literal
94             key['value'] = '';
95             // tslint:disable-next-line: no-string-literal
96             value['value'] = '';
97         }
98     }
99
100     validatePackageNameAndVersion() {
101         if (this.metaDataTab.name && this.metaDataTab.version) {
102             this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
103                 if (element) {
104                     this.errorMessage = 'Package name already exists with this version. Use different name or different version number.';
105                 } else {
106                     this.errorMessage = ' ';
107                 }
108             });
109         }
110
111     }
112
113     saveMetaDataToStore() {
114         this.packageCreationStore.changeMetaData(this.metaDataTab);
115     }
116 }