============LICENSE_END============================================
*/
-import {Component, OnInit} from '@angular/core';
-import {FilesContent, FolderNodeElement, MetaDataFile, MetaDataTab} from './mapping-models/metadata/MetaDataTab.model';
-// import {saveAs} from 'file-saver/dist/FileSaver';
+import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';
+import { FilesContent, FolderNodeElement, MetaDataTabModel } from './mapping-models/metadata/MetaDataTab.model';
+
import * as JSZip from 'jszip';
-import {Observable} from 'rxjs';
-import {ApiService} from '../../../../common/core/services/api.service';
-import {BlueprintURLs} from '../../../../common/constants/app-constants';
-import {Import, Metadata, VlbDefinition} from './mapping-models/definitions/VlbDefinition';
-import {JsonConvert} from 'json2typescript';
-import {JsonPipe} from '@angular/common';
-import {PackageCreationService} from './package-creation.service';
-import {PackageCreationUtils} from './package-creation.utils';
+import { PackageCreationStore } from './package-creation.store';
+import { CBAPackage, Definition } from './mapping-models/CBAPacakge.model';
+import { PackageCreationModes } from './creationModes/PackageCreationModes';
+import { PackageCreationBuilder } from './creationModes/PackageCreationBuilder';
+import { PackageCreationUtils } from './package-creation.utils';
+import { MetadataTabComponent } from './metadata-tab/metadata-tab.component';
+import { Router } from '@angular/router';
+import { ToastrService } from 'ngx-toastr';
+import { TourService } from 'ngx-tour-md-menu';
+import { PackageCreationService } from './package-creation.service';
+import { ComponentCanDeactivate } from '../../../../common/core/canDactivate/ComponentCanDeactivate';
+import { DesignerStore } from '../designer/designer.store';
+import { NgxUiLoaderService } from 'ngx-ui-loader';
+
@Component({
selector: 'app-package-creation',
templateUrl: './package-creation.component.html',
styleUrls: ['./package-creation.component.css']
})
-export class PackageCreationComponent implements OnInit {
+export class PackageCreationComponent extends ComponentCanDeactivate implements OnInit, OnDestroy {
- modes: string[] = ['Designer Mode', 'Scripting Mode'];
- dictionaryLibraryInstances: string[] = ['x', 'y'];
- private target: HTMLElement;
- private newElement: HTMLElement;
- private metaDataTab: MetaDataTab = new MetaDataTab();
- private result: string;
+ // adding initial referencing to designer mode
- private folder: FolderNodeElement = new FolderNodeElement();
- private zipFile: JSZip = new JSZip();
- private filesData: any = [];
+ constructor(
+ private packageCreationStore: PackageCreationStore,
+ private packageCreationService: PackageCreationService,
+ private packageCreationUtils: PackageCreationUtils,
+ private router: Router,
+ private tourService: TourService,
+ private toastService: ToastrService,
+ private ngxService: NgxUiLoaderService,
+ private designerStore: DesignerStore) {
- constructor(private packageCreationService: PackageCreationService, private packageCreationUtils: PackageCreationUtils) {
+ super();
}
+ counter = 0;
+ modes: object[] = [
+ { name: 'Designer Mode', style: 'mode-icon icon-designer-mode' },
+ { name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode' }];
+ metaDataTab: MetaDataTabModel = new MetaDataTabModel();
+ folder: FolderNodeElement = new FolderNodeElement();
+ zipFile: JSZip = new JSZip();
+ filesData: any = [];
+ definition: Definition = new Definition();
+ isSaveEnabled = false;
+
+ @ViewChild(MetadataTabComponent, { static: false })
+ metadataTabComponent: MetadataTabComponent;
+
+ @ViewChild('nameit', { static: true })
+ elementRef: ElementRef;
+ versionPattern = '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$';
+ metadataClasses = 'nav-item nav-link active complete';
+ private cbaPackage: CBAPackage;
+
ngOnInit() {
+ this.elementRef.nativeElement.focus();
+ const regexp = RegExp(this.versionPattern);
+ this.packageCreationStore.state$.subscribe(cbaPackage => {
+ console.log(cbaPackage);
+ console.log('abbaaaas' + cbaPackage.metaData.name);
+ this.cbaPackage = cbaPackage;
+ if (cbaPackage && cbaPackage.metaData && cbaPackage.metaData.description
+ && cbaPackage.metaData.name && cbaPackage.metaData.version &&
+ regexp.test(cbaPackage.metaData.version)) {
+ this.isSaveEnabled = true;
+ if (!this.metadataClasses.includes('complete')) {
+ console.log('added');
+ this.metadataClasses += 'complete';
+ }
+ console.log('perhaps it is been added');
+ } else {
+ this.isSaveEnabled = false;
+ this.metadataClasses = this.metadataClasses.replace('complete', '');
+ }
+ });
}
-
- createAnotherCustomKeyDiv() {
- console.log(this.metaDataTab);
- this.newElement = document.createElement('div');
- this.newElement.setAttribute('class', 'alert-dark');
- this.target = document.getElementById('target');
- this.target.appendChild(this.newElement);
- this.metaDataTab = new MetaDataTab();
- this.metaDataTab.name = 'klfdj';
- this.metaDataTab.entryFileName = 'Definitions/vLB_CDS.json';
- this.metaDataTab.description = 'rere';
- this.metaDataTab.tags = 'ffsssssss';
- this.metaDataTab.version = '1.01.10';
- this.metaDataTab.templateName = 'test';
-
-
- this.saveToFileSystem(MetaDataFile.getObjectInstance(this.metaDataTab));
+ openTourGuide(step: string) {
+ // this.tourService.goto(step);
}
- validatePacakgeName() {
-
- }
+ saveBluePrint() {
+ this.ngxService.start();
+ console.log(this.cbaPackage);
+ FilesContent.clear();
+ let packageCreationModes: PackageCreationModes;
+ this.cbaPackage = PackageCreationModes.mapModeType(this.cbaPackage);
+ this.cbaPackage.metaData = PackageCreationModes.setEntryPoint(this.cbaPackage.metaData);
+ packageCreationModes = PackageCreationBuilder.getCreationMode(this.cbaPackage);
+
+ // this.cbaPackage.templateTopology.content = this.designerStore.state.sourceContent;
+ packageCreationModes.execute(this.cbaPackage, this.packageCreationUtils);
+ this.filesData.push(this.folder.TREE_DATA);
+ this.saveBluePrintToDataBase();
- getDictionaryLibraryInstances() {
}
- saveMetaData() {
-
+ saveBluePrintToDataBase() {
+ this.create();
+ this.zipFile.generateAsync({ type: 'blob' })
+ .then(blob => {
+ this.packageCreationService.savePackage(blob).subscribe(
+ bluePrintDetailModels => {
+ if (bluePrintDetailModels) {
+ const id = bluePrintDetailModels.toString().split('id')[1].split(':')[1].split('"')[1];
+ this.toastService.success('Package Updated Successfully ');
+ this.isSaveEnabled = false;
+ this.router.navigate(['/packages/package/' + id]);
+ }
+ }, error => {
+ // this.toastService.error('Error occure during editng process ' + error.message);
+ console.log('Error -' + error.message);
+ }, () => {
+ this.ngxService.stop();
+ });
+ });
}
- private saveToFileSystem(response) {
- const filename = 'TOSCA.meta';
- FilesContent.putData(filename, response);
-
- const filenameEntry = 'vLB_CDS.json';
- const vlbDefinition: VlbDefinition = new VlbDefinition();
- const metadata: Metadata = new Metadata();
-
- metadata.templateAuthor = ' lldkslds';
- metadata.templateName = ' lldkslds';
- metadata.templateTags = ' lldkslds';
- metadata.templateVersion = ' lldkslds';
- metadata['author-email'] = ' lldkslds';
- metadata['user-groups'] = ' lldkslds';
- vlbDefinition.metadata = metadata;
-
- vlbDefinition.imports = [{
- file: 'Definitions/data_types.json'
- }];
-
- const value = this.packageCreationUtils.transformToJson(vlbDefinition);
- FilesContent.putData(filenameEntry, value);
+ create() {
+ FilesContent.getMapOfFilesNamesAndContent().forEach((value, key) => {
+ this.zipFile.folder(key.split('/')[0]);
+ this.zipFile.file(key, value);
+ });
- this.filesData.push(this.folder.TREE_DATA);
- this.saveToBackend();
}
- saveToBackend() {
- this.create();
- this.zipFile.generateAsync({type: 'blob'})
- .then(blob => {
- const formData = new FormData();
- formData.append('file', blob);
- this.packageCreationService.saveBlueprint(formData)
- .subscribe(
- data => {
- console.log('Success:' + JSON.stringify(data));
- }, error => {
- console.log('Error -' + error.message);
- });
-
- });
+ goBackToDashBorad() {
+ this.router.navigate(['/packages']);
}
+ saveMetaData() {
+ console.log('executed change');
+ this.metadataTabComponent.saveMetaDataToStore();
- create() {
- this.folder.TREE_DATA.forEach((path) => {
-
- const name = path.name;
- if (path.children) {
- this.zipFile.folder(name);
- path.children.forEach(children => {
- const name2 = children.name;
- console.log(FilesContent.getMapOfFilesNamesAndContent());
- console.log(name2);
- if (FilesContent.getMapOfFilesNamesAndContent().has(name2)) {
- this.zipFile.file(name + '/' + name2, FilesContent.getMapOfFilesNamesAndContent().get(name2));
- } else {
- }
-
- });
+ }
- }
- });
+ canDeactivate(): boolean {
+ return this.isSaveEnabled;
}
+ ngOnDestroy(): void {
- searchPackages($event: Event) {
- const searchQuery = event.target.value;
- searchQuery = searchQuery.trim();
- this.packagesStore.search(searchQuery);
}
}