[UPDT] EMPLOYEE: Updated employee profile tab adding modal view for records in work type and shift
This commit is contained in:
@@ -72,7 +72,7 @@
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
{% for rshift in rshift_request_list.list %}
|
||||
<div class="oh-sticky-table__tr" draggable="true" hx-get="{% url "rshift-individual-view" rshift.id %}?instances_ids={{assign_ids}}" hx-target="#rotatingShiftAssignDetail" data-toggle="oh-modal-toggle" data-target="#rotating-shift-detail-modal-detail-modal">
|
||||
<div class="oh-sticky-table__tr" draggable="true" hx-get="{% url "rshift-individual-view" rshift.id %}?instances_ids={{assign_ids}}" hx-target="#rotatingShiftAssignDetail" data-toggle="oh-modal-toggle" data-target="#rotatingShiftAssignDetailModal">
|
||||
<div class="oh-sticky-table__sd" onclick="event.stopPropagation();">
|
||||
<div class="centered-div">
|
||||
<input
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
{% load i18n %}
|
||||
<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" >
|
||||
{% if request.GET.instances_ids %}
|
||||
<div class="oh-modal__dialog oh-modal__dialog--navigation m-0 p-0">
|
||||
<button hx-get="{% url 'rshift-individual-view' previous %}?instances_ids={{assign_ids}}" hx-target = "#rotatingShiftAssignDetail" class="oh-modal__diaglog-nav oh-modal__nav-prev">
|
||||
@@ -12,7 +24,6 @@
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<a class="oh-timeoff-modal__profile-content" style="text-decoration:none;"
|
||||
href ="{% url 'employee-view-individual' instance.employee_id.id %}">
|
||||
@@ -42,12 +53,12 @@
|
||||
<div class="oh-timeoff-modal__stats-container">
|
||||
<div class="oh-timeoff-modal__stat" >
|
||||
<span class="oh-timeoff-modal__stat-title">{% trans "Title" %}</span>
|
||||
<span class="oh-timeoff-modal__stat-count">{{instance.get_based_on_display}}</span>
|
||||
<span class="oh-timeoff-modal__stat-count">{{instance.rotating_shift_id}}</span>
|
||||
</div>
|
||||
<div class="oh-timeoff-modal__stat" >
|
||||
<span class="oh-timeoff-modal__stat-title">{% trans "Based On" %}</span>
|
||||
<span class="oh-timeoff-modal__stat-count">
|
||||
{{instance.based_on}}
|
||||
{{instance.get_based_on_display}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -110,7 +121,7 @@
|
||||
|
||||
<a class="oh-btn oh-btn--info" hx-get="{% url "rotating-shift-assign-update" instance.id %}" hx-target="#rotatingShiftAssignUpdateModalBody" data-toggle="oh-modal-toggle" data-target="#rotating-shift-update-modal" style="width: 50%;">
|
||||
<ion-icon name="create-outline">
|
||||
</ion-icon>Edit
|
||||
</ion-icon>{% trans "Edit" %}
|
||||
</a>
|
||||
<form class="oh-btn oh-btn--primary" style="width: 50%;" onsubmit="return confirm('Do you Want to archive this rotating Shift assign?')" action="{% url "rotating-shift-assign-archive" instance.id %}">
|
||||
<input type="hidden" name="is_active" value="False" id="">
|
||||
@@ -124,9 +135,9 @@
|
||||
<ion-icon name="archive-outline">
|
||||
</ion-icon>
|
||||
{% if instance.is_active %}
|
||||
Archive
|
||||
{% trans "Archive" %}
|
||||
{% else %}
|
||||
Un-archive
|
||||
{% trans "Un-archive" %}
|
||||
{% endif %}
|
||||
</button>
|
||||
</form>
|
||||
@@ -140,9 +151,10 @@
|
||||
cursor: pointer;
|
||||
outline: inherit;">
|
||||
<ion-icon name="trash-outline">
|
||||
</ion-icon>Delete
|
||||
</ion-icon>{% trans "Delete" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -51,28 +51,12 @@
|
||||
|
||||
<div
|
||||
class="oh-modal" style="z-index: 60;"
|
||||
id="rotating-shift-detail-modal-detail-modal"
|
||||
id="rotatingShiftAssignDetailModal"
|
||||
role="dialog"
|
||||
aria-labelledby="rotating-shift-detail-modal"
|
||||
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="rotatingShiftAssignDetail"
|
||||
></div>
|
||||
</div>
|
||||
<div class="oh-modal__dialog" id="rotatingShiftAssignDetail"></div>
|
||||
</div>
|
||||
<div class="oh-checkpoint-badge mb-2" id="selectedRShifts" data-ids="[]" data-clicked="" style="display:none;" >
|
||||
{% trans "Selected Shifts" %}
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
{% for rshift in rshift_assign %}
|
||||
<div class="oh-sticky-table__tr" draggable="true" hx-get="{% url "rshift-individual-view" rshift.id %}?instances_ids={{assign_ids}}" hx-target="#rotatingShiftAssignDetail" data-toggle="oh-modal-toggle" data-target="#rotating-shift-detail-modal-detail-modal">
|
||||
<div class="oh-sticky-table__tr" draggable="true" hx-get="{% url "rshift-individual-view" rshift.id %}?instances_ids={{assign_ids}}" hx-target="#rotatingShiftAssignDetail" data-toggle="oh-modal-toggle" data-target="#rotatingShiftAssignDetailModal">
|
||||
<div class="oh-sticky-table__sd" onclick="event.stopPropagation();">
|
||||
<div class="centered-div">
|
||||
<input
|
||||
|
||||
@@ -71,7 +71,7 @@ style="cursor: pointer; display: none"
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
{% for rwork_type in rwork_type_list.list %}
|
||||
<div class="oh-sticky-table__tr" hx-get="{% url "rwork-individual-view" rwork_type.id %}?instances_ids={{assign_ids}}" data-toggle="oh-modal-toggle" data-target="#rotating-work-type-detail-modal" hx-target="#rotatingWorkTypeAssignDetail" draggable="true">
|
||||
<div class="oh-sticky-table__tr" hx-get="{% url "rwork-individual-view" rwork_type.id %}?instances_ids={{assign_ids}}" data-toggle="oh-modal-toggle" data-target="#rotatingWorkTypeDetailModal" hx-target="#rotatingWorkTypeAssignDetail" draggable="true">
|
||||
<div class="oh-sticky-table__sd" onclick="event.stopPropagation();">
|
||||
<div class="centered-div">
|
||||
<input
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
{% load i18n %}
|
||||
<div class="oh-modal__dialog-header">
|
||||
<span
|
||||
class="oh-modal__dialog-title"
|
||||
id="rotatingWorkTypeDetailModalLabel"
|
||||
>
|
||||
{% trans "Details" %}
|
||||
</span>
|
||||
<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">
|
||||
{% if request.GET.instances_ids %}
|
||||
<div class="oh-modal__dialog oh-modal__dialog--navigation m-0 p-0">
|
||||
<button hx-get="{% url 'rwork-individual-view' previous %}?instances_ids={{assign_ids}}" hx-target = "#rotatingWorkTypeAssignDetail" class="oh-modal__diaglog-nav oh-modal__nav-prev">
|
||||
@@ -122,9 +134,9 @@
|
||||
<ion-icon name="archive-outline">
|
||||
</ion-icon>
|
||||
{% if instance.is_active %}
|
||||
Archive
|
||||
{% trans "Archive" %}
|
||||
{% else %}
|
||||
Un-archive
|
||||
{% trans "Un-archive" %}
|
||||
{% endif %}
|
||||
</button>
|
||||
</form>
|
||||
@@ -138,9 +150,10 @@
|
||||
cursor: pointer;
|
||||
outline: inherit;">
|
||||
<ion-icon name="trash-outline">
|
||||
</ion-icon>Delete
|
||||
</ion-icon>{% trans "Delete" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -64,28 +64,12 @@
|
||||
|
||||
<div
|
||||
class="oh-modal" style="z-index: 60;"
|
||||
id="rotating-work-type-detail-modal"
|
||||
id="rotatingWorkTypeDetailModal"
|
||||
role="dialog"
|
||||
aria-labelledby="rotating-work-type-detail-modal"
|
||||
aria-labelledby="rotatingWorkTypeDetailModal"
|
||||
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="rotatingWorkTypeAssignDetail"
|
||||
></div>
|
||||
</div>
|
||||
>
|
||||
<div class="oh-modal__dialog" id="rotatingWorkTypeAssignDetail"> </div>
|
||||
</div>
|
||||
|
||||
<script src="{% static 'basedOn.js' %}"></script>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
{% for rwork_type in rwork_type_assign %}
|
||||
<div class="oh-sticky-table__tr" hx-get="{% url "rwork-individual-view" rwork_type.id %}?instances_ids={{assign_ids}}" data-toggle="oh-modal-toggle" data-target="#rotating-work-type-detail-modal" hx-target="#rotatingWorkTypeAssignDetail" draggable="true">
|
||||
<div class="oh-sticky-table__tr" hx-get="{% url "rwork-individual-view" rwork_type.id %}?instances_ids={{assign_ids}}" data-toggle="oh-modal-toggle" data-target="#rotatingWorkTypeDetailModal" hx-target="#rotatingWorkTypeAssignDetail" draggable="true">
|
||||
<div class="oh-sticky-table__sd" onclick="event.stopPropagation();">
|
||||
<div class="centered-div">
|
||||
<input
|
||||
|
||||
@@ -64,7 +64,11 @@
|
||||
</div>
|
||||
{% for attendance in requests %}
|
||||
<div class="oh-sticky-table__tbody">
|
||||
<div class="oh-sticky-table__tr" draggable="true">
|
||||
<div class="oh-sticky-table__tr" draggable="false"
|
||||
hx-get="{% url 'user-request-one-view' attendance.id %}?instances_ids={{attendances_ids}}"
|
||||
data-toggle="oh-modal-toggle" data-target="#detailAttendance"
|
||||
hx-target="#detailAttendanceModalBody"
|
||||
>
|
||||
<div
|
||||
class="oh-sticky-table__sd {% if attendance.attendance_validated %}row-status--yellow {% else %}row-status--purple{% endif %}"
|
||||
>
|
||||
@@ -115,7 +119,7 @@
|
||||
{{attendance.attendance_overtime}}
|
||||
</div>
|
||||
{% if request.user|is_reportingmanager or perms.attendance.change_attendance %}
|
||||
<div class="oh-sticky-table__td oh-sticky-table__right">
|
||||
<div class="oh-sticky-table__td oh-sticky-table__right" onclick="event.stopPropagation();">
|
||||
<div class="oh-btn-group">
|
||||
<a
|
||||
data-toggle="oh-modal-toggle"
|
||||
@@ -193,7 +197,7 @@
|
||||
<div class="oh-sticky-table__td">{{ot.worked_hours}}</div>
|
||||
<div class="oh-sticky-table__td">{{ot.overtime}}</div>
|
||||
{% if perms.recruitment.change_attendanceovertime or perms.recruitment.delete_attendanceovertime %}
|
||||
<div class="oh-sticky-table__td">
|
||||
<div class="oh-sticky-table__td" onclick="event.stopPropagation();">
|
||||
<div class="oh-btn-group">
|
||||
{% if perms.recruitment.change_attendanceovertime %}
|
||||
<a hx-get="{% url 'attendance-overtime-update' ot.id %}" hx-target='#validateAttendanceRequestModalBody' data-toggle='oh-modal-toggle' data-target='#validateAttendanceRequest' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a>
|
||||
@@ -250,7 +254,11 @@
|
||||
{% for attendance in validate_attendances %}
|
||||
<div class="oh-sticky-table__tbody">
|
||||
<div class="oh-sticky-table__tr"
|
||||
draggable="false">
|
||||
draggable="false"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#detailAttendance"
|
||||
hx-target="#detailAttendanceModalBody"
|
||||
hx-get="{% url 'user-request-one-view' attendance.id %}?validate=true&instances_ids={{validate_attendances_ids}}">
|
||||
<div class="oh-sticky-table__sd">
|
||||
<div class="d-flex">
|
||||
|
||||
@@ -300,7 +308,7 @@
|
||||
<div class="oh-sticky-table__td">
|
||||
{{attendance.attendance_overtime}}
|
||||
</div>
|
||||
<div class="oh-sticky-table__td">
|
||||
<div class="oh-sticky-table__td" onclick="event.stopPropagation();">
|
||||
<div class="oh-btn-group">
|
||||
{% if perms.attendance.change_attendance or request.user|is_reportingmanager %}
|
||||
<a hx-get="{% url 'attendance-update' attendance.id %}" hx-target='#updateAttendanceRequestModalBody' hx-swap='innerHTML' data-toggle='oh-modal-toggle' data-target='#updateAttendanceRequest' class="oh-btn oh-btn--light-bkg w-50" title="{% trans 'Edit' %}"><ion-icon name="create-outline"></ion-icon></a>
|
||||
@@ -313,7 +321,7 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-sticky-table__td">
|
||||
<div class="oh-sticky-table__td" onclick="event.stopPropagation();">
|
||||
{% if request.user|is_reportingmanager or perms.attendance.change_attendance %}
|
||||
<a
|
||||
href = '{% url "validate-this-attendance" attendance.id %}'
|
||||
@@ -332,6 +340,41 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="detailAttendance"
|
||||
role="dialog"
|
||||
aria-labelledby="detailAttendance"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="oh-modal__dialog w-25" id="detailAttendanceModalBody"></div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="updateAttendanceModal"
|
||||
role="dialog"
|
||||
aria-labelledby="updateAttendanceModal"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="oh-modal__dialog">
|
||||
<div class="oh-modal__dialog-header">
|
||||
<h2 class="oh-modal__dialog-title" id="updateAttendanceModalLabel">
|
||||
{% trans "Edit Attendance" %}
|
||||
</h2>
|
||||
<button
|
||||
class="oh-modal__close--custom"
|
||||
onclick="$(this).parents().closest('.oh-modal--show').toggleClass('oh-modal--show')"
|
||||
aria-label="Close"
|
||||
>
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
<div id="updateAttendanceModalBody" class="p-4"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="validateAttendanceRequest"
|
||||
@@ -376,7 +419,7 @@
|
||||
</div>
|
||||
<div
|
||||
class="oh-modal__dialog-body"
|
||||
id="updateAttendanceOTModalBody"
|
||||
id="editValidateAttendanceRequestModalBody"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -209,9 +209,9 @@
|
||||
<div
|
||||
class="oh-sticky-table__tr"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#tableTimeOff"
|
||||
data-target="#userRequestDetailModal"
|
||||
hx-get="{% url 'user-request-one' leave_request.id %}?instances_ids={{leave_request_ids}}"
|
||||
hx-target="#userRequestView"
|
||||
hx-target="#userRequestDetailTarget"
|
||||
>
|
||||
<div class="oh-sticky-table__sd
|
||||
{% if leave_request.status == "requested" %}row-status--orange
|
||||
@@ -331,22 +331,12 @@
|
||||
{% endif %}
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="tableTimeOff"
|
||||
id="userRequestDetailModal"
|
||||
role="dialog"
|
||||
aria-labelledby="tableTimeOffModal"
|
||||
aria-labelledby="userRequestDetailModalLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
class="oh-modal__dialog oh-modal__dialog--timeoff oh-modal__dialog-relative oh-timeoff-modal"
|
||||
>
|
||||
<div class="oh-modal__dialog-header">
|
||||
<button class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="userRequestView"></div>
|
||||
</div>
|
||||
<div class="oh-modal__dialog w-25" id="userRequestDetailTarget"></div>
|
||||
</div>
|
||||
<div
|
||||
class="oh-modal"
|
||||
|
||||
@@ -8,16 +8,15 @@
|
||||
<div class="oh-sticky-table__th">{% trans "Asset" %}</div>
|
||||
<div class="oh-sticky-table__th">{% trans "Status" %}</div>
|
||||
<div class="oh-sticky-table__th">{% trans "Assigned Date" %}</div>
|
||||
<div class="oh-sticky-table__th">
|
||||
<a class="link-danger oh-btn oh-btn--secondary-outline w-25 float-end" role="button" data-toggle="oh-modal-toggle"
|
||||
<div class="oh-sticky-table__th" style="width: 10px;">
|
||||
<a class="link-danger oh-btn oh-btn--secondary-outline" role="button" data-toggle="oh-modal-toggle"
|
||||
data-target="#asset-request-allocation-modal" hx-get="{% url 'asset-request-creation' %}" hx-target="#asset-request-allocation-modal-target" title='{% trans "Create asset request" %}'>
|
||||
<ion-icon name="add-outline" role="img" class="md hydrated" aria-label="add outline"></ion-icon>
|
||||
</a>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
|
||||
{% for asset in assets %}
|
||||
{% if asset.asset_id.asset_status == "In use" %}
|
||||
<!-- asset request looping -->
|
||||
@@ -44,12 +43,22 @@
|
||||
{{asset.assigned_date}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="oh-sticky-table__td"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="detailAssetAssignModal"
|
||||
role="dialog"
|
||||
aria-labelledby="detailAssetAssignModalLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="oh-modal__dialog" id="detailAssetAssignModalBody"></div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="d-flex justify-content-center align-items-center" style="height:40vh">
|
||||
<h5 class="oh-404__subtitle">{% trans "No assets have been allocated." %}</h5>
|
||||
@@ -58,18 +67,14 @@
|
||||
<!-- End of Sticky Table -->
|
||||
|
||||
<div class="oh-modal" id="asset-request-allocation-modal" role="dialog" aria-labelledby="AssetRequestModal" aria-hidden="true">
|
||||
|
||||
<div class="oh-modal__dialog " style="max-width:550px">
|
||||
<div class="oh-modal__dialog-header">
|
||||
<button type="button" class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- htmx form -->
|
||||
<div class="oh-modal__dialog-body" id="asset-request-allocation-modal-target">
|
||||
|
||||
</div>
|
||||
<div class="oh-modal__dialog " style="max-width:550px">
|
||||
<div class="oh-modal__dialog-header">
|
||||
<button type="button" class="oh-modal__close" aria-label="Close">
|
||||
<ion-icon name="close-outline"></ion-icon>
|
||||
</button>
|
||||
</div>
|
||||
<!-- htmx form -->
|
||||
<div class="oh-modal__dialog-body" id="asset-request-allocation-modal-target"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -20,8 +20,11 @@
|
||||
</div>
|
||||
<div class="oh-sticky-table__tbody">
|
||||
{% for attendance in attendances %}
|
||||
<div class="oh-sticky-table__tr" data-toggle="oh-modal-toggle"
|
||||
data-target="#addAttendance" draggable="false">
|
||||
<div class="oh-sticky-table__tr" draggable="false"
|
||||
data-toggle="oh-modal-toggle"
|
||||
data-target="#detailAttendance"
|
||||
hx-target="#detailAttendanceModalBody"
|
||||
hx-get="{% url 'user-request-one-view' attendance.id %}?my_attendance=true&instances_ids={{attendances_ids}}">
|
||||
<div class="oh-sticky-table__sd">
|
||||
<div class="oh-profile oh-profile--md">
|
||||
<div class="oh-profile__avatar mr-1">
|
||||
@@ -73,6 +76,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="oh-modal"
|
||||
id="detailAttendance"
|
||||
role="dialog"
|
||||
aria-labelledby="detailAttendance"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="oh-modal__dialog" id="detailAttendanceModalBody"></div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="d-flex justify-content-center align-items-center" style="height:40vh">
|
||||
<h5 class="oh-404__subtitle">{% trans "No attendance requests have been generated." %}</h5>
|
||||
|
||||
Reference in New Issue
Block a user