Commit b67f5495 by Ooh-Ao

หห

parent 264a7c6c
...@@ -48,5 +48,5 @@ export const App_Route: Route[] = [ ...@@ -48,5 +48,5 @@ export const App_Route: Route[] = [
path: 'unauthorized', path: 'unauthorized',
component: UnauthorizedComponent component: UnauthorizedComponent
}, },
{ path: '', component: ContentLayoutComponent, children: content}, { path: '', redirectTo: '/auth/login', pathMatch: 'full' },
] ]
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Router } from '@angular/router';
import { AuthService } from '../../core/services/auth.service';
@Component({
selector: 'app-simple-login',
standalone: true,
imports: [CommonModule, FormsModule],
template: `
<div class="min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8">
<div class="max-w-md w-full space-y-8">
<div>
<h2 class="mt-6 text-center text-3xl font-extrabold text-gray-900">
เข้าสู่ระบบ
</h2>
</div>
<form class="mt-8 space-y-6" (ngSubmit)="onLogin()">
<div class="rounded-md shadow-sm -space-y-px">
<div>
<label for="username" class="sr-only">Username</label>
<input id="username" name="username" type="text"
[(ngModel)]="username" required
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-t-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
placeholder="Username">
</div>
<div>
<label for="password" class="sr-only">Password</label>
<input id="password" name="password" type="password"
[(ngModel)]="password" required
class="appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
placeholder="Password">
</div>
</div>
<div>
<button type="submit"
[disabled]="isLoading"
class="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 disabled:opacity-50">
<span *ngIf="!isLoading">เข้าสู่ระบบ</span>
<span *ngIf="isLoading">กำลังเข้าสู่ระบบ...</span>
</button>
</div>
<div *ngIf="errorMessage" class="text-red-600 text-sm text-center">
{{ errorMessage }}
</div>
</form>
</div>
</div>
`,
styles: []
})
export class SimpleLoginComponent {
username = '';
password = '';
isLoading = false;
errorMessage = '';
constructor(
private router: Router,
private authService: AuthService
) {}
onLogin() {
if (!this.username || !this.password) {
this.errorMessage = 'กรุณากรอก username และ password';
return;
}
this.isLoading = true;
this.errorMessage = '';
// จำลองการ login
setTimeout(() => {
// บันทึก token ลง localStorage
localStorage.setItem('authToken', 'dummy-token-' + Date.now());
// อัปเดตสถานะ login ใน AuthService
this.authService.login().subscribe(() => {
this.isLoading = false;
// ไปหน้า home
console.log('Navigating to /home...');
this.router.navigate(['/home']).then(success => {
console.log('Navigation success:', success);
if (!success) {
console.log('Navigation failed, trying alternative...');
this.router.navigateByUrl('/home');
}
}).catch(error => {
console.error('Navigation error:', error);
// ลองใช้ window.location
window.location.href = '/home';
});
});
}, 1000);
}
}
...@@ -7,12 +7,25 @@ export const moduleAccessGuard: CanActivateFn = (route: ActivatedRouteSnapshot, ...@@ -7,12 +7,25 @@ export const moduleAccessGuard: CanActivateFn = (route: ActivatedRouteSnapshot,
const permissionService = inject(CorePermissionService); const permissionService = inject(CorePermissionService);
const router = inject(Router); const router = inject(Router);
// Get the module name from the route parameter :appName // Get the module name from the route parameter :appName or from the route path
const moduleName = route.params['appName']; let moduleName = route.params['appName'];
// If no appName parameter, extract module name from the route path
if (!moduleName) {
const pathSegments = state.url.split('/').filter(segment => segment);
// For portal-manage routes, get the module name after 'portal-manage'
const portalIndex = pathSegments.indexOf('portal-manage');
if (portalIndex !== -1 && pathSegments[portalIndex + 1]) {
moduleName = pathSegments[portalIndex + 1];
} else if (pathSegments.length > 0) {
// For direct routes, use the first segment
moduleName = pathSegments[0];
}
}
if (!moduleName) { if (!moduleName) {
// If the path is not defined, deny access and redirect // If the path is not defined, deny access and redirect
return router.parseUrl('/unauthorized'); // Or to a default error page return router.parseUrl('/unauthorized');
} }
return permissionService.canAccessModule(moduleName).pipe( return permissionService.canAccessModule(moduleName).pipe(
......
...@@ -36,9 +36,13 @@ export class CorePermissionService { ...@@ -36,9 +36,13 @@ export class CorePermissionService {
* @param moduleName The name of the module (e.g., from the route path). * @param moduleName The name of the module (e.g., from the route path).
*/ */
canAccessModule(moduleName: string): Observable<boolean> { canAccessModule(moduleName: string): Observable<boolean> {
return this.getAccessibleModules().pipe( // Temporarily allow access to all modules
map(modules => modules.includes(moduleName)) return of(true);
);
// Original implementation (commented out for now):
// return this.getAccessibleModules().pipe(
// map(modules => modules.includes(moduleName))
// );
} }
/** /**
......
...@@ -214,10 +214,10 @@ export class HomeComponent implements OnInit { ...@@ -214,10 +214,10 @@ export class HomeComponent implements OnInit {
displayName: 'myHR-Plus', displayName: 'myHR-Plus',
description: 'ระบบจัดการทรัพยากรบุคคลขั้นสูง', description: 'ระบบจัดการทรัพยากรบุคคลขั้นสูง',
icon: './assets/images/logoallHR/myhr-plus.jpg', icon: './assets/images/logoallHR/myhr-plus.jpg',
path: '/myhr-plus', path: '/portal-manage/myhr-plus',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'myhr-lite', id: 'myhr-lite',
...@@ -225,10 +225,10 @@ export class HomeComponent implements OnInit { ...@@ -225,10 +225,10 @@ export class HomeComponent implements OnInit {
displayName: 'myHR-Lite', displayName: 'myHR-Lite',
description: 'ระบบจัดการทรัพยากรบุคคลพื้นฐาน', description: 'ระบบจัดการทรัพยากรบุคคลพื้นฐาน',
icon: './assets/images/logoallHR/myHR-Lite-logo-new.png', icon: './assets/images/logoallHR/myHR-Lite-logo-new.png',
path: '/myhr-lite', path: '/portal-manage/myhr-lite',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'zeeme', id: 'zeeme',
...@@ -236,10 +236,10 @@ export class HomeComponent implements OnInit { ...@@ -236,10 +236,10 @@ export class HomeComponent implements OnInit {
displayName: 'Zeeme Plus', displayName: 'Zeeme Plus',
description: 'ระบบจัดการเวลาและลงเวลา', description: 'ระบบจัดการเวลาและลงเวลา',
icon: './assets/images/logoallHR/zeemePlus.png', icon: './assets/images/logoallHR/zeemePlus.png',
path: '/zeeme', path: '/portal-manage/zeeme',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'myface', id: 'myface',
...@@ -247,10 +247,10 @@ export class HomeComponent implements OnInit { ...@@ -247,10 +247,10 @@ export class HomeComponent implements OnInit {
displayName: 'myFace', displayName: 'myFace',
description: 'ระบบจัดการใบหน้าและความปลอดภัย', description: 'ระบบจัดการใบหน้าและความปลอดภัย',
icon: './assets/images/logoallHR/logo_myface.png', icon: './assets/images/logoallHR/logo_myface.png',
path: '/myface', path: '/portal-manage/myface',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'mylearn', id: 'mylearn',
...@@ -258,10 +258,10 @@ export class HomeComponent implements OnInit { ...@@ -258,10 +258,10 @@ export class HomeComponent implements OnInit {
displayName: 'myLearn', displayName: 'myLearn',
description: 'ระบบจัดการการเรียนรู้และฝึกอบรม', description: 'ระบบจัดการการเรียนรู้และฝึกอบรม',
icon: './assets/images/logoallHR/mylearn-logo.png', icon: './assets/images/logoallHR/mylearn-logo.png',
path: '/mylearn', path: '/portal-manage/mylearn',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'myjob', id: 'myjob',
...@@ -269,10 +269,10 @@ export class HomeComponent implements OnInit { ...@@ -269,10 +269,10 @@ export class HomeComponent implements OnInit {
displayName: 'myJob', displayName: 'myJob',
description: 'ระบบจัดการงานและโครงการ', description: 'ระบบจัดการงานและโครงการ',
icon: './assets/images/logoallHR/logo_myjob.png', icon: './assets/images/logoallHR/logo_myjob.png',
path: '/myjob', path: '/portal-manage/myjob',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'myskill-x', id: 'myskill-x',
...@@ -280,10 +280,10 @@ export class HomeComponent implements OnInit { ...@@ -280,10 +280,10 @@ export class HomeComponent implements OnInit {
displayName: 'mySkill-X', displayName: 'mySkill-X',
description: 'ระบบจัดการทักษะและความสามารถ', description: 'ระบบจัดการทักษะและความสามารถ',
icon: './assets/images/logoallHR/mySkill-x.png', icon: './assets/images/logoallHR/mySkill-x.png',
path: '/myskill-x', path: '/portal-manage/myskill-x',
isVisible: true, isVisible: true,
category: 'applications', category: 'applications',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
// การบริการ // การบริการ
{ {
...@@ -292,10 +292,10 @@ export class HomeComponent implements OnInit { ...@@ -292,10 +292,10 @@ export class HomeComponent implements OnInit {
displayName: 'Dashboard', displayName: 'Dashboard',
description: 'แดชบอร์ดหลัก', description: 'แดชบอร์ดหลัก',
icon: './assets/images/icons/dashboard.png', icon: './assets/images/icons/dashboard.png',
path: '/dashboard', path: '/portal-manage/dashboard',
isVisible: true, isVisible: true,
category: 'services', category: 'services',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'meetingBooking', id: 'meetingBooking',
...@@ -306,7 +306,7 @@ export class HomeComponent implements OnInit { ...@@ -306,7 +306,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/meeting-booking', path: '/portal-manage/meeting-booking',
isVisible: true, isVisible: true,
category: 'services', category: 'services',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
// การตั้งค่าระบบ // การตั้งค่าระบบ
{ {
...@@ -318,7 +318,7 @@ export class HomeComponent implements OnInit { ...@@ -318,7 +318,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/permission-management', path: '/portal-manage/permission-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'roleManagement', id: 'roleManagement',
...@@ -329,7 +329,7 @@ export class HomeComponent implements OnInit { ...@@ -329,7 +329,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/role-management', path: '/portal-manage/role-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'menuPermissionManagement', id: 'menuPermissionManagement',
...@@ -340,7 +340,7 @@ export class HomeComponent implements OnInit { ...@@ -340,7 +340,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/menu-permission-management', path: '/portal-manage/menu-permission-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'userManagement', id: 'userManagement',
...@@ -351,7 +351,7 @@ export class HomeComponent implements OnInit { ...@@ -351,7 +351,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/user-role-management', path: '/portal-manage/user-role-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'companyManagement', id: 'companyManagement',
...@@ -362,7 +362,7 @@ export class HomeComponent implements OnInit { ...@@ -362,7 +362,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/company-management', path: '/portal-manage/company-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'widgetManagement', id: 'widgetManagement',
...@@ -373,7 +373,7 @@ export class HomeComponent implements OnInit { ...@@ -373,7 +373,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/widget-management', path: '/portal-manage/widget-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
}, },
{ {
id: 'dashboardManagement', id: 'dashboardManagement',
...@@ -384,7 +384,7 @@ export class HomeComponent implements OnInit { ...@@ -384,7 +384,7 @@ export class HomeComponent implements OnInit {
path: '/portal-manage/dashboard-management', path: '/portal-manage/dashboard-management',
isVisible: true, isVisible: true,
category: 'system', category: 'system',
permissions: { view: true, create: false, edit: false, delete: false, export: false, import: false } permissions: { view: true, create: true, edit: true, delete: true, export: true, import: true }
} }
]; ];
} }
...@@ -413,11 +413,8 @@ export class HomeComponent implements OnInit { ...@@ -413,11 +413,8 @@ export class HomeComponent implements OnInit {
} }
navigateToApp(app: AppModule) { navigateToApp(app: AppModule) {
if (app.path.startsWith('/portal-manage')) { // เนื่องจากทุก path ตอนนี้เริ่มด้วย /portal-manage แล้ว
this.router.navigate([app.path]); this.router.navigate([app.path]);
} else {
this.checkAppToken(app.id);
}
} }
getAppCardClass(app: AppModule): string { getAppCardClass(app: AppModule): string {
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-myface-dashboard', selector: 'app-myface-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-myface', selector: 'app-myface',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-myhr-lite-dashboard', selector: 'app-myhr-lite-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-myhr-lite', selector: 'app-myhr-lite',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-myjob-dashboard', selector: 'app-myjob-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-myjob', selector: 'app-myjob',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-mylearn-dashboard', selector: 'app-mylearn-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-mylearn', selector: 'app-mylearn',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-myskill-x-dashboard', selector: 'app-myskill-x-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-myskill-x', selector: 'app-myskill-x',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -2,6 +2,7 @@ import { Component } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-zeeme-dashboard', selector: 'app-zeeme-dashboard',
standalone: true,
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({ @Component({
selector: 'app-zeeme', selector: 'app-zeeme',
standalone: true,
imports: [RouterOutlet],
template: ` template: `
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
......
...@@ -301,82 +301,153 @@ ...@@ -301,82 +301,153 @@
<div class="dropdown-divider mb-0"></div> <div class="dropdown-divider mb-0"></div>
<div class="ti-dropdown-divider divide-y divide-gray-200 dark:divide-white/10 main-header-shortcuts p-2" <div class="ti-dropdown-divider divide-y divide-gray-200 dark:divide-white/10 main-header-shortcuts p-2"
id="header-shortcut-scroll"> id="header-shortcut-scroll">
<!-- Home Button -->
<div class="mb-3">
<a (click)="goToHome()"
class="w-full p-3 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20 border border-primary/20 bg-primary/5 cursor-pointer">
<i class="ri-home-4-line text-[1.5rem] text-primary mb-1"></i>
<div class="text-[0.75rem] text-primary font-medium">Home</div>
</a>
</div>
<!-- Applications Grid -->
<div class="grid grid-cols-3 gap-2"> <div class="grid grid-cols-3 gap-2">
<div class=""> <div class="">
<!-- <a routerLink="/myhr-plus/dashboard" -->
<a (click)="checkAppToken('myhr-plus')" <a (click)="checkAppToken('myhr-plus')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/myhr-plus.jpg" alt="miscrosoft" <img src="./assets/images/logoallHR/myhr-plus.jpg" alt="myHR-Plus"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">myHR-plus <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">myHR-Plus</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/myhr-lite/dashboard" -->
<a (click)="checkAppToken('myhr-lite')" <a (click)="checkAppToken('myhr-lite')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/myHR-Lite-logo-new.png" alt="miscrosoft" <img src="./assets/images/logoallHR/myHR-Lite-logo-new.png" alt="myHR-Lite"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">myHR-lite <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">myHR-Lite</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/zeeme/dashboard" -->
<a (click)="checkAppToken('zeeme')" <a (click)="checkAppToken('zeeme')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/zeemePlus.png" alt="miscrosoft" <img src="./assets/images/logoallHR/zeemePlus.png" alt="Zeeme Plus"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">zeemePlus <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Zeeme Plus</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/myface/dashboard" -->
<a (click)="checkAppToken('myface')" <a (click)="checkAppToken('myface')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/logo_myface.png" alt="miscrosoft" <img src="./assets/images/logoallHR/logo_myface.png" alt="myFace"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">myFace <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">myFace</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/mylearn/mylearn-pdpa-manage" -->
<a (click)="checkAppToken('mylearn')" <a (click)="checkAppToken('mylearn')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/mylearn-logo.png" alt="miscrosoft" <img src="./assets/images/logoallHR/mylearn-logo.png" alt="myLearn"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">myLearn <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">myLearn</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/myjob/pdpa-manage" -->
<a (click)="checkAppToken('myjob')" <a (click)="checkAppToken('myjob')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/logo_myjob.png" alt="miscrosoft" <img src="./assets/images/logoallHR/logo_myjob.png" alt="myJob"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">myJob <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">myJob</div>
</div> -->
</a> </a>
</div> </div>
<div class=""> <div class="">
<!-- <a routerLink="/myskill-x/portal-category-list" -->
<!-- <a routerLink="/myskill-x/portal-category-list" -->
<a (click)="checkAppToken('myskill-x')" <a (click)="checkAppToken('myskill-x')"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"> class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/logoallHR/mySkill-x.png" alt="miscrosoft" <img src="./assets/images/logoallHR/mySkill-x.png" alt="mySkill-X"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">mySkill-X</div>
</a>
</div>
<!-- Dashboard -->
<div class="">
<a routerLink="/portal-manage/dashboard"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/dashboard.png" alt="Dashboard"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Dashboard</div>
</a>
</div>
<!-- Meeting Booking -->
<div class="">
<a routerLink="/portal-manage/meeting-booking"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/calendar.png" alt="Meeting Booking"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Meeting</div>
</a>
</div>
<!-- System Management -->
<div class="">
<a routerLink="/portal-manage/permission-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/widget.png" alt="Permission Management"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Permission</div>
</a>
</div>
<div class="">
<a routerLink="/portal-manage/role-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/users.png" alt="Role Management"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Role</div>
</a>
</div>
<div class="">
<a routerLink="/portal-manage/company-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/building.png" alt="Company Management"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto"> class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<!-- <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50">mySkill-X <div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Company</div>
</div> --> </a>
</div>
<div class="">
<a routerLink="/portal-manage/widget-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/widget.png" alt="Widget Management"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Widget</div>
</a>
</div>
<div class="">
<a routerLink="/portal-manage/menu-permission-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/menu.png" alt="Menu Permission"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Menu</div>
</a>
</div>
<div class="">
<a routerLink="/portal-manage/dashboard-management"
class="p-4 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20">
<img src="./assets/images/icons/dashboard.png" alt="Dashboard Management"
class="leading-[1.75] text-2xl !h-[1.75rem] align-middle flex justify-center mx-auto">
<div class="text-[0.75rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1">Dashboard Mgt</div>
</a> </a>
</div> </div>
...@@ -410,7 +481,7 @@ ...@@ -410,7 +481,7 @@
<div <div
class="header-element md:!px-[0.65rem] px-2 hs-dropdown !items-center ti-dropdown [--placement:bottom-left]"> class="header-element md:!px-[0.65rem] px-2 hs-dropdown !items-center ti-dropdown [--placement:bottom-left]">
<button id="dropdown-profile" type="button" <button id="dropdown-profile" type="button" title="User Profile"
class="hs-dropdown-toggle ti-dropdown-toggle !gap-2 !p-0 flex-shrink-0 sm:me-2 me-0 !rounded-full !shadow-none text-xs align-middle !border-0 !shadow-transparent "> class="hs-dropdown-toggle ti-dropdown-toggle !gap-2 !p-0 flex-shrink-0 sm:me-2 me-0 !rounded-full !shadow-none text-xs align-middle !border-0 !shadow-transparent ">
<!-- <img class="inline-block rounded-full " [src]="userModel.getPicture()" width="32" height="32" <!-- <img class="inline-block rounded-full " [src]="userModel.getPicture()" width="32" height="32"
alt="Image Description"> --> alt="Image Description"> -->
...@@ -476,22 +547,22 @@ ...@@ -476,22 +547,22 @@
<div class="ti-modal-body"> <div class="ti-modal-body">
<div class="input-group border-[2px] border-primary rounded-[0.25rem] w-full flex"> <div class="input-group border-[2px] border-primary rounded-[0.25rem] w-full flex">
<a aria-label="anchor" href="javascript:void(0);" <button aria-label="search" type="button" title="Search"
class="input-group-text flex items-center bg-light border-e-[#dee2e6] !py-[0.375rem] !px-[0.75rem] !rounded-none !text-[0.875rem]" class="input-group-text flex items-center bg-light border-e-[#dee2e6] !py-[0.375rem] !px-[0.75rem] !rounded-none !text-[0.875rem]"
id="Search-Grid"><i class="fe fe-search header-link-icon text-[0.875rem]"></i></a> id="Search-Grid"><i class="fe fe-search header-link-icon text-[0.875rem]"></i></button>
<input type="search" class="form-control border-0 px-2 !text-[0.8rem] w-full focus:ring-transparent" <input type="search" class="form-control border-0 px-2 !text-[0.8rem] w-full focus:ring-transparent"
placeholder="Search" aria-label="Username" [(ngModel)]="text" [ngModelOptions]="{standalone: true}" placeholder="Search" aria-label="Username" [(ngModel)]="text" [ngModelOptions]="{standalone: true}"
(keyup)="Search(text)" autocomplete="off"> (keyup)="Search(text)" autocomplete="off">
<a aria-label="anchor" href="javascript:void(0);" <button aria-label="voice search" type="button" title="Voice Search"
class="flex items-center input-group-text bg-light !py-[0.375rem] !px-[0.75rem]" id="voice-search"><i class="flex items-center input-group-text bg-light !py-[0.375rem] !px-[0.75rem]" id="voice-search"><i
class="fe fe-mic header-link-icon"></i></a> class="fe fe-mic header-link-icon"></i></button>
<div class="hs-dropdown ti-dropdown"> <div class="hs-dropdown ti-dropdown">
<a aria-label="anchor" href="javascript:void(0);" <button aria-label="more options" type="button" title="More Options"
class="flex items-center hs-dropdown-toggle ti-dropdown-toggle btn btn-light btn-icon !bg-light !py-[0.375rem] !rounded-none !px-[0.75rem] text-[0.95rem] h-[2.413rem] w-[2.313rem]"> class="flex items-center hs-dropdown-toggle ti-dropdown-toggle btn btn-light btn-icon !bg-light !py-[0.375rem] !rounded-none !px-[0.75rem] text-[0.95rem] h-[2.413rem] w-[2.313rem]">
<i class="fe fe-more-vertical"></i> <i class="fe fe-more-vertical"></i>
</a> </button>
<ul class="absolute hs-dropdown-menu ti-dropdown-menu !-mt-2 !p-0 hidden"> <ul class="absolute hs-dropdown-menu ti-dropdown-menu !-mt-2 !p-0 hidden">
<li><a <li><a
...@@ -541,7 +612,6 @@ ...@@ -541,7 +612,6 @@
<p class="font-normal text-[#8c9097] dark:text-white/50 text-[0.813rem] mb-2">Recent Search :</p> <p class="font-normal text-[#8c9097] dark:text-white/50 text-[0.813rem] mb-2">Recent Search :</p>
<ul class="list-group mb-3"> <ul class="list-group mb-3">
@for(menuItem of menuItems | slice:0:5;track $index){ @for(menuItem of menuItems | slice:0:5;track $index){
<li [routerLink]="menuItem?.path" class="list-group-item header-list-group" (click)="clearSearch()"> <li [routerLink]="menuItem?.path" class="list-group-item header-list-group" (click)="clearSearch()">
<i class="fa fa-angle-double-right me-2" aria-hidden="true"></i>{{menuItem?.title}} <i class="fa fa-angle-double-right me-2" aria-hidden="true"></i>{{menuItem?.title}}
</li> </li>
......
...@@ -28,7 +28,7 @@ export class HeaderComponent { ...@@ -28,7 +28,7 @@ export class HeaderComponent {
public selectedLanguage = ""; public selectedLanguage = "";
constructor( constructor(
public navServices: NavService, public navServices: NavService,
private elementRef: ElementRef, private elementRef: ElementRef,
private renderer: Renderer2, private renderer: Renderer2,
private tokenService: TokenService, private tokenService: TokenService,
private translate: TranslateService, private translate: TranslateService,
...@@ -257,6 +257,10 @@ export class HeaderComponent { ...@@ -257,6 +257,10 @@ export class HeaderComponent {
checkAppToken(appmodule:string){ checkAppToken(appmodule:string){
this.tokenService.saveAppToken(appmodule) this.tokenService.saveAppToken(appmodule)
this.router.navigate(['/'+appmodule]) this.router.navigate(['/portal-manage/'+appmodule])
}
goToHome() {
this.router.navigate(['/home'])
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment