]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/share/file-reader/file-reader.component.ts
LP1959048: manual ng lint fixes
[Evergreen.git] / Open-ILS / src / eg2 / src / app / share / file-reader / file-reader.component.ts
1 /**
2  * <eg-file-reader [(ngModel)]="fileContents">
3  * </eg-file-reader>
4  */
5 import {Component, forwardRef} from '@angular/core';
6 import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
7
8 @Component({
9   selector: 'eg-file-reader',
10   templateUrl: './file-reader.component.html',
11   providers: [{
12     provide: NG_VALUE_ACCESSOR,
13     useExisting: forwardRef(() => FileReaderComponent),
14     multi: true
15   }]
16 })
17 export class FileReaderComponent implements ControlValueAccessor {
18
19     // Stub functions required by ControlValueAccessor
20     propagateChange = (_: any) => {};
21     propagateTouch = () => {};
22
23     changeListener($event): void {
24         const me = this;
25         if ($event.target.files.length < 1) {
26             return;
27         }
28         const reader = new FileReader();
29         reader.onloadend = function(e) {
30             me.propagateChange(me.parseFileContents(reader.result));
31         };
32         reader.readAsText($event.target.files[0]);
33     }
34
35     parseFileContents(contents): Array<string> {
36         const values = contents.split('\n');
37         values.forEach((val, idx) => {
38             val = val.replace(/\s+$/, '');
39             val = val.replace(/^\s+/, '');
40             values[idx] = val;
41         });
42         return values;
43     }
44
45     writeValue(value: any) {
46         // intentionally empty
47     }
48
49     registerOnChange(fn) {
50         this.propagateChange = fn;
51     }
52
53     registerOnTouched(fn) {
54         this.propagateTouch = fn;
55     }
56 }