b99925716e8d8877a42dc08a70af0c99751a3c0b
[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 {PackageStore} from '../../configuration-dashboard/package.store';
6 import {ActivatedRoute} from '@angular/router';
7
8
9 @Component({
10     selector: 'app-metadata-tab',
11     templateUrl: './metadata-tab.component.html',
12     styleUrls: ['./metadata-tab.component.css']
13 })
14 export class MetadataTabComponent implements OnInit {
15     packageNameAndVersionEnables = true;
16     counter = 0;
17     tags = new Set<string>();
18     customKeysMap = new Map();
19     modes: object[] = [
20         {name: 'Designer Mode', style: 'mode-icon icon-designer-mode'}];
21     /*  {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'},
22       {name: 'Generic Script Mode', style: 'mode-icon icon-generic-script-mode'}];*/
23     private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
24     private errorMessage: string;
25
26     constructor(private route: ActivatedRoute,
27                 private packageCreationService: PackageCreationService,
28                 private packageCreationStore: PackageCreationStore,
29                 private packageStore: PackageStore) {
30
31     }
32
33     ngOnInit() {
34         this.metaDataTab.templateTags = this.tags;
35         this.metaDataTab.mapOfCustomKey = this.customKeysMap;
36
37         const id = this.route.snapshot.paramMap.get('id');
38         id ? this.packageNameAndVersionEnables = false :
39             this.packageNameAndVersionEnables = true;
40         this.packageCreationStore.state$.subscribe(element => {
41
42             if (element && element.metaData) {
43
44                 this.metaDataTab.name = element.metaData.name;
45                 this.metaDataTab.version = element.metaData.version;
46                 this.metaDataTab.description = element.metaData.description;
47                 this.tags = element.metaData.templateTags;
48                 this.metaDataTab.templateTags = this.tags;
49                 console.log(element);
50                 if (element.metaData.mode && element.metaData.mode.includes(' DEFAULT')) {
51                     this.metaDataTab.mode = 'Designer Mode';
52                 }
53
54                 this.customKeysMap = element.metaData.mapOfCustomKey;
55                 // this.tags = element.metaData.templateTags;
56
57             }
58         });
59     }
60
61     removeTag(value) {
62         // console.log(event);
63         this.tags.delete(value);
64     }
65
66     addTag(event) {
67         const value = event.target.value;
68         console.log(value);
69         if (value && value.trim().length > 0) {
70             event.target.value = '';
71             this.tags.add(value);
72         }
73     }
74
75     removeKey(event, key) {
76         console.log(event);
77         this.customKeysMap.delete(key);
78     }
79
80     addCustomKey() {
81         // tslint:disable-next-line: no-string-literal
82         const key = document.getElementsByClassName('mapKey')[0];
83         // tslint:disable-next-line: no-string-literal
84         const value = document.getElementsByClassName('mapValue')[0];
85
86         // tslint:disable-next-line: no-string-literal
87         if (key['value'] && value['value']) {
88             // tslint:disable-next-line: no-string-literal
89             this.customKeysMap.set(key['value'], value['value']);
90             // tslint:disable-next-line: no-string-literal
91             key['value'] = '';
92             // tslint:disable-next-line: no-string-literal
93             value['value'] = '';
94         }
95     }
96
97     validatePackageNameAndVersion() {
98         if (this.metaDataTab.name && this.metaDataTab.version) {
99             this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
100                 if (element) {
101                     this.errorMessage = 'the package with name and version is exists';
102                 } else {
103                     this.errorMessage = ' ';
104                 }
105             });
106         }
107
108     }
109
110     saveMetaDataToStore() {
111         this.packageCreationStore.changeMetaData(this.metaDataTab);
112     }
113 }