Newer
Older
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
import { Criterion, TimeCriterion } from '../../store/model';
@Component({
selector: 'app-time',
templateUrl: 'time.component.html',
styleUrls: ['time.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TimeComponent {
@Input() id: number;
@Input() label: string;
@Input()
set criterion(criterion: Criterion) {
this.getDefault(criterion);
}
@Output() add: EventEmitter<TimeCriterion> = new EventEmitter();
public hours: string[] = [];
public minutes: string[] = [];
hh = new FormControl();
mm = new FormControl();
constructor() {
this.hours = this.initTime(24);
this.minutes = this.initTime(60);
}
const time = new TimeCriterion(this.id, this.hh.value + ':' + this.mm.value);
this.add.emit(time);
}
getDefault(criterion: Criterion): void {
if (!criterion) {
this.hh.reset();
this.hh.enable();
this.mm.reset();
this.mm.enable();
} else {
const c = criterion as TimeCriterion;
this.hh.setValue(c.value.slice(0, 2));
this.hh.disable();
this.mm.setValue(c.value.slice(3, 5));
this.mm.disable();
initTime(time: number): string[] {
const array: string[] = [];
for (let i = 0; i < time; i++) {
const t = ('0' + i).slice(-2);
array.push(t);