refactor: transfer responsibility for the data to the parent
This commit is contained in:
		| @@ -1,6 +1,5 @@ | |||||||
| import {Component, EventEmitter, Output, ViewChild} from '@angular/core'; | import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core'; | ||||||
| import {MatExpansionModule, MatExpansionPanel} from "@angular/material/expansion"; | import {MatExpansionModule, MatExpansionPanel} from "@angular/material/expansion"; | ||||||
| import {ApiService} from "@service/api.service"; |  | ||||||
| import {DataSpinnerComponent} from "@component/data-spinner/data-spinner.component"; | import {DataSpinnerComponent} from "@component/data-spinner/data-spinner.component"; | ||||||
| import {MatChipListboxChange, MatChipsModule} from '@angular/material/chips'; | import {MatChipListboxChange, MatChipsModule} from '@angular/material/chips'; | ||||||
| import {FormControl, ReactiveFormsModule} from "@angular/forms"; | import {FormControl, ReactiveFormsModule} from "@angular/forms"; | ||||||
| @@ -23,12 +22,11 @@ import {GroupResponse} from "@model/groupResponse"; | |||||||
|   styleUrl: './schedule-tabs-group.component.css' |   styleUrl: './schedule-tabs-group.component.css' | ||||||
| }) | }) | ||||||
| export class ScheduleTabsGroupComponent { | export class ScheduleTabsGroupComponent { | ||||||
|   protected faculties: Observable<FacultyResponse[]>; |  | ||||||
|   protected facultiesId: number | null = null; |   protected facultiesId: number | null = null; | ||||||
|   protected courseNumber: number | null = null; |   protected courseNumber: number | null = null; | ||||||
|   protected groups: Observable<GroupResponse[]> = of([]); |  | ||||||
|   protected filteredGroups: Observable<GroupResponse[]> = of([]); |   protected filteredGroups: Observable<GroupResponse[]> = of([]); | ||||||
|   protected courseNumbers: Observable<number[]> = of([]); |   protected courseNumbers: Observable<number[]> = of([]); | ||||||
|  |   protected groups: Observable<GroupResponse[]> = of([]); | ||||||
|  |  | ||||||
|   protected chipCourse: FormControl = new FormControl(); |   protected chipCourse: FormControl = new FormControl(); | ||||||
|   protected chipGroup: FormControl = new FormControl(); |   protected chipGroup: FormControl = new FormControl(); | ||||||
| @@ -36,12 +34,20 @@ export class ScheduleTabsGroupComponent { | |||||||
|   @ViewChild('courseNumberPanel') courseNumberPanel!: MatExpansionPanel; |   @ViewChild('courseNumberPanel') courseNumberPanel!: MatExpansionPanel; | ||||||
|   @ViewChild('groupPanel') groupPanel!: MatExpansionPanel; |   @ViewChild('groupPanel') groupPanel!: MatExpansionPanel; | ||||||
|  |  | ||||||
|   @Output() groupSelected = new EventEmitter<number>(); |   @Input() faculties: Observable<FacultyResponse[]> = of([]); | ||||||
|  |  | ||||||
|   constructor(private api: ApiService) { |   @Input() set groupsSet(data: Observable<GroupResponse[]>) { | ||||||
|     this.faculties = api.get<FacultyResponse[]>("Faculty/Get"); |     this.groups = data; | ||||||
|  |     this.courseNumbers = this.groups.pipe( | ||||||
|  |       map(data => data.map(g => g.courseNumber)), | ||||||
|  |       map(courseNumbersArray => courseNumbersArray.filter((value, index, self) => self.indexOf(value) === index)), | ||||||
|  |       map(uniqueCourseNumbers => uniqueCourseNumbers.sort((a, b) => a - b)) | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Output() groupSelected = new EventEmitter<number>(); | ||||||
|  |   @Output() facultySelected = new EventEmitter<number>(); | ||||||
|  |  | ||||||
|   protected selectedFaculty(event: MatChipListboxChange) { |   protected selectedFaculty(event: MatChipListboxChange) { | ||||||
|     this.courseNumber = null; |     this.courseNumber = null; | ||||||
|     this.groups = of([]); |     this.groups = of([]); | ||||||
| @@ -55,12 +61,7 @@ export class ScheduleTabsGroupComponent { | |||||||
|     this.facultiesId = event.value; |     this.facultiesId = event.value; | ||||||
|     this.courseNumberPanel.open(); |     this.courseNumberPanel.open(); | ||||||
|  |  | ||||||
|     this.groups = this.api.get<GroupResponse[]>("Group/GetByFacultyId/" + this.facultiesId); |     this.facultySelected.emit(this.facultiesId!); | ||||||
|     this.courseNumbers = this.groups.pipe( |  | ||||||
|       map(data => data.map(g => g.courseNumber)), |  | ||||||
|       map(courseNumbersArray => courseNumbersArray.filter((value, index, self) => self.indexOf(value) === index)), |  | ||||||
|       map(uniqueCourseNumbers => uniqueCourseNumbers.sort((a, b) => a - b)) |  | ||||||
|     ); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   protected selectCourseNumber(event: MatChipListboxChange) { |   protected selectCourseNumber(event: MatChipListboxChange) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user