fix: delete data if top-level data is selected
All checks were successful
Build and Deploy Angular App / build (push) Successful in 2m3s
All checks were successful
Build and Deploy Angular App / build (push) Successful in 2m3s
This commit is contained in:
@ -17,7 +17,7 @@ import {GroupService} from "@api/v1/group.service";
|
||||
import {ProfessorService} from "@api/v1/professor.service";
|
||||
import {AuthRoles} from "@model/AuthRoles";
|
||||
import {HasRoleDirective} from "@/directives/has-role.directive";
|
||||
import {TabStorageService} from "@service/tab-storage.service";
|
||||
import {TabSelectType, TabStorageService} from "@service/tab-storage.service";
|
||||
|
||||
export enum TabsSelect {
|
||||
Group,
|
||||
@ -49,77 +49,91 @@ export enum TabsSelect {
|
||||
|
||||
export class TabsComponent implements AfterViewInit {
|
||||
@Output() eventResult = new EventEmitter<[TabsSelect, number, Observable<ScheduleResponse[]>]>();
|
||||
private currentTab: number = -1;
|
||||
|
||||
constructor(private scheduleApi: ScheduleService,
|
||||
private disciplineApi: DisciplineService,
|
||||
private lectureApi: LectureHallService,
|
||||
private groupApi: GroupService,
|
||||
private professorApi: ProfessorService) {
|
||||
private professorApi: ProfessorService,
|
||||
private tabStorage: TabStorageService) {
|
||||
}
|
||||
|
||||
ngAfterViewInit(): void {
|
||||
this.groupTab.selectChangeEvent.subscribe(event => this.tabStorage.select(TabSelectType.group, event));
|
||||
this.professorTab.selectChangeEvent.subscribe(event => this.tabStorage.select(TabSelectType.professor, event));
|
||||
this.lectureHallTab.selectChangeEvent.subscribe(event => this.tabStorage.select(TabSelectType.lecture, event));
|
||||
|
||||
this.groupTab.eventResult.subscribe(event => this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.Group,
|
||||
event,
|
||||
this.scheduleApi.getByGroup(event)
|
||||
]
|
||||
));
|
||||
|
||||
this.professorTab.eventResult.subscribe(event => this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.Professor,
|
||||
event,
|
||||
this.scheduleApi.getByProfessor(event)
|
||||
]
|
||||
));
|
||||
|
||||
this.lectureHallTab.eventResult.subscribe(event => this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.LectureHall,
|
||||
event,
|
||||
this.scheduleApi.getByLectureHall(event)
|
||||
]
|
||||
));
|
||||
|
||||
let selected = TabStorageService.selected;
|
||||
|
||||
let index = 0;
|
||||
|
||||
if (selected !== null) {
|
||||
const selectedKeys = Object.keys(selected?.selected);
|
||||
if (selected.type === null) {
|
||||
if (this.groupTab.existParams(selected))
|
||||
if (this.groupTab.getEnclosureList().every((value, index) => value === selectedKeys[index]))
|
||||
index = 0;
|
||||
else if (this.professorTab.existParams(selected))
|
||||
else if (this.professorTab.getEnclosureList().every((value, index) => value === selectedKeys[index]))
|
||||
index = 1;
|
||||
else if (this.lectureHallTab.existParams(selected))
|
||||
else if (this.lectureHallTab.getEnclosureList().every((value, index) => value === selectedKeys[index]))
|
||||
index = 2;
|
||||
} else
|
||||
index = selected.type;
|
||||
}
|
||||
|
||||
if (index === null || index === 0)
|
||||
if (index === 0)
|
||||
this.chooseTabs(0).then();
|
||||
else
|
||||
this.tabs.selectedIndex = index;
|
||||
}
|
||||
|
||||
protected groupSelected(id: number) {
|
||||
this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.Group,
|
||||
id,
|
||||
this.scheduleApi.getByGroup(id)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected professorSelected(id: number) {
|
||||
this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.Professor,
|
||||
id,
|
||||
this.scheduleApi.getByProfessor(id)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected lectureHallSelected(id: number) {
|
||||
this.eventResult.emit(
|
||||
[
|
||||
TabsSelect.LectureHall,
|
||||
id,
|
||||
this.scheduleApi.getByLectureHall(id)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected async chooseTabs(index: number) {
|
||||
let needGetEnclosure = false;
|
||||
|
||||
if (this.currentTab !== index) {
|
||||
this.currentTab = index;
|
||||
needGetEnclosure = true;
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
this.groupTab.load();
|
||||
if (needGetEnclosure)
|
||||
this.tabStorage.enclosure = this.groupTab.getEnclosureList();
|
||||
break;
|
||||
case 1:
|
||||
this.professorTab.load();
|
||||
if (needGetEnclosure)
|
||||
this.tabStorage.enclosure = this.professorTab.getEnclosureList();
|
||||
break;
|
||||
case 2:
|
||||
this.lectureHallTab.load();
|
||||
if (needGetEnclosure)
|
||||
this.tabStorage.enclosure = this.lectureHallTab.getEnclosureList();
|
||||
break;
|
||||
case 3:
|
||||
await this.loadDisciplines();
|
||||
|
Reference in New Issue
Block a user