2023-05-10 15:06:57 +05:30
{% load static %}
2024-02-09 11:53:40 +05:30
2023-05-10 15:06:57 +05:30
{% load i18n %}
2024-08-05 14:22:44 +05:30
{% load horillafilters %}
2023-05-10 15:06:57 +05:30
<!DOCTYPE html>
< html >
{% get_current_language_bidi as LANGUAGE_BIDI %}
{% get_current_language as LANGUAGE_CODE %}
2023-07-26 12:15:01 +05:30
{% comment %} < html dir = "{% if LANGUAGE_BIDI %}rtl{% else %}ltr{% endif %}" lang = "{{ LANGUAGE_CODE }}" > {% endcomment %}
2023-05-10 15:06:57 +05:30
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
2024-01-02 13:55:51 +05:30
< script >
var at_work_seconds = {{ request.user.employee_get.get_forecasted_at_work.forecasted_at_work_seconds }}
var run = 0
< / script >
2024-05-23 14:29:29 +05:30
< title class = "time-runner stop-runner" > {{white_label_company_name}}< / title >
2024-03-08 23:49:22 +05:30
< link rel = "stylesheet" href = "{% static 'build/css/driver.min.css' %}" / >
2024-02-09 11:53:40 +05:30
< meta name = "theme-color" content = "orangered" >
< link rel = "manifest" href = "{% static 'build/manifest.json' %}" >
2024-05-23 14:29:29 +05:30
< link rel = "apple-touch-icon" sizes = "180x180" href = "{% if white_label_company.icon %}{{white_label_company.icon.url}} {% else %}{% static 'favicons/apple-touch-icon.png' %}{% endif %}" >
< link rel = "icon" type = "image/png" sizes = "32x32" href = "{% if white_label_company.icon %}{{white_label_company.icon.url}} {% else %}{% static 'favicons/favicon-32x32.png' %}{% endif %}" >
< link rel = "icon" type = "image/png" sizes = "16x16" href = "{% if white_label_company.icon %}{{white_label_company.icon.url}} {% else %}{% static 'favicons/favicon-16x16.png' %}{% endif %}" >
2023-08-31 16:53:07 +05:30
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/sweetalert2@11.0.20/dist/sweetalert2.min.css" >
2023-05-18 16:19:06 +05:30
< meta name = "msapplication-TileColor" content = "#da532c" >
< meta name = "theme-color" content = "#ffffff" >
2023-05-10 15:06:57 +05:30
< link rel = "stylesheet" href = "{% static 'build/css/style.min.css' %}" / >
2024-03-28 12:05:55 +05:30
< link rel = "stylesheet" type = "text/css" href = "{% static 'css/style.css' %}" >
2023-06-06 14:14:43 +05:30
< link rel = "stylesheet" href = "{% static 'build/css/summernote-lite.min.css' %}" / >
2023-05-18 16:19:06 +05:30
< script src = "{% static '/jquery/ajax.js' %}" > < / script >
2023-05-10 15:06:57 +05:30
< script src = "{% static '/jquery/jquery.min.js' %}" > < / script >
< link rel = "stylesheet" href = "{% static '/jquery/jqueryui.css' %}" >
< script src = "{% static '/jquery/jqueryui.js' %}" > < / script >
2024-01-23 15:24:30 +05:30
< script src = "{% static '/base/toggleColumn.js' %}" > < / script >
2024-01-25 11:06:11 +05:30
< script src = "{% static '/build/js/orgChart.js' %}" > < / script >
2024-03-08 23:49:22 +05:30
< script src = "{% static 'build/js/driver.js' %}" > < / script >
2024-06-12 16:44:05 +05:30
< script src = "{% static " build / js / clearFilter . js " % } " > < / script >
2024-01-25 11:06:11 +05:30
2024-01-23 15:24:30 +05:30
2023-05-10 15:06:57 +05:30
<!-- Popper.JS -->
<!-- Bootstrap JS -->
{% block styles %}
{% endblock styles %}
< / head >
2023-10-10 15:42:51 +05:30
{% comment %} < div class = "flexbox" > {% endcomment %}
<!-- TRIPLE SPINNER -->
{% comment %} < div >
< div class = "triple-spinner" > < / div >
< / div > {% endcomment %}
{% comment %} < / div > {% endcomment %}
2024-08-05 14:22:44 +05:30
< div hidden id = "statiUrl" data-url = '{% static "" %}' > < / div >
2023-05-10 15:06:57 +05:30
< body hx-headers = '{"X-CSRFToken": "{{ csrf_token }}"}' >
2024-03-08 23:49:22 +05:30
< span class = "logged-in" data-user-id = "{{request.user.id}}" > < / span >
2024-06-12 16:44:05 +05:30
< div id = "reloadMessages" >
{% include "generic/messages.html" %}
< / div >
2023-05-10 15:06:57 +05:30
{% if messages %}
< div class = "oh-alert-container" >
{% for message in messages %}
< div class = "oh-alert oh-alert--animated {{message.tags}}" >
{{ message }}
2024-05-07 12:23:36 +05:30
< / div >
2023-05-10 15:06:57 +05:30
{% endfor %}
< / div >
{% endif %}
2024-06-12 16:44:05 +05:30
< button id = "reloadMessagesButton" hx-get = "{% url 'reload-messages' %}" hidden hx-target = "#reloadMessages" > < / button >
2023-05-10 15:06:57 +05:30
< div class = "oh-wrapper-main" :class = "!sidebarOpen ? 'oh-wrapper-main--closed' : ''" x-data = "{sidebarOpen: true}"
@load.window="
width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
if (width < 575.98 ) {
sidebarOpen = false
}" @resize.window="
width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
if (width < 575.98 ) {
sidebarOpen = false
}">
< div id = "sidebar" >
{% include 'sidebar.html' %}
< / div >
2024-05-07 12:23:36 +05:30
2023-05-10 15:06:57 +05:30
< div id = "main" >
<!-- Navigation -->
<!-- Confirm Modal -->
2024-05-07 12:23:36 +05:30
2023-05-10 15:06:57 +05:30
< div
class="oh-modal"
id="confirmModal"
role="dialog"
aria-labelledby="confirmModalLabel"
aria-hidden="true"
>
< div class = "oh-modal__dialog oh-modal__dialog--confirm" >
< div class = "oh-modal__dialog-header" >
< span class = "oh-modal__dialog-title" id = "confirmModalLabel"
>< /span
>
< / div >
< div class = "oh-modal__dialog-body" id = "confirmModalBody" >
2024-05-07 12:23:36 +05:30
2023-05-10 15:06:57 +05:30
< / div >
2023-08-31 16:53:07 +05:30
{% comment %} < div class = "oh-modal__dialog-footer" >
2023-05-10 15:06:57 +05:30
< button class = "oh-btn oh-btn--success" id = "ok" > {% trans "Confirm" %}< / button >
< button class = "oh-btn oh-btn--danger oh-modal__cancel" id = "cancel" >
{% trans "Cancel" %}
< / button >
2023-08-31 16:53:07 +05:30
< / div > {% endcomment %}
2023-05-10 15:06:57 +05:30
< / div >
< / div >
<!-- End of Confirm Modal -->
2024-02-21 16:43:57 +05:30
< div class = "oh-activity-sidebar " id = "allNotifications" style = "z-index:1000" >
2023-05-10 15:06:57 +05:30
< div class = "oh-activity-sidebar__header" >
2023-10-17 10:18:43 +05:30
< span id = "notificationClose" style = "cursor: pointer;" title = "{% trans 'Close' %}" >
2024-01-31 12:01:20 +05:30
< ion-icon
2024-02-21 16:43:57 +05:30
name="chevron-forward-outline"
2024-01-31 12:01:20 +05:30
class="oh-activity-sidebar__header-icon me-2 oh-activity-sidebar__close"
id="close"
data-target="#activitySidebar"
style="font-size: 24px;"
>< / ion-icon >
< / span >
2023-05-10 15:06:57 +05:30
< span class = "oh-activity-sidebar__title" > {% trans "All Notifications" %}< / span >
2024-05-07 12:23:36 +05:30
< a class = "delete-all-link" hx-target = "#allNotificationBody" hx-post = "{% url 'delete-all-notifications'%}" > {% trans "Clear all" %}< / a >
2023-05-10 15:06:57 +05:30
< / div >
< div class = "oh-activity-sidebar__body" id = "allNotificationBody" >
{% include "notification/all_notifications.html" %}
< / div >
< / div >
2024-02-15 16:39:54 +05:30
< nav class = "oh-navbar" style = "width: -webkit-fill-available;;" >
2023-05-10 15:06:57 +05:30
< div class = "oh-wrapper oh-navbar__wrapper" >
2023-11-21 16:42:43 +05:30
{% comment %} < div class = "oh-navbar__toggle-container" >
2023-05-10 15:06:57 +05:30
< a href = "#" class = "oh-navbar__toggle-link oh-link__unstyled" @ click = "sidebarOpen = !sidebarOpen" >
< img src = "{% static 'images/ui/menu.svg' %}" width = "24" height = "24" class = "oh-navbar__toggle-menu"
loading="lazy" />
2023-05-18 16:19:06 +05:30
< span class = "oh-tabs__movable-title" style = "color: rgb(0, 0, 14);" > {% trans request.session.title %}< / span >
2023-05-10 15:06:57 +05:30
< / a >
2023-11-21 16:42:43 +05:30
< / div > {% endcomment %}
< div class = "oh-navbar__toggle-container" >
< a href = "#" class = "oh-navbar__toggle-link oh-link__unstyled" @ click = "sidebarOpen = !sidebarOpen" >
< img src = "{% static 'images/ui/menu.svg' %}" width = "24" height = "24" class = "oh-navbar__toggle-menu"
loading="lazy" />
< / a >
<!-- <span class="oh - navbar__page - title">Attendances</span> -->
{% if breadcrumbs %}
{% comment %} {{breadcrumbs}} {% endcomment %}
< ul class = "oh-navbar__breadcrumb" >
{% for breadcrumb in breadcrumbs %}
{% if forloop.last %}
< li class = "oh-navbar__breadcrumb-item" >
{% if breadcrumb.found %}
< a href = "{{breadcrumb.url}}" class = "oh-navbar__breadcrumb-link active" > {% trans breadcrumb.name %}< / a >
{% else %}
< a href = "#" class = "oh-navbar__breadcrumb-link active" > {% trans breadcrumb.name %}< / a >
{% endif %}
< / li >
{% else %}
< li class = "oh-navbar__breadcrumb-item" >
{% if breadcrumb.found %}
< a href = "{{breadcrumb.url}}" class = "oh-navbar__breadcrumb-link" > {% trans breadcrumb.name %}< / a >
{% else %}
< a href = "#" class = "oh-navbar__breadcrumb-link" > {% trans breadcrumb.name %}< / a >
{% endif %}
< / li >
{% endif %}
{% endfor %}
< / ul >
{% endif %}
< / a >
2023-05-10 15:06:57 +05:30
< / div >
< div class = "oh-navbar__systray" >
2024-08-05 14:22:44 +05:30
{% if "attendance"|app_installed %}
< div id = "attendance-activity-container" >
{% if request.user.employee_get %}
{% if request.session.selected_company == "all" or request.user.employee_get.employee_work_info.company_id.id == request.session.selected_company|default:"-1"|add:"0" %}
<!-- "CHEKING WETHER ITS IS THE CURRENT EMPLOYEES COMPANY OR ALL COMPANY, THEN ONLY SHOWS THE CHECK - IN, CHECK - OUT BUTTON" -->
{% if request.user|is_clocked_in %}
< button class = "oh-btn oh-btn--warning-outline mr-2" { % if enabled_timerunner % } onmouseenter = "$(this).find('span').show();$(this).find('.time-runner').hide();" onmouseleave = "$(this).find('span').hide();$(this).find('.time-runner').show();" { % endif % } hx-get = "{% url 'clock-out' %}" hx-target = '#attendance-activity-container' hx-swap = 'innerHTML' > < ion-icon class = "oh-navbar__clock-icon mr-2 text-warning" name = "exit-outline" > < / ion-icon >
< span class = "hr-Check-In-out-text" { % if enabled_timerunner % } style = "display: none;" { % endif % } > {% trans "Check-Out" %}< / span >
< div class = "time-runner" > < / div >
< / button >
< script >
run = 1
< / script >
{% else %}
< button { % if enabled_timerunner % } onmouseenter = "$(this).find('span').show();$(this).find('.at-work-seconds').hide();" onmouseleave = "$(this).find('span').hide();$(this).find('.at-work-seconds').show();" { % endif % }
class="oh-btn oh-btn--success-outline mr-2" hx-get="{% url 'clock-in' %}" hx-target='#attendance-activity-container' hx-swap='innerHTML'
>
< ion-icon class = "oh-navbar__clock-icon mr-2 text-success" name = "enter-outline" > < / ion-icon >
< span class = "hr-Check-In-out-text" { % if enabled_timerunner % } style = "display: none;" { % endif % } > {% trans "Check-In" %}< / span >
< div class = "at-work-seconds" > < / div >
< / button >
{% if enabled_timerunner %}
< script >
$(document).ready(function () {
$('.at-work-seconds').html(secondsToDuration({{request.user.employee_get.get_forecasted_at_work.forecasted_at_work_seconds}}))
});
run = 0
< / script >
{% endif %}
{% endif %}
{% endif %}
2024-01-29 15:10:02 +05:30
{% endif %}
2024-08-05 14:22:44 +05:30
< / div >
2023-05-10 15:06:57 +05:30
{% endif %}
2024-01-09 16:01:34 +05:30
{% if request.user|any_permission:'base' or perms.attendance.view_attendancevalidationcondition %}
2023-12-01 15:36:51 +05:30
< div class = "oh-navbar__action-icons" title = "Settings" >
2024-03-08 23:49:22 +05:30
< a href = "/settings/general-settings" id = "settingsMenu" class = "oh-navbar__action-icons-link" >
2023-12-01 15:36:51 +05:30
< ion-icon name = "settings-outline" class = "oh-navbar__icon" > < / ion-icon >
< / a >
< / div >
2023-05-10 15:06:57 +05:30
{% endif %}
{% include 'notification/notification.html' %}
2024-03-08 23:49:22 +05:30
< div class = "oh-dropdown" id = "multiLanguage" x-data = "{open: false}" @ click = "open = !open" >
2023-07-26 12:15:01 +05:30
< div class = "oh-navbar__action-icons" >
2024-02-06 12:46:04 +05:30
< a href = "#" class = "oh-navbar__action-icons-link" title = "Languages" >
2023-07-26 12:15:01 +05:30
< ion-icon name = "globe-outline" class = "oh-navbar__icon" > < / ion-icon >
< / a >
2024-04-05 14:15:31 +05:30
< div class = "oh-dropdown__menu oh-dropdown__menu--right" x-show = "open" @ click . outside = "open = false" style = "display:none; margin-top:95%;" >
2023-07-26 12:15:01 +05:30
< ul class = "oh-dropdown__items" >
{% get_available_languages as LANGUAGES %}
{% for language in LANGUAGES %}
< li class = "oh-dropdown__item" >
< a href = "{% url 'set_language' %}" class = "oh-dropdown__link"
onclick="event.preventDefault(); document.getElementById('language-form-{{ language.0 }}').submit();">
2024-08-05 14:22:44 +05:30
< img src = "{% static 'images/ui/' %}{{ language.0 }}.png" class = "oh-dropdown__lang-icon" / > {{ language.1 }}{% if language.0 == LANGUAGE_CODE %}
< ion-icon name = "checkmark-circle-outline" style = "
2023-07-26 12:15:01 +05:30
position: relative;
top: 3.3px;
color: green;
font-size: 1.2em;
2023-10-10 15:42:51 +05:30
">< / ion-icon >
2023-07-26 12:15:01 +05:30
{% endif %}
< / a >
< form id = "language-form-{{ language.0 }}" action = "{% url 'set_language' %}" method = "post" style = "display: none;" >
{% csrf_token %}
< input type = "hidden" name = "language" value = "{{ language.0 }}" >
< / form >
< / li >
{% endfor %}
< / ul >
< / div >
< / div >
2023-12-01 15:36:51 +05:30
< / div >
2024-05-07 12:23:36 +05:30
{% if perms.base.view_company %}
2024-03-08 23:49:22 +05:30
< div id = "multCompany" class = "oh-dropdown" x-data = "{open: false}" @ click = "open = !open" title = "Companies" >
2023-12-01 15:36:51 +05:30
< div class = "oh-navbar__action-icons" >
< a href = "#" class = "oh-navbar__action-icons-link" >
< ion-icon name = "business" > < / ion-icon >
< / a >
2024-04-05 14:15:31 +05:30
< div class = "oh-dropdown__menu oh-dropdown__menu--right" x-show = "open" @ click . outside = "open = false" style = "display:none; margin-top:115%;" >
2023-12-01 15:36:51 +05:30
< ul class = "oh-dropdown__items" >
{% for company in all_companies %}
< li class = "oh-dropdown__item" >
< a hx-get = "{% url " update-selected-company " % } ? company_id = {{company.0}}"class="oh-dropdown__link" >
2024-05-07 12:23:36 +05:30
< img src = "{{company.2}}" class = "oh-dropdown__lang-icon" style = "border-radius: 50%;" / > {{company.1}}
2023-12-01 15:36:51 +05:30
{% if company.3 %}
< ion-icon name = "checkmark-circle-outline" style = "
position: relative;
top: 3.3px;
color: green;
font-size: 1.2em;
">< / ion-icon >
{% endif %}
{% if not company_selected and request.user.employee_get.employee_work_info.company_id.id == company.0 %}
< ion-icon name = "checkmark-circle-outline" style = "
position: relative;
top: 3.3px;
color: green;
font-size: 1.2em;
">< / ion-icon >
{% endif %}
< / a >
< / li >
{% endfor %}
< / ul >
< / div >
< / div >
2024-05-07 12:23:36 +05:30
< / div >
{% endif %}
2024-03-08 23:49:22 +05:30
< div class = "oh-dropdown" x-data = "{open: false}" id = "mainNavProfile" >
2023-05-10 15:06:57 +05:30
< div class = "oh-navbar__user-info" @ click = "open = !open" @ click . outside = "open = false" >
< div class = "oh-navbar__user-photo" >
2023-11-29 11:15:46 +05:30
< img src = "{{request.user.employee_get.get_avatar}}" class = "oh-navbar__user-image" loading = "lazy" / >
2023-05-10 15:06:57 +05:30
< / div >
< span class = "oh-navbar__user-name" > {{user.employee_get.employee_first_name | title}}< / span >
< / div >
< div class = "oh-dropdown__menu oh-dropdown__menu--right" x-show = "open" style = "display: none;" >
< ul class = "oh-dropdown__items" >
2023-12-13 10:09:43 +05:30
{% if request.session.selected_company == "all" or request.user.employee_get.employee_work_info.company_id.id == request.session.selected_company|default:"-1"|add:"0" %}
2023-05-10 15:06:57 +05:30
< li class = "oh-dropdown__item" >
< a href = "/employee/employee-profile" class = "oh-dropdown__link" > {% trans "My Profile" %}< / a >
< / li >
2023-08-08 10:13:50 +05:30
< li class = "oh-dropdown__item" >
< a href = "/change-password" class = "oh-dropdown__link" > {% trans "Change Password" %}< / a >
< / li >
2023-12-13 10:09:43 +05:30
{% endif %}
2023-05-10 15:06:57 +05:30
< / ul >
< hr / >
< ul class = "oh-dropdown__items" >
< li class = "oh-dropdown__item" >
< a href = "/logout" class = "oh-dropdown__link" > {% trans "Logout" %}< / a >
< / li >
< / ul >
< / div >
< / div >
< / div >
< / div >
2024-03-25 10:08:53 +00:00
{% include "floating_button.html" %}
2023-05-10 15:06:57 +05:30
< / nav >
<!-- End of Navigation -->
< div id = 'main-section' >
2023-10-10 15:42:51 +05:30
< div id = "tripple-loader-contaner" class = "d-flex justify-content-center align-items-center tripple-loader-contaner--visible" style = "height:90vh;" > < div class = "triple-spinner" > < / div > < / div >
2024-02-02 19:44:48 +05:30
< div id = "main-section-data" style = "display: none;" data-lang = "{{LANGUAGE_CODE}}" >
2023-10-10 15:42:51 +05:30
{% block content %}
2024-03-02 10:33:30 +05:30
{% include 'dashboard.html' %}
2023-10-10 15:42:51 +05:30
{% endblock content %}
2024-03-02 10:33:30 +05:30
< div
2024-04-17 12:23:57 +05:30
class="oh-modal" style="z-index: 100;"
2024-03-02 10:33:30 +05:30
id="objectDetailsModal"
role="dialog"
aria-labelledby="objectDetailsModalLabel"
aria-hidden="true"
>
2024-03-04 14:42:26 +05:30
< div class = "oh-modal__dialog oh-modal__dialog-relative" style = "max-width: 550px" id = "objectDetailsModalTarget" > < / div >
2024-03-02 10:33:30 +05:30
< / div >
< div
2024-04-17 12:23:57 +05:30
class="oh-modal" style="z-index: 100;"
2024-03-02 10:33:30 +05:30
id="objectDetailsModalW25"
role="dialog"
aria-labelledby="objectDetailsModalW25Label"
aria-hidden="true"
>
2024-03-15 10:25:11 +05:30
< div class = "oh-modal__dialog oh-modal__dialog-relative" style = "max-width: 410px" id = "objectDetailsModalW25Target" > < / div >
2024-03-02 10:33:30 +05:30
< / div >
2024-03-09 14:16:54 +05:30
< div
class="oh-modal"
id="objectCreateModal"
role="dialog"
aria-labelledby="objectCreateModalLabel"
aria-hidden="true"
>
< div class = "oh-modal__dialog" id = "objectCreateModalTarget" > < / div >
< / div >
2024-03-12 15:19:36 +05:30
< div
class="oh-modal"
id="objectUpdateModal"
role="dialog"
aria-labelledby="objectUpdateModalLabel"
aria-hidden="true"
>
< div class = "oh-modal__dialog" id = "objectUpdateModalTarget" > < / div >
< / div >
2024-07-17 15:39:38 +05:30
< div id = "dynamicCreateModal" class = "oh-modal" role = "dialog" aria-hidden = "true" style = "z-index: 1022;" >
< div id = "dynamicCreateModalTarget" class = "oh-modal__dialog" style = "max-width: 550px" > < / div >
< / div >
2023-10-10 15:42:51 +05:30
< / div >
2023-05-10 15:06:57 +05:30
< / div >
< / div >
2024-05-07 12:23:36 +05:30
2023-05-10 15:06:57 +05:30
< / div >
2024-05-07 12:23:36 +05:30
2023-05-10 15:06:57 +05:30
<!-- htmx script -->
< script src = "{% static 'build/js/web.frontend.min.js' %}" > < / script >
< script src = "{% static 'htmx/htmx.min.js' %}" > < / script >
2024-03-25 10:08:53 +00:00
< script >
function toggleReimbursmentType(element) {
if (element.val() == 'reimbursement') {
$('#objectCreateModalTarget [name=attachment]').parent().show()
$('#objectCreateModalTarget [name=attachment]').attr("required",true)
$('#objectCreateModalTarget [name=leave_type_id]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=cfd_to_encash]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=ad_to_encash]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=amount]').parent().show().attr("required",true)
$('#objectCreateModalTarget #availableTable').hide().attr("required",false)
$('#objectCreateModalTarget [name=bonus_to_encash]').parent().hide().attr("required",false)
} else if(element.val() == 'leave_encashment') {
$('#objectCreateModalTarget [name=attachment]').parent().hide()
$('#objectCreateModalTarget [name=attachment]').attr("required",false)
$('#objectCreateModalTarget [name=leave_type_id]').parent().show().attr("required",true)
$('#objectCreateModalTarget [name=cfd_to_encash]').parent().show().attr("required",true)
$('#objectCreateModalTarget [name=ad_to_encash]').parent().show().attr("required",true)
$('#objectCreateModalTarget [name=amount]').parent().hide().attr("required",false)
$('#objectCreateModalTarget #availableTable').show().attr("required",true)
$('#objectCreateModalTarget [name=bonus_to_encash]').parent().hide().attr("required",false)
} else if(element.val() == 'bonus_encashment') {
$('#objectCreateModalTarget [name=attachment]').parent().hide()
$('#objectCreateModalTarget [name=attachment]').attr("required",false)
$('#objectCreateModalTarget [name=leave_type_id]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=cfd_to_encash]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=ad_to_encash]').parent().hide().attr("required",false)
$('#objectCreateModalTarget [name=amount]').parent().hide().attr("required",false)
$('#objectCreateModalTarget #availableTable').hide().attr("required",false)
$('#objectCreateModalTarget [name=bonus_to_encash]').parent().show().attr("required",true)
}
}
2024-08-05 14:22:44 +05:30
{% if "leave"|app_installed %}
function getAssignedLeave(employeeElement) {
var employeeId=employeeElement.val()
$.ajax({
type: "get",
url: "{% url "get-assigned-leaves" %}",
data: { "employeeId": employeeId },
dataType: "json",
success: function (response) {
let rows = ""
for (let index = 0; index < response.length ; index + + ) {
const element = response[index];
rows = rows + `< tr class = "toggle-highlight" > < td > ${element.leave_type_id__name
}< / td > < td > ${element.available_days}< / td > < td > ${element.carryforward_days}< / td > < / tr > `
}
$("#availableTableBody").html($(rows))
let newLeaves = ""
for (let index = 0; index < response.length ; index + + ) {
const leave = response[index];
newLeaves = newLeaves + `< option value = "${leave.leave_type_id__id
}">${leave.leave_type_id__name}< / option > `
}
$('#id_leave_type_id').html(newLeaves)
removeHighlight()
}
});
}
{% endif %}
2024-03-25 10:08:53 +00:00
function removeHighlight() {
setTimeout(function() {
$(".toggle-highlight").removeClass("toggle-highlight")
}, 200);
}
2024-05-09 16:25:28 +05:30
2024-05-10 11:13:25 +05:30
$(document).on("htmx:beforeRequest", function (event, data) {
var response = event.detail.xhr.response;
var target = $(event.detail.elt.getAttribute("hx-target"));
2024-08-05 14:22:44 +05:30
var avoid_target = ["BiometricDeviceTestFormTarget","reloadMessages"];
2024-05-15 14:31:58 +05:30
if (!target.closest("form").length & & avoid_target.indexOf(target.attr("id")) === -1) {
target.html(`< div class = "animated-background" > < / div > `);
2024-05-10 11:13:25 +05:30
}
2024-05-15 14:31:58 +05:30
});
2024-05-09 16:25:28 +05:30
2024-03-25 10:08:53 +00:00
< / script >
2023-05-10 15:06:57 +05:30
< script >
document.body.addEventListener('htmx:configRequest', (event) => {
event.detail.headers['X-CSRFToken'] = '{{ csrf_token }}';
})
2023-10-17 10:18:43 +05:30
$(document).ready(function () {
2024-02-26 20:04:25 +05:30
$(document).keydown(function(event) {
if (event.keyCode === 27) {
$('.oh-modal--show').removeClass('oh-modal--show');
$('.oh-activity-sidebar--show').removeClass('oh-activity-sidebar--show')
}
});
2023-10-17 10:18:43 +05:30
$("#close").attr(
"class",
"oh-activity-sidebar__header-icon me-2 oh-activity-sidebar__close md hydrated"
);
});
$("#notificationClose").click(function (e) {
$("#allNotifications").removeClass("oh-activity-sidebar--show");
});
2023-05-10 15:06:57 +05:30
< / script >
<!-- this is the master js -->
2023-05-18 16:19:06 +05:30
< script src = "{% static '/index/index.js' %}" > < / script >
2023-10-10 15:42:51 +05:30
< script src = "{% static '/index/saveFilters.js' %}" > < / script >
2023-05-10 15:06:57 +05:30
< script src = "{% static 'build/js/htmxSelect2.js' %}" > < / script >
2023-06-06 14:14:43 +05:30
< script src = "{% static 'build/js/summernote-lite.min.js' %}" > < / script >
2024-05-07 12:23:36 +05:30
2024-02-28 14:42:37 +05:30
<!-- This CDN is for date format change -->
< script src = "{% static '/build/js/moment.js' %}" > < / script >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" > < / script >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js" > < / script >
2024-05-07 12:23:36 +05:30
2023-12-18 17:18:54 +05:30
< script src = "{% static '/base/date_settings.js' %}" > < / script >
2023-12-27 17:25:59 +05:30
< script src = "{% static '/base/time_formatting.js' %}" > < / script >
< script src = "{% static '/base/time_settings.js' %}" > < / script >
2024-02-28 14:42:37 +05:30
< script src = "{% static '/base/date_formatting.js' %}" > < / script >
2024-08-05 14:22:44 +05:30
{% if "attendance"|app_installed %}
< script src = "{% static 'attendance/actions.js' %}" > < / script >
{% endif %}
2023-05-10 15:06:57 +05:30
< script type = "module" src = "https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js" > < / script >
< script nomodule src = "https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js" > < / script >
2023-08-31 16:53:07 +05:30
< script src = "{% static '/build/js/sweetAlert.js' %}" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/sweetalert2@11" > < / script >
2023-12-07 10:21:27 +05:30
< script >
2024-02-13 13:50:18 +05:30
// Clear all query parameters from the URL
function clearQueryParameters() {
var urlWithoutQuery = window.location.origin + window.location.pathname;
window.history.replaceState({}, document.title, urlWithoutQuery);
}
2023-12-07 10:21:27 +05:30
$(document).ready(function () {
$('body').on('click', '.select2-search__field', function(e) {
e.stopPropagation();
});
2023-12-19 13:02:15 +05:30
if (!$(".oh-tabs__tab--active").length) {
$(".oh-tabs__tab").click()
}
2023-12-07 10:21:27 +05:30
});
< / script >
2024-01-29 15:10:02 +05:30
{% if enabled_timerunner %}
2024-01-02 13:55:51 +05:30
< script >
// time-runner
function secondsToDuration(seconds) {
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor((seconds % 3600) / 60);
var remainingSeconds = Math.floor(seconds % 60);
// add leading zeros if necessary
var formattedHours = (hours < 10 ) ? " 0 " + hours : hours ;
var formattedMinutes = (minutes < 10 ) ? " 0 " + minutes : minutes ;
var formattedSeconds = (remainingSeconds < 10 ) ? " 0 " + remainingSeconds : remainingSeconds ;
return formattedHours + ":" + formattedMinutes + ":" + formattedSeconds;
}
// accessing initial worked hours from the user
$(".time-runner").not("title").html(secondsToDuration(at_work_seconds));
2024-05-23 14:29:29 +05:30
$("title.time-runner").html("{{white_label_company_name}} | "+secondsToDuration(at_work_seconds));
2024-01-02 13:55:51 +05:30
setInterval(() => {
if (run) {
at_work_seconds = at_work_seconds + 1
$("div.time-runner").html(secondsToDuration(at_work_seconds));
2024-05-23 14:29:29 +05:30
$("title").html("{{white_label_company_name}} | "+secondsToDuration(at_work_seconds));
2024-01-02 13:55:51 +05:30
}
}, 1000);
2024-01-29 15:10:02 +05:30
< / script >
{% endif %}
< script >
2024-01-02 14:21:31 +05:30
setTimeout(()=>{$("[name='search']").focus()},100)
2024-01-02 13:55:51 +05:30
< / script >
2024-03-08 23:49:22 +05:30
2024-06-12 16:44:05 +05:30
< script >
2024-08-05 14:22:44 +05:30
function addToSelectedId(newIds){
2024-06-12 16:44:05 +05:30
ids = JSON.parse(
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids") || "[]"
2024-06-12 16:44:05 +05:30
);
ids = [...ids,...newIds.map(String)]
ids = Array.from(new Set(ids));
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids",JSON.stringify(ids))
2024-06-12 16:44:05 +05:30
}
2024-08-05 14:22:44 +05:30
function selectSelected(viewId){
2024-06-12 16:44:05 +05:30
ids = JSON.parse(
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids") || "[]"
2024-06-12 16:44:05 +05:30
);
$.each(ids, function (indexInArray, valueOfElement) {
$(`${viewId} .oh-sticky-table__tbody .list-table-row[value=${valueOfElement}]`).prop("checked",true).change()
});
$(`${viewId} .oh-sticky-table__tbody .list-table-row`).change(function (
e
) {
id = $(this).val()
ids = JSON.parse(
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids") || "[]"
2024-06-12 16:44:05 +05:30
);
ids = Array.from(new Set(ids));
let index = ids.indexOf(id);
if (!ids.includes(id)) {
ids.push(id);
} else {
if (!$(this).is(":checked")) {
ids.splice(index, 1);
}
}
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids", JSON.stringify(ids));
2024-06-12 16:44:05 +05:30
}
);
2024-08-05 14:22:44 +05:30
reloadSelectedCount($('#count_{{view_id|safe}}'));
2024-06-12 16:44:05 +05:30
}
2024-08-05 14:22:44 +05:30
function reloadSelectedCount(targetElement) {
count = JSON.parse($("#selectedInstances").attr("data-ids") || "[]").length
2024-06-12 16:44:05 +05:30
id =targetElement.attr("id")
if (id) {
id =id.split("count_")[1]
}
if (count) {
targetElement.html(count)
targetElement.parent().removeClass("d-none");
$(`#unselect_${id}, #export_${id}`).removeClass("d-none");
}else{
targetElement.parent().addClass("d-none")
$(`#unselect_${id}, #export_${id}`).addClass("d-none")
}
}
2024-08-05 14:22:44 +05:30
function removeId(element){
2024-06-12 16:44:05 +05:30
id = element.val();
viewId = element.attr("data-view-id")
2024-08-05 14:22:44 +05:30
ids = JSON.parse($("#selectedInstances").attr("data-ids") || "[]")
2024-06-12 16:44:05 +05:30
let elementToRemove = 5;
if (ids[ids.length - 1] === id) {
ids.pop();
}
ids = JSON.stringify(ids)
2024-08-05 14:22:44 +05:30
$("#selectedInstances").attr("data-ids", ids);
2024-06-12 16:44:05 +05:30
}
2024-06-24 16:54:15 +05:30
function getCookie(name) {
let cookieValue = null;
if (document.cookie & & document.cookie !== "") {
const cookies = document.cookie.split(";");
for (let i = 0; i < cookies.length ; i + + ) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === name + "=") {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
function bulkStageUpdate(canIds,stageId,preStageId){
$.ajax({
type: "POST",
url: "/recruitment/candidate-stage-change?bulk=True",
data: {
csrfmiddlewaretoken: getCookie("csrftoken"),
canIds: JSON.stringify(canIds),
stageId:stageId,
},
success: function (response, textStatus, jqXHR) {
if (jqXHR.status === 200) {
$(`#stageLoad`+preStageId).click();
$(`#stageLoad`+stageId).click();
2024-06-25 15:49:56 +05:30
}
2024-06-26 10:25:31 +05:30
if (response.message) {
2024-06-25 15:49:56 +05:30
Swal.fire({
2024-06-26 10:25:31 +05:30
title: response.message,
text: `Total vacancy is ${response.vacancy}.`, // Using template literals
icon: 'info',
2024-06-25 15:49:56 +05:30
confirmButtonText: 'Ok',
2024-06-26 10:25:31 +05:30
});
2024-06-24 16:54:15 +05:30
}
},
});
}
function updateCandStage(canIds,stageId,preStageId){
$.ajax({
type: "POST",
url: "/recruitment/candidate-stage-change?bulk=false",
data: {
csrfmiddlewaretoken: getCookie("csrftoken"),
canIds: canIds,
stageId:stageId,
},
success: function (response, textStatus, jqXHR) {
if (jqXHR.status === 200) {
$(`#stageLoad`+preStageId).click();
$(`#stageLoad`+stageId).click();
2024-06-25 15:49:56 +05:30
}
2024-06-26 10:25:31 +05:30
if (response.message) {
2024-06-25 15:49:56 +05:30
Swal.fire({
2024-06-26 10:25:31 +05:30
title: response.message,
text: `Total vacancy is ${response.vacancy}.`, // Using template literals
icon: 'info',
2024-06-25 15:49:56 +05:30
confirmButtonText: 'Ok',
2024-06-26 10:25:31 +05:30
});
2024-06-24 16:54:15 +05:30
}
},
});
2024-06-25 15:49:56 +05:30
}
2024-06-12 16:44:05 +05:30
< / script >
2023-05-10 15:06:57 +05:30
< / body >
< / html >