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';
10 selector: 'app-scripts-tab',
11 templateUrl: './scripts-tab.component.html',
12 styleUrls: ['./scripts-tab.component.css']
14 export class ScriptsTabComponent implements OnInit {
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();
22 private packageCreationStore: PackageCreationStore,
23 private packageCreationUtils: PackageCreationUtils,
24 private packageStore: PackageStore
31 this.packageCreationStore.state$.subscribe(cbaPackage => {
32 if (cbaPackage.scripts && cbaPackage.scripts.files && cbaPackage.scripts.files.size > 0) {
33 this.scriptsFiles = cbaPackage.scripts.files;
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;
45 public dropped(files: NgxFileDropEntry[]) {
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);
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);
66 public fileOver(event) {
70 public fileLeave(event) {
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());
83 fileReader.readAsText(file);
89 resetTheUploadedFiles() {
90 this.uploadedFiles = [];
93 textChanges(code: any, key: string) {
94 this.packageCreationStore.addScripts(key, code);