Compare commits
3 Commits
task/remov
...
task/add-l
Author | SHA1 | Date | |
---|---|---|---|
ca893507c6 | |||
64d8ce5837 | |||
eac3d9c834 |
@ -1,4 +1,10 @@
|
|||||||
<main class="container mx-auto px-4 py-8 max-w-6xl">
|
<main class="container mx-auto px-4 py-8 max-w-6xl">
|
||||||
<h1 class="text-3xl font-bold text-gray-900 mb-8">{{ title }}</h1>
|
<div class="flex justify-between items-center mb-8">
|
||||||
|
<h1 class="text-3xl font-extrabold text-gray-900">{{ title }}</h1>
|
||||||
|
<button mat-flat-button class="!bg-red-600 !text-white" (click)="logout()">
|
||||||
|
<mat-icon>logout</mat-icon>
|
||||||
|
<span class="ml-1">Logout</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
</main>
|
</main>
|
||||||
|
@ -1,14 +1,22 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { RouterOutlet } from '@angular/router';
|
import { RouterOutlet } from '@angular/router';
|
||||||
|
import { AuthService } from './services/auth.service';
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
imports: [CommonModule, RouterOutlet],
|
imports: [CommonModule, RouterOutlet, MatButtonModule, MatIconModule],
|
||||||
templateUrl: './app.component.html',
|
templateUrl: './app.component.html',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
styleUrl: './app.component.css',
|
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent {
|
||||||
title = 'Employee Management System';
|
title = 'Employee Management System';
|
||||||
|
|
||||||
|
constructor(private authService: AuthService) {}
|
||||||
|
|
||||||
|
logout(): void {
|
||||||
|
this.authService.logout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,34 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (employees) {
|
@if (!employees || employees.length === 0) {
|
||||||
|
<div class="!bg-gray-50 !rounded-lg !p-8">
|
||||||
|
<div class="!text-center !max-w-sm !mx-auto">
|
||||||
|
<div
|
||||||
|
class="!bg-blue-100 !rounded-full !w-16 !h-16 !flex !items-center !justify-center !mx-auto !mb-4"
|
||||||
|
>
|
||||||
|
<mat-icon class="!text-blue-600 !w-8 !h-8 !text-3xl"
|
||||||
|
>people</mat-icon
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<h3 class="!text-gray-900 !font-medium !text-lg !mb-2">
|
||||||
|
No employees found
|
||||||
|
</h3>
|
||||||
|
<p class="!text-gray-600 !mb-6">
|
||||||
|
Get started by adding your first employee to the directory.
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
mat-flat-button
|
||||||
|
color="primary"
|
||||||
|
class="!bg-blue-600 !text-white"
|
||||||
|
(click)="showCreateEmployeeModal()"
|
||||||
|
>
|
||||||
|
<mat-icon class="!mr-2">add</mat-icon>
|
||||||
|
Add Employee
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
} @else {
|
||||||
<div class="!overflow-x-auto !rounded-lg !bg-gray-50 !p-4">
|
<div class="!overflow-x-auto !rounded-lg !bg-gray-50 !p-4">
|
||||||
<table mat-table [dataSource]="employees" matSort class="!w-full">
|
<table mat-table [dataSource]="employees" matSort class="!w-full">
|
||||||
<ng-container matColumnDef="name">
|
<ng-container matColumnDef="name">
|
||||||
@ -112,13 +139,6 @@
|
|||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
} @else {
|
|
||||||
<mat-card class="!text-center !py-8">
|
|
||||||
<mat-card-content>
|
|
||||||
<mat-icon class="!w-8 !h-8 !text-gray-400 !mb-4">people</mat-icon>
|
|
||||||
<p class="!text-gray-600">No employees found</p>
|
|
||||||
</mat-card-content>
|
|
||||||
</mat-card>
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,34 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (qualifications) {
|
@if (!qualifications || qualifications.length === 0) {
|
||||||
|
<div class="!bg-gray-50 !rounded-lg !p-8">
|
||||||
|
<div class="!text-center !max-w-sm !mx-auto">
|
||||||
|
<div
|
||||||
|
class="!bg-blue-100 !rounded-full !w-16 !h-16 !flex !items-center !justify-center !mx-auto !mb-4"
|
||||||
|
>
|
||||||
|
<mat-icon class="!text-blue-600 !w-8 !h-8 !text-3xl"
|
||||||
|
>school</mat-icon
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<h3 class="!text-gray-900 !font-medium !text-lg !mb-2">
|
||||||
|
No qualifications found
|
||||||
|
</h3>
|
||||||
|
<p class="!text-gray-600 !mb-6">
|
||||||
|
Get started by adding your first qualification to the directory.
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
mat-flat-button
|
||||||
|
color="primary"
|
||||||
|
class="!bg-blue-600 !text-white"
|
||||||
|
(click)="openCreateModal()"
|
||||||
|
>
|
||||||
|
<mat-icon class="!mr-2">add</mat-icon>
|
||||||
|
Add Qualification
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
} @else {
|
||||||
<div class="!overflow-x-auto !rounded-lg !bg-gray-50 !p-4">
|
<div class="!overflow-x-auto !rounded-lg !bg-gray-50 !p-4">
|
||||||
<table
|
<table
|
||||||
mat-table
|
mat-table
|
||||||
@ -119,13 +146,6 @@
|
|||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
} @else {
|
|
||||||
<mat-card class="!text-center !py-8">
|
|
||||||
<mat-card-content>
|
|
||||||
<mat-icon class="!w-8 !h-8 !text-gray-400 !mb-4">school</mat-icon>
|
|
||||||
<p class="!text-gray-600">No qualifications found</p>
|
|
||||||
</mat-card-content>
|
|
||||||
</mat-card>
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,8 @@ export class AuthService {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public logout(): void {
|
||||||
|
this.keycloakService.logout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Lf10StarterNew</title>
|
<title>Employee Management System</title>
|
||||||
<base href="/" />
|
<base href="/" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||||
|
Reference in New Issue
Block a user