Compare commits

..

12 commits

Author SHA1 Message Date
mehdiboudjoudi
88d3bb8cc4
UI: User Login, Mitarbeiterübersichts Page 2024-12-18 11:12:08 +01:00
621599e138 Merge pull request 'MitarbeiterDetailSeite' (#26) from mitarbeiter-detail-seite into main
Reviewed-on: #26
2024-12-18 10:07:07 +00:00
a2e50fb2a6
feat(employee-detail): add delete and edit buttons 2024-12-18 10:57:31 +01:00
dabe491612
feat(employee-detail): add employee details layout and button 2024-12-18 10:53:49 +01:00
ac48357e7a
feat: add employee detail component and update navigation bar 2024-12-18 10:43:14 +01:00
4b83970a8c Merge pull request 'feat: add docker compose for employee management service' (#25) from add-docker-compose into main
Reviewed-on: #25
2024-12-18 09:27:31 +00:00
fb2148544a
feat: add docker compose for employee management service 2024-12-18 10:25:04 +01:00
c3aa47cd3e Merge pull request 'NavigationsLeiste UI' (#21) from ui/navigation-bar into main
Reviewed-on: #21
2024-12-18 09:17:26 +00:00
829d289c6d
style(navigation-bar): remove unused dropdown HTML elements 2024-12-18 10:16:13 +01:00
4f9ca794c4
feat(navigation-bar): add logo and update sidebar styling 2024-12-18 10:06:38 +01:00
66472b28f6
style: add layout styles for app and navigation bar components 2024-12-18 09:23:34 +01:00
ba2e989d49
feat(navigation): add navigation bar component and update app layout 2024-12-18 09:11:59 +01:00
13 changed files with 176 additions and 1 deletions

29
compose.yml Normal file
View file

@ -0,0 +1,29 @@
volumes:
employee_postgres_data:
driver: local
services:
postgres-employee:
container_name: postgres_employee
image: postgres:13.3
volumes:
- employee_postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: employee_db
POSTGRES_USER: employee
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
employee:
container_name: employee
image: berndheidemann/employee-management-service:1.1.3
# image: berndheidemann/employee-management-service_without_keycloak:1.1
environment:
spring.datasource.url: jdbc:postgresql://postgres-employee:5432/employee_db
spring.datasource.username: employee
spring.datasource.password: secret
ports:
- "8089:8089"
depends_on:
- postgres-employee

1
public/logo.svg Normal file
View file

@ -0,0 +1 @@
<svg fill="none" height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><rect fill="white" fill-opacity="0.01" height="48" width="48"></rect><path d="M24 20C28.4183 20 32 16.4183 32 12C32 7.58172 28.4183 4 24 4C19.5817 4 16 7.58172 16 12C16 16.4183 19.5817 20 24 20Z" fill="#2F88FF" stroke="black" stroke-linejoin="round" stroke-width="4"></path><path d="M24 20V38" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"></path><path d="M16 32H12L4 44H44L36 32H32" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"></path></svg>

After

Width:  |  Height:  |  Size: 604 B

View file

@ -0,0 +1,5 @@
:host {
display: block;
height: 100vh;
}

View file

@ -5,10 +5,13 @@ import {
MitarbeiterverwaltungViewComponent MitarbeiterverwaltungViewComponent
} from "./components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component"; } from "./components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component";
import { NavigationBarComponent } from './components/navigation-bar/navigation-bar.component';
import { EmployeeDetailComponent } from './components/employee-detail/employee-detail.component';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
standalone: true, standalone: true,
imports: [RouterOutlet, LoginViewComponent, MitarbeiterverwaltungViewComponent], imports: [RouterOutlet, NavigationBarComponent, EmployeeDetailComponent, LoginViewComponent, MitarbeiterverwaltungViewComponent],
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrl: './app.component.css' styleUrl: './app.component.css'
}) })

View file

@ -0,0 +1,28 @@
<div class="d-flex flex-col" style="height: 100%;">
<app-navigation-bar></app-navigation-bar>
<div class="p-3" style="width: 100%;">
<a href="" class="btn btn-primary">Zurück</a>
<div class="row align-items-start pt-3">
<div class="col">
<h1>Name des Mitarbeiters</h1>
<p><strong>Straße: </strong>Straße des Benutzers</p>
<p><strong>Postleitzahl: </strong>Postleitzahl des Benutzers</p>
<p><strong>Stadt: </strong>Stadt des Benutzers</p>
<p><strong>Telefonnummer: </strong>Telefonnummer des Benutzers</p>
<button class="btn btn-danger">Löschen</button>
<button class="ms-3 btn btn-primary">Bearbeiten</button>
</div>
<div class="col">
<h2>Qualifikationen</h2>
<ul class="list-group" style="width: fit-content;">
<li class="list-group-item">Qualifikation 1</li>
<li class="list-group-item">Qualifikation 2</li>
<li class="list-group-item">Qualifikation 3</li>
<li class="list-group-item">Qualifikation 4</li>
<li class="list-group-item">Qualifikation 5</li>
</ul>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { EmployeeDetailComponent } from './employee-detail.component';
describe('EmployeeDetailComponent', () => {
let component: EmployeeDetailComponent;
let fixture: ComponentFixture<EmployeeDetailComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [EmployeeDetailComponent]
})
.compileComponents();
fixture = TestBed.createComponent(EmployeeDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View file

@ -0,0 +1,13 @@
import { Component } from '@angular/core';
import { NavigationBarComponent } from '../navigation-bar/navigation-bar.component';
@Component({
selector: 'app-employee-detail',
standalone: true,
imports: [NavigationBarComponent],
templateUrl: './employee-detail.component.html',
styleUrl: './employee-detail.component.css'
})
export class EmployeeDetailComponent {
}

View file

@ -0,0 +1,5 @@
:host {
display: block;
height: 100%;
width: 300px;
}

View file

@ -0,0 +1,24 @@
<div class="d-flex flex-column flex-shrink-0 p-3 text-bg-light border-end border-primary" style="width: 300px; height: 100%;">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-black text-decoration-none">
<img src="logo.svg" class="bi pe-none me-2" width="40" height="32"/>
<span class="fs-4">Hi-Tec GmbH</span>
</a>
<hr>
<ul class="nav nav-pills flex-column mb-auto">
<li class="nav-item">
<a href="#" class="nav-link active text-black" aria-current="page">
Dashboard
</a>
</li>
<li>
<a href="#" class="nav-link text-black">
Mitarbeiterverwaltung
</a>
</li>
<li>
<a href="#" class="nav-link text-black">
Qualifikationsverwaltung
</a>
</li>
</ul>
</div>

View file

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NavigationBarComponent } from './navigation-bar.component';
describe('NavigationBarComponent', () => {
let component: NavigationBarComponent;
let fixture: ComponentFixture<NavigationBarComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [NavigationBarComponent]
})
.compileComponents();
fixture = TestBed.createComponent(NavigationBarComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View file

@ -0,0 +1,12 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-navigation-bar',
standalone: true,
imports: [],
templateUrl: './navigation-bar.component.html',
styleUrl: './navigation-bar.component.css'
})
export class NavigationBarComponent {
}

View file

@ -1 +1,10 @@
/* You can add global styles to this file, and also import other style files */ /* You can add global styles to this file, and also import other style files */
.container{
min-height:100vh;
}
html, body {
min-height: 100%;
height: auto;
margin: 0;
}