6cd52015d50fc608e0eb743e222dd08c0810ea48
[ccsdk/cds.git] /
1 import {Component, OnInit} from '@angular/core';
2 import {NgxFileDropEntry, FileSystemFileEntry, FileSystemDirectoryEntry} from 'ngx-file-drop';
3 import {PackageCreationStore} from '../package-creation.store';
4 import {PackageCreationUtils} from '../package-creation.utils';
5
6
7 @Component({
8     selector: 'app-imports-tab',
9     templateUrl: './imports-tab.component.html',
10     styleUrls: ['./imports-tab.component.css']
11 })
12 export class ImportsTabComponent {
13
14     public definitionFiles: Map<string, string> = new Map<string, string>();
15     public uploadedFiles: FileSystemFileEntry[] = [];
16
17     public files: NgxFileDropEntry[] = [];
18
19     constructor(private packageCreationStore: PackageCreationStore, private packageCreationUtils: PackageCreationUtils) {
20         this.packageCreationStore.state$.subscribe(cbaPackage => {
21             if (cbaPackage.definitions && cbaPackage.definitions.files && cbaPackage.definitions.files.size > 0) {
22                 this.definitionFiles = cbaPackage.definitions.files;
23             }
24         });
25     }
26
27     public dropped(files: NgxFileDropEntry[]) {
28         this.files = files;
29         for (const droppedFile of files) {
30
31             // Is it a file?
32             if (droppedFile.fileEntry.isFile) {
33                 const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;
34                 this.uploadedFiles.push(fileEntry);
35
36
37             } /*else {
38                 const directorEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
39                 this.filesUnderDirectory = directorEntry.getFile('');
40                // const fileEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
41                /* this.uploadedFile.push(droppedFile);
42                 const formData = new FormData()
43                 formData.append('logo', fileEntry, droppedFile.relativePath);
44                 console.log(formData);*/
45             /* // It was a directory (empty directories are added, otherwise only files)
46              const fileEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
47              console.log(droppedFile.relativePath, fileEntry);
48
49
50               const formData = new FormData();
51               formData.append('logo', droppedFile, droppedFile.relativePath);
52               console.log(formData);
53
54              //this.packageCreationStore.addDefinition(droppedFile.relativePath, this.getContent(droppedFile.relativePath));
55 */
56             /* }*/
57         }
58     }
59
60     public fileOver(event) {
61         console.log(event);
62     }
63
64     public fileLeave(event) {
65         console.log(event);
66     }
67
68
69     /* readFileContent(file: File): string | ArrayBuffer {
70          const fileReader = new FileReader();
71         // let content: string | ArrayBuffer = '';
72          fileReader.onload = (e) => {
73              content = fileReader.result;
74          };
75          fileReader.readAsText(file);
76          return content;
77      }
78  */
79     setFilesToStore() {
80         for (const droppedFile of this.uploadedFiles) {
81             droppedFile.file((file: File) => {
82                 const fileReader = new FileReader();
83                 fileReader.onload = (e) => {
84                     this.packageCreationStore.addDefinition(droppedFile.name,
85                         this.packageCreationUtils.transformToJson(fileReader.result));
86                 };
87                 fileReader.readAsText(file);
88             });
89
90         }
91     }
92
93     resetTheUploadedFiles() {
94         this.uploadedFiles = [];
95     }
96 }