Compare commits

...

2 Commits

Author SHA1 Message Date
ebf1066610 feat: return other-components filter
All checks were successful
Build and Deploy Angular App / build (push) Successful in 54s
2024-08-27 22:10:51 +03:00
8c9b798bff fix: set field before using 2024-08-27 21:53:39 +03:00
4 changed files with 49 additions and 111 deletions

View File

@ -3,34 +3,29 @@
(selectedTabChange)="chooseTabs($event.index)"> (selectedTabChange)="chooseTabs($event.index)">
<mat-tab label="Группа"> <mat-tab label="Группа">
<div> <div>
<app-group #groupTab (eventResult)="groupSelected($event)"/> <app-group #groupTab (eventResult)="groupSelected($event)"/>
</div> </div>
</mat-tab> </mat-tab>
<mat-tab label="Преподаватель"> <mat-tab label="Преподаватель">
<div> <div>
<app-professor #professorTab (eventResult)="professorSelected($event)"/> <app-professor #professorTab (eventResult)="professorSelected($event)"/>
</div> </div>
</mat-tab> </mat-tab>
<mat-tab label="Кабинет"> <mat-tab label="Кабинет">
<div> <div>
<app-lecture-hall #lectureHallTab (eventResult)="lectureHallSelected($event)"/> <app-lecture-hall #lectureHallTab (eventResult)="lectureHallSelected($event)"/>
</div> </div>
</mat-tab> </mat-tab>
<!--
<mat-tab label="Другое"> <mat-tab label="Другое" *appHasRole="AuthRoles.Admin">
<div class="margin-other-button"> <div class="margin-other-button">
<app-other idButton="disciplines-button" textButton="Дисциплины" #discipline [dataLoaded]="disciplinesLoaded" <app-other idButton="disciplines-button" textButton="Дисциплины" #discipline (retryLoadData)="loadDisciplines()"/>
(retryLoadData)="loadDisciplines()"/> <app-other idButton="lecture-button" textButton="Кабинеты" #lecture (retryLoadData)="loadLectureHalls()"/>
<app-other idButton="lecture-button" textButton="Кабинеты" #lecture <app-other idButton="group-button" textButton="Группы" #group (retryLoadData)="loadGroups()"/>
[dataLoaded]="campusesLoaded && lectureHallsLoaded" (retryLoadData)="loadLectureHalls()"/> <app-other idButton="professor-button" textButton="Профессоры" #professor (retryLoadData)="loadProfessors()"/>
<app-other idButton="group-button" textButton="Группы" #group [dataLoaded]="facultiesLoaded && groupLoaded"
(retryLoadData)="loadGroups()"/>
<app-other idButton="professor-button" textButton="Профессоры" #professor [dataLoaded]="professorsLoaded"
(retryLoadData)="professorsLoad()"/>
<section> <section>
<button mat-flat-button>Отфильтровать</button> <button mat-flat-button (click)="otherFilter()">Отфильтровать</button>
</section> </section>
</div> </div>
</mat-tab> </mat-tab>
-->
</mat-tab-group> </mat-tab-group>

View File

