feat: add term start configuration
This commit is contained in:
@ -0,0 +1,12 @@
|
|||||||
|
<app-configuration-card
|
||||||
|
[title]="'Дата начала семестра'"
|
||||||
|
[isSaveEnabled]="startDate != startDateBefore"
|
||||||
|
[saveFunction]="saveFunction()"
|
||||||
|
(onSaveFunction)="onSave($event)">
|
||||||
|
<mat-form-field color="accent">
|
||||||
|
<mat-label>Дата начала семестра</mat-label>
|
||||||
|
<input matInput [matDatepicker]="datePicker" [(ngModel)]="startDate" [min]="ValidMinDate">
|
||||||
|
<mat-datepicker-toggle matSuffix [for]="datePicker"></mat-datepicker-toggle>
|
||||||
|
<mat-datepicker #datePicker></mat-datepicker>
|
||||||
|
</mat-form-field>
|
||||||
|
</app-configuration-card>
|
@ -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<any>): void {
|
||||||
|
data.subscribe(_ => {
|
||||||
|
this.startDateBefore = this.startDate;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ValidMinDate = addDays(new Date(), -180);
|
||||||
|
}
|
Reference in New Issue
Block a user