diff --git a/uniplanWeb/pr-review.patch b/uniplanWeb/pr-review.patch new file mode 100644 index 0000000..cd480bd Binary files /dev/null and b/uniplanWeb/pr-review.patch differ diff --git a/uniplanWeb/src/app/core/interfaces/faculty-elm.ts b/uniplanWeb/src/app/core/interfaces/faculty.ts similarity index 77% rename from uniplanWeb/src/app/core/interfaces/faculty-elm.ts rename to uniplanWeb/src/app/core/interfaces/faculty.ts index d7ccfc3..efcd154 100644 --- a/uniplanWeb/src/app/core/interfaces/faculty-elm.ts +++ b/uniplanWeb/src/app/core/interfaces/faculty.ts @@ -1,4 +1,4 @@ -export interface FacultyElm { +export interface Faculty { id: string; facultyName: string; position: number; diff --git a/uniplanWeb/src/app/core/interfaces/major-elm.ts b/uniplanWeb/src/app/core/interfaces/major.ts similarity index 83% rename from uniplanWeb/src/app/core/interfaces/major-elm.ts rename to uniplanWeb/src/app/core/interfaces/major.ts index 02e3f07..e0ddfe3 100644 --- a/uniplanWeb/src/app/core/interfaces/major-elm.ts +++ b/uniplanWeb/src/app/core/interfaces/major.ts @@ -1,4 +1,4 @@ -export interface MajorElm { +export interface Major { id: string; courseId: string; facultyId: string; diff --git a/uniplanWeb/src/app/core/interfaces/room-view-model.ts b/uniplanWeb/src/app/core/interfaces/room-view-model.ts index 9acc24d..e09015d 100644 --- a/uniplanWeb/src/app/core/interfaces/room-view-model.ts +++ b/uniplanWeb/src/app/core/interfaces/room-view-model.ts @@ -1,5 +1,5 @@ -import { RoomElm } from "./room-elm"; +import { Room } from "./room"; -export interface RoomViewModel extends RoomElm { +export interface RoomViewModel extends Room { position: number; -} \ No newline at end of file +} diff --git a/uniplanWeb/src/app/core/interfaces/room-elm.ts b/uniplanWeb/src/app/core/interfaces/room.ts similarity index 70% rename from uniplanWeb/src/app/core/interfaces/room-elm.ts rename to uniplanWeb/src/app/core/interfaces/room.ts index 655e906..ba3b46c 100644 --- a/uniplanWeb/src/app/core/interfaces/room-elm.ts +++ b/uniplanWeb/src/app/core/interfaces/room.ts @@ -1,4 +1,4 @@ -export interface RoomElm { +export interface Room { id: string; facultyId: string; roomNumber: string; diff --git a/uniplanWeb/src/app/core/interfaces/student-elm.ts b/uniplanWeb/src/app/core/interfaces/student.ts similarity index 84% rename from uniplanWeb/src/app/core/interfaces/student-elm.ts rename to uniplanWeb/src/app/core/interfaces/student.ts index f826a9b..d11ef70 100644 --- a/uniplanWeb/src/app/core/interfaces/student-elm.ts +++ b/uniplanWeb/src/app/core/interfaces/student.ts @@ -1,4 +1,4 @@ -export interface StudentElm { +export interface Student { position: number; name: string; facultyNumber: string; diff --git a/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts b/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts index ecccdc2..7746f38 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-add-form/faculty-add-form.ts @@ -8,7 +8,7 @@ import { MatOptionModule } from '@angular/material/core'; import { AddForm } from '../../../core/shared/add-form/add-form'; import { FacultyService } from '../faculty-service'; import { - UniversityElm, + University, UniversityService, } from '../../university/university-service'; import { TranslatePipe } from '@ngx-translate/core'; @@ -39,7 +39,7 @@ export class FacultyAddForm implements OnInit { facultyName = ''; location = ''; universityId = ''; - universities: UniversityElm[] = []; + universities: University[] = []; ngOnInit(): void { this.universityService.getAllUniversities().subscribe({ diff --git a/uniplanWeb/src/app/features/faculty/faculty-panel/faculty-panel.spec.ts b/uniplanWeb/src/app/features/faculty/faculty-panel/faculty-panel.spec.ts index 6a9e118..0fdb43f 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-panel/faculty-panel.spec.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-panel/faculty-panel.spec.ts @@ -4,7 +4,7 @@ import { Subject, of } from 'rxjs'; import { translateTestingProviders } from '@testing/translate-testing'; import { FacultyPanel } from './faculty-panel'; import { FacultyService } from '../faculty-service'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Faculty } from '../../../core/interfaces/faculty'; describe('FacultyPanel', () => { let component: FacultyPanel; @@ -12,7 +12,7 @@ describe('FacultyPanel', () => { let facultyServiceSpy: jasmine.SpyObj; let dialogSpy: jasmine.SpyObj; - const buildFaculty = (overrides: Partial = {}): FacultyElm => ({ + const buildFaculty = (overrides: Partial = {}): Faculty => ({ id: '1', facultyName: 'Faculty of Engineering', location: 'Sofia', diff --git a/uniplanWeb/src/app/features/faculty/faculty-service.ts b/uniplanWeb/src/app/features/faculty/faculty-service.ts index 9476fea..1b4fe92 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-service.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-service.ts @@ -1,8 +1,8 @@ import { HttpClient } from '@angular/common/http'; import { inject, Injectable } from '@angular/core'; import { map, Observable, Subject, tap } from 'rxjs'; -import { FacultyElm } from '../../core/interfaces/faculty-elm'; -import { API_ENDPOINTS } from '../../config/endpoints'; +import { Faculty } from '../../core/interfaces/faculty'; +import {API_ENDPOINTS} from '../../config/endpoints'; @Injectable({ providedIn: 'root', @@ -12,8 +12,8 @@ export class FacultyService { refreshNeeded = new Subject(); - getFaculties(): Observable { - return this.http.get(API_ENDPOINTS.faculties).pipe( + getFaculties(): Observable { + return this.http.get(API_ENDPOINTS.faculties).pipe( map((faculties) => faculties.map((faculty, index) => ({ id: faculty.id, diff --git a/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts b/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts index 4f0f85f..b49620a 100644 --- a/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts +++ b/uniplanWeb/src/app/features/faculty/faculty-table/faculty-table.ts @@ -2,7 +2,7 @@ import { Component, ChangeDetectionStrategy, signal, inject, OnInit } from '@ang import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Faculty } from '../../../core/interfaces/faculty'; import { FacultyService } from '../faculty-service'; import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { FacultyEdit } from '../faculty-edit/faculty-edit'; @@ -32,7 +32,7 @@ export class FacultyTable implements OnInit { 'location', 'actions', ]; - dataSource = signal([]); + dataSource = signal([]); ngOnInit(): void { this.loadFaculties(); @@ -48,7 +48,7 @@ export class FacultyTable implements OnInit { }); } - onEdit(element: FacultyElm): void { + onEdit(element: Faculty): void { this.dialog.open(FacultyEdit, { data: { id: element.id, @@ -59,7 +59,7 @@ export class FacultyTable implements OnInit { }); } - onDelete(element: FacultyElm): void { + onDelete(element: Faculty): void { this.dialog.open(FacultyDeleteForm, { data: { id: element.id, diff --git a/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts b/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts index 291348a..90ac942 100644 --- a/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts +++ b/uniplanWeb/src/app/features/major/major-add-form/major-add-form.ts @@ -6,7 +6,7 @@ import { FormsModule } from '@angular/forms'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; import { MajorService } from '../major-service'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Faculty } from '../../../core/interfaces/faculty'; import { FacultyService } from '../../faculty/faculty-service'; import { TranslatePipe } from '@ngx-translate/core'; @@ -38,7 +38,7 @@ export class MajorAddForm implements OnInit { type = ''; subtype = ''; - faculties: FacultyElm[] = []; + faculties: Faculty[] = []; ngOnInit(): void { this.facultyService.getFaculties().subscribe({ diff --git a/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts b/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts index 5585a43..886e251 100644 --- a/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts +++ b/uniplanWeb/src/app/features/major/major-edit-form/major-edit-form.ts @@ -8,7 +8,7 @@ import { MatInputModule } from '@angular/material/input'; import { FormsModule } from '@angular/forms'; import { MajorService } from '../major-service'; import { FacultyService } from '../../faculty/faculty-service'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Faculty } from '../../../core/interfaces/faculty'; import { TranslatePipe } from '@ngx-translate/core'; @Component({ @@ -40,7 +40,7 @@ export class MajorEditForm implements OnInit { majorName = ''; facultyId = ''; - faculties: FacultyElm[] = []; + faculties: Faculty[] = []; constructor() { this.majorName = this.data.majorName; diff --git a/uniplanWeb/src/app/features/major/major-panel/major-panel.spec.ts b/uniplanWeb/src/app/features/major/major-panel/major-panel.spec.ts index b06a124..ea19245 100644 --- a/uniplanWeb/src/app/features/major/major-panel/major-panel.spec.ts +++ b/uniplanWeb/src/app/features/major/major-panel/major-panel.spec.ts @@ -9,8 +9,8 @@ import { MajorService } from '../major-service'; import { MajorTable } from '../major-table/major-table'; import { MajorFilters } from '../major-filters/major-filters'; import { FacultyService } from '../../faculty/faculty-service'; -import { MajorElm } from '../../../core/interfaces/major-elm'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Major } from '../../../core/interfaces/major'; +import { Faculty } from '../../../core/interfaces/faculty'; describe('MajorPanel', () => { let component: MajorPanel; @@ -19,7 +19,7 @@ describe('MajorPanel', () => { let facultyServiceSpy: jasmine.SpyObj; let dialogSpy: jasmine.SpyObj; - const faculty: FacultyElm = { + const faculty: Faculty = { id: 'f1', facultyName: 'Faculty of Engineering', location: 'Sofia', @@ -27,7 +27,7 @@ describe('MajorPanel', () => { position: 1, }; - const major: MajorElm = { + const major: Major = { id: 'm1', courseId: 'c1', facultyId: 'f1', diff --git a/uniplanWeb/src/app/features/major/major-panel/major-panel.ts b/uniplanWeb/src/app/features/major/major-panel/major-panel.ts index 2bef305..579be08 100644 --- a/uniplanWeb/src/app/features/major/major-panel/major-panel.ts +++ b/uniplanWeb/src/app/features/major/major-panel/major-panel.ts @@ -2,7 +2,7 @@ import { Component, DestroyRef, OnInit, inject } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { catchError, combineLatest, map, merge, of, switchMap } from 'rxjs'; -import { MajorElm } from '../../../core/interfaces/major-elm'; +import { Major } from '../../../core/interfaces/major'; import { FacultyService } from '../../faculty/faculty-service'; import { MajorOptions } from '../major-options/major-options'; import { MajorFilters } from '../major-filters/major-filters'; @@ -29,7 +29,7 @@ export class MajorPanel implements OnInit { types: string[] = []; subtypes: string[] = []; - private majors: MajorElm[] = []; + private majors: Major[] = []; private facultyMap: Map = new Map(); ngOnInit(): void { diff --git a/uniplanWeb/src/app/features/major/major-service.ts b/uniplanWeb/src/app/features/major/major-service.ts index 9b3252a..29d5853 100644 --- a/uniplanWeb/src/app/features/major/major-service.ts +++ b/uniplanWeb/src/app/features/major/major-service.ts @@ -1,7 +1,7 @@ import { HttpClient } from '@angular/common/http'; import { inject, Injectable } from '@angular/core'; import { map, Observable, Subject, switchMap, tap } from 'rxjs'; -import { MajorElm } from '../../core/interfaces/major-elm'; +import { Major } from '../../core/interfaces/major'; import {API_ENDPOINTS} from '../../config/endpoints'; import { CourseElm } from '../../core/interfaces/course-elm'; @@ -13,8 +13,8 @@ export class MajorService { refreshNeeded = new Subject(); - getMajors(): Observable { - return this.http.get(API_ENDPOINTS.majors).pipe( + getMajors(): Observable { + return this.http.get(API_ENDPOINTS.majors).pipe( map((majors) => majors.map((major, index) => ({ id: major.id, @@ -32,8 +32,8 @@ export class MajorService { createMajor(createMajor: { facultyId: string; majorName: string; - }): Observable { - return this.http.post(`${API_ENDPOINTS.majors}`, createMajor).pipe( + }): Observable { + return this.http.post(`${API_ENDPOINTS.majors}`, createMajor).pipe( map((res) => { this.refreshNeeded.next(); return res; @@ -89,7 +89,7 @@ export class MajorService { return this.http.delete(`${API_ENDPOINTS.courses}/${courseId}`); } - deleteMajorWithCourse(major: MajorElm): Observable { + deleteMajorWithCourse(major: Major): Observable { return this.deleteCourse(major.courseId).pipe( switchMap(() => this.deleteMajor(major.id)) ); @@ -98,8 +98,8 @@ export class MajorService { editMajor( id: string, updateMajor: { facultyId: string; majorName: string } - ): Observable { - return this.http.put(`${API_ENDPOINTS.majors}/${id}`, updateMajor).pipe( + ): Observable { + return this.http.put(`${API_ENDPOINTS.majors}/${id}`, updateMajor).pipe( tap((res) => { this.refreshNeeded.next(); return res; diff --git a/uniplanWeb/src/app/features/major/major-table/major-table.ts b/uniplanWeb/src/app/features/major/major-table/major-table.ts index 29be63a..fdc0739 100644 --- a/uniplanWeb/src/app/features/major/major-table/major-table.ts +++ b/uniplanWeb/src/app/features/major/major-table/major-table.ts @@ -2,7 +2,7 @@ import { Component, Input, OnInit, ChangeDetectionStrategy, signal, inject } fro import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; -import { MajorElm } from '../../../core/interfaces/major-elm'; +import { Major } from '../../../core/interfaces/major'; import { MajorFilterOptions } from '../../../core/interfaces/major-filter-options'; import { MajorEditForm } from '../major-edit-form/major-edit-form'; import { MatDialog } from '@angular/material/dialog'; @@ -32,7 +32,7 @@ export class MajorTable implements OnInit { 'actions', ]; - dataSource = signal([]); + dataSource = signal([]); facultyMap = signal(new Map()); @Input() searchText = ''; @@ -66,7 +66,7 @@ export class MajorTable implements OnInit { return this.facultyMap().get(id) || '—'; } - get filteredMajors(): MajorElm[] { + get filteredMajors(): Major[] { return this.dataSource().filter((major) => { const matchesFaculty = !this.faculty || major.facultyId === this.faculty; const matchesType = !this.type || major.courseType === this.type; @@ -80,7 +80,7 @@ export class MajorTable implements OnInit { }); } - onEdit(element: MajorElm): void { + onEdit(element: Major): void { this.dialog.open(MajorEditForm, { data: { id: element.id, @@ -90,7 +90,7 @@ export class MajorTable implements OnInit { }); } - onDelete(element: MajorElm): void { + onDelete(element: Major): void { this.dialog.open(MajorDeleteForm, { data: { id: element.id, @@ -102,7 +102,7 @@ export class MajorTable implements OnInit { } static getFilterOptions( - data: MajorElm[], + data: Major[], facultyMap: Map ): MajorFilterOptions { const faculties = [...new Set(data.map((e) => e.facultyId))].map((id) => ({ diff --git a/uniplanWeb/src/app/features/room/room-add-form/room-add-form.ts b/uniplanWeb/src/app/features/room/room-add-form/room-add-form.ts index 0a4e4b9..1b7ad6d 100644 --- a/uniplanWeb/src/app/features/room/room-add-form/room-add-form.ts +++ b/uniplanWeb/src/app/features/room/room-add-form/room-add-form.ts @@ -11,7 +11,7 @@ import { TranslatePipe, TranslateService } from '@ngx-translate/core'; import { finalize } from 'rxjs'; import { AddForm } from '../../../core/shared/add-form/add-form'; import { FacultyService } from '../../faculty/faculty-service'; -import { FacultyElm } from '../../../core/interfaces/faculty-elm'; +import { Faculty } from '../../../core/interfaces/faculty'; import { RoomService } from '../room-service'; @Component({ @@ -36,7 +36,7 @@ export class RoomAddForm implements OnInit { private dialogRef = inject(MatDialogRef); private facultyService = inject(FacultyService); private roomService = inject(RoomService) - faculties: FacultyElm[] = []; + faculties: Faculty[] = []; private destroyRef = inject(DestroyRef); private translate = inject(TranslateService); private isSubmitting = false; diff --git a/uniplanWeb/src/app/features/room/room-service.ts b/uniplanWeb/src/app/features/room/room-service.ts index 217367e..18c10bc 100644 --- a/uniplanWeb/src/app/features/room/room-service.ts +++ b/uniplanWeb/src/app/features/room/room-service.ts @@ -2,7 +2,7 @@ import { Injectable, inject } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { map, Observable, shareReplay } from 'rxjs'; import { RoomViewModel } from '../../core/interfaces/room-view-model'; -import { RoomElm } from '../../core/interfaces/room-elm'; +import { Room } from '../../core/interfaces/room'; import { Subject } from 'rxjs'; import { API_ENDPOINTS } from '../../config/endpoints'; @@ -16,7 +16,7 @@ export class RoomService { private http = inject(HttpClient); getRooms(): Observable { - return this.http.get(API_ENDPOINTS.rooms).pipe( + return this.http.get(API_ENDPOINTS.rooms).pipe( map(rooms => rooms ?? []), map(rooms => rooms.map((room, index) => ({ @@ -33,12 +33,12 @@ export class RoomService { createRoom(room: { roomNumber: string; facultyId: string; - }): Observable { - return this.http.post(`${(API_ENDPOINTS.rooms)}`, room).pipe( + }): Observable { + return this.http.post(`${(API_ENDPOINTS.rooms)}`, room).pipe( map((res) => { this.refreshNeeded.next(); return res; }) ); } -} \ No newline at end of file +} diff --git a/uniplanWeb/src/app/features/student/student-panel/student-panel.ts b/uniplanWeb/src/app/features/student/student-panel/student-panel.ts index 28fd5fe..a786b98 100644 --- a/uniplanWeb/src/app/features/student/student-panel/student-panel.ts +++ b/uniplanWeb/src/app/features/student/student-panel/student-panel.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; -import { StudentElm } from '../../../core/interfaces/student-elm'; +import { Student} from '../../../core/interfaces/student'; import { StudentOptions } from '../student-options/student-options'; import { StudentFilters } from '../student-filters/student-filters'; import { StudentTable, ELEMENT_STUDENT_DATA } from '../student-table/student-table'; @@ -19,7 +19,7 @@ export class StudentPanel implements OnInit { studentSubtypes: string[] = []; ngOnInit(): void { - const students: StudentElm[] = ELEMENT_STUDENT_DATA; + const students: Student[] = ELEMENT_STUDENT_DATA; this.studentSubtypes = StudentTable.getFilterOptions(students).subtypes; } } diff --git a/uniplanWeb/src/app/features/student/student-table/student-table.ts b/uniplanWeb/src/app/features/student/student-table/student-table.ts index f54ab97..377a2de 100644 --- a/uniplanWeb/src/app/features/student/student-table/student-table.ts +++ b/uniplanWeb/src/app/features/student/student-table/student-table.ts @@ -5,7 +5,7 @@ import { OnInit, ChangeDetectionStrategy } from '@angular/core'; -import { StudentElm } from '../../../core/interfaces/student-elm'; +import { Student } from '../../../core/interfaces/student'; import { StudentFilterOptions } from '../../../core/interfaces/student-filter-options'; import { TranslatePipe } from '@ngx-translate/core'; @@ -13,7 +13,7 @@ import { MatTableModule } from '@angular/material/table'; import { MatIconModule } from '@angular/material/icon'; import { MatButtonModule } from '@angular/material/button'; -export const ELEMENT_STUDENT_DATA: StudentElm[] = [ +export const ELEMENT_STUDENT_DATA: Student[] = [ { position: 1, name: 'Иван Иванов', @@ -132,8 +132,8 @@ export class StudentTable implements OnInit, OnChanges { 'actions', ]; - originalData: StudentElm[] = ELEMENT_STUDENT_DATA; - dataSourceFilter: StudentElm[] = ELEMENT_STUDENT_DATA; + originalData: Student[] = ELEMENT_STUDENT_DATA; + dataSourceFilter: Student[] = ELEMENT_STUDENT_DATA; ngOnInit(): void { this.subtypes = StudentTable.getFilterOptions(this.originalData).subtypes; @@ -159,17 +159,17 @@ export class StudentTable implements OnInit, OnChanges { }); } - static getFilterOptions(data: StudentElm[]): StudentFilterOptions { + static getFilterOptions(data: Student[]): StudentFilterOptions { return { subtypes: [...new Set(data.map((e) => e.subtype))], }; } - onEdit(element: StudentElm): void { + onEdit(element: Student): void { console.log('Editing:', element); } - onDelete(element: StudentElm): void { + onDelete(element: Student): void { console.log('Deleting:', element); } } diff --git a/uniplanWeb/src/app/features/university/university-service.ts b/uniplanWeb/src/app/features/university/university-service.ts index e072b5a..0795132 100644 --- a/uniplanWeb/src/app/features/university/university-service.ts +++ b/uniplanWeb/src/app/features/university/university-service.ts @@ -3,7 +3,7 @@ import { inject, Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import {API_ENDPOINTS} from '../../config/endpoints'; -export interface UniversityElm { +export interface University { id: string; uniName: string; location: string; @@ -18,7 +18,7 @@ export interface UniversityElm { export class UniversityService { private http = inject(HttpClient); - getAllUniversities(): Observable { - return this.http.get(API_ENDPOINTS.universities); + getAllUniversities(): Observable { + return this.http.get(API_ENDPOINTS.universities); } }