dashboard.component.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { Component, computed, inject, OnInit, Signal } from '@angular/core';
  2. import { RouterModule } from '@angular/router';
  3. import { BaseComponent, untilDestroy } from 'angularlib/base.component';
  4. import { LoginModule } from 'angularlib/login';
  5. import { Store } from '@ngxs/store';
  6. import { LoginService } from 'angularlib/login/login.service';
  7. import { CommonModule } from '@angular/common';
  8. import { ComponentService } from 'angularlib/component.service';
  9. import { LabelModule } from 'angularlib/labels/label.module';
  10. import { masterMenu } from '../menu/menu';
  11. import { InputModule } from 'angularlib/input/input.module';
  12. import { EventI } from 'fis-commons/event/event';
  13. import { LeaveModule } from 'fis/leave';
  14. import { MatModule } from 'angularlib/mat.module';
  15. import { TenderModule } from 'fis/tender/tender.module';
  16. import { FISAccess } from 'fis/fis.access';
  17. @Component({
  18. selector: 'spts-sales-submission-dashitem',
  19. imports: [
  20. CommonModule,
  21. RouterModule,
  22. MatModule,
  23. LoginModule,
  24. LabelModule,
  25. InputModule,
  26. LeaveModule,
  27. TenderModule
  28. ],
  29. providers: [ComponentService],
  30. templateUrl: './dashboard.component.html',
  31. styleUrl: './dashboard.component.scss'
  32. })
  33. export class DashboardComponent extends BaseComponent implements OnInit{
  34. protected masterMenu = masterMenu;
  35. protected username: Signal<string> = computed(() => {
  36. const GIVEN_NAME = this.loginService?.userSignal()?.name?.givenName;
  37. const FIS_NAME = this.loginService?.userSignal()?.fisInfo?.name;
  38. return GIVEN_NAME || FIS_NAME;
  39. });
  40. protected access = inject(FISAccess);
  41. protected accessRight:any = {};
  42. protected goto = {
  43. field: {
  44. key: 'goto',
  45. type: 'select',
  46. label: {key:'will_redirect_to',default:'Go to'},
  47. selectOptions: [
  48. {value:'home',label:{key:'home_page',default:'Home'}},
  49. {value:'leave-new',label:{key:'new_leave',default:'Apply New Leave'}},
  50. {value:'leave-applied',label:{key:'applied_leave',default:'Applied Leave'}},
  51. {value:'leave-approval',label:{key:'leave_approval',default:'Leave Approval'}},
  52. ]
  53. },
  54. value: 'home',
  55. onChange: (event: EventI) => {
  56. switch (event?.payload?.value) {
  57. case 'leave-new' : {
  58. this.cs.navigate('/leave',{type:'new'});
  59. break;
  60. }
  61. case 'leave-applied' : {
  62. this.cs.navigate('/leave',{type:'view'});
  63. break;
  64. }
  65. case 'leave-approval' : {
  66. this.cs.navigate('/leave/approval');
  67. break;
  68. }
  69. case 'spts-sales' : {
  70. this.cs.navigate('/tender',{type:'sales'});
  71. break;
  72. }
  73. default: break;
  74. }
  75. }
  76. }
  77. constructor(
  78. protected store: Store,
  79. protected loginService: LoginService,
  80. protected cs: ComponentService
  81. ) {
  82. super(store);
  83. }
  84. ngOnInit(): void {
  85. super.ngOnInit();
  86. }
  87. ngAfterViewInit() {
  88. this.loginService.user$.pipe(untilDestroy(this)).subscribe({
  89. next: res => {
  90. this.accessRight = {
  91. ...this.accessRight,
  92. leave: {approval: this.access.canActivate({data:{serviceId:'09 - Leave Application',accessRight:['canread','canapprove'],noprompt:true}},undefined)}
  93. };
  94. }
  95. })
  96. }
  97. }