bce14c9805a128ac0cd7efded12413e549c6ad89
[ccsdk/cds.git] /
1 import { Component, OnInit } from '@angular/core';
2 import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';
3 import { PackageCreationStore } from '../package-creation.store';
4 import { PackageCreationUtils } from '../package-creation.utils';
5 import 'ace-builds/src-noconflict/ace';
6 import 'ace-builds/webpack-resolver';
7 import { PackageStore } from '../../configuration-dashboard/package.store';
8
9 @Component({
10     selector: 'app-scripts-tab',
11     templateUrl: './scripts-tab.component.html',
12     styleUrls: ['./scripts-tab.component.css']
13 })
14 export class ScriptsTabComponent implements OnInit {
15
16     public scriptsFiles: Map<string, string> = new Map<string, string>();
17     public uploadedFiles: FileSystemFileEntry[] = [];
18     public files: NgxFileDropEntry[] = [];
19     private fileNames: Set<string> = new Set();
20
21     constructor(
22         private packageCreationStore: PackageCreationStore,
23         private packageCreationUtils: PackageCreationUtils,
24         private packageStore: PackageStore
25     ) {
26
27     }
28
29
30     ngOnInit() {
31         this.packageCreationStore.state$.subscribe(cbaPackage => {
32             if (cbaPackage.scripts && cbaPackage.scripts.files && cbaPackage.scripts.files.size > 0) {
33                 this.scriptsFiles = cbaPackage.scripts.files;
34             }
35         });
36
37         this.packageStore.state$.subscribe(res => {
38             //  this.scriptsFiles =
39             console.log('from scripts');
40             console.log(res.scripts);
41             this.scriptsFiles = res.scripts.files;
42         });
43     }
44
45     public dropped(files: NgxFileDropEntry[]) {
46         this.files = files;
47         for (const droppedFile of files) {
48             // Is it a file & Not added before ?
49             if (droppedFile.fileEntry.isFile && !this.fileNames.has(droppedFile.fileEntry.name)) {
50                 const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;
51                 this.uploadedFiles.push(fileEntry);
52                 console.log(fileEntry.name);
53                 this.fileNames.add(fileEntry.name);
54
55             }
56         }
57     }
58
59     removeFile(fileIndex: number) {
60         console.log(this.uploadedFiles[fileIndex]);
61         const filename = 'Scripts/' + this.uploadedFiles[fileIndex].name;
62         this.packageCreationStore.removeFileFromState(filename);
63         this.uploadedFiles.splice(fileIndex, 1);
64     }
65
66     public fileOver(event) {
67         console.log(event);
68     }
69
70     public fileLeave(event) {
71         console.log(event);
72     }
73
74
75     setFilesToStore() {
76         for (const droppedFile of this.uploadedFiles) {
77             droppedFile.file((file: File) => {
78                 const fileReader = new FileReader();
79                 fileReader.onload = (e) => {
80                     this.packageCreationStore.addScripts('Scripts/' + droppedFile.name,
81                         fileReader.result.toString());
82                 };
83                 fileReader.readAsText(file);
84             });
85
86         }
87     }
88
89     resetTheUploadedFiles() {
90         this.uploadedFiles = [];
91     }
92
93     textChanges(code: any, key: string) {
94         this.packageCreationStore.addScripts(key, code);
95     }
96 }