Commit c3478cad by Nattana Chaiyamat

อัพรูปโปรไฟล์

parent 489eb7b1
......@@ -96,7 +96,6 @@ export class RolePermissionConfigComponent {
this.configPermission.select = new MyConfigPermissionModel(data)
const menuBody: MenuBodyModel[] = JSON.parse(JSON.stringify(this.configPermission.select.menuBody))
this.configPermission.select.menuBody = this.menuItems.map(x => new MyMenuBodyModel(x))
console.log(" 🐒 this.configPermission.select.menuBody:", this.configPermission.select.menuBody)
this.clearDataMenu()
this.configPermission.select.menuBody.forEach(x => {
const configMenu = menuBody.find(y => y.id == x.id)
......
......@@ -39,7 +39,7 @@
<div class="page px-rem">
<app-datagrid-syncfution [searchSettings]="searchSettings" [searchText]="search" [dataSource]="employee.dataList"
[columns]="columns" [selectedItems]="selectedItems" modalName="#sub-employee-registration-modal"
[columns]="columns" [selectedItems]="selectedItems" modalName="#sub-employee-registration-modal" [showImg]="true"
(sendSelectData)="currentModal='update';selectEmployee($event)" (sendSelectedItems)="onSelectItemChange($event)">
</app-datagrid-syncfution>
......@@ -86,6 +86,26 @@
<div class="ti-modal-body mt-5">
<div class="space-y-3">
<div class="grid grid-cols-12 gap-x-6">
<label class="col-span-3 ti-form-label text-primary mt-2 align-center">รูปพนักงาน</label>
<div class="flex flex-row col-span-5" style="align-items: end;">
<div style="width: 10rem;">
<div *ngIf="imgLoading" class="ti-spinner w-8 h-8 text-secondary mx-1" role="status"
aria-label="loading" style="height: 9rem;width: 9rem;">
<span class="sr-only">Loading...</span>
</div>
<img *ngIf="!imgLoading"
[src]="employee.select.picture?getImg(employee.select.picture):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)"
class="rounded-full ring-4 ring-white/10 mx-auto object-cover" id="profile-img" alt="profile-img"
style="height: 10rem;width: 10rem;">
</div>
<div *ngIf="!imgLoading" class="relative" style="margin-left:-30px">
<i class="ri ri-pencil-line cursor-pointer" (click)="fileImg.click()"></i>
<input #fileImg id="fileImg" type="file" (change)="onImgSelected($event)" hidden>
<i class="ri-delete-bin-6-line text-danger cursor-pointer" (click)="employee.select.picture = ''"></i>
</div>
</div>
</div>
<div class="grid grid-cols-12 gap-x-6">
<label class="col-span-3 ti-form-label text-primary mt-2 align-center">รหัสพนักงาน<span
class="text-danger">*
<ng-container *ngIf="(currentModal=='add')&&checkPrimary()">
......@@ -548,6 +568,7 @@
</div>
</div>
<div id="sub-employee-registration-alert-add-modal" class="hs-overlay hidden ti-modal">
<div class="hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out h-[calc(100%-3.5rem)] flex items-center">
<div class="max-h-full overflow-hidden ti-modal-content w-full">
......
......@@ -33,6 +33,8 @@ import { EmpStatusService } from 'src/app/shared/services/emp-status.service';
import { StatusModel, MyStatusModel } from 'src/app/shared/model/status.model';
import { MyBossModel } from 'src/app/shared/model/boss.model';
import { ColumnModel } from '@syncfusion/ej2-grids';
import { environment } from 'src/environments/environment';
import { TokenService } from 'src/app/shared/services/token.service';
export interface DataModal {
search: string,
currentPage: number,
......@@ -49,27 +51,32 @@ export class SubEmployeeRegistrationComponent {
employee: { loading: boolean, select: EmployeeModel | any, dataList: EmployeeModel[] } = { loading: false, select: new MyEmployeeModel(), dataList: [] }
search = ""
currentModal: 'add' | 'update' | 'delete' = 'add'
columns: ColumnModel[] = [{
field: "employeeId",
headerText: "รหัสพนักงาน",
type: "string",
isPrimaryKey: true,
},
{
field: "fname",
headerText: "ชื่อ",
type: "string"
},
{
field: "lname",
headerText: "นามสกุล",
type: "string"
},
{
field: "position.tdesc",
headerText: "ตำแหน่ง",
type: "string"
}]
columns: ColumnModel[] = [
{
field: "picture",
headerText: "",
type: "string",
}, {
field: "employeeId",
headerText: "รหัสพนักงาน",
type: "string",
isPrimaryKey: true,
},
{
field: "fname",
headerText: "ชื่อ",
type: "string"
},
{
field: "lname",
headerText: "นามสกุล",
type: "string"
},
{
field: "position.tdesc",
headerText: "ตำแหน่ง",
type: "string"
}]
searchSettings = {
fields: ['employeeId', 'fname', 'lname', 'position.tdesc'],
operator: 'contains',
......@@ -87,6 +94,9 @@ export class SubEmployeeRegistrationComponent {
selectedFile: File | null = null;
selectedFileName: string = 'กรุณาเลือกไฟล์';
selectedImg: File | null = null;
imgLoading = false
empGroup: { loading: boolean, dataList: EmpGroupModel[] } = { loading: false, dataList: [] }
employeeModal: { loading: boolean, dataList: EmployeeModel[] } = { loading: false, dataList: [] }
bu1: { loading: boolean, dataList: Bu1Model[] } = { loading: false, dataList: [] }
......@@ -102,6 +112,7 @@ export class SubEmployeeRegistrationComponent {
empType: { loading: boolean, dataList: EmpTypeModel[] } = { loading: false, dataList: [] }
pl: { loading: boolean, dataList: PLModel[] } = { loading: false, dataList: [] }
empStatus: { loading: boolean, dataList: StatusModel[] } = { loading: false, dataList: [] }
constructor(private toastr: ToastrService,
private employeeService: EmployeeService,
private cdr: ChangeDetectorRef,
......@@ -119,6 +130,7 @@ export class SubEmployeeRegistrationComponent {
private empTypeService: EmpTypeService,
private empStatusService: EmpStatusService,
private fileService: FileService,
private tokenService: TokenService,
private pLService: PLService) { }
ngOnInit(): void {
......@@ -553,6 +565,9 @@ export class SubEmployeeRegistrationComponent {
this.employeeService[type](body).subscribe({
next: response => {
if (response.success) {
if (body.employeeId == this.tokenService.getUserData().employeeId) {
this.tokenService.saveUserData(new MyEmployeeModel(body))
}
this.showAlert(response.message, 'success')
this.search = ""
this.getEmployeeList()
......@@ -693,4 +708,57 @@ export class SubEmployeeRegistrationComponent {
onSelectItemChange(arg: any) {
this.selectedItems = arg
}
url1 = ''
onSelectFile1(event: any) {
if (event.target && event.target.files && event.target.files[0]) {
const reader = new FileReader();
reader.readAsDataURL(event.target.files[0]); // read file as data URL
reader.onload = (event: any) => {
// called once readAsDataURL is completed
this.url1 = event.target.result;
};
}
}
onImgSelected(event: any) {
this.selectedImg = event.target.files.length > 0 ? event.target.files[0] : null;
this.uploadImg()
}
uploadImg() {
if (this.selectedImg) {
this.imgLoading = true
const formData = new FormData();
formData.append('file', this.selectedImg);
this.fileService.uploadImg(formData).subscribe({
next: response => {
if (response.success) {
this.showAlert(response.message, 'success')
this.employee.select.picture = response.resultObject
} else {
this.showAlert(response.message, 'error')
this.employee.select.picture = ''
}
this.imgLoading = false
this.cdr.detectChanges()
}, error: error => {
this.showAlert(error.message, 'error')
this.employee.select.picture = ''
this.imgLoading = false
this.cdr.detectChanges()
}
})
}
}
getImg(text: string) {
return this.fileService.getImg(text)
}
onImageError(event: Event) {
const imgElement = event.target as HTMLImageElement;
imgElement.src = './assets/img/users/defaultperson.jpg';
}
}
......@@ -178,7 +178,6 @@ export class EditDefineDocumentFormComponent {
cancelButtonText: 'ย้อนกลับ',
reverseButtons: true,
}).then((result) => {
console.log("🚀 ~ EditDefineDocumentFormComponent ~ saveIndicators ~ result:", result)
if (result.isConfirmed) {
this.evaluationAssessmentService.postList([this.empassessmentList]).subscribe({
next: response => {
......
......@@ -20,39 +20,51 @@
<input type="checkbox" class="ti-form-checkbox cursor-pointer"
[checked]="selectedItems.data.get(data[selectedItems.key]) || false"
(click)="toggleSelection(data[selectedItems.key], !selectedItems.data.get(data[selectedItems.key]))">
<ng-container *ngIf="showImg">
&nbsp;
<img class="avatar shadow-none rounded-full !ring-transparent object-cover h-12 w-12"
[src]="data.picture?getImg(data.picture):'./assets/img/users/defaultperson.jpg'"
(error)="onImageError($event)">
</ng-container>
</ng-template>
</e-column>
<e-column *ngFor="let col of columns" [field]="col.field" [headerText]="col.headerText" [width]="col.width"
[format]="col.format" [textAlign]="'center'" [isPrimaryKey]="col.isPrimaryKey" [editType]="false"
[validationRules]="col.validationRules" [allowEditing]="false" [allowSorting]="'true'" [allowFiltering]="true"
[visible]="col.visible" [type]="col.type">
<ng-template #headerTemplate let-data>
<span class="font-size-12px font-weight-700 text-primary">{{ col.headerText }}</span>
</ng-template>
<ng-template #template let-data *ngIf="col.field == 'statusCode.tdesc'">
<div class="flex justify-center items-center w-full h-full">
<span
class="hs-tooltip ti-main-tooltip [--trigger:hover] flex items-center justify-center rounded-full h-6 w-6 text-white"
[ngClass]="{
'bg-success': data.statusCode.tdesc == 'กำลังดำเนินการประเมิน',
'bg-warning': data.statusCode.tdesc == 'รอดำเนินการ',
'bg-gray-400': data.statusCode.tdesc == 'สิ้นสุดช่วงเวลาประเมิน'
}" role="tooltip">
<ng-container *ngFor="let col of columns">
<e-column *ngIf="col.headerText!=''" [field]="col.field" [headerText]="col.headerText" [width]="col.width"
[format]="col.format" [textAlign]="'center'" [isPrimaryKey]="col.isPrimaryKey" [editType]="false"
[validationRules]="col.validationRules" [allowEditing]="false" [allowSorting]="'true'" [allowFiltering]="true"
[visible]="col.visible" [type]="col.type">
<ng-template #headerTemplate let-data>
<span class="font-size-12px font-weight-700 text-primary">{{ col.headerText }}</span>
</ng-template>
<ng-template #template let-data *ngIf="col.field == 'statusCode.tdesc'">
<div class="flex justify-center items-center w-full h-full">
<span
class="hs-tooltip ti-main-tooltip [--trigger:hover] flex items-center justify-center rounded-full h-6 w-6 text-white"
[ngClass]="{
'bg-success': data.statusCode.tdesc == 'กำลังดำเนินการประเมิน',
'bg-warning': data.statusCode.tdesc == 'รอดำเนินการ',
'bg-gray-400': data.statusCode.tdesc == 'สิ้นสุดช่วงเวลาประเมิน'
}" role="tooltip">
<ng-container [ngSwitch]="data.statusCode.tdesc">
<i *ngSwitchCase="'กำลังดำเนินการประเมิน'" class="ti ti-clock hs-tooltip-toggle ti-main-tooltip-toggle"></i>
<i *ngSwitchCase="'รอดำเนินการ'" class="ti ti-hourglass-empty hs-tooltip-toggle ti-main-tooltip-toggle"></i>
<i *ngSwitchCase="'สิ้นสุดช่วงเวลาประเมิน'" class="ti ti-check hs-tooltip-toggle ti-main-tooltip-toggle"></i>
</ng-container>
<ng-container [ngSwitch]="data.statusCode.tdesc">
<i *ngSwitchCase="'กำลังดำเนินการประเมิน'"
class="ti ti-clock hs-tooltip-toggle ti-main-tooltip-toggle"></i>
<i *ngSwitchCase="'รอดำเนินการ'"
class="ti ti-hourglass-empty hs-tooltip-toggle ti-main-tooltip-toggle"></i>
<i *ngSwitchCase="'สิ้นสุดช่วงเวลาประเมิน'"
class="ti ti-check hs-tooltip-toggle ti-main-tooltip-toggle"></i>
</ng-container>
<span
class="hs-tooltip-content ti-main-tooltip-content py-1 px-2 bg-primary text-white shadow-sm dark:bg-slate-700">
{{ data.statusCode.tdesc }}
<span
class="hs-tooltip-content ti-main-tooltip-content py-1 px-2 bg-primary text-white shadow-sm dark:bg-slate-700">
{{ data.statusCode.tdesc }}
</span>
</span>
</span>
</div>
</ng-template>
</e-column>
</div>
</ng-template>
</e-column>
</ng-container>
<e-column headerText='action' width='205' textAlign='Center' *ngIf="actionSetting">
<ng-template #headerTemplate let-data *ngIf="actionSetting">
<span class="font-size-12px font-weight-700 text-primary">การจัดการ</span>
......@@ -65,7 +77,6 @@
*ngIf="canDownload && data.competencyFiles"></i>
<i class="ti ti-menu-2 cursor-pointer i-gray fs-l px-1" (click)="onNextPage(data)" *ngIf="canChild"></i>
<i class="ti ti-user cursor-pointer i-gray fs-l px-1" (click)="onNextPageForm(data)" *ngIf="childForm"></i>
<ng-container *ngIf="data.statusFrom as statusFrom">
<ng-container [ngSwitch]="statusFrom.code">
<span class="badge text-white m-1 cursor-pointer"
......@@ -85,7 +96,6 @@
</span>
</ng-container>
</ng-container>
</ng-template>
</e-column>
</e-columns>
......
......@@ -38,6 +38,7 @@ import { GroupSettingsModel, FilterSettingsModel, ColumnModel } from '@syncfusio
import { DataManager, Query } from '@syncfusion/ej2-data';
import { L10n, setCulture } from '@syncfusion/ej2-base';
import { Status } from '../../shared/model/evaluation-form.modal';
import { FileService } from 'src/app/shared/services/file.service';
setCulture('th-TH');
L10n.load({
......@@ -110,9 +111,9 @@ export class DatagridSyncfutionComponent implements OnInit {
@Output() sendFileDownload = new EventEmitter<any>();
@Input() childForm = false
@Output() sendNextPageForm = new EventEmitter<any>();
modalStatus = '';
modalStatus = '';
@Output() createFormEvent = new EventEmitter<any>();
@Input() checkBoxSetting = true
@Input() actionSetting = true
@Input() detailSetting = false
......@@ -160,7 +161,12 @@ export class DatagridSyncfutionComponent implements OnInit {
{ text: 'Min', id: 'aggregate_min' },
{ text: 'Max', id: 'aggregate_max' }
];
constructor(private cdr: ChangeDetectorRef) {
@Input() showImg = false
constructor(private cdr: ChangeDetectorRef,
private fileService: FileService
) {
}
ngOnInit(): void {
// this.query = new Query().addParams('dataCount', '1000');
......@@ -389,4 +395,13 @@ export class DatagridSyncfutionComponent implements OnInit {
onNextPageForm(data: any) {
this.sendNextPageForm.emit(data);
}
getImg(text: string) {
return this.fileService.getImg(text)
}
onImageError(event: Event) {
const imgElement = event.target as HTMLImageElement;
imgElement.src = './assets/img/users/defaultperson.jpg';
}
}
......@@ -17,7 +17,7 @@
<div class="flex justify-center w-full">
<div class="relative">
<img
[src]="employee.data.picture?url+'/employee/image/'+employee.data.picture:'./assets/img/users/defaultperson.jpg'"
[src]="employee.data.picture?getImg(employee.data.picture):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)"
class="rounded-full ring-4 ring-white/10 mx-auto object-cover" id="profile-img" alt="profile-img"
style="height: 10rem;width: 10rem;">
<!-- <span
......
......@@ -4,6 +4,7 @@ import { EmployeeModel, MyEmployeeModel } from 'src/app/shared/model/employee.mo
import { MyStatusModel, StatusModel } from 'src/app/shared/model/status.model';
import { EmpStatusService } from 'src/app/shared/services/emp-status.service';
import { EmployeeService } from 'src/app/shared/services/employee.service';
import { FileService } from 'src/app/shared/services/file.service';
import { environment } from 'src/environments/environment';
@Component({
......@@ -13,13 +14,13 @@ import { environment } from 'src/environments/environment';
})
export class EssProfileComponent {
employee: { loading: boolean, data: EmployeeModel } = { loading: false, data: new MyEmployeeModel() }
url = environment.baseUrl
empStatus: { loading: boolean, dataList: StatusModel[] } = { loading: false, dataList: [] }
constructor(
private employeeService: EmployeeService,
private empStatusService: EmpStatusService,
private cdr: ChangeDetectorRef,
private viewScroller: ViewportScroller,
private fileService: FileService
) {
}
ngOnInit(): void {
......@@ -60,4 +61,13 @@ export class EssProfileComponent {
reverseDate(text: string) {
return text.split('-').reverse().join('-')
}
getImg(text: string) {
return this.fileService.getImg(text)
}
onImageError(event: Event) {
const imgElement = event.target as HTMLImageElement;
imgElement.src = './assets/img/users/defaultperson.jpg';
}
}
......@@ -49,7 +49,7 @@
<div class="box-body py-2">
<div class="flex flex-col items-center gap-3">
<img
[src]="evaluatee.data.picture?url+'/employee/image/'+evaluatee.data.picture:'./assets/img/users/defaultperson.jpg'"
[src]="evaluatee.data.picture?getImg(evaluatee.data.picture):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)"
class="h-24 w-24 rounded-full ring-4 ring-primary object-cover" alt="profile-img" />
<ng-container *ngIf="kpiScorePart[kpiScorePart.length-1].score as grade">
<div class="flex gap-1">
......
......@@ -8,6 +8,7 @@ import { TokenService } from 'src/app/shared/services/token.service';
import Swal from 'sweetalert2';
import { ActivatedRoute, ParamMap } from '@angular/router';
import { environment } from 'src/environments/environment';
import { FileService } from 'src/app/shared/services/file.service';
@Component({
selector: 'app-pms-form-employee',
......@@ -24,7 +25,6 @@ export class PmsFormEmployeeComponent {
currentPart = ""
@Output() sendReturnPath: EventEmitter<any> = new EventEmitter<any>();
starRate = 5;
url = environment.baseUrl
url1 = '';
url2 = '';
......@@ -76,7 +76,8 @@ export class PmsFormEmployeeComponent {
private appraisalService: AppraisalService,
private cdr: ChangeDetectorRef,
private tokenService: TokenService,
private route: ActivatedRoute
private route: ActivatedRoute,
private fileService: FileService
) {
}
......@@ -743,4 +744,12 @@ export class PmsFormEmployeeComponent {
}, 0);
}
getImg(text: string) {
return this.fileService.getImg(text)
}
onImageError(event: Event) {
const imgElement = event.target as HTMLImageElement;
imgElement.src = './assets/img/users/defaultperson.jpg';
}
}
\ No newline at end of file
......@@ -230,12 +230,12 @@
*ngIf="item.apsapproveType.code!='Apsapprove1'&&(item.masfromStatusType.code=='evaluating'||item.masfromStatusType.code=='pending')">
<img (click)="!selectEmp.get(item.apsassessy.employeeId)?selectEmp.set(item.apsassessy.employeeId , true):selectEmp.delete(item.apsassessy.employeeId);checkSelectAll()"
class="cursor-pointer avatar shadow-none rounded-full !ring-transparent object-cover h-12 w-12"
[src]="item.apsassessy.picture?url+'/employee/image/'+item.apsassessy.picture:'./assets/img/users/defaultperson.jpg'">
[src]="item.apsassessy.picture?getImg(item.apsassessy.picture):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)">
</ng-container>
<ng-container
*ngIf="!(item.apsapproveType.code!='Apsapprove1'&&(item.masfromStatusType.code=='evaluating'||item.masfromStatusType.code=='pending'))">
<img class="cursor-pointer avatar shadow-none rounded-full !ring-transparent object-cover h-12 w-12"
[src]="item.apsassessy.picture?url+'/employee/image/'+item.apsassessy.picture:'./assets/img/users/defaultperson.jpg'">
[src]="item.apsassessy.picture?getImg(item.apsassessy.picture):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)">
</ng-container>
</div>
</td>
......
......@@ -2,6 +2,7 @@ import { ChangeDetectorRef, Component } from '@angular/core';
import { EChartsOption } from 'echarts';
import { AppraisalSubordinateModel, Masfromevaluationassessment, TypeList } from 'src/app/shared/model/appraisal-subordinate.model';
import { AppraisalService } from 'src/app/shared/services/appraisal.service';
import { FileService } from 'src/app/shared/services/file.service';
import { environment } from 'src/environments/environment';
import Swal from 'sweetalert2';
@Component({
......@@ -25,7 +26,6 @@ export class SupervisorEvaluationComponent {
allCompetencyTypeId: <TypeList[]>[],
masfromStatusType: ""
}
url = environment.baseUrl
selectEmp: Map<string, boolean> = new Map<string, boolean>()
statusButtonClass = (status: string) => {
if (status === "no access") {
......@@ -65,6 +65,7 @@ export class SupervisorEvaluationComponent {
myApprovePer: number = 0
pmsOption!: EChartsOption;
constructor(private appraisalService: AppraisalService,
private fileService: FileService,
private cdr: ChangeDetectorRef) {
}
ngOnInit(): void {
......@@ -363,4 +364,13 @@ export class SupervisorEvaluationComponent {
})
}
}
getImg(text: string) {
return this.fileService.getImg(text)
}
onImageError(event: Event) {
const imgElement = event.target as HTMLImageElement;
imgElement.src = './assets/img/users/defaultperson.jpg';
}
}
......@@ -262,7 +262,7 @@ export class ManagementCycleComponent {
this.dataLoading = true;
const selectedKeys = Array.from(this.selectedItems.data.keys());
const body = this.pmsMasfromEvaluation.dataList.filter(x => selectedKeys.includes(x.pmsEvaluationRoundId) && this.selectedItems.data.get(x.pmsEvaluationRoundId)).map(x => new MyPmsMasfromEvaluationModel(x))
console.log(body);
this.pmsMasfromEvaluationCycleService.delete(body).subscribe({
next: response => {
......@@ -403,7 +403,6 @@ export class ManagementCycleComponent {
}
onSelectItemChange(arg: any) {
this.selectedItems = arg
console.log(this.selectedItems)
}
numSelectItem() {
......
......@@ -340,7 +340,6 @@ export class AssessmentTopicsComponent {
onSelectItemChange(arg: any) {
this.selectedItems = arg
console.log(this.selectedItems)
}
numSelectItem() {
......
......@@ -195,7 +195,6 @@ export class PmsGradeManagementComponent {
onSelectItemChange(arg: any) {
this.selectedItems = arg
console.log('selected',this.selectedItems)
}
numSelectItem() {
......
......@@ -272,7 +272,6 @@ export class TimeAttendanceManageComponent {
}
onSelectItemChange(arg: any) {
this.selectedItems = arg
console.log(this.selectedItems)
}
numSelectItem() {
......
......@@ -681,14 +681,14 @@
<button id="dropdown-profile" type="button"
class="hs-dropdown-toggle ti-dropdown-toggle gap-2 p-0 flex-shrink-0 rounded-full shadow-none focus:ring-gray-400 text-xs">
<img class="avatar shadow-none rounded-full !ring-transparent object-cover h-8 w-8"
[src]="employeeProfile.picture?url+'/employee/image/'+employeeProfile.picture:'./assets/img/users/defaultperson.jpg'">
[src]="getTokenImg()?getImg(getTokenImg()):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)">
</button>
<div class="hs-dropdown-menu ti-dropdown-menu border-0 w-[20rem]" aria-labelledby="dropdown-profile">
<div class="ti-dropdown-header !bg-primary flex items-center space-x-3">
<div class="flex-shrink-0">
<img class="avatar shadow-none rounded-full !ring-transparent object-cover"
[src]="employeeProfile.picture?url+'/employee/image/'+employeeProfile.picture:'./assets/img/users/defaultperson.jpg'">
[src]="getTokenImg()?getImg(getTokenImg()):'./assets/img/users/defaultperson.jpg'" (error)="onImageError($event)">
</div>
<div>
<p class=" ti-dropdown-header-title !text-white">
......
......@@ -8,6 +8,7 @@ import { EmployeeModel, MyEmployeeModel } from '../../model/employee.model';
import { ActivatedRoute, Router } from '@angular/router';
import { environment } from 'src/environments/environment';
import { HttpClient } from '@angular/common/http';
import { FileService } from '../../services/file.service';
@Component({
selector: 'app-header',
......@@ -17,7 +18,6 @@ import { HttpClient } from '@angular/common/http';
export class HeaderComponent {
employeeProfile: EmployeeModel = new MyEmployeeModel();
url = environment.baseUrl
constructor(public navServices: NavService,
private authService: AuthService,
public tokenService: TokenService,
......@@ -25,9 +25,9 @@ export class HeaderComponent {
private elementRef: ElementRef,
public router: Router,
private route: ActivatedRoute,
private fileService: FileService,
private navService: NavService, private http: HttpClient) {
this.getEvaluatee();
}
imageUrl = ''
......@@ -155,4 +155,12 @@ export class HeaderComponent {
onNextPartClick(part: string) {
this.router.navigate([part]);
}
getImg(text: string) {
return this.fileService.getImg(text)
}
getTokenImg() {
return this.tokenService.getUserData().picture
}
}
......@@ -171,8 +171,6 @@ export class SidebarComponent {
html.setAttribute('data-nav-layout', 'vertical');
}
// Log to console for verification
console.log('Current URL:', this.currentUrl);
console.log('Previous URL:', this.previousUrl);
this.changeMenu()
}
});
......
......@@ -21,4 +21,11 @@ export class FileService {
downloadTemplate(fileName: string) {
return this.http.get("/assets/template/" + fileName, { responseType: "blob" })
}
uploadImg(formData: any): Observable<AlertModel> {
return this.http.post<AlertModel>(environment.baseUrl + '/employee/upload-image', formData)
}
getImg(filename?: string) {
return filename ? environment.baseUrl + '/employee/image/' + filename : ''
}
}
......@@ -19,6 +19,7 @@ import { ToggleThemeDirective } from './directives/toggle-theme.directive';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { ConfigPermissionService } from './services/config-permission.service';
import { HttpRequestInterceptor } from './services/http-request.interceptor';
import { FileService } from './services/file.service';
@NgModule({
declarations: [
......@@ -58,6 +59,7 @@ import { HttpRequestInterceptor } from './services/http-request.interceptor';
useClass: HttpRequestInterceptor,
multi: true,
},
FileService
],
})
export class SharedModule { }
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