diff --git a/src/pages/setup/schedule/schedule.component.html b/src/pages/setup/schedule/schedule.component.html new file mode 100644 index 0000000..24d9e8e --- /dev/null +++ b/src/pages/setup/schedule/schedule.component.html @@ -0,0 +1,56 @@ +

Основных настройки расписания

+
+

+ На этой странице вы можете настроить основные настройки для расписания. +

+

+ Заполните необходимые поля, чтобы настроить корректное отображение расписания. +

+ +
+

+ Ведите данные для настройки основных настроек расписания: +

+ +
+

+ Чтобы заполнить Cron можно воспользоваться сторонними + ресурсами для их генерации +

+ + Укажите cron + + + @if (scheduleSettings.get('cron')?.hasError('required')) { + + Cron является обязательным + + } + + @if (scheduleSettings.get('cron')?.hasError('pattern')) { + + Cron должен быть формата: (* * * * *) + + } + + + + Начало семестра + + + + + @if (scheduleSettings.get('startTerm')?.hasError('required')) { + + Начало семестра является обязательным + + } + +
+
diff --git a/src/pages/setup/schedule/schedule.component.ts b/src/pages/setup/schedule/schedule.component.ts new file mode 100644 index 0000000..e0a4161 --- /dev/null +++ b/src/pages/setup/schedule/schedule.component.ts @@ -0,0 +1,56 @@ +import {Component} from '@angular/core'; +import {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; +import {NavigationService} from "@service/navigation.service"; +import SetupService from "@api/v1/setup.service"; +import {DateAdapter, MatNativeDateModule} from "@angular/material/core"; +import {MatFormFieldModule} from "@angular/material/form-field"; +import {MatSelectModule} from "@angular/material/select"; +import {MatInput} from "@angular/material/input"; +import {MatTooltip} from "@angular/material/tooltip"; +import {MatIconButton} from "@angular/material/button"; +import {MatIcon} from "@angular/material/icon"; +import {MatDatepickerModule} from "@angular/material/datepicker"; + +@Component({ + selector: 'app-schedule-conf', + standalone: true, + imports: [ + ReactiveFormsModule, + MatFormFieldModule, + MatSelectModule, + MatInput, + MatTooltip, + MatIconButton, + MatIcon, + MatDatepickerModule, + MatNativeDateModule + ], + templateUrl: './schedule.component.html' +}) + +export class ScheduleComponent { + protected scheduleSettings!: FormGroup; + + constructor( + private navigationService: NavigationService, private formBuilder: FormBuilder, private api: SetupService, private _adapter: DateAdapter) { + this._adapter.setLocale('ru'); + this.scheduleSettings = this.formBuilder.group({ + cron: ['0 */6 * * *', Validators.pattern(/^([^\s]+\s){4}[^\s]{1}$/)], + startTerm: ['', Validators.required] + } + ); + + this.navigationService.setNextButtonState(false); + this.scheduleSettings.valueChanges.subscribe(() => { + this.navigationService.setNextButtonState(this.scheduleSettings.valid); + }); + + this.navigationService.nextButtonAction = () => { + return this.api.setSchedule({ + "cronUpdateSchedule": this.scheduleSettings.get('cron')?.value, + "startTerm": this.scheduleSettings.get('startTerm')?.value + } + ); + }; + } +}