diff options
Diffstat (limited to 'cds-ui/client/src')
-rw-r--r-- | cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.component.ts | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.component.ts b/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.component.ts index 5fe28e7f9..c6b6cc78b 100644 --- a/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.component.ts +++ b/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.component.ts @@ -19,13 +19,15 @@ limitations under the License. ============LICENSE_END============================================ */ -import { Component, OnInit, EventEmitter, Output } from '@angular/core'; +import { Component, OnInit, EventEmitter, Output, ViewChild } from '@angular/core'; import { Store } from '@ngrx/store'; +import * as JSZip from 'jszip'; +import { Observable } from 'rxjs'; + import { IBlueprint } from '../../../../common/core/store/models/blueprint.model'; import { IBlueprintState } from '../../../../common/core/store/models/blueprintState.model'; import { IAppState } from '../../../../common/core/store/state/app.state'; import { LoadBlueprintSuccess } from '../../../../common/core/store/actions/blueprint.action'; -import { Observable } from 'rxjs'; @Component({ selector: 'app-search-template', @@ -39,6 +41,14 @@ export class SearchTemplateComponent implements OnInit { blueprintState: IBlueprintState; bpState: Observable<IBlueprintState>; + @ViewChild('fileInput') fileInput; + result: string = ''; + + public paths = []; + public tree; + private zipFile: JSZip = new JSZip(); + private fileObject: any; + constructor(private store: Store<IAppState>) { } ngOnInit() { @@ -46,8 +56,15 @@ export class SearchTemplateComponent implements OnInit { fileChanged(e: any) { this.file = e.target.files[0]; + + // this.zipFile.loadAsync(this.file) + // .then((zip) => { + // if(zip) { + // this.buildFileViewData(zip); + // } + // }); } - + updateBlueprintState() { let fileReader = new FileReader(); fileReader.readAsText(this.file); @@ -57,4 +74,47 @@ export class SearchTemplateComponent implements OnInit { me.store.dispatch(new LoadBlueprintSuccess(data)); } } + + async buildFileViewData(zip) { + for (var file in zip.files) { + this.fileObject = { + name: zip.files[file].name, + data: '' + }; + const value = <any>await zip.files[file].async('string'); + this.fileObject.data = value; + this.paths.push(this.fileObject); + } + this.arrangeTreeData(this.paths); + } + + arrangeTreeData(paths) { + const tree = []; + + paths.forEach((path) => { + + const pathParts = path.name.split('/'); + pathParts.shift(); + let currentLevel = tree; + + pathParts.forEach((part) => { + const existingPath = currentLevel.filter(level => level.name === part); + + if (existingPath.length > 0) { + currentLevel = existingPath[0].children; + } else { + const newPart = { + name: part, + children: [], + data: path.data + }; + + currentLevel.push(newPart); + currentLevel = newPart.children; + } + }); + }); + console.log('tree: ', tree); + return tree; + } } |