Convert qualifications to table (#13)

Co-authored-by: Phan Huy Tran <p.tran@neusta.de>
Reviewed-on: #13
This commit is contained in:
Huy 2024-12-18 13:36:55 +00:00 committed by Hernd Beidemann
parent 611a158d2d
commit 90cccf4fdb
3 changed files with 74 additions and 22 deletions

View File

@ -1,7 +1,22 @@
<ul> @if (qualifications$ | async; as qualifications) {
@for (qualification of qualifications$ | async; track qualification.skill) { @if (qualifications) {
<li> <table
{{ qualification.skill }} mat-table
</li> [dataSource]="qualifications"
class="mat-elevation-z8"
>
<ng-container matColumnDef="skill">
<th mat-header-cell *matHeaderCellDef>Skill</th>
<td mat-cell *matCellDef="let qualification">{{ qualification.skill }}</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let qualification"></td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
</table>
}
} }
</ul>

View File

@ -1,25 +1,43 @@
import {Component} from '@angular/core'; import {Component} from '@angular/core';
import {Observable} from "rxjs"; import {Observable} from "rxjs";
import {Employee} from "../Employee";
import {Qualification} from "../Qualification"; import {Qualification} from "../Qualification";
import {HttpClient} from "@angular/common/http"; import {HttpClient} from "@angular/common/http";
import {MatSnackBar} from "@angular/material/snack-bar";
import {AsyncPipe} from "@angular/common"; 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({ @Component({
selector: 'app-qualifications', selector: 'app-qualifications',
imports: [ imports: [
AsyncPipe AsyncPipe,
MatTable,
MatHeaderCell,
MatColumnDef,
MatCell,
MatCellDef,
MatHeaderCellDef,
MatHeaderRow,
MatRow,
MatHeaderRowDef,
MatRowDef
], ],
templateUrl: './qualifications.component.html', templateUrl: './qualifications.component.html',
styleUrl: './qualifications.component.css' styleUrl: './qualifications.component.css'
}) })
export class QualificationsComponent { export class QualificationsComponent {
public qualifications$: Observable<Qualification[]>; public qualifications$: Observable<Qualification[]>;
public readonly displayedColumns: string[] = ['skill', 'actions'];
constructor(
private readonly httpClient: HttpClient, constructor(private readonly qualificationService: QualificationService) {
) { this.qualifications$ = this.qualificationService.getAll();
this.qualifications$ = this.httpClient.get<Qualification[]>('http://localhost:8089/qualifications');
} }
} }

View File

@ -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<Qualification[]> {
return this.http.get<Qualification[]>(`${QualificationService.BASE_URL}/qualifications`)
}
}