From e0101a536466008b40c202dd401ea8519397c762 Mon Sep 17 00:00:00 2001 From: Hernd Beidemann Date: Wed, 18 Dec 2024 13:36:55 +0000 Subject: [PATCH] Convert qualifications to table (#13) Co-authored-by: Phan Huy Tran Reviewed-on: https://git.simonis.lol/angular/ems-frontend/pulls/13 --- .../qualifications.component.html | 29 ++++++++--- .../qualifications.component.ts | 48 +++++++++++++------ src/app/services/qualification.service.ts | 19 ++++++++ 3 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 src/app/services/qualification.service.ts diff --git a/src/app/qualifications/qualifications.component.html b/src/app/qualifications/qualifications.component.html index 7a732ee..8253ea8 100644 --- a/src/app/qualifications/qualifications.component.html +++ b/src/app/qualifications/qualifications.component.html @@ -1,7 +1,22 @@ - +@if (qualifications$ | async; as qualifications) { + @if (qualifications) { + + + + + + + + + + + + + +
Skill{{ qualification.skill }}Actions
+ } +} diff --git a/src/app/qualifications/qualifications.component.ts b/src/app/qualifications/qualifications.component.ts index 665593c..fb28b24 100644 --- a/src/app/qualifications/qualifications.component.ts +++ b/src/app/qualifications/qualifications.component.ts @@ -1,25 +1,43 @@ -import { Component } from '@angular/core'; +import {Component} from '@angular/core'; import {Observable} from "rxjs"; -import {Employee} from "../Employee"; import {Qualification} from "../Qualification"; import {HttpClient} from "@angular/common/http"; -import {MatSnackBar} from "@angular/material/snack-bar"; import {AsyncPipe} from "@angular/common"; +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, + MatHeaderCellDef, + MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatTable +} from "@angular/material/table"; +import QualificationService from "../services/qualification.service"; @Component({ - selector: 'app-qualifications', - imports: [ - AsyncPipe - ], - templateUrl: './qualifications.component.html', - styleUrl: './qualifications.component.css' + selector: 'app-qualifications', + imports: [ + AsyncPipe, + MatTable, + MatHeaderCell, + MatColumnDef, + MatCell, + MatCellDef, + MatHeaderCellDef, + MatHeaderRow, + MatRow, + MatHeaderRowDef, + MatRowDef + ], + templateUrl: './qualifications.component.html', + styleUrl: './qualifications.component.css' }) export class QualificationsComponent { - public qualifications$: Observable; + public qualifications$: Observable; + public readonly displayedColumns: string[] = ['skill', 'actions']; - constructor( - private readonly httpClient: HttpClient, - ) { - this.qualifications$ = this.httpClient.get('http://localhost:8089/qualifications'); - } + + constructor(private readonly qualificationService: QualificationService) { + this.qualifications$ = this.qualificationService.getAll(); + } } diff --git a/src/app/services/qualification.service.ts b/src/app/services/qualification.service.ts new file mode 100644 index 0000000..c28f421 --- /dev/null +++ b/src/app/services/qualification.service.ts @@ -0,0 +1,19 @@ +import {inject, Injectable} from "@angular/core"; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs"; +import {Employee} from "../Employee"; +import {Qualification} from "../Qualification"; + + +@Injectable({ + providedIn: 'root' +}) +export default class QualificationService { + private http: HttpClient = inject(HttpClient); + + private static readonly BASE_URL = 'http://localhost:8089'; + + public getAll(): Observable { + return this.http.get(`${QualificationService.BASE_URL}/qualifications`) + } +}