summaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts')
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts169
1 files changed, 155 insertions, 14 deletions
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts
index 766e0b120..1fcc35f5a 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/configuration-dashboard/configuration-dashboard.component.ts
@@ -1,7 +1,16 @@
-import { Component, OnInit } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
-import { PackageStore } from './package.store';
-import { BluePrintDetailModel } from '../model/BluePrint.detail.model';
+import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
+import {ActivatedRoute, Router} from '@angular/router';
+import {BluePrintDetailModel} from '../model/BluePrint.detail.model';
+import {PackageCreationStore} from '../package-creation/package-creation.store';
+import {FilesContent, FolderNodeElement, MetaDataTabModel} from '../package-creation/mapping-models/metadata/MetaDataTab.model';
+import {MetadataTabComponent} from '../package-creation/metadata-tab/metadata-tab.component';
+import * as JSZip from 'jszip';
+import {ConfigurationDashboardService} from './configuration-dashboard.service';
+import {VlbDefinition} from '../package-creation/mapping-models/definitions/VlbDefinition';
+import {DslDefinition} from '../package-creation/mapping-models/CBAPacakge.model';
+import {PackageCreationUtils} from '../package-creation/package-creation.utils';
+import {PackageCreationModes} from '../package-creation/creationModes/PackageCreationModes';
+import {PackageCreationBuilder} from '../package-creation/creationModes/PackageCreationBuilder';
@Component({
@@ -11,24 +20,156 @@ import { BluePrintDetailModel } from '../model/BluePrint.detail.model';
})
export class ConfigurationDashboardComponent implements OnInit {
viewedPackage: BluePrintDetailModel = new BluePrintDetailModel();
+ @ViewChild(MetadataTabComponent, {static: false})
+ private metadataTabComponent: MetadataTabComponent;
- constructor(private route: ActivatedRoute, private configurationStore: PackageStore) {
+ entryDefinitionKeys: string[] = ['template_tags', 'user-groups',
+ 'author-email', 'template_version', 'template_name', 'template_author'];
+ @ViewChild('nameit', {static: true})
+ private elementRef: ElementRef;
+
+ private zipFile: JSZip = new JSZip();
+ private filesData: any = [];
+ private folder: FolderNodeElement = new FolderNodeElement();
+
+ constructor(private route: ActivatedRoute, private configurationDashboardService: ConfigurationDashboardService,
+ private packageCreationStore: PackageCreationStore,
+ private packageCreationUtils: PackageCreationUtils,
+ private router: Router) {
}
- // test
+
ngOnInit() {
+ this.elementRef.nativeElement.focus();
const id = this.route.snapshot.paramMap.get('id');
- this.configurationStore.getPagedPackages(id).subscribe(
+ this.configurationDashboardService.getPagedPackages(id).subscribe(
(bluePrintDetailModels) => {
- console.log('-------------xxxxxxxxxxx----------------');
- console.log(bluePrintDetailModels);
- this.configurationStore.setConfiguration(bluePrintDetailModels);
-
- console.log('----------------- id ' + id);
if (bluePrintDetailModels) {
- this.configurationStore.downloadResource(
- bluePrintDetailModels[0].artifactName + '/' + bluePrintDetailModels[0].artifactVersion);
+ this.downloadCBAPackage(bluePrintDetailModels);
+ }
+ });
+ }
+
+
+ private downloadCBAPackage(bluePrintDetailModels: BluePrintDetailModel) {
+ this.configurationDashboardService.downloadResource(
+ bluePrintDetailModels[0].artifactName + '/' + bluePrintDetailModels[0].artifactVersion).subscribe(response => {
+ const blob = new Blob([response], {type: 'application/octet-stream'});
+ this.zipFile.loadAsync(blob).then((zip) => {
+ Object.keys(zip.files).forEach((filename) => {
+ console.log(filename);
+ zip.files[filename].async('string').then((fileData) => {
+ if (fileData) {
+ if (filename.includes('Scripts/')) {
+ this.setScripts(filename, fileData);
+ } else if (filename.includes('Templates/')) {
+ if (filename.includes('-mapping.')) {
+ this.setMapping(filename, fileData);
+ } else if (filename.includes('-template.')) {
+ this.setTemplates(filename, fileData);
+ }
+ } else if (filename.includes('Definitions/')) {
+ this.setImports(filename, fileData);
+ } else if (filename.includes('TOSCA-Metadata/')) {
+ const metaDataTabInfo: MetaDataTabModel = this.getMetaDataTabInfo(fileData);
+ // console.log(metaDataTabInfo);
+ this.setMetaData(metaDataTabInfo, bluePrintDetailModels[0]);
+ }
+ }
+ });
+ });
+ });
+ });
+ }
+
+ private setScripts(filename: string, fileData: any) {
+ this.packageCreationStore.addScripts(filename, fileData);
+ }
+
+ private setImports(filename: string, fileData: any) {
+ if (filename.includes('blueprint.json') || filename.includes('vLB_CDS.json')) {
+ let definition = new VlbDefinition();
+ definition = fileData as VlbDefinition;
+ definition = JSON.parse(fileData);
+ const dslDefinition = new DslDefinition();
+ dslDefinition.content = this.packageCreationUtils.transformToJson(definition.dsl_definitions);
+ const mapOfCustomKeys = new Map<string, string>();
+ for (const metadataKey in definition.metadata) {
+ if (!this.entryDefinitionKeys.includes(metadataKey + '')) {
+ mapOfCustomKeys.set(metadataKey + '', definition.metadata[metadataKey + '']);
}
+ }
+ this.packageCreationStore.changeDslDefinition(dslDefinition);
+ this.packageCreationStore.setCustomKeys(mapOfCustomKeys);
+ } else {
+ this.packageCreationStore.addDefinition(filename, fileData);
+
+ }
+ }
+
+ private setTemplates(filename: string, fileData: any) {
+ this.packageCreationStore.addTemplate(filename, fileData);
+ }
+
+ private setMapping(fileName: string, fileData: string) {
+ this.packageCreationStore.addMapping(fileName, fileData);
+ }
+
+ editBluePrint() {
+ this.packageCreationStore.state$.subscribe(
+ cbaPackage => {
+ console.log(cbaPackage);
+ FilesContent.clear();
+ let packageCreationModes: PackageCreationModes;
+ cbaPackage = PackageCreationModes.mapModeType(cbaPackage);
+ cbaPackage.metaData = PackageCreationModes.setEntryPoint(cbaPackage.metaData);
+ packageCreationModes = PackageCreationBuilder.getCreationMode(cbaPackage);
+ packageCreationModes.execute(cbaPackage, this.packageCreationUtils);
+ this.filesData.push(this.folder.TREE_DATA);
+ this.saveBluePrintToDataBase();
+ });
+ }
+
+ private setMetaData(metaDataObject: MetaDataTabModel, bluePrintDetailModel: BluePrintDetailModel) {
+ metaDataObject.description = bluePrintDetailModel.artifactDescription;
+ this.packageCreationStore.changeMetaData(metaDataObject);
+
+ }
+
+ saveMetaData() {
+ this.metadataTabComponent.saveMetaDataToStore();
+ }
+
+ getMetaDataTabInfo(fileData: string) {
+ const metaDataTabModel = new MetaDataTabModel();
+ const arrayOfLines = fileData.split('\n');
+ metaDataTabModel.entryFileName = arrayOfLines[3].split(':')[1];
+ metaDataTabModel.name = arrayOfLines[4].split(':')[1];
+ metaDataTabModel.version = arrayOfLines[5].split(':')[1];
+ metaDataTabModel.mode = arrayOfLines[6].split(':')[1];
+ metaDataTabModel.templateTags = new Set<string>(arrayOfLines[7].split(':')[1].split(','));
+ console.log(metaDataTabModel.mode);
+ return metaDataTabModel;
+ }
+
+ saveBluePrintToDataBase() {
+ this.create();
+ this.zipFile.generateAsync({type: 'blob'})
+ .then(blob => {
+ this.packageCreationStore.saveBluePrint(blob);
+ this.router.navigate(['/packages']);
});
}
+
+ create() {
+ FilesContent.getMapOfFilesNamesAndContent().forEach((value, key) => {
+ this.zipFile.folder(key.split('/')[0]);
+ this.zipFile.file(key, value);
+ });
+
+ }
+
+ goBacktoDashboard() {
+ this.router.navigate(['/packages']);
+ }
}