// vim: set tw=80 ts=2 sw=2 sts=2 : import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Schedule } from './schedule'; @Component({ selector: 'schedule-form', exportAs: 'scheduleForm', template: `

The start date is required.

The stop date is required.

The day is required.

The day must be greater than 0.

The day must be less than or equal to 31.

The frequency is required.

The frequency must be positive.

The label is required.

The value is required.

The category is required.

` }) export class ScheduleFormComponent implements OnInit { public form: FormGroup; @Input() schedule: Schedule; @Output('submit') submitEventEmitter: EventEmitter = new EventEmitter(); //dateMask = [/\d{4}/, '-', /0[1-9]|1[0-2]/, '-', /[0-2]\d|3[0-1]/]; dateMask = ['2', '0', /\d/, /\d/, '-', /[0-1]/, /\d/, '-', /[0-3]/, /\d/]; constructor(private formBuilder: FormBuilder) {} ngOnInit() { this.form = this.formBuilder.group({ startDate: ['', Validators.required], stopDate: ['', Validators.required], day: ['', [Validators.required, Validators.min(1), Validators.max(31)]], frequency: ['', [Validators.required, Validators.min(0)]], label: ['', Validators.required], value: ['', Validators.required], category: ['', Validators.required], }); this.form.patchValue({ startDate: this.schedule.start_date, stopDate: this.schedule.stop_date, day: this.schedule.day, frequency: this.schedule.frequency, label: this.schedule.label, value: this.schedule.value, category: this.schedule.category, }); } submit() { if(this.form.valid) { this.submitEventEmitter.emit(); } } get startDate() { return this.form.get('startDate'); } get stopDate() { return this.form.get('stopDate'); } get day() { return this.form.get('day'); } get frequency() { return this.form.get('frequency'); } get label() { return this.form.get('label'); } get value() { return this.form.get('value'); } get category() { return this.form.get('category'); } }