]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/share/interval-input/interval-input.component.ts
LP1881650 Staff catalog TCN includes delete records
[Evergreen.git] / Open-ILS / src / eg2 / src / app / share / interval-input / interval-input.component.ts
1 /**
2  * <eg-interval-input [(ngModel)]="interval">
3  * </eg-interval-input>
4  */
5 import {Component, OnInit, Input, Output, ViewChild,
6     TemplateRef, EventEmitter, ElementRef, forwardRef} from '@angular/core';
7 import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
8 import {Observable, of, Subject} from 'rxjs';
9 import {map, tap, reduce, mergeMap, mapTo, debounceTime, distinctUntilChanged, merge, filter} from 'rxjs/operators';
10
11 @Component({
12   selector: 'eg-interval-input',
13   templateUrl: './interval-input.component.html',
14   providers: [{
15     provide: NG_VALUE_ACCESSOR,
16     useExisting: forwardRef(() => IntervalInputComponent),
17     multi: true
18   }]
19 })
20 export class IntervalInputComponent implements ControlValueAccessor, OnInit {
21
22     period: string;
23     unit = 'days';
24
25     // Stub functions required by ControlValueAccessor
26     propagateChange = (_: any) => {};
27     propagateTouch = () => {};
28
29     ngOnInit() {
30     }
31
32     changeListener(): void {
33         this.propagateChange(this.period + ' ' + this.unit);
34     }
35
36     writeValue(value: string) {
37         if (value) {
38             this.period = value.split(' ')[0];
39             this.unit   = value.split(' ')[1];
40         }
41     }
42
43     registerOnChange(fn) {
44         this.propagateChange = fn;
45     }
46
47     registerOnTouched(fn) {
48         this.propagateTouch = fn;
49     }
50 }