Skip to content
Snippets Groups Projects
datetime.component.ts 2.15 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
    import { FormControl, FormGroup } from '@angular/forms';
    
    import { Criterion, DatetimeCriterion } from '../../store/model';
    import { MapType } from '@angular/compiler';
    
    @Component({
        selector: 'app-datetime',
        templateUrl: 'datetime.component.html',
        styleUrls: ['time.component.css'],
        changeDetection: ChangeDetectionStrategy.OnPush
    })
    export class DatetimeComponent {
        @Input() id: number;
        @Input() label: string;
        @Input() placeholder: string;
        @Input()
        set criterion(criterion: Criterion) {
            this.getDefault(criterion);
        }
        @Output() add: EventEmitter<DatetimeCriterion> = new EventEmitter();
    
        date = new FormControl('');
        time: Date = null;
        isTimeDisabled: boolean;
        isValidFields: boolean = false;
        datetime: Date = new Date();
    
        addCriterion() {
            const fd = new DatetimeCriterion(this.id, this.datetime);
            this.add.emit(fd);
        }
    
        getDefault(criterion: Criterion): void {
            if (!criterion) {
                this.date.setValue('');
                this.date.enable();
                this.time = null;
                this.isTimeDisabled = false;
                this.isValidFields = false;
            } else {
                console.log('pas vide');
                const c = criterion as DatetimeCriterion;
                this.date.setValue(c.value);
                this.date.disable();
                this.time = c.value;
                this.isTimeDisabled = true;
                this.isValidFields = true;
            }
        }
    
        getPlaceholder(): string {
            if (!this.placeholder) {
                return '';
            } else {
                return this.placeholder;
            }
        }
    
        change(): void {
            if (!this.time || !this.date.value) {
                this.isValidFields = false;
            } else {
                this.isValidFields = true;
                this.datetime.setFullYear(
                    this.date.value.getFullYear(),
                    this.date.value.getMonth(),
                    this.date.value.getDate());
                this.datetime.setHours(
                    this.time.getHours(),
                    this.time.getMinutes());
            }
        }
    }