============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',
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() {
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);
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;
+ }
}