From e98a0db7ca64ba83df6d8e1f733ed2835d9ad4b6 Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Sun, 2 Feb 2025 22:37:27 +0300 Subject: [PATCH] feat: add term start configuration --- .../term-start-date.component.html | 12 ++++ .../term-start-date.component.ts | 61 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/components/admin/term-start-date/term-start-date.component.html create mode 100644 src/components/admin/term-start-date/term-start-date.component.ts diff --git a/src/components/admin/term-start-date/term-start-date.component.html b/src/components/admin/term-start-date/term-start-date.component.html new file mode 100644 index 0000000..41970f8 --- /dev/null +++ b/src/components/admin/term-start-date/term-start-date.component.html @@ -0,0 +1,12 @@ + + + Дата начала семестра + + + + + diff --git a/src/components/admin/term-start-date/term-start-date.component.ts b/src/components/admin/term-start-date/term-start-date.component.ts new file mode 100644 index 0000000..b96e0b5 --- /dev/null +++ b/src/components/admin/term-start-date/term-start-date.component.ts @@ -0,0 +1,61 @@ +import {Component} from '@angular/core'; +import {MatFormFieldModule} from "@angular/material/form-field"; +import {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from "@angular/material/datepicker"; +import {FormsModule} from "@angular/forms"; +import {ConfigurationCardComponent} from "@component/admin/configuration-card/configuration-card.component"; +import {MatInput} from "@angular/material/input"; +import {addDays} from "@progress/kendo-date-math"; +import {ScheduleService} from "@api/v1/configuration/schedule.service"; +import {DateOnly} from "@model/dateOnly"; +import {MatDialog} from "@angular/material/dialog"; +import { + ConfirmDeleteScheduleDialogComponent +} from "@component/admin/confirm-delete-schedule-dialog/confirm-delete-schedule-dialog.component"; +import {Observable, switchMap} from "rxjs"; + +@Component({ + selector: 'app-term-start-date', + imports: [ + MatFormFieldModule, + MatDatepickerToggle, + FormsModule, + MatDatepickerInput, + MatDatepicker, + ConfigurationCardComponent, + MatInput + ], + templateUrl: './term-start-date.component.html', + providers: [ScheduleService] +}) +export class TermStartDateComponent { + protected startDate: Date = new Date(); + protected startDateBefore: Date = new Date(); + + constructor(private api: ScheduleService, private dialog: MatDialog) { + this.api.getStartTerm().subscribe(data => { + this.startDate = data.date; + this.startDateBefore = this.startDate; + console.log(this.startDate == this.startDateBefore); + }); + } + + protected saveFunction() { + return () => { + const dialogRef = this.dialog.open(ConfirmDeleteScheduleDialogComponent, { + data: {startDate: this.startDate} + }); + + return dialogRef.afterClosed().pipe(switchMap(result => { + return this.api.postStartTerm(new DateOnly(this.startDate), result); + })); + }; + } + + protected onSave(data: Observable): void { + data.subscribe(_ => { + this.startDateBefore = this.startDate; + }); + } + + protected ValidMinDate = addDays(new Date(), -180); +}