28b76033b824944bf7abfad5831269c98db4e29d
[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
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
15     counter = 0;
16     tags = new Set<string>();
17     customKeysMap = new Map();
18     modes: object[] = [
19         {name: 'Designer Mode', style: 'mode-icon icon-designer-mode'},
20         {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'},
21         {name: 'Generic Script Mode', style: 'mode-icon icon-generic-script-mode'}];
22     private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
23     private errorMessage: string;
24
25     constructor(private packageCreationService: PackageCreationService, private packageCreationStore: PackageCreationStore,
26                 private packageStore: PackageStore) {
27
28     }
29
30     ngOnInit() {
31         this.metaDataTab.templateTags = this.tags;
32         this.metaDataTab.mapOfCustomKey = this.customKeysMap;
33         this.packageCreationStore.changeMetaData(this.metaDataTab);
34
35         this.packageStore.state$.subscribe(element => {
36             if (element && element.configuration) {
37                 this.metaDataTab.name = element.configuration.artifactName;
38                 this.metaDataTab.version = element.configuration.artifactVersion;
39                 this.metaDataTab.tags = element.configuration.tags;
40                 this.metaDataTab.description = element.configuration.artifactDescription;
41
42             }
43         });
44     }
45
46     removeTag(value) {
47         // console.log(event);
48         this.tags.delete(value);
49     }
50
51     addTag(event) {
52         const value = event.target.value;
53         console.log(value);
54         if (value && value.trim().length > 0) {
55             event.target.value = '';
56             this.tags.add(value);
57         }
58     }
59
60     removeKey(event, key) {
61         console.log(event);
62         this.customKeysMap.delete(key);
63     }
64
65     addCustomKey() {
66         // tslint:disable-next-line: no-string-literal
67         const key = document.getElementsByClassName('mapKey')[0];
68         // tslint:disable-next-line: no-string-literal
69         const value = document.getElementsByClassName('mapValue')[0];
70
71         // tslint:disable-next-line: no-string-literal
72         if (key['value'] && value['value']) {
73             // tslint:disable-next-line: no-string-literal
74             this.customKeysMap.set(key['value'], value['value']);
75             // tslint:disable-next-line: no-string-literal
76             key['value'] = '';
77             // tslint:disable-next-line: no-string-literal
78             value['value'] = '';
79         }
80     }
81
82     validatePackageNameAndVersion() {
83         if (this.metaDataTab.name && this.metaDataTab.version) {
84             this.packageCreationService.checkBluePrintNameAndVersion(this.metaDataTab.name, this.metaDataTab.version).then(element => {
85                 if (element) {
86                     this.errorMessage = 'the package with name and version is exists';
87                 } else {
88                     this.errorMessage = ' ';
89                 }
90             });
91         }
92
93     }
94 }