feat: add filter by lesson type

This commit is contained in:
2025-02-01 17:11:28 +03:00
parent 061307447e
commit 5b9b67d50c
5 changed files with 41 additions and 3 deletions

View File

@ -0,0 +1,17 @@
import {Injectable} from "@angular/core";
import ApiService, {AvailableVersion} from "@api/api.service";
import {LessonTypeResponse} from "@api/v1/lessonTypeResponse";
@Injectable()
export class LessonTypeService extends ApiService {
public readonly basePath = 'LessonType/';
public readonly version = AvailableVersion.v1;
public getLessonTypes(page: number | null = null, pageSize: number | null = null) {
let request = this.createRequestBuilder()
.setQueryParams({page: page, pageSize: pageSize})
.build;
return this.get<LessonTypeResponse[]>(request);
}
}

View File

@ -23,6 +23,7 @@
<app-other idButton="lecture-button" textButton="Кабинеты" #lecture (retryLoadData)="loadLectureHalls()"/>
<app-other idButton="group-button" textButton="Группы" #group (retryLoadData)="loadGroups()"/>
<app-other idButton="professor-button" textButton="Профессоры" #professor (retryLoadData)="loadProfessors()"/>
<app-other idButton="lesson-type-button" textButton="Тип занятия" #lesson_type (retryLoadData)="loadLessonType()"/>
<section>
<button mat-flat-button (click)="otherFilter()">Отфильтровать</button>
</section>

View File

@ -19,6 +19,7 @@ import {HasRoleDirective} from "@/directives/has-role.directive";
import {TabSelectType, TabStorageService} from "@service/tab-storage.service";
import {ScheduleRequest} from "@api/v1/scheduleRequest";
import {CampusService} from "@api/v1/campus.service";
import {LessonTypeService} from "@api/v1/lessonType.service";
export enum TabsSelect {
Group,
@ -51,7 +52,8 @@ export enum TabsSelect {
GroupService,
ProfessorService,
TabStorageService,
CampusService]
CampusService,
LessonTypeService]
})
export class TabsComponent implements AfterViewInit {
@ -64,7 +66,8 @@ export class TabsComponent implements AfterViewInit {
private groupApi: GroupService,
private professorApi: ProfessorService,
private tabStorage: TabStorageService,
private campusApi: CampusService) {
private campusApi: CampusService,
private lessonTypeApi: LessonTypeService) {
}
ngAfterViewInit(): void {
@ -151,6 +154,7 @@ export class TabsComponent implements AfterViewInit {
await this.loadLectureHalls();
await this.loadGroups();
await this.loadProfessors();
await this.loadLessonType();
break;
default:
await this.chooseTabs(0);
@ -196,6 +200,15 @@ export class TabsComponent implements AfterViewInit {
});
}
protected async loadLessonType() {
this.lessonTypeApi.getLessonTypes().subscribe(data => {
this.lessonTypeEx.Data = data.map(x => ({
id: x.id,
name: x.name
}) as SelectData);
});
}
@ViewChild('groupTab') groupTab!: IScheduleTab;
@ViewChild('professorTab') professorTab!: IScheduleTab;
@ViewChild('lectureHallTab') lectureHallTab!: IScheduleTab;
@ -204,6 +217,7 @@ export class TabsComponent implements AfterViewInit {
@ViewChild('lecture') lectureHallEx!: OtherComponent;
@ViewChild('group') groupEx!: OtherComponent;
@ViewChild('professor') professorEx!: OtherComponent;
@ViewChild('lesson_type') lessonTypeEx!: OtherComponent;
@ViewChild('tabGroup') tabs!: MatTabGroup;
protected readonly AuthRoles = AuthRoles;
@ -213,7 +227,8 @@ export class TabsComponent implements AfterViewInit {
groups: this.groupEx.selectedIds,
disciplines: this.disciplineEx.selectedIds,
professors: this.professorEx.selectedIds,
lectureHalls: this.lectureHallEx.selectedIds
lectureHalls: this.lectureHallEx.selectedIds,
lessonType: this.lessonTypeEx.selectedIds
});
this.eventResult.emit(

View File

@ -4,4 +4,5 @@ export interface ScheduleRequest {
disciplines?: Array<number>;
professors?: Array<number>;
lectureHalls?: Array<number>;
lessonType?: Array<number>;
}

View File

@ -0,0 +1,4 @@
export interface LessonTypeResponse {
id: number;
name: string;
}