[UPDT] DASHBOARD: Pagination indication in table

This commit is contained in:
Horilla
2024-02-07 17:25:49 +05:30
parent fc8afa20ba
commit a88f73d180
2 changed files with 180 additions and 116 deletions

View File

@@ -21,34 +21,38 @@ from django.db.models import Q
@login_required
def dashboard_shift_request(request):
requests = ShiftRequest.objects.filter(approved= False,canceled = False)
requests = filtersubordinates(
request, requests, "base.add_shiftrequest"
requests = ShiftRequest.objects.filter(approved=False, canceled=False)
requests = filtersubordinates(request, requests, "base.add_shiftrequest")
requests_ids = json.dumps([instance.id for instance in requests])
return render(
request,
"request_and_approve/shift_request.html",
{
"requests": requests,
"requests_ids": requests_ids,
},
)
requests_ids = json.dumps(
[
instance.id for instance in requests
]
)
return render(request, "request_and_approve/shift_request.html",{"requests": requests,"requests_ids": requests_ids,})
@login_required
def dashboard_work_type_request(request):
requests = WorkTypeRequest.objects.filter(approved= False,canceled = False)
requests = filtersubordinates(
request, requests, "base.add_worktyperequest"
requests = WorkTypeRequest.objects.filter(approved=False, canceled=False)
requests = filtersubordinates(request, requests, "base.add_worktyperequest")
requests_ids = json.dumps([instance.id for instance in requests])
return render(
request,
"request_and_approve/work_type_request.html",
{
"requests": requests,
"requests_ids": requests_ids,
},
)
requests_ids = json.dumps(
[
instance.id for instance in requests
]
)
return render(request, "request_and_approve/work_type_request.html",{"requests": requests,"requests_ids": requests_ids,})
@login_required
def dashboard_overtime_approve(request):
previous_data = request.GET.urlencode()
page_number = request.GET.get("page")
condition = AttendanceValidationCondition.objects.first()
min_ot = strtime_seconds("00:00")
if condition is not None and condition.minimum_overtime_to_approve is not None:
@@ -57,17 +61,22 @@ def dashboard_overtime_approve(request):
overtime_second__gte=min_ot,
attendance_validated=True,
employee_id__is_active=True,
attendance_overtime_approve =False,
attendance_overtime_approve=False,
)
ot_attendances = filtersubordinates(
ot_attendances = filtersubordinates(
request, ot_attendances, "attendance.change_attendance"
)
ot_attendances_ids = json.dumps(
[
instance.id for instance in ot_attendances
]
ot_attendances = paginator_qry(ot_attendances, page_number)
ot_attendances_ids = json.dumps([instance.id for instance in ot_attendances])
return render(
request,
"request_and_approve/overtime_approve.html",
{
"overtime_attendances": ot_attendances,
"ot_attendances_ids": ot_attendances_ids,
"pd": previous_data,
},
)
return render(request, "request_and_approve/overtime_approve.html",{"overtime_attendances": ot_attendances,"ot_attendances_ids": ot_attendances_ids,})
@login_required
@@ -77,41 +86,43 @@ def dashboard_attendance_validate(request):
validate_attendances = Attendance.objects.filter(
attendance_validated=False, employee_id__is_active=True
)
validate_attendances = filtersubordinates(
validate_attendances = filtersubordinates(
request, validate_attendances, "attendance.change_attendance"
)
validate_attendances = paginator_qry(validate_attendances, page_number)
validate_attendances_ids = json.dumps(
[
instance.id for instance in validate_attendances
]
[instance.id for instance in validate_attendances]
)
return render(
request,
"request_and_approve/attendance_validate.html",
{
"validate_attendances": validate_attendances,
"validate_attendances_ids": validate_attendances_ids,
"pd": previous_data,
},
)
return render(request, "request_and_approve/attendance_validate.html",{"validate_attendances": validate_attendances,"validate_attendances_ids": validate_attendances_ids, "pd": previous_data,})
@login_required
def leave_request_and_approve(request):
previous_data = request.GET.urlencode()
page_number = request.GET.get("page")
leave_requests = LeaveRequest.objects.filter(status = "requested")
leave_requests = filtersubordinates(
leave_requests = LeaveRequest.objects.filter(status="requested")
leave_requests = filtersubordinates(
request, leave_requests, "leave.change_leaverequest"
)
leave_requests = paginator_qry(leave_requests, page_number)
leave_requests_ids = json.dumps(
[
instance.id for instance in leave_requests
]
)
leave_requests_ids = json.dumps([instance.id for instance in leave_requests])
return render(
request,
"request_and_approve/leave_request_approve.html",
{
"leave_requests": leave_requests,
"requests_ids": leave_requests_ids,
"requests_ids": leave_requests_ids,
"pd": previous_data,
# "current_date":date.today(),
}
},
)
@@ -119,46 +130,60 @@ def leave_request_and_approve(request):
def leave_allocation_approve(request):
previous_data = request.GET.urlencode()
page_number = request.GET.get("page")
allocation_reqests = LeaveAllocationRequest.objects.filter(status = "requested")
allocation_reqests = filtersubordinates(
allocation_reqests = LeaveAllocationRequest.objects.filter(status="requested")
allocation_reqests = filtersubordinates(
request, allocation_reqests, "leave.view_leaveallocationrequest"
)
# allocation_reqests = paginator_qry(allocation_reqests, page_number)
allocation_reqests_ids = json.dumps(
[
instance.id for instance in allocation_reqests
]
[instance.id for instance in allocation_reqests]
)
return render(
request,
"request_and_approve/leave_allocation_approve.html",
{
"allocation_reqests": allocation_reqests,
"reqests_ids": allocation_reqests_ids,
"reqests_ids": allocation_reqests_ids,
"pd": previous_data,
# "current_date":date.today(),
}
},
)
@login_required
def dashboard_feedback_answer(request):
employee = request.user.employee_get
feedback_requested = Feedback.objects.filter(
Q(manager_id=employee,manager_id__is_active=True)
| Q(colleague_id=employee,colleague_id__is_active=True)
| Q(subordinate_id=employee,subordinate_id__is_active=True)
Q(manager_id=employee, manager_id__is_active=True)
| Q(colleague_id=employee, colleague_id__is_active=True)
| Q(subordinate_id=employee, subordinate_id__is_active=True)
).distinct()
feedbacks = feedback_requested.exclude(feedback_answer__employee_id = employee)
feedbacks = feedback_requested.exclude(feedback_answer__employee_id=employee)
return render(
request,
"request_and_approve/feedback_answer.html",
{"feedbacks": feedbacks, "current_date": date.today()},
)
return render(request, "request_and_approve/feedback_answer.html",{'feedbacks': feedbacks,'current_date':date.today()})
@login_required
def dashboard_asset_request_approve(request):
asset_requests = AssetRequest.objects.filter(asset_request_status='Requested')
asset_requests = AssetRequest.objects.filter(asset_request_status="Requested")
asset_requests = filtersubordinates(
request, asset_requests, "asset.change_assetrequest", field="requested_employee_id"
asset_requests = filtersubordinates(
request,
asset_requests,
"asset.change_assetrequest",
field="requested_employee_id",
)
requests_ids = json.dumps([instance.id for instance in asset_requests])
return render(request, "request_and_approve/asset_requests_approve.html",{'asset_requests': asset_requests,'requests_ids': requests_ids,})
return render(
request,
"request_and_approve/asset_requests_approve.html",
{
"asset_requests": asset_requests,
"requests_ids": requests_ids,
},
)

View File

@@ -1,90 +1,129 @@
{% load i18n %}
<div
class="oh-card-dashboard__header oh-card-dashboard__header--divider"
>
{% if validate_attendances.has_previous %}
<span class="oh-card-dashboard__title" id="department-previous" style="cursor: pointer;" hx-target="#AttendanceValidateTarget"
hx-get="{% url 'dashboard-attendance-validate' %}?{{pd}}&page={{ validate_attendances.previous_page_number }}">
<ion-icon name="caret-back-outline" role="img" class="md hydrated" aria-label="caret back outline"></ion-icon>
<div class="oh-card-dashboard__header oh-card-dashboard__header--divider">
{% if validate_attendances.has_previous %}
<span
class="oh-card-dashboard__title"
id="department-previous"
style="cursor: pointer"
hx-target="#AttendanceValidateTarget"
hx-get="{% url 'dashboard-attendance-validate' %}?{{pd}}&page={{ validate_attendances.previous_page_number }}"
hx-trigger="click delay:0.3s"
title="Previous Page"
>
<ion-icon
name="caret-back-outline"
role="img"
class="md hydrated"
aria-label="caret back outline"
></ion-icon>
</span>
{% endif %}
{% endif %}
<span class="oh-card-dashboard__title">{% trans 'Attendance To Validate' %} </span>
{% if validate_attendances.has_next %}
<span class="oh-card-dashboard__title float-end" id="department-previous" style="cursor: pointer;" hx-target="#AttendanceValidateTarget"
hx-get="{% url 'dashboard-attendance-validate' %}?{{pd}}&page={{ validate_attendances.next_page_number }}">
<ion-icon name="caret-forward-outline" role="img" class="md hydrated" aria-label="caret back outline"></ion-icon>
<span class="oh-card-dashboard__title"
>{% trans 'Attendance To Validate' %}
</span>
{% endif %}
{% if validate_attendances.has_next %}
<span
class="oh-card-dashboard__title float-end"
id="department-previous"
style="cursor: pointer"
hx-target="#AttendanceValidateTarget"
hx-get="{% url 'dashboard-attendance-validate' %}?{{pd}}&page={{ validate_attendances.next_page_number }}"
hx-trigger="click delay:0.3s"
title="Next Page"
>
<ion-icon
name="caret-forward-outline"
role="img"
class="md hydrated"
aria-label="caret back outline"
></ion-icon>
</span>
{% endif %}
</div>
<div class="oh-card-dashboard__body" style="height:80%">
{% if validate_attendances %}
<div class="oh-sticky-table h-100">
<div class="oh-sticky-table__table oh-table--sortable">
<div class="oh-sticky-table__thead">
<div class="oh-sticky-table__tr">
<div
class="oh-sticky-table__th"
>
{% trans "Employee" %}
<div class="oh-card-dashboard__body" style="height: 80%">
{% if validate_attendances %}
<div class="oh-sticky-table h-100">
<div class="oh-sticky-table__table oh-table--sortable">
<div class="oh-sticky-table__thead">
<div class="oh-sticky-table__tr">
<div class="oh-sticky-table__th">
{% trans "Employee" %}
</div>
<div class="oh-sticky-table__th">
{% trans "Worked Hours" %}
</div>
<div class="oh-sticky-table__th"></div>
</div>
<div
class="oh-sticky-table__th"
>
{% trans "Worked Hours" %}
</div>
<div class="oh-sticky-table__th"></div>
</div>
</div>
{% for attendance in validate_attendances %}
{% for attendance in validate_attendances %}
<div class="oh-sticky-table__tbody">
<div
class="oh-sticky-table__tr"
draggable="false"
data-toggle="oh-modal-toggle"
data-target="#bigModal"
hx-target="#bigModalTarget"
hx-get="{% url 'user-request-one-view' attendance.id %}?validate=true&instances_ids={{validate_attendances_ids}}&dashboard=true"
>
class="oh-sticky-table__tr"
draggable="false"
data-toggle="oh-modal-toggle"
data-target="#bigModal"
hx-target="#bigModalTarget"
hx-get="{% url 'user-request-one-view' attendance.id %}?validate=true&instances_ids={{validate_attendances_ids}}&dashboard=true"
>
<div class="oh-sticky-table__sd">
<div class="oh-profile oh-profile--md">
<div class="oh-profile__avatar mr-1">
<img
src="{{attendance.employee_id.get_avatar}}"
class="oh-profile__image"
alt=""
/>
<img
src="{{attendance.employee_id.get_avatar}}"
class="oh-profile__image"
alt=""
/>
</div>
<span class="oh-profile__name oh-text--dark"
>{{attendance.employee_id}}</span
>{{attendance.employee_id}}</span
>
</div>
</div>
<div class="oh-sticky-table__td">
{{attendance.attendance_worked_hour}}
{{attendance.attendance_worked_hour}}
</div>
<div class="oh-sticky-table__td">
<a
href='{% url "validate-this-attendance" attendance.id %}'
class="oh-btn oh-btn--info"
onclick="event.stopPropagation();return confirm('{% trans "Do you want to validate this attendance ?" %}')"
href='{% url "validate-this-attendance" attendance.id %}'
class="oh-btn oh-btn--info"
onclick="event.stopPropagation();return confirm('{% trans "Do you want to validate this attendance ?" %}')"
>
{% trans "Validate" %}
{% trans "Validate" %}
</a>
</div>
</div>
</div>
{% endfor %}
{% endfor %}
</div>
</div>
</div>
{% else %}
<div style="height: 380px; display:flex;align-items: center;justify-content: center;" class="">
<div style="" class="">
<img style="display: block;width: 70px;margin: 20px auto ;" src="/static/images/ui/joiningchart.png" class="" alt=""/>
<h3 style="font-size:16px" class="oh-404__subtitle">{% trans "No data Found..." %}</h3>
</div>
</div>
{% endif %}
<span class="oh-pagination__page float-end mt-2 fw-bold">
{% trans "Page" %} {{ validate_attendances.number }} {%trans "of" %}
{{validate_attendances.paginator.num_pages }}.
</span>
{% else %}
<div
style="
height: 380px;
display: flex;
align-items: center;
justify-content: center;
"
class=""
>
<div style="" class="">
<img
style="display: block; width: 70px; margin: 20px auto"
src="/static/images/ui/joiningchart.png"
class=""
alt=""
/>
<h3 style="font-size: 16px" class="oh-404__subtitle">
{% trans "No data Found..." %}
</h3>
</div>
</div>
{% endif %}
</div>