2024-01-25 15:46:50 +05:30
|
|
|
{% load static %} {% load basefilters %} {% load recruitmentfilters %} {% load employee_filter %} {% load i18n %} {% load tz %} {% now "Y-m-d" as current_date %}
|
2023-05-10 15:06:57 +05:30
|
|
|
<div id="mainNav"></div>
|
|
|
|
|
<!-- End of Navigation -->
|
|
|
|
|
<style>
|
2023-08-22 13:56:22 +05:30
|
|
|
.oh-card-dashboard--moveable {
|
2023-05-10 15:06:57 +05:30
|
|
|
padding: 0 10px 20px 10px;
|
|
|
|
|
}
|
2023-10-13 16:28:17 +05:30
|
|
|
.oh-card-dashboard:not(.tile) {
|
2023-09-25 15:57:17 +05:30
|
|
|
cursor: default;
|
2023-11-06 12:15:41 +05:30
|
|
|
min-height: 425px;
|
2023-11-13 12:29:11 +05:30
|
|
|
}
|
|
|
|
|
.oh-dashboard__movable-cards {
|
2023-10-13 16:28:17 +05:30
|
|
|
padding-right: 0;
|
2023-11-13 12:29:11 +05:30
|
|
|
}
|
|
|
|
|
.oh-card-dashboard--moveable {
|
2023-10-13 16:28:17 +05:30
|
|
|
padding-right: 0;
|
|
|
|
|
padding-bottom: 10px;
|
2023-09-25 15:57:17 +05:30
|
|
|
}
|
2023-11-27 22:07:16 +05:30
|
|
|
.progress {
|
|
|
|
|
height: 20px;
|
|
|
|
|
width: 110px;
|
|
|
|
|
background-color: lightgrey;
|
|
|
|
|
border:2px solid #27C20C;
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
.progress-bar {
|
|
|
|
|
height: 100%;
|
|
|
|
|
background-color: #27C20C; /* Set your desired progress bar color */
|
|
|
|
|
}
|
|
|
|
|
.progress-text {
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
2024-01-15 11:47:25 +05:30
|
|
|
.oh-modal_close--custom {
|
|
|
|
|
border: none;
|
|
|
|
|
background: none;
|
|
|
|
|
font-size: 1.5rem;
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 25px;
|
|
|
|
|
right: 15px;
|
|
|
|
|
}
|
2024-01-22 19:16:08 +05:30
|
|
|
|
|
|
|
|
.container-heading {
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
padding:10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.oh-kanban-card__title {
|
|
|
|
|
display: block;
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
padding: 10px;
|
|
|
|
|
border:1px solid hsl(150deg 100% 15% / 52%);
|
|
|
|
|
border-radius: 18px;
|
|
|
|
|
margin-right:10px;
|
|
|
|
|
background-color:hsl(138.46deg 100% 74.19% / 33%);
|
|
|
|
|
}
|
2024-01-25 15:46:50 +05:30
|
|
|
|
|
|
|
|
.announcement_title{
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
padding: 8px;
|
|
|
|
|
margin-right:10px;
|
|
|
|
|
text-decoration:none;
|
|
|
|
|
}
|
2023-05-10 15:06:57 +05:30
|
|
|
</style>
|
|
|
|
|
<main>
|
|
|
|
|
<div class="oh-wrapper">
|
2023-11-13 12:29:11 +05:30
|
|
|
<!-- back button -->
|
|
|
|
|
<div class="d-none mt-5" id="back_button" style="width: 10%">
|
|
|
|
|
<a
|
|
|
|
|
href="{% url 'home-page' %}"
|
|
|
|
|
class="oh-btn oh-btn--secondary oh-btn--shadow ms-3"
|
|
|
|
|
>
|
|
|
|
|
<ion-icon
|
|
|
|
|
class="me-2 md hydrated"
|
|
|
|
|
name="arrow-back-outline"
|
|
|
|
|
role="img"
|
|
|
|
|
aria-label="arrow-back-outline"
|
|
|
|
|
></ion-icon
|
|
|
|
|
>{% trans "Back" %}</a
|
|
|
|
|
>
|
|
|
|
|
</div>
|
2023-10-18 11:02:41 +05:30
|
|
|
<!-- end of back button -->
|
2024-01-12 21:24:01 +05:30
|
|
|
<div class="oh-dashboard row" id="dashboard" style="padding-bottom: 3.5rem;">
|
2023-10-13 14:34:52 +05:30
|
|
|
<div class="oh-dashboard__left col-12 col-sm-12 col-md-12 col-lg-9">
|
2023-05-10 15:06:57 +05:30
|
|
|
<div class="oh-dashboard__cards row">
|
2023-10-13 14:34:52 +05:30
|
|
|
{% if perms.employee.view_employee %}
|
2023-05-10 15:06:57 +05:30
|
|
|
<div class="col-12 col-sm-12 col-md-6 col-lg-4">
|
2023-10-13 16:28:17 +05:30
|
|
|
<div class="oh-card-dashboard oh-card-dashboard--success tile">
|
2023-10-13 14:34:52 +05:30
|
|
|
<a
|
|
|
|
|
href="{% url 'candidate-view' %}?joining_date={{current_date}}"
|
|
|
|
|
style="text-decoration: none"
|
|
|
|
|
>
|
2023-10-02 01:46:59 +05:30
|
|
|
<div class="oh-card-dashboard__header">
|
2023-10-13 14:34:52 +05:30
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "New Joining Today" %}</span
|
|
|
|
|
>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
2023-10-02 01:46:59 +05:30
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<div class="oh-card-dashboard__counts">
|
2023-10-13 14:34:52 +05:30
|
|
|
<span
|
|
|
|
|
class="oh-card-dashboard__count"
|
|
|
|
|
id="newbieToday"
|
|
|
|
|
></span>
|
2023-10-02 01:46:59 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-12 col-sm-12 col-md-6 col-lg-4">
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
2023-10-13 16:28:17 +05:30
|
|
|
class="oh-card-dashboard oh-card-dashboard oh-card-dashboard--warning tile"
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
<a
|
|
|
|
|
href="{% url 'candidate-view' %}?scheduled_from={{first_day_of_week}}&scheduled_till={{last_day_of_week}}"
|
|
|
|
|
style="text-decoration: none"
|
|
|
|
|
>
|
2023-10-02 01:46:59 +05:30
|
|
|
<div class="oh-card-dashboard__header">
|
2023-10-13 14:34:52 +05:30
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "New Joining This Week" %}</span
|
|
|
|
|
>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
2023-10-02 01:46:59 +05:30
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<div class="oh-card-dashboard__counts">
|
2024-02-13 13:59:37 +05:30
|
|
|
<span class="oh-card-dashboard__count" id="newbie"></span>
|
2023-10-02 01:46:59 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-12 col-sm-12 col-md-6 col-lg-4">
|
2023-10-13 14:34:52 +05:30
|
|
|
<a href="{% url 'employee-view' %}" style="text-decoration: none">
|
2023-10-13 16:28:17 +05:30
|
|
|
<div class="oh-card-dashboard oh-card-dashboard--neutral tile">
|
2023-10-02 01:46:59 +05:30
|
|
|
<div class="oh-card-dashboard__header">
|
2023-10-13 14:34:52 +05:30
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Total Strength" %}</span
|
|
|
|
|
>
|
2023-10-02 01:46:59 +05:30
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<div class="oh-card-dashboard__counts">
|
2023-10-13 14:34:52 +05:30
|
|
|
<span
|
|
|
|
|
class="oh-card-dashboard__count"
|
|
|
|
|
id="totalEmployeesCount"
|
2024-02-13 13:59:37 +05:30
|
|
|
></span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
2023-10-02 01:46:59 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-02 01:46:59 +05:30
|
|
|
</a>
|
2023-08-22 13:56:22 +05:30
|
|
|
</div>
|
2023-08-01 16:49:53 +05:30
|
|
|
{% endif %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div class="oh-dashboard__movable-cards row mt-4" id="tileContainer">
|
2024-01-01 19:05:10 +05:30
|
|
|
{% if perms.candidate.view_employee or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
2024-01-12 21:24:01 +05:30
|
|
|
id="notInYetId"
|
2024-01-01 19:05:10 +05:30
|
|
|
hx-get="{% url "not-in-yet" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
>
|
|
|
|
|
{% include "dashboard/not_in_yet.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% if perms.candidate.view_employee or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="notoutYetdd"
|
|
|
|
|
hx-get="{% url "not-out-yet" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
>
|
|
|
|
|
{% include "dashboard/not_out_yet.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
2023-10-24 19:14:17 +05:30
|
|
|
{% if perms.leave.veiw_leaverequest %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable1"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Overall Leave" %}</span
|
|
|
|
|
>
|
|
|
|
|
<select
|
|
|
|
|
class="oh-select oh-select--sm float-end"
|
|
|
|
|
name=""
|
|
|
|
|
id="overAllLeaveSelect"
|
|
|
|
|
>
|
|
|
|
|
<option value="today" selected>{% trans "Today" %}</option>
|
|
|
|
|
<option value="week">{% trans "This Week" %}</option>
|
|
|
|
|
<option value="month">{% trans "This Month" %}</option>
|
|
|
|
|
<option value="year">{% trans "This Year" %}</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas id="overAllLeave" style="cursor: pointer"></canvas>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if perms.candidate.view_candidate or request.user|is_stagemanager %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable2"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Hired Candidates" %}</span
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas id="hiredCandidate" style="cursor: pointer"></canvas>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable3"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-06 13:39:25 +05:30
|
|
|
>{% trans "Candidates Started Onboarding" %}</span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas
|
|
|
|
|
id="onboardCandidate"
|
|
|
|
|
style="cursor: pointer"
|
|
|
|
|
></canvas>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if request.user|is_stagemanager or perms.recruitment.view_recruitment %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable8"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-06 13:39:25 +05:30
|
|
|
>{% trans "Recruitment Analytics" %}</span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas
|
|
|
|
|
id="recruitmentChart1"
|
|
|
|
|
style="cursor: pointer"
|
|
|
|
|
></canvas>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if request.user|is_reportingmanager or perms.attendance.view_attendance %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable4"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
id="attendance_header"
|
|
|
|
|
>
|
2023-11-13 12:29:11 +05:30
|
|
|
<div class="oh-card-dashboard__title mb-2">
|
2024-02-06 13:39:25 +05:30
|
|
|
{% trans "Attendance Analytics" %}
|
2023-11-13 12:29:11 +05:30
|
|
|
</div>
|
|
|
|
|
<div class="d-flex justify-content-between mb-2">
|
|
|
|
|
<select
|
|
|
|
|
id="type"
|
|
|
|
|
class="oh-select"
|
|
|
|
|
name="type"
|
|
|
|
|
onchange="changeView(this)"
|
|
|
|
|
style="width: 150px; padding: 3px; color: #5e5c5c"
|
|
|
|
|
>
|
2024-03-01 10:30:03 +05:30
|
|
|
<option value="day">{% trans "Day" %}</option>
|
|
|
|
|
<option value="weekly">{% trans "Weekly" %}</option>
|
|
|
|
|
<option value="monthly">{% trans "Monthly" %}</option>
|
|
|
|
|
<option value="date_range">{% trans "Date range" %}</option>
|
2023-11-13 12:29:11 +05:30
|
|
|
</select>
|
|
|
|
|
<span id="day_input">
|
|
|
|
|
<input
|
|
|
|
|
type="date"
|
|
|
|
|
class="mb-2 float-end pointer oh-select"
|
|
|
|
|
id="attendance_month"
|
|
|
|
|
onchange="changeMonth()"
|
|
|
|
|
style="width: 100px; color: #5e5c5c"
|
|
|
|
|
/>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas id="dailyAnalytic" style="cursor: pointer"></canvas>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %} {% if request.user|is_reportingmanager or perms.attendance.view_attendance %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable"
|
|
|
|
|
id="pendingHours"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
id="pendingHoursHeader"
|
2023-10-17 10:04:53 +05:30
|
|
|
>
|
2023-11-13 12:29:11 +05:30
|
|
|
<div class="oh-card-dashboard__title mb-2">
|
|
|
|
|
{% trans "Hours Chart" %}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="d-flex justify-content-between mb-2">
|
2023-10-13 16:28:17 +05:30
|
|
|
<input
|
2023-11-13 12:29:11 +05:30
|
|
|
type="month"
|
2023-10-13 16:28:17 +05:30
|
|
|
class="mb-2 float-end pointer oh-select"
|
2023-11-13 12:29:11 +05:30
|
|
|
id="hourAccountMonth"
|
|
|
|
|
onchange="dynamicMonth($(this))"
|
|
|
|
|
style="width: 100px; color: #5e5c5c"
|
2023-10-13 16:28:17 +05:30
|
|
|
/>
|
2023-11-06 12:15:41 +05:30
|
|
|
</div>
|
2024-01-12 21:24:01 +05:30
|
|
|
<div class="oh-card-dashboard__body" style="height:300px">
|
2023-11-13 12:29:11 +05:30
|
|
|
<canvas
|
|
|
|
|
id="pendingHoursCanvas"
|
|
|
|
|
style="cursor: pointer"
|
|
|
|
|
></canvas>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-29 11:16:18 +05:30
|
|
|
{% endif %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable5"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Employees Chart" %}</span
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
2023-11-13 12:29:11 +05:30
|
|
|
<canvas id="totalEmployees" style="cursor: pointer"></canvas>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable6"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Department Chart" %}</span
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
2023-11-13 12:29:11 +05:30
|
|
|
<canvas id="departmentChart" style="cursor: pointer"></canvas>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable7"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
|
|
|
|
>{% trans "Gender Chart" %}</span
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas id="genderChart" style="cursor: pointer"></canvas>
|
|
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-11-29 11:16:18 +05:30
|
|
|
{% if perms.pms.view_employeeobjective or request.user|is_reportingmanager %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable9"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-06 13:39:25 +05:30
|
|
|
>{% trans "Objective Status" %}</span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
2023-11-13 12:29:11 +05:30
|
|
|
<canvas id="objectiveChart" style="cursor: pointer"></canvas>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if perms.pms.view_employeekeyresult or request.user|is_reportingmanager %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
|
|
|
|
id="movable10"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-06 13:39:25 +05:30
|
|
|
>{% trans "Key Result Status" %}</span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
2023-11-13 12:29:11 +05:30
|
|
|
<canvas id="keyResultChart" style="cursor: pointer"></canvas>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if perms.pms.view_feedback or request.user|is_reportingmanager %}
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
2023-10-13 16:28:17 +05:30
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-4 oh-card-dashboard--moveable"
|
2023-10-13 14:34:52 +05:30
|
|
|
id="movable11"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2023-11-13 12:29:11 +05:30
|
|
|
>{% trans "Feedback Status" %}</span
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
2023-10-13 16:28:17 +05:30
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<canvas id="feedbackChart" style="cursor: pointer"></canvas>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
</div>
|
2023-08-01 16:49:53 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
{% endif %}
|
2024-01-12 21:24:01 +05:30
|
|
|
|
|
|
|
|
{% if perms.base.change_shiftrequest or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="shiftRequestApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-03 14:10:41 +05:30
|
|
|
>{% trans "Shift Requests To Approve" %}</span
|
2024-01-12 21:24:01 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="shiftRequestApproveBody"
|
|
|
|
|
hx-get="{% url "dashboard-shift-request" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/shift_request.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2024-01-15 11:47:25 +05:30
|
|
|
{% if perms.base.change_worktyperequest or request.user|is_reportingmanager %}
|
2024-01-12 21:24:01 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="WorkTypeRequestApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-03 14:10:41 +05:30
|
|
|
>{% trans "Work Type Requests To Approve" %}</span
|
2024-01-12 21:24:01 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="WorkTypeRequestApproveBody"
|
|
|
|
|
hx-get="{% url "dashboard-work-type-request" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/work_type_request.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2024-01-15 11:47:25 +05:30
|
|
|
{% if perms.attendance.change_attendance or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="OTApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
2024-02-07 17:25:01 +05:30
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
hx-get="{% url "dashboard-overtime-approve" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:425px"
|
|
|
|
|
id="OTApproveTarget"
|
2024-01-15 11:47:25 +05:30
|
|
|
>
|
2024-02-07 17:25:01 +05:30
|
|
|
{% include "request_and_approve/overtime_approve.html" %}
|
2024-01-15 11:47:25 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% if perms.attendance.change_attendance or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="AttendanceValidate"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
hx-get="{% url "dashboard-attendance-validate" %}"
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
id="AttendanceValidateTarget"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/attendance_validate.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2024-01-16 14:25:06 +05:30
|
|
|
{% if perms.leave.change_leaverequest or request.user|is_reportingmanager %}
|
2024-01-16 11:35:45 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="LeaveApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-06 13:39:25 +05:30
|
|
|
>{% trans "Leave Requests To Approve" %}</span
|
2024-01-16 11:35:45 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="LeaveApproveBody"
|
|
|
|
|
hx-get='{% url "leave-request-and-approve" %}'
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2024-01-16 14:25:06 +05:30
|
|
|
{% if perms.leave.change_leaveallocationrequest or request.user|is_reportingmanager %}
|
2024-01-16 11:35:45 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="LeaveAllocationApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-05 11:53:14 +05:30
|
|
|
>{% trans "Leave Allocation Request To Approve" %}</span
|
2024-01-16 11:35:45 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="LeaveAllocationApproveBody"
|
|
|
|
|
hx-get='{% url "leave-allocation-approve" %}'
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/leave_request_approve.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2024-01-16 14:25:06 +05:30
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="feedbackAnswer"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-03 14:10:41 +05:30
|
|
|
>{% trans "Feedback Answers" %}</span
|
2024-01-16 14:25:06 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="feedbackAnswerBody"
|
|
|
|
|
hx-get='{% url "dashboard-feedback-answer" %}'
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/feedback_answer.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% if perms.asset.change_assetrequest or request.user|is_reportingmanager %}
|
|
|
|
|
<div
|
|
|
|
|
class="col-12 col-sm-12 col-md-12 col-lg-6 oh-card-dashboard--moveable" id="assetRequestApprove"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent" style="height:425px"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
|
|
|
|
>
|
|
|
|
|
<span class="oh-card-dashboard__title"
|
2024-02-03 14:10:41 +05:30
|
|
|
>{% trans "Asset Requests To Approve" %}</span
|
2024-01-16 14:25:06 +05:30
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body"
|
|
|
|
|
id="assetRequestApproveBody"
|
|
|
|
|
hx-get='{% url "dashboard-asset-request-approve" %}'
|
|
|
|
|
hx-trigger="load"
|
|
|
|
|
style="height:80%"
|
|
|
|
|
>
|
|
|
|
|
{% include "request_and_approve/asset_requests_approve.html" %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-10-13 14:34:52 +05:30
|
|
|
<div class="oh-dashboard__right col-12 col-sm-12 col-md-12 col-lg-3">
|
2024-01-25 15:46:50 +05:30
|
|
|
<div class="oh-dashboard__events">
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
|
|
|
|
class="oh-dashbaord__events-reel w-100"
|
|
|
|
|
id="birthdayContainer"
|
|
|
|
|
></div>
|
2023-08-22 13:56:22 +05:30
|
|
|
<ul class="oh-dashboard__events-nav" id="birthdayDots">
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
2024-01-22 19:16:08 +05:30
|
|
|
|
2024-02-06 13:39:25 +05:30
|
|
|
<div class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent mb-3">
|
2024-02-16 16:45:58 +05:30
|
|
|
<div style="display: flex;align-items:center;justify-content:space-between;margin-right:20px">
|
2024-02-13 13:59:37 +05:30
|
|
|
<span class="oh-card-dashboard__title">{% trans "Announcements" %}</span>
|
2024-01-25 15:46:50 +05:30
|
|
|
{% if perms.base.add_announcement %}
|
|
|
|
|
<span>
|
2024-02-13 13:59:37 +05:30
|
|
|
<button style="display: inline-block;padding: 0px;
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
width: 50px;
|
|
|
|
|
height: 28px;"
|
|
|
|
|
class="oh-btn oh-btn--secondary-outline float-end ms-3" hx-get='{% url "create-announcement" %}'
|
|
|
|
|
hx-target="#createannouncementForm" hx-swap="innerHTML" data-toggle="oh-modal-toggle" data-target="#anouncementModal" title='{% trans "Create Announcement." %}'>
|
|
|
|
|
<ion-icon name="add-outline" class="m-0"></ion-icon>
|
2024-01-25 15:46:50 +05:30
|
|
|
</button>
|
|
|
|
|
</span>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
|
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<div class="oh-sticky-table" style="height:400px; border:none;">
|
|
|
|
|
<div class="oh-sticky-table__table oh-table--sortable">
|
|
|
|
|
<div class="oh-sticky-table__tbody">
|
|
|
|
|
|
2024-01-29 15:07:42 +05:30
|
|
|
{% if not announcement %}
|
2024-01-25 15:46:50 +05:30
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
2024-01-29 15:07:42 +05:30
|
|
|
<div class="oh-404" style="margin-top:130px;">
|
|
|
|
|
<h5 class="oh-404__subtitle">{% trans "No Announcements to show." %}</h5>
|
|
|
|
|
<img style="width: 80px;height: 80px;" src="{% static 'images/ui/no-announcement.svg' %}" class="oh-404__image" alt="Page not found. 404."/>
|
|
|
|
|
</div>
|
2024-01-25 15:46:50 +05:30
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{% else %}
|
|
|
|
|
|
|
|
|
|
{% for i in announcement %}
|
2024-01-29 15:07:42 +05:30
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
{% if i.expire_date|date:"Y-m-d" >= current_date or i.expire_date == None %}
|
|
|
|
|
<div class="announcement_title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#announcement"
|
|
|
|
|
hx-get="{% url 'announcement-single-view' i.id %}"
|
|
|
|
|
hx-target="#announcementModalBody"
|
|
|
|
|
onclick="closeNew(this)">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name={{i.title}}&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark fw-bold">
|
|
|
|
|
{{i.title}}
|
|
|
|
|
</span>
|
|
|
|
|
{% if i.created_on|date:"Y-m-d" == current_date and not i.has_viewed %}
|
|
|
|
|
<span class="oh-profile__info-value ms-2" id="newTab" style="background-color: hsl(8,77%,56%); color:white;
|
|
|
|
|
font-size: 0.7rem; padding: 3px 8px; border-radius: 15px; font-weight: 800; width:auto;"
|
|
|
|
|
>NEW</span>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</a>
|
2024-01-25 15:46:50 +05:30
|
|
|
</div>
|
2024-01-29 15:07:42 +05:30
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
2024-01-25 15:46:50 +05:30
|
|
|
{% endfor %}
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent mb-3 mt-2">
|
|
|
|
|
<div class="oh-card-dashboard__title mt-4 mb-3">{% trans "Quick Actions" %}</div> <hr>
|
|
|
|
|
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<div class="oh-sticky-table" style="height:400px; border:none;">
|
|
|
|
|
<div class="oh-sticky-table__table oh-table--sortable">
|
|
|
|
|
<div class="oh-sticky-table__tbody">
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#newAttendanceRequest"
|
|
|
|
|
hx-get="{% url 'request-new-attendance' %}"
|
|
|
|
|
hx-target="#newAttendanceRequestModalBody">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=A R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Attendance Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#requestCreateModal"
|
2024-02-14 15:03:05 +05:30
|
|
|
hx-get="{% url 'request-creation' %}"
|
2024-01-25 15:46:50 +05:30
|
|
|
hx-target="#requestCreateFormModal">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=L R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Leave Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#shiftRequestModal"
|
|
|
|
|
hx-get="{% url 'shift-request' %}?emp_id={{request.user.employee_get.id}}"
|
|
|
|
|
hx-target="#shiftRequestTargetModal">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=S R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Shift Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle='oh-modal-toggle' style="text-decoration:none;"
|
|
|
|
|
data-target='#workTypeRequestModal'
|
|
|
|
|
hx-get="{% url 'work-type-request' %}"
|
|
|
|
|
hx-target='#formBody'>
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=W R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Worktype Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" hx-get="{% url 'create-reimbursement' %}" style="text-decoration:none;"
|
|
|
|
|
hx-target="#reimbursementModalBody" data-toggle="oh-modal-toggle" data-target="#reimbursementModal">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=R R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Reimbursement Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#asset-request-allocation-modal"
|
|
|
|
|
hx-get="{%url 'asset-request-creation'%}"
|
|
|
|
|
hx-target="#asset-request-allocation-modal-target">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=A R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Asset Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
|
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
|
|
|
|
data-target="#createModal1"
|
|
|
|
|
hx-get="{% url 'ticket-create' %}"
|
|
|
|
|
hx-target="#createTarget">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=T C&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Ticket Creation" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
2023-10-13 14:34:52 +05:30
|
|
|
<div
|
2024-01-22 19:16:08 +05:30
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent mb-3"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
|
2023-10-13 14:34:52 +05:30
|
|
|
>
|
2024-01-22 19:16:08 +05:30
|
|
|
<span class="oh-card-dashboard__title">{% trans "On Leave" %}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-card-dashboard__body">
|
|
|
|
|
<ul class="oh-card-dashboard__user-list" id="leaveEmployee"></ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2024-01-25 15:46:50 +05:30
|
|
|
{% comment %} <div class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent mb-3 mt-2">
|
2024-01-22 19:16:08 +05:30
|
|
|
<div class="oh-card-dashboard__title mt-4 mb-3">{% trans "Quick Actions" %}</div> <hr>
|
|
|
|
|
|
2023-08-22 13:56:22 +05:30
|
|
|
<div class="oh-card-dashboard__body">
|
2024-01-22 19:16:08 +05:30
|
|
|
<div class="oh-sticky-table" style="height:400px; border:none;">
|
|
|
|
|
<div class="oh-sticky-table__table oh-table--sortable">
|
|
|
|
|
<div class="oh-sticky-table__tbody">
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target="#newAttendanceRequest"
|
|
|
|
|
hx-get="{% url 'request-new-attendance' %}"
|
|
|
|
|
hx-target="#newAttendanceRequestModalBody">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=A R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Attendance Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target="#requestCreateModal"
|
|
|
|
|
hx-get="{% url 'leave-request-create' %}"
|
|
|
|
|
hx-target="#requestCreateFormModal">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=L R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Leave Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target="#shiftRequestModal"
|
|
|
|
|
hx-get="{% url 'shift-request' %}?emp_id={{request.user.employee_get.id}}"
|
|
|
|
|
hx-target="#shiftRequestTargetModal">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=S R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Shift Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle='oh-modal-toggle' style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target='#workTypeRequestModal'
|
|
|
|
|
hx-get="{% url 'work-type-request' %}"
|
|
|
|
|
hx-target='#formBody'>
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=W R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Worktype Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" hx-get="{% url 'create-reimbursement' %}" style="text-decoration:none;"
|
|
|
|
|
hx-target="#reimbursementModalBody" data-toggle="oh-modal-toggle" data-target="#reimbursementModal">
|
2024-01-22 19:16:08 +05:30
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=R R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Reimbursement Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target="#asset-request-allocation-modal"
|
|
|
|
|
hx-get="{%url 'asset-request-creation'%}"
|
|
|
|
|
hx-target="#asset-request-allocation-modal-target">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=A R&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Asset Request" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-sticky-table__tr" draggable="true">
|
|
|
|
|
<div class="oh-kanban-card__title">
|
2024-01-25 15:46:50 +05:30
|
|
|
<a class="oh-profile oh-profile--md" data-toggle="oh-modal-toggle" style="text-decoration:none;"
|
2024-01-22 19:16:08 +05:30
|
|
|
data-target="#createModal1"
|
|
|
|
|
hx-get="{% url 'ticket-create' %}"
|
|
|
|
|
hx-target="#createTarget">
|
|
|
|
|
<div class="oh-profile__avatar mr-1">
|
|
|
|
|
<img src="https://ui-avatars.com/api/?name=T C&background=random" class="oh-profile__image" />
|
|
|
|
|
</div>
|
|
|
|
|
<span class="oh-profile__name oh-text--dark">
|
|
|
|
|
{% trans "Ticket Creation" %}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-08-22 13:56:22 +05:30
|
|
|
</div>
|
2024-01-25 15:46:50 +05:30
|
|
|
</div> {% endcomment %}
|
|
|
|
|
|
2023-11-29 11:16:18 +05:30
|
|
|
{% if perms.leave.view_leaverequest or request.user|is_reportingmanager%}
|
2023-11-27 22:07:16 +05:30
|
|
|
<div
|
|
|
|
|
class="oh-card-dashboard oh-card-dashboard--no-scale oh-card-dashboard--transparent"
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
<div class="oh-card-dashboard__header oh-card-dashboard__header--divider">
|
|
|
|
|
<span class="oh-card-dashboard__title">{% trans "Employee Work Information" %}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Search bar -->
|
|
|
|
|
<div class="oh-search-bar mb-3">
|
|
|
|
|
<input type="text" id="employeeSearch" placeholder="Search Employee">
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="oh-table" style="max-height: 425px; overflow-y: auto;">
|
|
|
|
|
<table>
|
|
|
|
|
<thead>
|
|
|
|
|
<tr>
|
|
|
|
|
<th style="font-weight:bold; font-size:15px; color:black;">{% trans "Employee" %}</th>
|
|
|
|
|
<!-- Add more table headers as needed -->
|
|
|
|
|
<th style="font-weight:bold; font-size:15px; color:black;">{% trans "Progress" %}</th>
|
|
|
|
|
</tr>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
{% for employee_info in employees_with_pending %}
|
|
|
|
|
<tr>
|
|
|
|
|
<td>
|
|
|
|
|
<a href="{% url 'employee-view-update' employee_info.employee.employee_id.id %}">
|
|
|
|
|
{{ employee_info.employee.employee_id }}</a>
|
|
|
|
|
</td>
|
|
|
|
|
<td style="position: relative;">
|
|
|
|
|
<a href="{% url 'employee-view-update' employee_info.employee.employee_id.id %}">
|
|
|
|
|
<div class="progress">
|
|
|
|
|
<div class="progress-bar" role="progressbar" style="width: {{ employee_info.completed_field_count }}%;"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="progress-text">{{ employee_info.completed_field_count }}% {% trans "Completed" %}</div>
|
|
|
|
|
</a>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
{% endfor %}
|
|
|
|
|
</tbody>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
2023-11-29 11:16:18 +05:30
|
|
|
{% endif %}
|
2023-11-27 22:07:16 +05:30
|
|
|
|
2023-08-22 13:56:22 +05:30
|
|
|
</div>
|
2023-05-10 15:06:57 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-01-02 15:11:31 +05:30
|
|
|
<div class="oh-modal" id="sendMailModal" role="dialog" aria-labelledby="sendMailModal" aria-hidden="true">
|
|
|
|
|
<div class="oh-modal__dialog">
|
|
|
|
|
<div class="oh-modal__dialog-header">
|
|
|
|
|
<span class="oh-modal__dialog-title" id="sendMailModalLabel"><h5>{% trans 'Send Mail' %}</h5></span>
|
|
|
|
|
<button class="oh-modal__close" aria-label="Close"><ion-icon name="close-outline"></ion-icon></button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-modal__dialog-body" id="mail-content"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-01-12 21:24:01 +05:30
|
|
|
|
|
|
|
|
<div
|
2024-01-15 11:47:25 +05:30
|
|
|
class="oh-modal"
|
|
|
|
|
id="smallModal"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="smallModal"
|
|
|
|
|
aria-hidden="true"
|
2024-01-12 21:24:01 +05:30
|
|
|
>
|
2024-01-15 11:47:25 +05:30
|
|
|
<div class="oh-modal__dialog oh-modal__dialog--timeoff oh-timeoff-modal">
|
|
|
|
|
<div class="oh-modal__dialog-header">
|
|
|
|
|
<h2
|
|
|
|
|
class="oh-modal__dialog-title"
|
|
|
|
|
id=""
|
|
|
|
|
>
|
|
|
|
|
{% trans "Details" %}
|
|
|
|
|
</h2>
|
|
|
|
|
<button class="oh-modal__close" aria-label="Close">
|
|
|
|
|
<ion-icon name="close-outline"></ion-icon>
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
2024-01-16 14:25:06 +05:30
|
|
|
class="oh-modal__dialog-body oh-modal__dialog-relative oh-timeoff-modal__body"
|
2024-01-15 11:47:25 +05:30
|
|
|
id="smallModalTarget"
|
|
|
|
|
></div>
|
2024-01-16 11:35:45 +05:30
|
|
|
{% comment %} <div id="smallModalBody">
|
|
|
|
|
|
|
|
|
|
</div> {% endcomment %}
|
2024-01-12 21:24:01 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-01-15 11:47:25 +05:30
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
class="oh-modal"
|
|
|
|
|
id="bigModal"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="bigModal"
|
|
|
|
|
aria-hidden="true"
|
|
|
|
|
>
|
|
|
|
|
<div class="oh-modal__dialog">
|
|
|
|
|
<div class="oh-modal__dialog-header">
|
|
|
|
|
<h2
|
|
|
|
|
class="oh-modal__dialog-title"
|
|
|
|
|
id=""
|
|
|
|
|
>
|
|
|
|
|
{% trans "Details" %}
|
|
|
|
|
</h2>
|
|
|
|
|
<button class="oh-modal__close" aria-label="Close">
|
|
|
|
|
<ion-icon name="close-outline"></ion-icon>
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="oh-modal__dialog-body oh-modal__dialog-relative"
|
|
|
|
|
id="bigModalTarget"
|
|
|
|
|
></div>
|
|
|
|
|
</div>
|
2024-01-12 21:24:01 +05:30
|
|
|
</div>
|
2024-01-02 15:11:31 +05:30
|
|
|
|
2024-01-15 11:47:25 +05:30
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
class="oh-modal"
|
|
|
|
|
id="editModal"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="editModal"
|
|
|
|
|
aria-hidden="true"
|
|
|
|
|
>
|
|
|
|
|
<div class="oh-modal__dialog">
|
|
|
|
|
<div class="oh-modal__dialog-header">
|
|
|
|
|
<h2 class="oh-modal__dialog-title" id="editModalLabel">
|
|
|
|
|
{% trans "Add Asset Report" %}
|
|
|
|
|
</h2>
|
|
|
|
|
<button
|
|
|
|
|
type="button"
|
|
|
|
|
class="oh-modal_close--custom"
|
|
|
|
|
onclick="$('#editModal').removeClass('oh-modal--show');"
|
|
|
|
|
>
|
|
|
|
|
<ion-icon
|
|
|
|
|
name="close-outline"
|
|
|
|
|
role="img"
|
|
|
|
|
aria-label="close outline"
|
|
|
|
|
></ion-icon>
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="oh-modal__dialog-body" id="editModalForm"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2024-01-22 19:16:08 +05:30
|
|
|
{% include "quick_access.html" %}
|
2024-01-25 15:46:50 +05:30
|
|
|
{% include "announcement_single_view.html" %}
|
2024-01-22 19:16:08 +05:30
|
|
|
|
2024-01-15 11:47:25 +05:30
|
|
|
|
2023-05-10 15:06:57 +05:30
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
|
|
|
|
2023-11-29 11:16:18 +05:30
|
|
|
<script src="{% static 'dashboard/getBirthday.js' %}"></script>
|
|
|
|
|
<script src="{% static 'dashboard/onLeave.js' %}"></script>
|
|
|
|
|
<script src="{% static 'dashboard/employeeChart.js' %}"></script>
|
2023-05-10 15:06:57 +05:30
|
|
|
{% if perms.recruitment.view_recruitment or request.user|is_stagemanager %}
|
2023-11-29 11:16:18 +05:30
|
|
|
<script src="{% static 'dashboard/leaveChart.js' %}"></script>
|
2023-05-10 15:06:57 +05:30
|
|
|
<script src="{% static 'dashboard/recruitmentChart.js' %}"></script>
|
2023-11-13 12:29:11 +05:30
|
|
|
{% endif %} {% if perms.employee.view_employee or request.user|is_reportingmanager %}
|
|
|
|
|
{% endif %} {% if perms.employee.view_attendance or request.user|is_reportingmanager %}
|
2023-05-10 15:06:57 +05:30
|
|
|
<script src="{% static 'dashboard/attendanceChart.js' %}"></script>
|
|
|
|
|
<!-- onbaording dashboard -->
|
|
|
|
|
<script src="{% static 'dashboard/onboardChart.js' %}"></script>
|
|
|
|
|
|
2023-10-27 13:17:00 +05:30
|
|
|
<!-- PMS chart -->
|
2023-08-22 13:56:22 +05:30
|
|
|
<script src="{% static 'src/dashboard/pmsChart.js' %}"></script>
|
2023-11-29 11:16:18 +05:30
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
<!-- leave dashboard -->
|
2023-08-22 13:56:22 +05:30
|
|
|
<script>
|
2023-11-16 16:41:47 +05:30
|
|
|
function setDifference(setA, setB) {
|
|
|
|
|
if (setB.length > setA.length) {
|
|
|
|
|
temp = setA
|
|
|
|
|
setA = setB
|
|
|
|
|
setB = temp
|
|
|
|
|
}
|
|
|
|
|
return [...setA.filter(element => !setB.includes(element))];
|
|
|
|
|
}
|
2023-08-22 13:56:22 +05:30
|
|
|
$(document).ready(function () {
|
2023-11-16 16:41:47 +05:30
|
|
|
if (localStorage.getItem("tileOrder")) {
|
|
|
|
|
var tileOrder = []
|
|
|
|
|
$.each(
|
|
|
|
|
$(".oh-card-dashboard--moveable"),
|
|
|
|
|
function (indexInArray, valueOfElement) {
|
|
|
|
|
tileOrder.push($(valueOfElement).attr("id"));
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
var storedIds = JSON.parse(localStorage.getItem("tileOrder"))
|
|
|
|
|
var existingElements = $(".oh-card-dashboard--moveable[id]")
|
|
|
|
|
var existingElementsIds = [];
|
|
|
|
|
$.each(existingElements, function (indexInArray, valueOfElement) {
|
|
|
|
|
existingElementsIds.push($(this).attr("id"))
|
|
|
|
|
});
|
|
|
|
|
var newOrderIds = [...storedIds ,...setDifference(storedIds,existingElementsIds)]
|
|
|
|
|
if (storedIds.length != existingElementsIds.length) {
|
|
|
|
|
localStorage.setItem("tileOrder",JSON.stringify(newOrderIds))
|
2023-11-13 12:29:11 +05:30
|
|
|
}
|
2023-11-16 16:41:47 +05:30
|
|
|
|
2024-01-31 16:26:05 +05:30
|
|
|
}else{
|
|
|
|
|
localStorage.setItem("tileOrder",JSON.stringify(
|
|
|
|
|
[
|
|
|
|
|
"notInYetId","LeaveApprove","shiftRequestApprove","WorkTypeRequestApprove","AttendanceValidate","OTApprove",
|
|
|
|
|
"LeaveAllocationApprove","feedbackAnswer","assetRequestApprove","movable8","pendingHours","notoutYetdd",
|
|
|
|
|
"movable2","movable3","movable4","movable1","movable5","movable6","movable7","movable9","movable10","movable11"
|
|
|
|
|
]
|
|
|
|
|
))
|
2023-11-16 16:41:47 +05:30
|
|
|
}
|
2023-11-16 14:43:06 +05:30
|
|
|
// localStorage.setItem("tileOrder", JSON.stringify(tileOrder));
|
2023-11-13 12:29:11 +05:30
|
|
|
|
2023-08-22 13:56:22 +05:30
|
|
|
function orderDashboardTile() {
|
2023-10-13 14:34:52 +05:30
|
|
|
var orderIds = JSON.parse(localStorage.getItem("tileOrder"));
|
|
|
|
|
const parentContainer = $("#tileContainer");
|
2023-08-22 13:56:22 +05:30
|
|
|
if (orderIds != null) {
|
|
|
|
|
const sortedElements = [];
|
|
|
|
|
|
|
|
|
|
// Loop through the desired order of IDs
|
|
|
|
|
for (const id of orderIds) {
|
2023-10-13 14:34:52 +05:30
|
|
|
const element = $("#" + id);
|
2023-08-22 13:56:22 +05:30
|
|
|
if (element.length) {
|
|
|
|
|
sortedElements.push(element);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Clear the parent container
|
|
|
|
|
parentContainer.empty();
|
|
|
|
|
|
|
|
|
|
// Append the sorted elements to the parent container
|
|
|
|
|
for (const element of sortedElements) {
|
|
|
|
|
parentContainer.append(element);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-13 14:34:52 +05:30
|
|
|
orderDashboardTile();
|
2023-08-22 13:56:22 +05:30
|
|
|
$(".oh-card-dashboard--moveable").mouseup(function () {
|
2023-10-13 14:34:52 +05:30
|
|
|
var tileOrder = [];
|
|
|
|
|
setTimeout((e) => {
|
|
|
|
|
$.each(
|
|
|
|
|
$(".oh-card-dashboard--moveable"),
|
|
|
|
|
function (indexInArray, valueOfElement) {
|
|
|
|
|
tileOrder.push($(valueOfElement).attr("id"));
|
|
|
|
|
}
|
|
|
|
|
);
|
2023-08-22 13:56:22 +05:30
|
|
|
localStorage.setItem("tileOrder", JSON.stringify(tileOrder));
|
2023-11-16 14:43:06 +05:30
|
|
|
}, 10);
|
2023-08-22 13:56:22 +05:30
|
|
|
});
|
|
|
|
|
});
|
2023-11-27 22:07:16 +05:30
|
|
|
|
2024-01-29 15:07:42 +05:30
|
|
|
function closeNew(anchorElement){
|
|
|
|
|
$(anchorElement).parent().find('#newTab').hide();
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-27 22:07:16 +05:30
|
|
|
$(document).ready(function() {
|
|
|
|
|
// Add an input event listener to the search bar
|
|
|
|
|
$("#employeeSearch").on("input", function() {
|
|
|
|
|
// Get the value entered in the search bar
|
|
|
|
|
var searchValue = $(this).val().toLowerCase();
|
|
|
|
|
|
|
|
|
|
// Iterate through each table row and hide/show based on the search value
|
|
|
|
|
$("table tbody tr").each(function() {
|
|
|
|
|
var employeeId = $(this).find("td:first-child").text().toLowerCase();
|
|
|
|
|
|
|
|
|
|
// Toggle the visibility of the row based on whether it contains the search value
|
|
|
|
|
$(this).toggle(employeeId.includes(searchValue));
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
2023-10-13 14:34:52 +05:30
|
|
|
</script>
|