diff --git a/src/app/Interfaces/qualifications.ts b/src/app/Interfaces/qualifications.ts new file mode 100644 index 0000000..f6d89c5 --- /dev/null +++ b/src/app/Interfaces/qualifications.ts @@ -0,0 +1,4 @@ +export interface Qualifications { + id: number; + title: string; +} diff --git a/src/app/app.component.html b/src/app/app.component.html index 2f70899..d0bcac2 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,3 +1,24 @@ - + diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 9be37f5..f1e7c11 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,11 +1,16 @@ import {Component} from '@angular/core'; import { RouterOutlet } from '@angular/router'; import {HeaderComponent} from '@app/header/header.component'; +import {MatIcon} from "@angular/material/icon"; +import {MatTree, MatTreeNode, MatTreeNodeDef, MatTreeNodePadding, MatTreeNodeToggle} from "@angular/material/tree"; +import {AsyncPipe, KeyValuePipe} from "@angular/common"; +import {MatIconButton} from "@angular/material/button"; @Component({ selector: 'app-root', - imports: [RouterOutlet, HeaderComponent], + imports: [RouterOutlet, HeaderComponent, MatIcon, MatTree, AsyncPipe, MatTreeNodeDef, MatTreeNode, MatTreeNodePadding, KeyValuePipe, MatIconButton, MatTreeNodeToggle], templateUrl: './app.component.html', + standalone: true, styleUrl: './app.component.scss' }) export class AppComponent{ diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 988d8fd..17ed867 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -5,7 +5,7 @@ import { provideRouter } from '@angular/router'; import { routes } from '@app/app.routes'; import { OpenAPI } from '@core/ems/core/OpenAPI'; OpenAPI.BASE = 'http://localhost:8080'; -OpenAPI.TOKEN = 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzUFQ0dldiNno5MnlQWk1EWnBqT1U0RjFVN0lwNi1ELUlqQWVGczJPbGU0In0.eyJleHAiOjE3MzQ1MjA4MzgsImlhdCI6MTczNDUxNzIzOCwianRpIjoiODVkM2NlNDQtM2QwMS00MDFkLTlhY2YtZjFhZTMwNzQzMDRmIiwiaXNzIjoiaHR0cHM6Ly9rZXljbG9hay5zenV0LmRldi9hdXRoL3JlYWxtcy9zenV0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjU1NDZjZDIxLTk4NTQtNDMyZi1hNDY3LTRkZTNlZWRmNTg4OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVtcGxveWVlLW1hbmFnZW1lbnQtc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJiOWI3OGQ0ZS1jM2E4LTRiOWQtODdmMy04N2FiNzhjYzQyYTMiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NDIwMCJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsicHJvZHVjdF9vd25lciIsIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy1zenV0IiwidW1hX2F1dGhvcml6YXRpb24iLCJ1c2VyIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6InVzZXIifQ.I3CGELu7IXrh5kYapp-v54c-R8hNqZOtvpmR98NhoTCrOVUoA-V16ayhF42qQ3Pj2YymxENpQWHR1-BTFQOJmAhQKBzvKWgOHuiLCPr8NkMGWFQ520BcJdipbGnsM8tmXuLE9FWezHA7LEGVkwY2gTbQMLEPq8v8hrtIf76F2Dq34BIG3Nq_6QlG10rG_Heqta6kWWe2p4DJmebdpvAeW2qvTLD4x89oIhtYXSiRIiVS2uAur5XuJcjpbv8UXWx11zVX7KelZEXky92q_xPKerFMOGt6up5MkCijJBhVWewSWNldaix7_jKTXCp70Gtu4sgCIuoojKp9Nts942RZjw'; +OpenAPI.TOKEN = 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzUFQ0dldiNno5MnlQWk1EWnBqT1U0RjFVN0lwNi1ELUlqQWVGczJPbGU0In0.eyJleHAiOjE3MzQ1Mjc2NjIsImlhdCI6MTczNDUyNDA2MiwianRpIjoiZGUxNmI4NGMtZWFiOS00Yzg0LWJmNDMtMzg5NDEyMzJmYjY5IiwiaXNzIjoiaHR0cHM6Ly9rZXljbG9hay5zenV0LmRldi9hdXRoL3JlYWxtcy9zenV0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjU1NDZjZDIxLTk4NTQtNDMyZi1hNDY3LTRkZTNlZWRmNTg4OSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImVtcGxveWVlLW1hbmFnZW1lbnQtc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJlODIxNzhjNi02ZTAwLTQwOTEtYTA4Mi01MTRhYjE1N2QwNzYiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NDIwMCJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsicHJvZHVjdF9vd25lciIsIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy1zenV0IiwidW1hX2F1dGhvcml6YXRpb24iLCJ1c2VyIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6InVzZXIifQ.MRP09-6Q7r22TKmrvSn7Tox_IEQXNjbfHJHXky6jshtZSjGzhsYFPEVsy0W_RYX2IIj59owZ2XKEC5fzvtk2NsOyyXXWIUmS9Nxwpqo5qOZCmjFMOjHi8exBYDKoOg2wKfjMMkyk6s0BqTfSNlLz9lxf21oRrYGPN5rXO1ZgaNOr-mHJi5UUQDtBgoMlaM3IA3eaixGjK_ZnoEyB5Sb4V-iXLnSvhcXylEP8eOQcT_eJhq4sQluBdPtT8KY-oIWC7k3HwjeXQWqIjRSwFyQPBDtp4QPMgVbV0vgHWJvz2lEaPCPo21W2dmCVxYhthqv0mFBzxiKau5391Y49jmeNuw'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 087641c..dc02991 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,4 +1,8 @@ import {Routes} from '@angular/router'; import {DashboardComponent} from '@app/views/dashboard/dashboard.component'; +import {QualificationsComponent} from "@app/qualifications/qualifications.component"; -export const routes: Routes = [{path: '', component: DashboardComponent, title: 'Home'}]; +export const routes: Routes = [ + {path: 'qualifications', component: QualificationsComponent, title: "qualifications"}, + {path: '', component: DashboardComponent, title: 'Home'} +]; diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts index 797339b..61e1f96 100644 --- a/src/app/header/header.component.ts +++ b/src/app/header/header.component.ts @@ -14,6 +14,7 @@ import {Router, RouterLink} from '@angular/router'; MatButton, ], templateUrl: './header.component.html', + standalone: true, styleUrl: './header.component.scss' }) export class HeaderComponent implements OnInit { diff --git a/src/app/qualifications/qualifications.component.html b/src/app/qualifications/qualifications.component.html new file mode 100644 index 0000000..a4aa577 --- /dev/null +++ b/src/app/qualifications/qualifications.component.html @@ -0,0 +1,74 @@ +
+

+ Qualification-List +

+
+
+ search + +
+
+
+ + + + + + + + + + + + + @for(qualification of qualificationModel; track qualificationModel){ + + + + + + + } + +
IdBezeichnung
+ + {{qualification.id}}{{qualification.title}} + +
+ + +
+

Qualification hinzufügen

+ +
+ +
+ + Todo Name: + +
+ +
+ + Kategorie: + +
+ + +
+
diff --git a/src/app/qualifications/qualifications.component.scss b/src/app/qualifications/qualifications.component.scss new file mode 100644 index 0000000..32d556d --- /dev/null +++ b/src/app/qualifications/qualifications.component.scss @@ -0,0 +1,25 @@ +.search-container{ + display: flex; + align-items: center; + justify-content: center; + border: 1.5px solid black; + background: lightgray; + margin-top: 0.5rem; + +} +.headbar{ + display: flex; + justify-content: space-between; + margin-left: 7rem; + margin-right: 3rem; + margin-top: 1rem; +} +.search-input{ + border: none; + padding: 6px; + font-size: 17px; +} +.searchIcon{ + margin-right: 0.5rem; + margin-left: 0.5rem; +} diff --git a/src/app/qualifications/qualifications.component.spec.ts b/src/app/qualifications/qualifications.component.spec.ts new file mode 100644 index 0000000..1808d67 --- /dev/null +++ b/src/app/qualifications/qualifications.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QualificationsComponent } from './qualifications.component'; + +describe('QualificationsComponent', () => { + let component: QualificationsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [QualificationsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(QualificationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/qualifications/qualifications.component.ts b/src/app/qualifications/qualifications.component.ts new file mode 100644 index 0000000..cfc334d --- /dev/null +++ b/src/app/qualifications/qualifications.component.ts @@ -0,0 +1,34 @@ +import {Component, Input} from '@angular/core'; +import {FormsModule} from "@angular/forms"; +import {Qualifications} from "@app/Interfaces/qualifications"; +import {QualificationService} from "@app/services/qualification.service"; + +@Component({ + selector: 'app-qualifications', + imports: [ + FormsModule + ], + templateUrl: './qualifications.component.html', + standalone: true, + styleUrl: './qualifications.component.scss' +}) +export class QualificationsComponent { + qualificationModel: Qualifications[] | undefined; + options: Intl.DateTimeFormatOptions = { + year: 'numeric', + month: 'long', + day: 'numeric' + } + + constructor(private qualificationService: QualificationService) { + this.qualificationModel=this.qualificationService.qualifications + } + save() { + + } + + delete(qualification: Qualifications) { + this.qualificationService.deleteQualification(qualification) + + } +} diff --git a/src/app/services/qualification.service.spec.ts b/src/app/services/qualification.service.spec.ts new file mode 100644 index 0000000..2a878e3 --- /dev/null +++ b/src/app/services/qualification.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { QualificationService } from './qualification.service'; + +describe('QualificationService', () => { + let service: QualificationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(QualificationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/qualification.service.ts b/src/app/services/qualification.service.ts new file mode 100644 index 0000000..6d31274 --- /dev/null +++ b/src/app/services/qualification.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import {Qualifications} from "@app/Interfaces/qualifications"; + +@Injectable({ + providedIn: 'root' +}) +export class QualificationService { + qualifications = [ + { + id: 15, + title: 'Java'}, + { + id: 16, + title: 'Angular'}, + { + id: 17, + title: 'CSS'}, + { + id: 18, + title: 'Windows'}, + { + id: 19, + title: 'Linux'}, + { + id: 20, + title: 'Yes'}, + ] + + constructor() { } + deleteQualification(qualifications: Qualifications){ + this.qualifications = this.qualifications.filter(t => t!== qualifications) + } +}