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