@ -1,7 +1,7 @@
import {AfterViewInit, Component, EventEmitter, Output, ViewChild} from '@angular/core'; import {AfterViewInit, Component, EventEmitter, Output, ViewChild} from '@angular/core';
import {OtherComponent, SelectData} from "@component/schedule/tabs/other/other.component"; import {OtherComponent, SelectData} from "@component/schedule/tabs/other/other.component";
import {MatTab, MatTabGroup} from "@angular/material/tabs"; import {MatTab, MatTabGroup} from "@angular/material/tabs";
import {map, Observable} from "rxjs"; import {Observable} from "rxjs";
import {FormsModule, ReactiveFormsModule} from "@angular/forms"; import {FormsModule, ReactiveFormsModule} from "@angular/forms";
import {MatButton} from "@angular/material/button"; import {MatButton} from "@angular/material/button";
import {DataSpinnerComponent} from "@component/common/data-spinner/data-spinner.component"; import {DataSpinnerComponent} from "@component/common/data-spinner/data-spinner.component";
@ -74,30 +74,6 @@ export class TabsComponent implements AfterViewInit {
TabsSelect.Group, TabsSelect.Group,
id, id,
this.scheduleApi.getByGroup(id) this.scheduleApi.getByGroup(id)
.pipe(
map(g =>
g.map(data =>
({
dayOfWeek: data.dayOfWeek,
pairNumber: data.pairNumber,
isEven: data.isEven,
discipline: data.discipline,
disciplineId: data.disciplineId,
isExcludedWeeks: data.isExcludedWeeks,
weeks: data.weeks,
typeOfOccupations: data.typeOfOccupations,
group: data.group,
groupId: data.groupId,
lectureHalls: data.lectureHalls,
lectureHallsId: data.lectureHallsId,
professors: data.professors,
professorsId: data.professorsId,
campus: data.campus,
campusId: data.campusId,
linkToMeet: data.linkToMeet
}))
)
)
] ]
); );
} }
@ -108,30 +84,6 @@ export class TabsComponent implements AfterViewInit {
TabsSelect.Professor, TabsSelect.Professor,
id, id,
this.scheduleApi.getByProfessor(id) this.scheduleApi.getByProfessor(id)
.pipe(
map(p =>
p.map(data =>
({
dayOfWeek: data.dayOfWeek,
pairNumber: data.pairNumber,
isEven: data.isEven,
discipline: data.discipline,
disciplineId: data.disciplineId,
isExcludedWeeks: data.isExcludedWeeks,
weeks: data.weeks,
typeOfOccupations: data.typeOfOccupations,
group: data.group,
groupId: data.groupId,
lectureHalls: data.lectureHalls,
lectureHallsId: data.lectureHallsId,
professors: data.professors,
professorsId: data.professorsId,
campus: data.campus,
campusId: data.campusId,
linkToMeet: data.linkToMeet
}))
)
)
] ]
); );
} }
@ -142,30 +94,6 @@ export class TabsComponent implements AfterViewInit {
TabsSelect.LectureHall, TabsSelect.LectureHall,
id, id,
this.scheduleApi.getByLectureHall(id) this.scheduleApi.getByLectureHall(id)
.pipe(
map(lh =>
lh.map(data =>
({
dayOfWeek: data.dayOfWeek,
pairNumber: data.pairNumber,
isEven: data.isEven,
discipline: data.discipline,
disciplineId: data.disciplineId,
isExcludedWeeks: data.isExcludedWeeks,
weeks: data.weeks,
typeOfOccupations: data.typeOfOccupations,
group: data.group,
groupId: data.groupId,
lectureHalls: data.lectureHalls,
lectureHallsId: data.lectureHallsId,
professors: data.professors,
professorsId: data.professorsId,
campus: data.campus,
campusId: data.campusId,
linkToMeet: data.linkToMeet
}))
)
)
] ]
); );
} }
@ -240,4 +168,19 @@ export class TabsComponent implements AfterViewInit {
@ViewChild('tabGroup') tabs!: MatTabGroup; @ViewChild('tabGroup') tabs!: MatTabGroup;
protected readonly AuthRoles = AuthRoles; protected readonly AuthRoles = AuthRoles;
protected otherFilter() {
this.eventResult.emit(
[
TabsSelect.Other,
0,
this.scheduleApi.postSchedule(({
groups: this.groupEx.selectedIds,
disciplines: this.disciplineEx.selectedIds,
professors: this.professorEx.selectedIds,
lectureHalls: this.lectureHallEx.selectedIds
}))
]
);
}
} }

View File

@ -45,13 +45,13 @@ export class ScheduleComponent {
@ViewChild('tableHeader') childComponent!: TableHeaderComponent; @ViewChild('tableHeader') childComponent!: TableHeaderComponent;
constructor(api: ScheduleService) { constructor(api: ScheduleService) {
this.calculateCurrentWeek();
this.startTerm = new Date(1, 1, 1); this.startTerm = new Date(1, 1, 1);
api.pairPeriod().subscribe(date => { api.pairPeriod().subscribe(date => {
this.pairPeriods = date; this.pairPeriods = date;
}); });
api.startTerm().subscribe(date => { api.startTerm().subscribe(date => {
this.startTerm = date.date; this.startTerm = date.date;
this.calculateCurrentWeek();
}); });
} }

View File

@ -14,24 +14,24 @@
* Represents a request object for retrieving schedules based on various filters. * Represents a request object for retrieving schedules based on various filters.
*/ */
export interface ScheduleRequest { export interface ScheduleRequest {
/** /**
* Gets or sets an array of group IDs. * Gets or sets an array of group IDs.
*/ */
groups?: Array<number>; groups?: Array<number>;
/** /**
* Gets or sets a value indicating whether to retrieve schedules for even weeks. * Gets or sets a value indicating whether to retrieve schedules for even weeks.
*/ */
isEven?: boolean; isEven?: boolean;
/** /**
* Gets or sets an array of discipline IDs. * Gets or sets an array of discipline IDs.
*/ */
disciplines?: Array<number>; disciplines?: Array<number>;
/** /**
* Gets or sets an array of professor IDs. * Gets or sets an array of professor IDs.
*/ */
professors?: Array<number>; professors?: Array<number>;
/** /**
* Gets or sets an array of lecture hall IDs. * Gets or sets an array of lecture hall IDs.
*/ */
lectureHalls?: Array<number>; lectureHalls?: Array<number>;
} }