Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / components / ui / file-opener / file-opener.component.ts
1 import {Component, Input, Output, EventEmitter, SimpleChanges} from "@angular/core";
2
3 @Component({
4     selector: 'file-opener',
5     templateUrl: './file-opener.component.html',
6     styleUrls: ['./file-opener.component.less']
7 })
8 export class FileOpenerComponent {
9     @Input() public testsId: string;
10     @Input() public extensions: string;
11     @Output() public onFileUpload: EventEmitter<any>;
12
13     public extensionsWithDot: string;
14
15     constructor() {
16         this.onFileUpload = new EventEmitter<any>();
17     }
18
19     public ngOnChanges(changes:SimpleChanges) {
20         if (changes.extensions) {
21             this.extensionsWithDot = this.getExtensionsWithDot(changes.extensions.currentValue);
22         }
23     }
24
25     public onFileSelect(event) {
26         const importFile:any = event.target.files[0];
27         const reader = new FileReader();
28         reader.readAsBinaryString(importFile);
29         reader.onload = () => {
30             this.onFileUpload.emit({
31                 filename: importFile.name,
32                 filetype: importFile.type,
33                 filesize: importFile.size,
34                 base64: btoa(reader.result)
35             });
36         };
37     }
38
39     public getExtensionsWithDot(extensions:string):string {
40         extensions = extensions || this.extensions || '';
41         return extensions.split(',')
42             .map(ext => '.' + ext.toString())
43             .join(',');
44     }
45 }