{"version":3,"file":"app-463aade9.d152cf98c45d962fa693.bundle.js","mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAAA;AAAA;AAHA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AA/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAUA;;AAEA;AAAA;AATA;AACA;AAEA;AACA;AACA;AACA;AAiKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AA1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAWA;AAAA;AATA;AACA;AAEA;AACA;AACA;AACA;AACA;AA6HA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA4LA;AACA;AACA;AACA;AACA;AACA;AAAA;AAiBA;AACA;AACA;AACA;AACA;AACA;AA5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AASA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAvbA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAaA;AAAA;AAXA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAqFA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AA/FA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAiBA;;;;;;;;;;;;;;;;;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAoBA;AAAA;AAAA;AAAA;AAAA;AAdA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAKA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AA9JA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;;AAIA;AAAA;AAHA;AACA;AAeA;AACA;AAAA;AAGA;AACA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AAEA;AA4BA;AAAA;AA1BA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAoFA;AACA;AAAA;AAiIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAhOA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAiBA;;;;;;;;;;;;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://HRMSPortal/./src/components/attendancetracking/adminattendancedetails/adminattendancedetails.js","webpack://HRMSPortal/./src/components/attendancetracking/adminattendancesummary/adminattendancesummary.js","webpack://HRMSPortal/./src/components/attendancetracking/compoff/addnewcompoff/addnewcompoff.js","webpack://HRMSPortal/./src/components/attendancetracking/compoff/approve/approve.js","webpack://HRMSPortal/./src/components/attendancetracking/compoff/mycompoffrequest/mycompoff.js","webpack://HRMSPortal/./src/components/attendancetracking/compoff/viewcompoff/viewcompoff.js","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/calender.js","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/myattendance.js","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/openevent.js","webpack://HRMSPortal/./src/components/attendancetracking/adminattendancedetails/adminattendancedetails.html","webpack://HRMSPortal/./src/components/attendancetracking/adminattendancesummary/adminattendancesummary.html","webpack://HRMSPortal/./src/components/attendancetracking/compoff/addnewcompoff/addnewcompoff.html","webpack://HRMSPortal/./src/components/attendancetracking/compoff/approve/approve.html","webpack://HRMSPortal/./src/components/attendancetracking/compoff/mycompoffrequest/mycompoff.html","webpack://HRMSPortal/./src/components/attendancetracking/compoff/viewcompoff/viewcompoff.html","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/calender.html","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/myattendance.html","webpack://HRMSPortal/./src/components/attendancetracking/myattendance/openevent.html"],"sourcesContent":["export class Adminattendancedetails {\r\n constructor() {\r\n this.message = 'Hello world';\r\n }\r\n}\r\n","import {inject,bindable} from 'aurelia-framework';\r\nimport { JwtService } from '../../../shared/services/jwtservice';\r\nimport { AttendanceService } from '../../../shared/services/attendanceservice';\r\nimport { App } from '../../../app';\r\nimport 'flatpickr/dist/flatpickr.min.css';\r\nimport flatpickr from 'flatpickr';\r\nimport {SharedState} from \"../../../shared/state/sharedstate\";\r\nimport {LoginService} from \"../../../shared/services/loginservice\";\r\nimport {Router} from 'aurelia-router';\r\n\r\n@inject(JwtService,AttendanceService,App,Router,LoginService)\r\nexport class Adminattendancesummary {\r\n @bindable selectedStatus = \"ACT\";\r\n year;\r\n month;\r\n\r\n constructor(JwtService,AttendanceService,App,loginservice,router) {\r\n this.app = App;\r\n this.jwtService = JwtService;\r\n this.attendanceService = AttendanceService;\r\n this.router = router;\r\n this.loginservice = loginservice;\r\n this.EmpId = this.jwtService.getEmployeeId();\r\n }\r\n async attached() {\r\n // if(this.jwtService.getToken() === undefined){\r\n // this.loginservice.purgeAuth();\r\n // this.router.navigateToRoute('login')\r\n // }\r\n this.attendanceMonths = await this.attendanceService.GetAttendanceMonth();\r\n this.monthOptions = Object.entries(this.attendanceMonths).map(([key, value]) => ({ value, key }));\r\n this.attendanceYears = await this.attendanceService.GetAttendanceYear();\r\n this.yearOptions = Object.entries(this.attendanceYears).map(([key, value]) => ({ value, key }));\r\n this.getDepartments(this.selectedStatus);\r\n }\r\n selectedStatusChanged(newValue) {\r\n this.selectedStatus = newValue;\r\n this.getDepartments(this.selectedStatus);\r\n }\r\n getDepartments(status){\r\n this.attendanceService.DepartmentDropdown(this.EmpId,status).then(data =>{\r\n this.filteredDepartments = data;\r\n })\r\n }\r\n selectDepartment(department){\r\n this.DepartmentID = department.DepartmentId;\r\n this.getEmployeesDropdown(this.DepartmentID);\r\n }\r\n getEmployeesDropdown(departmentID){\r\n this.attendanceService.GetAllEmployeeNamesDropdown(this.EmpId,this.selectedStatus,departmentID).then(data =>{\r\n this.filteredEmployees = data;\r\n });\r\n }\r\n selectEmployee(employee){\r\n this.employeeId = employee.EmployeeID;\r\n }\r\n calenderMonthConfig(data){\r\n this.month = data.key;\r\n }\r\n calenderYearConfig(data){\r\n this.year = data.value.Year;\r\n }\r\n Search(){\r\n const summaryData = {\r\n strDepartmentID : this.DepartmentID,\r\n strEmployeeID : this.employeeId,\r\n EmployeeStatus : this.selectedStatus,\r\n Year : this.year,\r\n Month : this.month\r\n };\r\n this.attendanceService.GetAdminAttendanceSummary(summaryData).then(response => {\r\n this.employeeSummaryDetails = response;\r\n })\r\n }\r\n\r\n}\r\n\r\n","import {inject} from 'aurelia-framework';\r\nimport {DialogController} from 'aurelia-dialog';\r\nimport {LeavemanagementService} from \"../../../../shared/services/leavemanagementservice\";\r\nimport {JwtService} from \"../../../../shared/services/jwtservice\";\r\nimport flatpickr from \"flatpickr\";\r\nimport {config} from \"../../../../shared/services/config\";\r\nimport {ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\nimport Scrollbar from \"smooth-scrollbar\";\r\nimport {LoginService} from \"../../../../shared/services/loginservice\";\r\nimport {Router} from 'aurelia-router';\r\n\r\n@inject(DialogController,LeavemanagementService,JwtService,ValidationControllerFactory,Router,LoginService,Element)\r\n\r\nexport class AddNewcompoff {\r\n isDragging = false;\r\n dialog;\r\n static inject = [Element];\r\n pageSize = config.grid_PazeSize;\r\n showEmployeeDropdown = false;\r\n selectedRecordId = null;\r\n isLoading = false;\r\n // isButtonDisabled = false;\r\n\r\n constructor(controller,LeavemanagementService,JwtService,ValidationControllerFactory,loginservice,router,element) {\r\n this.controller = controller;\r\n this.dialogService = DialogController;\r\n this.leavemanagementService = LeavemanagementService;\r\n this.jwtService= JwtService;\r\n this.empid = this.jwtService.getEmployeeId();\r\n this.locid = this.jwtService.getLocationId();\r\n this.element = element;\r\n this.controllerFactory = ValidationControllerFactory.createForCurrentScope();\r\n this.locid = this.jwtService.getLocationId();\r\n this.router = router;\r\n this.loginservice = loginservice;\r\n\r\n\r\n //this.employeemasterService=employeemasterService;\r\n ValidationRules\r\n .ensure('FromDate').required().withMessage('Comp off date field is required.')\r\n .ensure('Reason').required().withMessage('Reason for request field is required.')\r\n .ensure('noofdays').required().withMessage('Number of days field is required.')\r\n .on(this);\r\n\r\n }\r\n attached() {\r\n // if(this.jwtService.getToken() === undefined){\r\n // this.loginservice.purgeAuth();\r\n // this.router.navigateToRoute('login')\r\n // }\r\n \r\n const maxDate = new Date();\r\n maxDate.setMonth(maxDate.getMonth() + 6);\r\n\r\n this.empid = this.jwtService.getEmployeeId();\r\n flatpickr(this.FromdatePicker, {\r\n closeOnSelect: true,\r\n dateFormat: 'd-m-Y',\r\n minDate: null,\r\n maxDate: maxDate,\r\n defaultDate:null,\r\n enableTime: false,\r\n enableSeconds: false,\r\n time_24hr: false,\r\n minuteIncrement: 1,\r\n hourIncrement: 1,\r\n timeFormat: 'h:i K',\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr) {\r\n this.FromDate = dateStr;\r\n }\r\n });\r\n\r\n this.FromcalendarIcon.addEventListener('click', () => {\r\n this.FromdatePicker._flatpickr.open();\r\n });\r\n\r\n this.specializationInput.focus();\r\n }\r\n openFileDialog() {\r\n document.getElementById('attachments').click();\r\n }\r\n handleFileSelect(files) {\r\n const file = files[0];\r\n const maxSize = 2.5 * 1024 * 1024; // Maximum file size in bytes (2.5 MB)\r\n\r\n if (file.size > maxSize) {\r\n this.fileMessage = 'File size should be less than 2.5 MB.';\r\n setTimeout(() => {\r\n this.fileMessage = null;\r\n }, 4000);\r\n\r\n this.removeFile();\r\n return;\r\n }\r\n else if (file.size <= maxSize) {\r\n this.file = file;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n this.DocumentName = file.name;\r\n reader.onload = () => {\r\n this.file = reader.result;\r\n };\r\n }\r\n\r\n }\r\n removeFile() {\r\n this.file = null;\r\n this.DocumentName = '';\r\n const fileInput = document.getElementById('attachments');\r\n if (fileInput) {\r\n fileInput.value = ''; // Clear the file input value\r\n }\r\n }\r\n DateCompoff(){\r\n this.leavemanagementService.fromDateCompoff(this.empid,this.FromDate).then(data =>\r\n {\r\n this.compOffData=data;\r\n const compoffid=0;\r\n this.leavemanagementService.OTCompOffDetails(this.FromDate,this.empid,compoffid).then(data =>{\r\n this.compOffIdData=data;\r\n })\r\n });\r\n }\r\n\r\n save() {\r\n // if (this.isButtonDisabled) {\r\n // return;\r\n // }\r\n //this.isButtonDisabled = true;\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n if (this.compOffIdData== '-1') {\r\n this.compOffIdData=this.noofdays;\r\n }\r\n if (this.compOffIdData == '1' || this.compOffIdData == '0.5' || this.compOffIdData == '0.50' || this.compOffIdData =='1.0'){\r\n let data = {\r\n EmployeeID: this.empid,\r\n DocumentName: this.DocumentName,\r\n DocumentPath: this.file,\r\n CompOffDate:this.FromDate,\r\n Reason:this.Reason,\r\n Comments:this.Comments,\r\n LocationID :this.locid,\r\n NoofDays:this.compOffIdData,\r\n //ActionName:this.apply\r\n };\r\n this.leavemanagementService.savenewcompoff(data).then(() => {\r\n this.controller.ok(true);\r\n });\r\n }\r\n else if (this.compOffIdData >1)\r\n {\r\n this.compOffIdDataErrorMessage = \"You are eligible for 1 day comp off.\" ;\r\n this.DateCompoff();\r\n }\r\n else{\r\n // this.noofdays='';\r\n this.compOffIdData='';\r\n this.compOffIdDataErrorMessage = \"Number of days field should be like 0.5,1 etc\" ;\r\n this.DateCompoff();\r\n }\r\n }\r\n });\r\n }\r\n cancel(){\r\n this.controller.cancel();\r\n }\r\n startDragging(event) {\r\n if (event.button === 0) {\r\n this.isDragging = true;\r\n this.offsetX = event.clientX - this.dialogElement.getBoundingClientRect().left;\r\n this.offsetY = event.clientY - this.dialogElement.getBoundingClientRect().top;\r\n\r\n window.addEventListener('mousemove', this.drag);\r\n window.addEventListener('mouseup', this.stopDragging);\r\n }\r\n }\r\n\r\n drag = (event) => {\r\n if (this.isDragging) {\r\n const x = event.clientX - this.offsetX;\r\n const y = event.clientY - this.offsetY;\r\n\r\n this.dialogElement.style.left = `${x}px`;\r\n this.dialogElement.style.top = `${y}px`;\r\n }\r\n }\r\n\r\n stopDragging = () => {\r\n this.isDragging = false;\r\n window.removeEventListener('mousemove', this.drag);\r\n window.removeEventListener('mouseup', this.stopDragging);\r\n }\r\n}\r\n","import {inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport Scrollbar from 'smooth-scrollbar';\r\nimport {LeavemanagementService} from \"../../../../shared/services/leavemanagementservice\";\r\nimport { constants } from '../../../../shared/services/constants';\r\nimport {ValidationControllerFactory, ValidationRules} from 'aurelia-validation';\r\nimport {Router} from 'aurelia-router';\r\nimport {LoginService} from \"../../../../shared/services/loginservice\";\r\n\r\n@inject(DialogController,ProfileService,JwtService,LeavemanagementService,ValidationControllerFactory,Router,LoginService)\r\nexport class ApproveCompOff {\r\n isDragging = false;\r\n dialog;\r\n static inject = [Element];\r\n pageSize = 10;\r\n topicsPageSize = 10;\r\n OnlineTopic = [];\r\n isLoading = false;\r\n categoryid = constants.compoffworkflowcategoryid;\r\n\r\n constructor(controller, ProfileService, JwtService, LeavemanagementService, ValidationControllerFactory,loginservice,router) {\r\n this.controller = controller;\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.leavemanagementService = LeavemanagementService;\r\n this.empid = this.jwtService.getEmployeeId();\r\n this.controllerFactory = ValidationControllerFactory.createForCurrentScope();\r\n this.router = router;\r\n this.loginservice = loginservice;\r\n ValidationRules\r\n .ensure('Comments').required().withMessage('Please enter comments.')\r\n .on(this);\r\n }\r\n\r\n activate(viewData) {\r\n this.compofff = viewData;\r\n this.CompOffID = viewData.comp;\r\n this.Status = viewData.Status;\r\n this.ActionName = viewData.action;\r\n console.log(this.ActionName);\r\n }\r\n\r\n attached() {\r\n // if(this.jwtService.getToken() === undefined){\r\n // this.loginservice.purgeAuth();\r\n // this.router.navigateToRoute('login')\r\n // }\r\n this.leavemanagementService.GetViewCompOffDetails(this.CompOffID).then(data => {\r\n this.compoff = data;\r\n });\r\n this.leavemanagementService.GetAdditionalComments(this.CompOffID, this.categoryid)\r\n .then(data => {\r\n this.additionalcomments = data;\r\n this.DocPath = data.DocumentPath;\r\n });\r\n }\r\n\r\n dateSort(a, b, sortOrder) {\r\n let date1 = new Date(a.registered);\r\n let date2 = new Date(b.registered);\r\n if (date1 === date2) {\r\n return 0;\r\n }\r\n if (date1 > date2) {\r\n return 1 * sortOrder;\r\n }\r\n return -1 * sortOrder;\r\n }\r\n\r\n nameLength(row) {\r\n return row.Type.length;\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n\r\n openFileDialog() {\r\n document.getElementById('attachments').click();\r\n }\r\n\r\n handleFileSelect(files) {\r\n const file = files[0];\r\n const maxSize = 2.5 * 1024 * 1024; // Maximum file size in bytes (2.5 MB)\r\n\r\n if (file.size > maxSize) {\r\n this.fileMessage = 'File size should be less than 2.5 MB.';\r\n setTimeout(() => {\r\n this.fileMessage = null;\r\n }, 4000);\r\n\r\n this.removeFile();\r\n return;\r\n }\r\n else if (file.size <= maxSize) {\r\n this.file = file;\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n this.DocumentName = file.name;\r\n reader.onload = () => {\r\n this.file = reader.result;\r\n };\r\n }\r\n }\r\n removeFile() {\r\n this.file = null;\r\n this.DocumentName = '';\r\n const fileInput = document.getElementById('attachments');\r\n if (fileInput) {\r\n fileInput.value = ''; // Clear the file input value\r\n }\r\n }\r\n\r\n save() {\r\n this.controllerFactory.validate()\r\n .then(result => {\r\n if (result.valid) {\r\n let data = {\r\n EmployeeID: this.empid,\r\n CompOffID: this.CompOffID,\r\n DocumentName: this.DocumentName,\r\n DocumentPath: this.file,\r\n Comments: this.Comments,\r\n };\r\n this.leavemanagementService.cancelcompoff(data).then(() => {\r\n this.controller.ok(true);\r\n });\r\n }\r\n\r\n });\r\n }\r\n startDragging(event) {\r\n if (event.button === 0) {\r\n this.isDragging = true;\r\n this.offsetX = event.clientX - this.dialogElement.getBoundingClientRect().left;\r\n this.offsetY = event.clientY - this.dialogElement.getBoundingClientRect().top;\r\n\r\n window.addEventListener('mousemove', this.drag);\r\n window.addEventListener('mouseup', this.stopDragging);\r\n }\r\n }\r\n\r\n drag = (event) => {\r\n if (this.isDragging) {\r\n const x = event.clientX - this.offsetX;\r\n const y = event.clientY - this.offsetY;\r\n\r\n this.dialogElement.style.left = `${x}px`;\r\n this.dialogElement.style.top = `${y}px`;\r\n }\r\n }\r\n\r\n stopDragging = () => {\r\n this.isDragging = false;\r\n window.removeEventListener('mousemove', this.drag);\r\n window.removeEventListener('mouseup', this.stopDragging);\r\n }\r\n}\r\n","import {inject,bindable, autoinject} from 'aurelia-framework';\r\nimport {Router} from 'aurelia-router';\r\nimport { App } from '../../../../app';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport {LeavemanagementService} from \"../../../../shared/services/leavemanagementservice\";\r\nimport {JwtService} from \"../../../../shared/services/jwtservice\";\r\nimport flatpickr from \"flatpickr\";\r\n import {AddNewcompoff} from \"../addnewcompoff/addnewcompoff\";\r\n import {ViewCompOff} from \"../viewcompoff/viewcompoff\";\r\n import {ApproveCompOff} from \"../approve/approve\"\r\nimport * as XLSX from \"xlsx\";\r\nimport {config} from '../../../../shared/services/config';\r\nimport {constants} from \"../../../../shared/services/constants\";\r\nimport {LoginService} from \"../../../../shared/services/loginservice\";\r\n\r\n@inject(DialogService, Router, App,LeavemanagementService,JwtService,LoginService)\r\n@autoinject()\r\nexport class EmployeeTimeOffDetailsComponent {\r\n @bindable selectedOption= '';\r\n isDropdownOpen = false;\r\n defaultToDate;\r\n defaultFromDate;\r\n pageSize = config.grid_PazeSize;\r\n showEmployeeDropdown = false;\r\n selectedRecordId = null;\r\n isLoading = false;\r\n FavoritesExist = false;\r\n Successmessages=false;\r\n sitemapId=constants.mycompoffsitemapid;\r\n /*statusOptions = [\r\n { label: 'All', value: 'All', checked: false },\r\n { label: 'Pending with me', value: 'PEAM', checked: true },\r\n { label: 'Pending approval', value: 'ACT', checked: true },\r\n { label: 'Rejected', value: 'REJ', checked: false },\r\n { label: 'Cancelled', value: 'INA', checked: false },\r\n { label: 'Approved', value: 'APP', checked: false },\r\n { label: 'Taken', value: 'Taken', checked: false }\r\n ];*/\r\n constructor(dialogService,router, App,LeavemanagementService,JwtService,loginservice,element) {\r\n this.dialogService = dialogService;\r\n this.router = router;\r\n this.app = App;\r\n this.leavemanagementService = LeavemanagementService;\r\n this.jwtService= JwtService;\r\n this.empid = this.jwtService.getEmployeeId();\r\n this.element = element;\r\n this.loginservice = loginservice;\r\n }\r\n\r\n getCurrentRouteURL() {\r\n const currentInstruction = this.router.currentInstruction;\r\n if (currentInstruction) {\r\n const routeURL = currentInstruction.fragment;\r\n const sidebarListItem = document.querySelector('.sidebar ul li.attendance');\r\n if (sidebarListItem) {\r\n const subActiveItems = document.querySelectorAll('.sidebar ul li.sub-active');\r\n subActiveItems.forEach(item => item.classList.remove('sub-active'));\r\n const activeLinkItems = document.querySelectorAll('.sidebar ul li.active-link');\r\n activeLinkItems.forEach(item => item.classList.remove('active-link'));\r\n sidebarListItem.classList.add('sub-active');\r\n }\r\n const sidebarLink = document.querySelector('.sidebar ul li.attendance .sidebar-sub .MyCompOffRequest a');\r\n if (sidebarLink) {\r\n sidebarLink.classList.add('active-link');\r\n }\r\n return routeURL;\r\n }\r\n return '';\r\n }\r\n\r\n attached() {\r\n this.getCurrentRouteURL();\r\n // if(this.jwtService.getToken() === undefined){\r\n // this.loginservice.purgeAuth();\r\n // this.router.navigateToRoute('login')\r\n // }\r\n\r\n function formatDateWithLeadingZero(date) {\r\n const day = date.getDate();\r\n const month = date.getMonth() + 1; // Adding 1 because getMonth() returns zero-based month index\r\n const year = date.getFullYear();\r\n const formattedDay = day.toString().padStart(2, '0');\r\n const formattedMonth = month.toString().padStart(2, '0');\r\n return `${formattedDay}-${formattedMonth}-${year}`;\r\n }\r\n\r\n const fromDate = new Date();\r\n fromDate.setMonth(fromDate.getMonth() - 4);\r\n \r\n this.FDate = formatDateWithLeadingZero(fromDate);\r\n this.From = this.FDate;\r\n\r\n const toDate = new Date();\r\n toDate.setMonth(toDate.getMonth() +6);\r\n \r\n this.TDate = formatDateWithLeadingZero(toDate);\r\n this.To = this.TDate;\r\n\r\n // const fromDate = new Date();\r\n // fromDate.setMonth(fromDate.getMonth() -4);\r\n // this.FDate = formatDateWithLeadingZero(fromDate);\r\n // this.From = this.FDate;\r\n // const toDate = new Date();\r\n // toDate.setMonth(toDate.getMonth() + 6);\r\n // this.TDate = formatDateWithLeadingZero(toDate);\r\n // this.To= this.TDate;\r\n flatpickr(this.FromdatePicker, {\r\n closeOnSelect: true,\r\n dateFormat: 'd-m-Y',\r\n minDate: null,\r\n maxDate: null,\r\n defaultDate: fromDate,\r\n enableTime: false,\r\n enableSeconds: false,\r\n time_24hr: false,\r\n minuteIncrement: 1,\r\n hourIncrement: 1,\r\n timeFormat: 'h:i K',\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr, instance) {\r\n this.FromDate = dateStr;\r\n }\r\n });\r\n this.FromcalendarIcon.addEventListener('click', () => {\r\n this.FromdatePicker._flatpickr.open();\r\n });\r\n flatpickr(this.TodatePicker, {\r\n closeOnSelect: true,\r\n dateFormat: 'd-m-Y',\r\n minDate: null,\r\n maxDate: null,\r\n defaultDate: toDate,\r\n enableTime: false,\r\n enableSeconds: false,\r\n time_24hr: false,\r\n minuteIncrement: 1,\r\n hourIncrement: 1,\r\n timeFormat: 'h:i K',\r\n clickOpens:false,\r\n onClose: function (selectedDates, dateStr, instance) {\r\n this.default = dateStr;\r\n }\r\n });\r\n this.TocalendarIcon.addEventListener('click', () => {\r\n this.TodatePicker._flatpickr.open();\r\n });\r\n /* const selectedStatusList = this.statusOptions\r\n .filter(status => status.checked)\r\n .map(status => status.value);*/\r\n console.log(this.To);\r\n const timeoff= {\r\n Fromdate:this.From,\r\n /*StatusList: selectedStatusList,*/\r\n Todate:this.To,\r\n EmployeeID : this.empid,\r\n // Department: this.departmentId,\r\n };\r\n\r\n this.leavemanagementService.GetMyCompOffDetails(timeoff).then(data => {\r\n this.myCompOffDetails = data.List;\r\n this.isLoading = false;\r\n console.log(this.myCompOffDetails);\r\n });\r\n\r\n this.leavemanagementService.GetPersonFavoriteItems(this.empid,this.sitemapId)\r\n .then(data=>{\r\n this.FavoritesExist=data;\r\n });\r\n sessionStorage.removeItem('activeTab');\r\n\r\n this.addToRecentItems();\r\n }\r\n // selectOption(option) {\r\n // this.selectedOption = option;\r\n // this.isDropdownOpen = false;\r\n // }\r\n\r\n /* selectAllChanged(event) {\r\n const isChecked = this.statusOptions[0].checked;\r\n this.statusOptions.forEach((status, index) => {\r\n if (index !== 0) {\r\n status.checked = isChecked;\r\n }\r\n });\r\n }\r\n handleCheckboxChange(event, status) {\r\n if (status.value === 'All') {\r\n this.statusOptions.forEach((statusOption, index) => {\r\n if (index !== 0) {\r\n statusOption.checked = false;\r\n }\r\n });\r\n } else {\r\n const allChecked = this.statusOptions.slice(1).every(statusOption => statusOption.checked);\r\n this.statusOptions[0].checked = allChecked;\r\n }\r\n\r\n //status.checked = event.target.checked;\r\n }*/\r\n\r\n\r\n toggleDropdown($event, employee) {\r\n //console.log(employee);\r\n const isDropdownOpen = employee.showDropdown;\r\n this.$displayData.forEach((item) => {\r\n item.showDropdown = false;\r\n item.timeoffshowDropdown = false;\r\n });\r\n if (!isDropdownOpen) {\r\n employee.showDropdown = true;\r\n employee.timeoffshowDropdown = false;\r\n document.addEventListener('click', this.closeDropdown);\r\n }\r\n $event.stopPropagation();\r\n }\r\n closeDropdown = () => {\r\n this.$displayData.forEach((item) => {\r\n item.showDropdown = false;\r\n item.timeoffshowDropdown = false;\r\n });\r\n document.removeEventListener('click', this.closeDropdown);\r\n };\r\n viewToggleDropdown($event, employee) {\r\n //console.log(employee);\r\n const timeoffisDropdownOpen = employee.timeoffshowDropdown;\r\n this.$displayData.forEach((item) => {\r\n item.timeoffshowDropdown = false;\r\n item.showDropdown = false;\r\n });\r\n if (!timeoffisDropdownOpen) {\r\n employee.timeoffshowDropdown = true;\r\n employee.showDropdown = false;\r\n document.addEventListener('click', this.viewcloseDropdown);\r\n }\r\n $event.stopPropagation();\r\n\r\n }\r\n viewcloseDropdown = () => {\r\n this.$displayData.forEach((item) => {\r\n item.timeoffshowDropdown = false;\r\n item.showDropdown = false;\r\n });\r\n document.removeEventListener('click', this.timeoffcloseDropdown);\r\n };\r\n\r\n showDialog(CompOffID) {\r\n\r\n /*this.leavemanagementService.GetViewCompOffDetails(CompOffID).then(data=>\r\n {\r\n this.compoff=data;\r\n this.comp=this.compoff;\r\n console.log(this.comp);\r\n });*/\r\n this.dialogService.open({viewModel: ViewCompOff, model: CompOffID});\r\n }\r\n ApproveShowDialog(StatusCode,CompOffID,ActionName){\r\n\r\n const statuscode ={\r\n Status:StatusCode,\r\n comp:CompOffID,\r\n action:ActionName\r\n };\r\n console.log(statuscode);\r\n this.dialogService.open({viewModel: ApproveCompOff, model:statuscode })\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n const timeoff= {\r\n Fromdate:this.From,\r\n /*StatusList: selectedStatusList,*/\r\n Todate:this.To,\r\n EmployeeID : this.empid,\r\n // Department: this.departmentId,\r\n };\r\n console.log(timeoff);\r\n\r\n\r\n this.leavemanagementService.GetMyCompOffDetails(timeoff).then(data => {\r\n this.myCompOffDetails = data.List;\r\n this.isLoading = false;\r\n console.log(this.myCompOffDetails);\r\n this.messages = \"Comp off request cancelled successfully.\";\r\n this.Successmessages = true;\r\n setTimeout(()=>{this.messages=null},3000);\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n Addnewrequestpopup(CompOffID) {\r\n\r\n this.dialogService.open({viewModel: AddNewcompoff, model: CompOffID})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n const timeoff= {\r\n Fromdate:this.From,\r\n /*StatusList: selectedStatusList,*/\r\n Todate:this.To,\r\n EmployeeID : this.empid,\r\n // Department: this.departmentId,\r\n };\r\n console.log(timeoff);\r\n\r\n\r\n this.leavemanagementService.GetMyCompOffDetails(timeoff).then(data => {\r\n this.myCompOffDetails = data.List;\r\n this.isLoading = false;\r\n console.log(this.myCompOffDetails);\r\n this.messages = \"Comp off submitted successfully.\";\r\n this.Successmessages = true;\r\n setTimeout(()=>{this.messages=null},3000);\r\n });\r\n\r\n }\r\n });\r\n }\r\n search() {\r\n /* const filterOpenElements = document.querySelectorAll('.filter-open');\r\n filterOpenElements.forEach(element => element.classList.remove('filter-open'));\r\n const selectedStatusList = this.statusOptions\r\n .filter(status => status.checked)\r\n .map(status => status.value);*/\r\n const finalToDate = this.ToDate ? this.ToDate : this.defaultToDate;\r\n const finalFromDate = this.FromDate ? this.FromDate : this.defaultFromDate;\r\n console.log(finalToDate);\r\n if(finalFromDate==undefined){\r\n this.finalFromDate=this.From;\r\n }else {\r\n this.finalFromDate=finalFromDate\r\n }\r\n if (finalToDate==undefined){\r\n this.finalToDate=this.To;\r\n }\r\n else {\r\n this.finalToDate=finalToDate\r\n }\r\n const timeoff = {\r\n Fromdate: this.finalFromDate,\r\n Todate: this.finalToDate,\r\n //StatusList: selectedStatusList.includes('All') ? ['All'] : selectedStatusList.filter(status => status !== 'All'),\r\n EmployeeId : this.empid,\r\n };\r\n this.isLoading = true;\r\n this.leavemanagementService.GetMyCompOffDetails(timeoff)\r\n .then(data => {\r\n this.myCompOffDetail = data;\r\n this.myCompOffDetails = data.List;\r\n this.isLoading = false;\r\n });\r\n }\r\n exportData() {\r\n const data = this.myCompOffDetails;\r\n const filename = 'Compoffdetails';\r\n this.exportToExcel(data, filename);\r\n }\r\n exportToExcel(data, filename) {\r\n const filteredData = data.map(employee => {\r\n //console.log(filteredData);\r\n return {\r\n 'Comp off date': employee.Date,\r\n 'Requested date':employee.RequestDate,\r\n 'Number of days':employee.NoofDays,\r\n Reason:employee.Reason,\r\n Status: employee.StatusText,\r\n };\r\n });\r\n const worksheet = XLSX.utils.json_to_sheet(filteredData);\r\n const workbook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet 1');\r\n XLSX.writeFile(workbook, `${filename}.xlsx`);\r\n }\r\n filterClick() {\r\n event.preventDefault();\r\n const clickedDiv = event.target.parentNode;\r\n clickedDiv.classList.toggle('filter-open');\r\n const divs = document.querySelectorAll('.filter-open');\r\n divs.forEach((div) => {\r\n if (div !== clickedDiv) {\r\n div.classList.remove('filter-open');\r\n }\r\n });\r\n const handleOutsideClick = (event) => {\r\n if (!clickedDiv.contains(event.target)) {\r\n divs.forEach((div) => {\r\n div.classList.remove('filter-open');\r\n });\r\n document.removeEventListener('click', handleOutsideClick);\r\n }\r\n };\r\n\r\n if (clickedDiv.classList.contains('filter-open')) {\r\n document.addEventListener('click', handleOutsideClick);\r\n } else {\r\n document.removeEventListener('click', handleOutsideClick);\r\n }\r\n }\r\n addToFavourites(){\r\n this.leavemanagementService.AddToFavourites(this.empid,this.sitemapId).then(data=>\r\n {\r\n //this.attached();\r\n window.location.reload();\r\n });\r\n }\r\n\r\n addToRecentItems(){ \r\n this.leavemanagementService.AddToRecentItems(this.empid,this.sitemapId).then(data=>\r\n {\r\n // window.location.reload();\r\n\r\n });\r\n }\r\n\r\n // resetDepartmentDropdown() {\r\n // this.department = ''; // Reset the selected department to empty value\r\n // }\r\n //\r\n // resetEmployesDropdown() {\r\n // this.employeeclass = ''; // Reset the selected department to empty value\r\n // }\r\n\r\n /*resetStatusDropdown() {\r\n this.statusOptions.forEach((status, index) => {\r\n if (index === 1 || index === 2) {\r\n status.checked = true; // Select 'Pending approval' and 'Pending with me'\r\n } else {\r\n status.checked = false; // Deselect other statuses\r\n }\r\n });\r\n\r\n this.selectedStatusList = this.statusOptions.filter(status => status.checked);\r\n\r\n }*/\r\n /*removeFilter(Allstatus,status) {\r\n if (status.label === 'All') {\r\n this.statusOptions.forEach(option => {\r\n option.checked = false;\r\n });\r\n } else {\r\n status.checked = false;\r\n this.statusOptions[0].checked = false;\r\n }\r\n }\r\n get selectedStatuses() {\r\n return this.statusOptions.filter(status => status.checked);\r\n }\r\n resetPage(){\r\n this.attached();\r\n console.log(this.From);\r\n\r\n }*/\r\n resetPage(){\r\n this.attached();\r\n }\r\n\r\n}\r\n","import {inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { ProfileService } from '../../../../shared/services/profielservice';\r\nimport { JwtService } from '../../../../shared/services/jwtservice';\r\nimport Scrollbar from 'smooth-scrollbar';\r\nimport {LeavemanagementService} from \"../../../../shared/services/leavemanagementservice\";\r\nimport { constants } from '../../../../shared/services/constants';\r\nimport { config } from '../../../../shared/services/config';\r\nimport {LoginService} from \"../../../../shared/services/loginservice\";\r\nimport {Router} from 'aurelia-router';\r\n\r\n@inject(DialogController,ProfileService,JwtService,LeavemanagementService,LoginService,Router)\r\nexport class ViewCompOff{\r\n isDragging = false;\r\n dialog;\r\n static inject = [Element];\r\n pageSize = 10;\r\n topicsPageSize=10;\r\n OnlineTopic = [];\r\n isLoading = false;\r\n additionalcomments = [];\r\n CategoryId=constants.compoffworkflowcategoryid;\r\n Url=config.img_url;\r\n\r\n constructor(controller, ProfileService,JwtService,LeavemanagementService,loginservice,router) {\r\n this.controller = controller;\r\n this.profileService = ProfileService;\r\n this.jwtService = JwtService;\r\n this.leavemanagementService = LeavemanagementService;\r\n this.empid = this.jwtService.getEmployeeId();\r\n this.loginservice = loginservice;\r\n this.router = router;\r\n\r\n }\r\n activate(viewData){\r\n\r\n this.compoff=viewData;\r\n console.log(this.compoff);\r\n }\r\n\r\n attached(){\r\n this.isLoading = true;\r\n // if(this.jwtService.getToken() === undefined){\r\n // this.loginservice.purgeAuth();\r\n // this.router.navigateToRoute('login')\r\n // }\r\n this.leavemanagementService.GetViewCompOffDetails(this.compoff).then(data=>\r\n {\r\n this.compoff=data;\r\n });\r\n this.isLoading = false;\r\n this.leavemanagementService.GetAdditionalComments(this.compoff,this.CategoryId)\r\n .then(data =>{\r\n this.additionalcomments = data;\r\n this.Files = this.additionalcomments.map(option => option.DocumentPath);\r\n if ( this.additionalcomments.map(option => option.DocumentPath)) {\r\n this.file = this.additionalcomments.map(option => option.DocumentPath);\r\n this.DocumentName = this.additionalcomments.map(option => option.DocumentPath); // Set the desired file name\r\n }\r\n });\r\n }\r\n RefreshProfileImage(data){\r\n this.userPhotoElement = document.querySelector('.rounded-full.dropdown.inline-block');\r\n this.userPhotoElement.src = data;\r\n }\r\n\r\n dateSort(a, b, sortOrder) {\r\n let date1 = new Date(a.registered);\r\n let date2 = new Date(b.registered);\r\n\r\n if (date1 === date2) {\r\n return 0;\r\n }\r\n\r\n if (date1 > date2) {\r\n return 1 * sortOrder;\r\n }\r\n\r\n return -1 * sortOrder;\r\n }\r\n nameLength(row) {\r\n return row.Type.length;\r\n }\r\n cancel(){\r\n this.controller.cancel();\r\n }\r\n \r\n downloadFile(){\r\n const downloadUrl = this.Url + this.Files;\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.target = '_blank';\r\n link.download = downloadUrl;\r\n link.click();\r\n }\r\n startDragging(event) {\r\n if (event.button === 0) {\r\n this.isDragging = true;\r\n this.offsetX = event.clientX - this.dialogElement.getBoundingClientRect().left;\r\n this.offsetY = event.clientY - this.dialogElement.getBoundingClientRect().top;\r\n\r\n window.addEventListener('mousemove', this.drag);\r\n window.addEventListener('mouseup', this.stopDragging);\r\n }\r\n }\r\n\r\n drag = (event) => {\r\n if (this.isDragging) {\r\n const x = event.clientX - this.offsetX;\r\n const y = event.clientY - this.offsetY;\r\n\r\n this.dialogElement.style.left = `${x}px`;\r\n this.dialogElement.style.top = `${y}px`;\r\n }\r\n }\r\n\r\n stopDragging = () => {\r\n this.isDragging = false;\r\n window.removeEventListener('mousemove', this.drag);\r\n window.removeEventListener('mouseup', this.stopDragging);\r\n }\r\n}\r\n","import {inject } from 'aurelia-framework';\r\nimport { bindable } from 'aurelia-framework';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport { Openevent } from './openevent';\r\nimport { JwtService } from '../../../shared/services/jwtservice';\r\nimport { AttendanceService } from '../../../shared/services/attendanceservice';\r\nimport { DashboardService } from '../../../shared/services/dashboardservice';\r\n\r\n@inject(DialogService,JwtService,AttendanceService,DashboardService)\r\nexport class Calender {\r\n\r\n @bindable year;\r\n @bindable month;\r\n @bindable currentday;\r\n calendar = [];\r\n selectedDate = null;\r\n showMobileData = false;\r\n attendanceMessages = false;\r\n daysOfWeek = [\r\n {week:'Monday',attribute:'M'},\r\n {week:'Tuesday',attribute:'T'},\r\n {week:'Wednesday',attribute:'W'},\r\n {week:'Thursday',attribute:'T'},\r\n {week:'Friday',attribute:'F'},\r\n {week:'Saturday',attribute:'S'},\r\n {week:'Sunday',attribute:'S'}\r\n ];\r\n\r\n constructor(DialogService,JwtService,AttendanceService,DashboardService){\r\n this.jwtService = JwtService;\r\n this.dialogService = DialogService;\r\n this.attendanceService = AttendanceService;\r\n this.dashboardService = DashboardService;\r\n this.EmpId = this.jwtService.getEmployeeId();\r\n }\r\n\r\n yearChanged() {\r\n this.generateCalendar();\r\n }\r\n\r\n monthChanged() {\r\n this.generateCalendar();\r\n }\r\n\r\n isWeekend(dayOfWeek) {\r\n return dayOfWeek === 'Saturday' || dayOfWeek === 'Sunday';\r\n }\r\n\r\n formatDate(year, month, day) {\r\n // Ensure that month and day are always two digits\r\n const formattedMonth = String(month).padStart(2, '0');\r\n const formattedDay = String(day).padStart(2, '0');\r\n return `${formattedDay}-${formattedMonth}-${year}`;\r\n }\r\n\r\n attached(){\r\n this.dashboardService.GetServerCurrentDate(this.EmpId).then(data => {\r\n const apiDatetimeStr = data.CurrentDate;\r\n this.apiDatetime = new Date(apiDatetimeStr);\r\n this.currentDate = apiDatetime.getDate().toString().padStart(2);\r\n })\r\n }\r\n \r\n generateCalendar() {\r\n this.attendanceService.GetMyAttendanceDetails(this.EmpId, this.month, this.year)\r\n .then(data => {\r\n this.attendanceDetails = data;\r\n const date = new Date(this.year, this.month - 1, 1);\r\n const numDays = new Date(this.year, this.month, 0).getDate();\r\n const firstDayIndex = (date.getDay() + 6) % 7; // Adjust the starting day index\r\n this.calendar = []; \r\n let row = [];\r\n for (let i = 0; i < firstDayIndex; i++) {\r\n row.push('');\r\n } \r\n let dayCount = 1;\r\n while (dayCount <= numDays) {\r\n // Create an object to hold the date and its associated data\r\n const formattedDate = this.formatDate(this.year, this.month, dayCount);\r\n const dateObj = {\r\n day: dayCount,\r\n attendanceData: this.findAttendanceDataForDate(formattedDate),\r\n }; \r\n row.push(dateObj); \r\n if (row.length === 7) {\r\n this.calendar.push(row);\r\n row = [];\r\n } \r\n dayCount++;\r\n } \r\n if (row.length > 0) {\r\n while (row.length < 7) {\r\n row.push('');\r\n }\r\n this.calendar.push(row);\r\n }\r\n });\r\n }\r\n \r\n findAttendanceDataForDate(formattedDate) {\r\n // Find and return the attendance data for the given date\r\n return this.attendanceDetails.find(item => item.Date === formattedDate);\r\n }\r\n\r\n findAttendanceDataForDateMobile(formattedDate) {\r\n // Find and return the attendance data for the given date\r\n return this.attendanceDetails.find(item => item.Date === formattedDate);\r\n }\r\n\r\n isEditAllowed(day) {\r\n const targetDate = new Date(this.year, this.month - 1, day); \r\n // Check if the target date is before the current date\r\n return targetDate < this.apiDatetime && !this.isSameDate(targetDate, this.apiDatetime);\r\n }\r\n\r\n isSameDate(date1, date2) {\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n );\r\n }\r\n \r\n\r\n dateClicked(day) {\r\n this.showMobileData = true;\r\n this.selectedDate = day;\r\n const formattedDate = this.formatDate(this.year, this.month, day);\r\n const attendanceData = this.findAttendanceDataForDate(formattedDate);\r\n const dateObj = new Date(this.year, this.month - 1, day);\r\n const monthName = dateObj.toLocaleString('default', { month: 'long' });\r\n const dayNumber = dateObj.getDate();\r\n const yearNumber = dateObj.getFullYear();\r\n this.formattedDateString = this.getFormattedDate(monthName, dayNumber, yearNumber);\r\n this.attentendanceDataMobile = attendanceData;\r\n }\r\n\r\n\r\n getFormattedDate(month, day, year) {\r\n const suffix = this.getDayNumberSuffix(day);\r\n return `${month} ${day}${suffix}, ${year}`;\r\n }\r\n\r\n getDayNumberSuffix(day) {\r\n if (day >= 11 && day <= 13) {\r\n return 'th';\r\n }\r\n switch (day % 10) {\r\n case 1: return 'st';\r\n case 2: return 'nd';\r\n case 3: return 'rd';\r\n default: return 'th';\r\n }\r\n }\r\n\r\n editEvent(data){\r\n this.dialogService.open({viewModel:Openevent,model:data})\r\n .whenClosed((feedback) => {\r\n if(!feedback.wasCancelled){\r\n //this.refreshGrids();\r\n this.ChangeReqSuccessMessage = 'Change request submitted successfully';\r\n this.attendanceMessages = true;\r\n setTimeout(() => {this.attendanceMessages = null}, 3000);\r\n }else{\r\n //console.log('Controller is cancled');\r\n }\r\n });\r\n }\r\n \r\n}\r\n","import {inject} from 'aurelia-framework';\r\nimport { AttendanceService } from \"../../../shared/services/attendanceservice\";\r\nimport { JwtService } from \"../../../shared/services/jwtservice\";\r\nimport $ from 'jquery';\r\nimport slick from 'slick-carousel';\r\nimport { constants } from '../../../shared/services/constants';\r\nimport {LeavemanagementService} from \"../../../shared/services/leavemanagementservice\";\r\nimport { LoginService } from '../../../shared/services/loginservice';\r\nimport { DashboardService } from '../../../shared/services/dashboardservice';\r\nimport {Router} from 'aurelia-router';\r\n\r\n@inject(JwtService,AttendanceService,LeavemanagementService,LoginService,Router,DashboardService)\r\nexport class Myattendance {\r\n\r\n // year = 2023;\r\n // month = 7;\r\n FavoritesExist = false;\r\n sitemapId=constants.myattendancesitemapid;\r\n\r\n constructor(JwtService,AttendanceService,LeavemanagementService,LoginService,Router,DashboardService){\r\n this.jwtService = JwtService;\r\n this.attendanceService = AttendanceService;\r\n this.leavemanagementService=LeavemanagementService;\r\n this.router = Router;\r\n this.loginservice = LoginService;\r\n this.dashboardService = DashboardService;\r\n this.EmpId = this.jwtService.getEmployeeId();\r\n \r\n\r\n }\r\n\r\n monthMatcher = (a,b) => {\r\n return a.key === b.key\r\n };\r\n\r\n yearMatcher = (a,b) => {\r\n return a.Year === b.year\r\n }\r\n\r\n getCurrentRouteURL() {\r\n const currentInstruction = this.router.currentInstruction;\r\n if (currentInstruction) {\r\n const routeURL = currentInstruction.fragment;\r\n const sidebarListItem = document.querySelector('.sidebar ul li.attendance');\r\n if (sidebarListItem) {\r\n const subActiveItems = document.querySelectorAll('.sidebar ul li.sub-active');\r\n subActiveItems.forEach(item => item.classList.remove('sub-active'));\r\n const activeLinkItems = document.querySelectorAll('.sidebar ul li.active-link');\r\n activeLinkItems.forEach(item => item.classList.remove('active-link'));\r\n sidebarListItem.classList.add('sub-active');\r\n }\r\n const sidebarLink = document.querySelector('.sidebar ul li.attendance .sidebar-sub .Myattendancesummary a');\r\n if (sidebarLink) {\r\n sidebarLink.classList.add('active-link');\r\n }\r\n return routeURL;\r\n }\r\n return '';\r\n }\r\n\r\n attached() {\r\n \r\n this.getCurrentRouteURL();\r\n\r\n this.dashboardService.GetServerCurrentDate(this.EmpId).then(data => {\r\n const apiDatetimeStr = data.CurrentDate;\r\n const apiDatetime = new Date(apiDatetimeStr);\r\n const day = apiDatetime.getDate().toString().padStart(2, \"0\");\r\n this.serverMonth = (apiDatetime.getMonth() + 1).toString();\r\n this.serverYear = apiDatetime.getFullYear().toString();\r\n this.year = this.year ? this.year : this.serverYear;\r\n this.month = this.month ? this.month : this.serverMonth;\r\n \r\n this.attendanceService.GetAttendanceMonth().then(data=> { \r\n this.attendanceMonths= data;\r\n this.monthOptions = Object.entries(this.attendanceMonths).map(([key, value]) => ({ value, key }));\r\n }) \r\n \r\n this.attendanceService.GetAttendanceYear().then(data=> { this.attendanceYears= data;\r\n this.yearOptions = Object.entries(this.attendanceYears).map(([key, value]) => ({ value, key }));\r\n }) \r\n \r\n this.attendanceService.GetAttendanceSummary(this.EmpId,this.month,this.year).then(data=> { \r\n this.summaryData= data;\r\n this.workedDays = this.summaryData.WorkedDays;\r\n this.workedHours = this.summaryData.WorkedHours;\r\n this.approvedShifts = this.summaryData.ApproveWorkedHours;\r\n })\r\n\r\n })\r\n setTimeout(() => {\r\n $('.attendance-slick').slick({\r\n dots: false,\r\n infinite: false,\r\n arrows: false,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 1366,\r\n settings: {\r\n slidesToShow: 3,\r\n }\r\n },\r\n {\r\n breakpoint: 1280,\r\n settings: {\r\n arrows: false,\r\n slidesToShow: 3,\r\n }\r\n },\r\n {\r\n breakpoint: 666,\r\n settings: {\r\n slidesToShow: 1,\r\n centerMode: true,\r\n centerPadding:'50px',\r\n }\r\n }\r\n ]\r\n });\r\n }, 1000);\r\n\r\n this.leavemanagementService.GetPersonFavoriteItems(this.EmpId,this.sitemapId)\r\n .then(data=>{\r\n this.FavoritesExist=data;\r\n //console.log(data);\r\n });\r\n \r\n this.addToRecentItems();\r\n\r\n }\r\n\r\n GetSummaryData(month,year){\r\n this.attendanceService.GetAttendanceSummary(this.EmpId,month,year)\r\n .then(data => {\r\n this.summaryData = data;\r\n this.workedDays = this.summaryData.WorkedDays;\r\n this.workedHours = this.summaryData.WorkedHours;\r\n this.approvedShifts = this.summaryData.ApproveWorkedHours;\r\n })\r\n \r\n }\r\n\r\n calenderMonthConfig(data){\r\n this.month = data.key;\r\n this.GetSummaryData(this.month,this.year);\r\n }\r\n calenderYearConfig(data){\r\n this.year = data.value.Year;\r\n this.GetSummaryData(this.month,this.year);\r\n }\r\n\r\n addToFavourites(){\r\n this.leavemanagementService.AddToFavourites(this.EmpId,this.sitemapId).then(data=>\r\n {\r\n //this.attached();\r\n window.location.reload();\r\n });\r\n\r\n }\r\n \r\n addToRecentItems(){ \r\n this.leavemanagementService.AddToRecentItems(this.EmpId,this.sitemapId).then(data=>\r\n {\r\n // window.location.reload();\r\n\r\n });\r\n}\r\n\r\n}\r\n","import {inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport 'flatpickr/dist/flatpickr.min.css';\r\nimport * as flatpickr from 'flatpickr';\r\nimport { AttendanceService } from '../../../shared/services/attendanceservice';\r\nimport { JwtService } from '../../../shared/services/jwtservice';\r\n\r\n@inject(DialogController,AttendanceService,JwtService)\r\nexport class Openevent {\r\n isDragging = false;\r\n dialog;\r\n static inject = [Element];\r\n timePickerInstance;\r\n outtimePickerInstance;\r\n inputRef;\r\n uploadedFiles = [];\r\n timeLabel = 'In Time';\r\n changedMode = 'true';\r\n selectedMode = '1';\r\n pageSize = 5;\r\n ErrorMessageShow=false;\r\n isSubmitting = false;\r\n\r\n trackingModes = [\r\n {key: '1', value: 'In'},\r\n {key: '2', value: 'Out'}\r\n ];\r\n\r\n timePickerOptions = {\r\n enableTime: true, // Enable time for the time picker\r\n noCalendar: true, // Disable the calendar for the time picker\r\n dateFormat: 'H:i K',\r\n closeOnSelect: true,\r\n };\r\n\r\n constructor(DialogController,AttendanceService,JwtService) {\r\n this.controller = DialogController;\r\n this.attendanceService = AttendanceService;\r\n this.jwtService = JwtService;\r\n\r\n this.EmpID = this.jwtService.getEmployeeId();\r\n }\r\n\r\n activate(data) {\r\n this.reqData = data;\r\n this.Indate = data.Date;\r\n this.totalDuration = data.TotalDuration;\r\n this.punchIn = data.InTime;\r\n this.punchOut = data.OutTime;\r\n this.InDateTime = this.Indate + ' ' + this.punchIn;\r\n this.OutDateTime = this.Indate + ' ' + this.punchOut;\r\n }\r\n\r\n attached() {\r\n this.attendanceService.GetAttendanceDetailsMobile(this.EmpID,this.Indate).then(data =>{\r\n this.editData = data;\r\n });\r\n this.attendanceService.ChangeRequestGrid(this.EmpID,this.Indate).then(data => {\r\n this.pendingReqData = data;\r\n })\r\n this.fileValidator();\r\n this.InTimepicker();\r\n this.OutTimePicker();\r\n }\r\n\r\n selectMode(mode){\r\n this.currentMode = mode;\r\n if(mode == '1'){\r\n this.timeLabel = \"In Time\";\r\n this.changedMode = 'true';\r\n }else if(mode == '2'){\r\n this.timeLabel = \"Out Time\";\r\n this.changedMode = 'false';\r\n }\r\n }\r\n\r\n InTimepicker() {\r\n this.timePickerOptions = {\r\n enableTime: true,\r\n noCalendar: true,\r\n //dateFormat: 'H:i',\r\n dateFormat: 'h:i K', \r\n defaultDate: this.punchIn,\r\n time_24hr: false,\r\n hour12: true,\r\n onValueUpdate: (selectedDates, dateStr, instance) => {\r\n // Use onValueUpdate to capture changes when manually entering time\r\n this.timeValue = this.Indate + ' ' + dateStr;\r\n },\r\n }; \r\n this.timePickerInstance = flatpickr.default(this.inputRef, this.timePickerOptions);\r\n }\r\n\r\n OutTimePicker() {\r\n this.outtimePickerOptions = {\r\n enableTime: true,\r\n noCalendar: true,\r\n dateFormat: 'h:i K', // 12-hour format with AM/PM\r\n defaultDate: this.punchOut,\r\n time_24hr: false,\r\n hour12: true,\r\n onValueUpdate: (selectedDates, dateStr, instance) => {\r\n // Use onValueUpdate to capture changes when manually entering time\r\n this.outtimeValue = this.Indate + ' ' + dateStr;\r\n },\r\n };\r\n \r\n this.outtimePickerInstance = flatpickr.default(this.outinputRef, this.outtimePickerOptions);\r\n }\r\n \r\n\r\n getDefaultDateTime() {\r\n const currentDate = this.datePickerInstance.input.value;\r\n return `${currentDate} ${this.defaultIn}`;\r\n }\r\n\r\n modeMatcher = (a,b) => {\r\n return a.key == b.key;\r\n }\r\n\r\n unbind() {\r\n if (this.timePickerInstance) {\r\n this.timePickerInstance.destroy();\r\n }\r\n }\r\n \r\n unbindOut() {\r\n if (this.outtimePickerInstance) {\r\n this.outtimePickerInstance.destroy();\r\n }\r\n }\r\n \r\n\r\n openTimePicker() {\r\n this.timePickerInstance.open();\r\n }\r\n\r\n openOutTimePicker() {\r\n if (this.outtimePickerInstance) {\r\n this.outtimePickerInstance.open();\r\n }\r\n }\r\n\r\n\r\n openFileDialog() {\r\n document.getElementById('attachments').click();\r\n }\r\n\r\n fileValidator(){\r\n const fileInput = document.querySelector('input[type=\"file\"]');\r\n const allowedTypes = ['image/jpeg', 'image/png','application/msword','application/pdf'];\r\n fileInput.addEventListener('change', (event) => {\r\n const file = event.target.files[0];\r\n const fileType = file.type;\r\n if (!allowedTypes.includes(fileType)) {\r\n this.fileMessage=\"Only JPEG, PNG, PDF and DOC files are allowed.\";\r\n this.fileValidatorRule = true;\r\n } else {\r\n this.fileMessage=null;\r\n this.fileValidatorRule = false;\r\n }\r\n });\r\n }\r\n\r\n handleFileSelect(files) {\r\n const file = files[0];\r\n this.file = file;\r\n const allowedFormats = ['.jpg', '.png', '.doc', '.pdf'];\r\n const fileExtension = file.name.substring(file.name.lastIndexOf('.')).toLowerCase();\r\n if (allowedFormats.includes(fileExtension)) {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n this.documentFileName = file.name;\r\n reader.onload = () => {\r\n this.file = reader.result;\r\n };\r\n };\r\n reader.readAsDataURL(file);\r\n } else {\r\n // Handle invalid file format here (e.g., display an error message)\r\n // console.log('Invalid file format:', file.name);\r\n this.uploadErrors = [{ error: { message: '' } }];\r\n \r\n }\r\n}\r\n\r\nopenFileDialog() {\r\n document.getElementById('attachments').click();\r\n}\r\n\r\nremoveFile() {\r\n this.file = null;\r\n this.documentFileName = '';\r\n const fileInput = document.getElementById('attachments');\r\n if (fileInput) {\r\n fileInput.value = ''; // Clear the file input value\r\n }\r\n}\r\n Submit(){\r\n this.isSubmitting = true;\r\n const attendanceData = {\r\n InOutIND : this.changedMode,\r\n InTime : this.timeValue ? this.timeValue : this.InDateTime,\r\n OutTime : this.outtimeValue ? this.outtimeValue : this.OutDateTime,\r\n EmployeeID : this.EmpID,\r\n DocumentPath : this.file,\r\n DocumentName : this.documentFileName,\r\n Comments : this.comments,\r\n PunchInDate :this.Indate \r\n };\r\n this.attendanceService.ValidateAttendance(attendanceData)\r\n .then(data => {\r\n this.ErrorMessageShow = true;\r\n this.message = data;\r\n if(!data){\r\n this.attendanceService.AttentendencesWorkflowApproverExist(this.EmpID).then(response => {\r\n if(response === false){\r\n this.ErrorMessageShow = true;\r\n this.message = \"Approvers are not configured, please contact admin.\";\r\n }else{\r\n this.ErrorMessageShow = false;\r\n this.attendanceService.SaveAttendanceData(attendanceData).then(() => {\r\n this.controller.ok(true);\r\n })\r\n } \r\n })\r\n }\r\n });\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n startDragging(event) {\r\n if (event.button === 0) {\r\n this.isDragging = true;\r\n this.offsetX = event.clientX - this.dialogElement.getBoundingClientRect().left;\r\n this.offsetY = event.clientY - this.dialogElement.getBoundingClientRect().top;\r\n\r\n window.addEventListener('mousemove', this.drag);\r\n window.addEventListener('mouseup', this.stopDragging);\r\n }\r\n }\r\n\r\n drag = (event) => {\r\n if (this.isDragging) {\r\n const x = event.clientX - this.offsetX;\r\n const y = event.clientY - this.offsetY;\r\n\r\n this.dialogElement.style.left = `${x}px`;\r\n this.dialogElement.style.top = `${y}px`;\r\n }\r\n }\r\n\r\n stopDragging = () => {\r\n this.isDragging = false;\r\n window.removeEventListener('mousemove', this.drag);\r\n window.removeEventListener('mouseup', this.stopDragging);\r\n }\r\n}\r\n","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../images/leaveadmin-banner.jpg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../../images/loader.gif\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../images/leaveadmin-banner.jpg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../../images/loader.gif\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/leave-calendar-days.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/loader.gif\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/attendancetracking.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../../../images/favourite.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_2___ = new URL(\"../../../../images/leave-calendar-days.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_3___ = new URL(\"../../../../images/loader.gif\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar ___HTML_LOADER_REPLACEMENT_2___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_2___);\nvar ___HTML_LOADER_REPLACEMENT_3___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_3___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../../images/loader.gif\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../images/loader.gif\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../../images/attendancetracking.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_2___ = new URL(\"../../../images/favourite.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_3___ = new URL(\"../../../images/attendancetracking-icon1.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_4___ = new URL(\"../../../images/attendancetracking-icon2.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_5___ = new URL(\"../../../images/attendancetracking-icon3.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar ___HTML_LOADER_REPLACEMENT_2___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_2___);\nvar ___HTML_LOADER_REPLACEMENT_3___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_3___);\nvar ___HTML_LOADER_REPLACEMENT_4___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_4___);\nvar ___HTML_LOADER_REPLACEMENT_5___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_5___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../../images/clock.svg\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar code = \"\\r\\n \";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}