From 434dec492d4e8ae433628ed8a04748594ab26221 Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Sun, 2 Feb 2025 20:34:57 +0300 Subject: [PATCH] feat: add component for change cron expression --- .../cron-update-schedule.component.html | 16 +++++++ .../cron-update-schedule.component.ts | 48 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/components/admin/cron-update-schedule/cron-update-schedule.component.html create mode 100644 src/components/admin/cron-update-schedule/cron-update-schedule.component.ts diff --git a/src/components/admin/cron-update-schedule/cron-update-schedule.component.html b/src/components/admin/cron-update-schedule/cron-update-schedule.component.html new file mode 100644 index 0000000..a7757e5 --- /dev/null +++ b/src/components/admin/cron-update-schedule/cron-update-schedule.component.html @@ -0,0 +1,16 @@ + + + cron + + + +

Следующие запуски:

+ +
diff --git a/src/components/admin/cron-update-schedule/cron-update-schedule.component.ts b/src/components/admin/cron-update-schedule/cron-update-schedule.component.ts new file mode 100644 index 0000000..b0ed5a5 --- /dev/null +++ b/src/components/admin/cron-update-schedule/cron-update-schedule.component.ts @@ -0,0 +1,48 @@ +import {Component} from '@angular/core'; +import {ConfigurationCardComponent} from "@component/admin/configuration-card/configuration-card.component"; +import {ScheduleService} from "@api/v1/configuration/schedule.service"; +import {MatInputModule} from "@angular/material/input"; +import {FormsModule, ReactiveFormsModule} from "@angular/forms"; +import {Observable} from "rxjs"; +import {CronUpdateScheduleResponse} from "@api/v1/configuration/cronUpdateScheduleResponse"; + +@Component({ + selector: 'app-cron-update-schedule', + imports: [ + ConfigurationCardComponent, + MatInputModule, + ReactiveFormsModule, + FormsModule + ], + templateUrl: './cron-update-schedule.component.html', + providers: [ScheduleService] +}) +export class CronUpdateScheduleComponent { + protected nextRunDates: string[] = []; + protected cronExpression: string = ''; + protected cronExpressionBefore: string = ''; + + constructor(private api: ScheduleService) { + api.getCronUpdateSchedule().subscribe(data => { + this.nextRunDates = data.nextStart?.map(x => this.convertDateToString(x)) ?? []; + this.cronExpression = data.cron; + this.cronExpressionBefore = data.cron; + }); + } + + private convertDateToString(data: Date): string { + data = new Date(data); + return data.toLocaleDateString() + ' ' + data.toLocaleTimeString(); + } + + protected saveFunction() { + return () => this.api.postCronUpdateSchedule(this.cronExpression); + } + + protected onSave(data: Observable): void { + data.subscribe(apiData => { + this.nextRunDates = apiData.nextStart?.map(x => this.convertDateToString(x)) ?? []; + this.cronExpressionBefore = apiData.cron; + }); + } +}