Skip to content
Snippets Groups Projects
radius.component.ts 1.38 KiB
Newer Older
Tifenn Guillas's avatar
Tifenn Guillas committed
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
import { FormControl } from '@angular/forms';

import { rangeValidator } from 'src/app/shared/validator';
import { ConeSearch } from "../../../store/model";
Tifenn Guillas's avatar
Tifenn Guillas committed

@Component({
    selector: 'app-radius',
    templateUrl: 'radius.component.html',
    styleUrls: ['radius.component.css'],
Tifenn Guillas's avatar
Tifenn Guillas committed
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class RadiusComponent {
    @Input()
    set coneSearch(coneSearch: ConeSearch) {
        if (coneSearch) {
            this.radiusField.setValue(coneSearch.radius);
            this.radiusRange.setValue(coneSearch.radius);
Tifenn Guillas's avatar
Tifenn Guillas committed
            this.radiusField.disable();
            this.radiusRange.disable();
        } else {
            this.radiusRange.setValue(0);
            this.radiusField.setValue(0);
            this.radiusField.enable();
            this.radiusRange.enable();
Tifenn Guillas's avatar
Tifenn Guillas committed
        }
    }
    @Output() changeRadius: EventEmitter<number> = new EventEmitter();

    radiusRange = new FormControl('');
    radiusField = new FormControl('', [rangeValidator(0, 150, 'Radius')]);
Tifenn Guillas's avatar
Tifenn Guillas committed

    radiusChange(value: string): void {
        this.radiusField.setValue(+value);
        this.radiusRange.setValue(+value);
        if (this.radiusField.valid) {
            this.changeRadius.emit(+value);
        } else {
            this.changeRadius.emit(null);
        }
    }
}