feat: add filter by lesson type
This commit is contained in:
17
src/api/v1/lessonType.service.ts
Normal file
17
src/api/v1/lessonType.service.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
@ -23,6 +23,7 @@
|
|||||||
<app-other idButton="lecture-button" textButton="Кабинеты" #lecture (retryLoadData)="loadLectureHalls()"/>
|
<app-other idButton="lecture-button" textButton="Кабинеты" #lecture (retryLoadData)="loadLectureHalls()"/>
|
||||||
<app-other idButton="group-button" textButton="Группы" #group (retryLoadData)="loadGroups()"/>
|
<app-other idButton="group-button" textButton="Группы" #group (retryLoadData)="loadGroups()"/>
|
||||||
<app-other idButton="professor-button" textButton="Профессоры" #professor (retryLoadData)="loadProfessors()"/>
|
<app-other idButton="professor-button" textButton="Профессоры" #professor (retryLoadData)="loadProfessors()"/>
|
||||||
|
<app-other idButton="lesson-type-button" textButton="Тип занятия" #lesson_type (retryLoadData)="loadLessonType()"/>
|
||||||
<section>
|
<section>
|
||||||
<button mat-flat-button (click)="otherFilter()">Отфильтровать</button>
|
<button mat-flat-button (click)="otherFilter()">Отфильтровать</button>
|
||||||
</section>
|
</section>
|
||||||
|
@ -19,6 +19,7 @@ import {HasRoleDirective} from "@/directives/has-role.directive";
|
|||||||
import {TabSelectType, TabStorageService} from "@service/tab-storage.service";
|
import {TabSelectType, TabStorageService} from "@service/tab-storage.service";
|
||||||
import {ScheduleRequest} from "@api/v1/scheduleRequest";
|
import {ScheduleRequest} from "@api/v1/scheduleRequest";
|
||||||
import {CampusService} from "@api/v1/campus.service";
|
import {CampusService} from "@api/v1/campus.service";
|
||||||
|
import {LessonTypeService} from "@api/v1/lessonType.service";
|
||||||
|
|
||||||
export enum TabsSelect {
|
export enum TabsSelect {
|
||||||
Group,
|
Group,
|
||||||
@ -51,7 +52,8 @@ export enum TabsSelect {
|
|||||||
GroupService,
|
GroupService,
|
||||||
ProfessorService,
|
ProfessorService,
|
||||||
TabStorageService,
|
TabStorageService,
|
||||||
CampusService]
|
CampusService,
|
||||||
|
LessonTypeService]
|
||||||
})
|
})
|
||||||
|
|
||||||
export class TabsComponent implements AfterViewInit {
|
export class TabsComponent implements AfterViewInit {
|
||||||
@ -64,7 +66,8 @@ export class TabsComponent implements AfterViewInit {
|
|||||||
private groupApi: GroupService,
|
private groupApi: GroupService,
|
||||||
private professorApi: ProfessorService,
|
private professorApi: ProfessorService,
|
||||||
private tabStorage: TabStorageService,
|
private tabStorage: TabStorageService,
|
||||||
private campusApi: CampusService) {
|
private campusApi: CampusService,
|
||||||
|
private lessonTypeApi: LessonTypeService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewInit(): void {
|
ngAfterViewInit(): void {
|
||||||
@ -151,6 +154,7 @@ export class TabsComponent implements AfterViewInit {
|
|||||||
await this.loadLectureHalls();
|
await this.loadLectureHalls();
|
||||||
await this.loadGroups();
|
await this.loadGroups();
|
||||||
await this.loadProfessors();
|
await this.loadProfessors();
|
||||||
|
await this.loadLessonType();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
await this.chooseTabs(0);
|
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('groupTab') groupTab!: IScheduleTab;
|
||||||
@ViewChild('professorTab') professorTab!: IScheduleTab;
|
@ViewChild('professorTab') professorTab!: IScheduleTab;
|
||||||
@ViewChild('lectureHallTab') lectureHallTab!: IScheduleTab;
|
@ViewChild('lectureHallTab') lectureHallTab!: IScheduleTab;
|
||||||
@ -204,6 +217,7 @@ export class TabsComponent implements AfterViewInit {
|
|||||||
@ViewChild('lecture') lectureHallEx!: OtherComponent;
|
@ViewChild('lecture') lectureHallEx!: OtherComponent;
|
||||||
@ViewChild('group') groupEx!: OtherComponent;
|
@ViewChild('group') groupEx!: OtherComponent;
|
||||||
@ViewChild('professor') professorEx!: OtherComponent;
|
@ViewChild('professor') professorEx!: OtherComponent;
|
||||||
|
@ViewChild('lesson_type') lessonTypeEx!: OtherComponent;
|
||||||
|
|
||||||
@ViewChild('tabGroup') tabs!: MatTabGroup;
|
@ViewChild('tabGroup') tabs!: MatTabGroup;
|
||||||
protected readonly AuthRoles = AuthRoles;
|
protected readonly AuthRoles = AuthRoles;
|
||||||
@ -213,7 +227,8 @@ export class TabsComponent implements AfterViewInit {
|
|||||||
groups: this.groupEx.selectedIds,
|
groups: this.groupEx.selectedIds,
|
||||||
disciplines: this.disciplineEx.selectedIds,
|
disciplines: this.disciplineEx.selectedIds,
|
||||||
professors: this.professorEx.selectedIds,
|
professors: this.professorEx.selectedIds,
|
||||||
lectureHalls: this.lectureHallEx.selectedIds
|
lectureHalls: this.lectureHallEx.selectedIds,
|
||||||
|
lessonType: this.lessonTypeEx.selectedIds
|
||||||
});
|
});
|
||||||
|
|
||||||
this.eventResult.emit(
|
this.eventResult.emit(
|
||||||
|
@ -4,4 +4,5 @@ export interface ScheduleRequest {
|
|||||||
disciplines?: Array<number>;
|
disciplines?: Array<number>;
|
||||||
professors?: Array<number>;
|
professors?: Array<number>;
|
||||||
lectureHalls?: Array<number>;
|
lectureHalls?: Array<number>;
|
||||||
|
lessonType?: Array<number>;
|
||||||
}
|
}
|
||||||
|
4
src/shared/responses/v1/lessonTypeResponse.ts
Normal file
4
src/shared/responses/v1/lessonTypeResponse.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export interface LessonTypeResponse {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
}
|
Reference in New Issue
Block a user