diff --git a/leave/static/dashboard/dashboard.js b/leave/static/dashboard/dashboard.js index 72ab7e416..e49abca87 100644 --- a/leave/static/dashboard/dashboard.js +++ b/leave/static/dashboard/dashboard.js @@ -20,6 +20,18 @@ $(document).ready(function(){ year = today.getFullYear() $(".month").val(`${year}-${month}`) $("#dash_month").val(`${year}-${month}`) + + function isPieChartEmpty(chartData) { + if (!chartData || !chartData.dataset || chartData.dataset.length === 0) { + return true; + } + for (var i = 0; i < chartData.dataset[0].data.length; i++) { + if (chartData.dataset[0].data[i] != 0) { + return false; + } + } + return true; + } //Employee wise chart for available leaves function available_leave_chart (dataSet){ @@ -119,7 +131,7 @@ $(document).ready(function(){ // stacked: true, title: { display: true, - text: "Number of leaves", + text: "Number of days", font: { weight: "bold", size: 16, @@ -162,8 +174,17 @@ $(document).ready(function(){ url: "/leave/available-leaves", dataType: "json", success: function (response) { - available_leave_chart(response) - + if (isPieChartEmpty(response)){ + $("#availableLeaveContainer").html( + `
+
+

${response.message}

+
+
` + ) + }else{ + available_leave_chart(response) + } }, error: (error) => { console.log('Error', error); diff --git a/leave/templates/leave/dashboard.html b/leave/templates/leave/dashboard.html index 56538d29e..d40f7bc7a 100644 --- a/leave/templates/leave/dashboard.html +++ b/leave/templates/leave/dashboard.html @@ -2,6 +2,9 @@ {% load static %} {% load i18n %} {% block content %} +{% load tz %} + +{% now "Y-m-d" as current_date %}
@@ -23,7 +26,7 @@
- New Requests + {% trans "New Requests" %}
@@ -35,7 +38,7 @@
- Approved Requests + {% trans "Approved Requests" %}
@@ -47,7 +50,7 @@
- Rejected Requests + {% trans "Rejected Requests" %}
@@ -63,7 +66,7 @@
- Employee Leaves + {% trans "Employee Leaves" %}
@@ -95,13 +98,21 @@ {% endfor %}
- {% else %} + {% elif current_date == next_holiday.start_date|date:"Y-m-d" %}
- -

{% trans "Today, all employees are present." %}

+ +

{% trans "Today is a holiday." %}

-
+
+ + {% else %} +
+
+ +

{% trans "No leave requests for today." %}

+
+
{% endif %}
@@ -110,22 +121,21 @@
- -
-
- -
-
- Next Holiday - {{next_holiday.name}} - {{next_holiday.start_date}} -
+
+
+
+
+ {% trans "Next Holiday" %} + {{next_holiday.name}} + {{next_holiday.start_date}} +
+
- Up coming holidays + {% trans "Up coming holidays" %}
    @@ -153,16 +163,23 @@
    - Department Leaves + {% trans "Department Leaves" %}
    {% if leave_today_employees %} + {% elif current_date == next_holiday.start_date|date:"Y-m-d" %} +
    +
    + +

    {% trans "Today is a holiday." %}

    +
    +
    {% else %}
    -

    {% trans "Today, all employees are present." %}

    +

    {% trans "No leave requests for today." %}

    {% endif %} @@ -172,7 +189,7 @@
    - Leave Type + {% trans "Leave Type" %}
    {% if leave_requests %} @@ -191,7 +208,7 @@
    - Leave trend this week + {% trans "Leave trend this week" %}
    diff --git a/leave/templates/leave/employee-dashboard.html b/leave/templates/leave/employee-dashboard.html index 63d3c30f1..4209ee2ad 100644 --- a/leave/templates/leave/employee-dashboard.html +++ b/leave/templates/leave/employee-dashboard.html @@ -1,14 +1,28 @@ {% extends 'index.html' %} {% load static %} {% block content %} +{% load i18n %}
    -
    + +
    -
    +
    - New Requests + {% trans "New Requests" %}
    @@ -20,9 +34,9 @@
    -
    +
    - Approved Requests + {% trans "Approved Requests" %}
    @@ -32,9 +46,9 @@
    -
    +
    - Rejected Requests + {% trans "Rejected Requests" %}
    @@ -49,9 +63,9 @@
    - Overall Conversions + {% trans "Available Leaves" %}
    -
    +
    @@ -59,7 +73,7 @@
    - Total Leave Requests + {% trans "Total Leave Requests" %}
    @@ -80,7 +94,7 @@
    - Next Holiday + {% trans "Next Holiday" %} {{next_holiday.name}} {{next_holiday.start_date}}
    @@ -89,7 +103,7 @@
    - Up coming holidays + {% trans "Up coming holidays" %}
      diff --git a/leave/templates/leave/leave_request/leave-requests.html b/leave/templates/leave/leave_request/leave-requests.html index 918e4d73a..fd2ace83f 100644 --- a/leave/templates/leave/leave_request/leave-requests.html +++ b/leave/templates/leave/leave_request/leave-requests.html @@ -11,6 +11,22 @@
    {% endif %} {% include 'filter_tags.html' %} +{% if not dashboard %} +
    + + + {% trans "Cancelled" %} + + + + {% trans "Requested" %} + + +
    +{% endif %}
    @@ -31,15 +47,15 @@ {% for leave_request in leave_requests %}
    -
    +
    {% if leave_request.employee_id.employee_profile %} {{leave_request.employee_id}} + alt="" /> {% else %} {{leave_request.employee_id}} + class="oh-profile__image" alt="" /> {% endif %}
    {{leave_request.employee_id}} diff --git a/leave/views.py b/leave/views.py index e177ede21..7ccf3c1d1 100644 --- a/leave/views.py +++ b/leave/views.py @@ -289,10 +289,14 @@ def leave_request_filter(request): if not request.GET.get("dashboard"): data_dict = parse_qs(previous_data) get_key_instances(LeaveRequest, data_dict) + if 'status' in data_dict: + status_list = data_dict['status'] + if len(status_list) > 1: + data_dict['status'] = [status_list[-1]] return render( request, "leave/leave_request/leave-requests.html", - {"leave_requests": page_obj, "pd": previous_data, "filter_dict": data_dict}, + {"leave_requests": page_obj, "pd": previous_data, "filter_dict": data_dict,"dashboard":request.GET.get("dashboard")}, ) @@ -1515,7 +1519,7 @@ def dashboard(request): approved=leave_requests.filter(status="approved") cancelled=leave_requests.filter(status="cancelled") holidays = Holiday.objects.filter(start_date__gte = today) - next_holiday = holidays[0] if holidays else None + next_holiday = holidays.order_by('start_date').first() if holidays.exists() else None holidays = holidays.filter(start_date__gte = today,start_date__month=today.month).order_by('start_date')[1:] @@ -1538,16 +1542,17 @@ def dashboard(request): def employee_dashboard(request): today = date.today() user=Employee.objects.get(employee_user_id = request.user) - leave_requests = LeaveRequest.objects.filter(employee_id=user,start_date__month=today.month,start_date__year=today.year) + leave_requests = LeaveRequest.objects.filter(employee_id=user) requested=leave_requests.filter(status="requested") approved=leave_requests.filter(status="approved") cancelled=leave_requests.filter(status="cancelled") - holidays = Holiday.objects.filter(start_date__gte = today,start_date__month=today.month).order_by('start_date') - next_holiday, holidays = (holidays[0], holidays[1:]) if holidays else (None, []) + holidays = Holiday.objects.filter(start_date__gte = today) + next_holiday = holidays.order_by('start_date').first() if holidays.exists() else None + holidays = holidays.filter(start_date__gte = today,start_date__month=today.month).order_by('start_date')[1:] context = { - "leave_requests":leave_requests, + "leave_requests":leave_requests.filter(start_date__month=today.month,start_date__year=today.year), "requested":requested, "approved":approved, "cancelled":cancelled, @@ -1592,12 +1597,13 @@ def available_leave_chart(request): response={ "labels":labels, "dataset":dataset, + "message":_("Oops!! No leaves available for you this month...") } return JsonResponse(response) @login_required def employee_leave_chart(request): - leave_requests=LeaveRequest.objects.all() + leave_requests=LeaveRequest.objects.filter(status="approved") leave_types = LeaveType.objects.all() day = date.today() if request.GET.get("date"): @@ -1683,37 +1689,23 @@ def department_leave_chart(request): @login_required def leave_type_chart(request): - today=date.today() leave_types=LeaveType.objects.all() leave_type_count = {types.name: 0 for types in leave_types} leave_request=LeaveRequest.objects.filter(status="approved") - company_leave_dates = company_leave_dates_list(CompanyLeave.objects.all(),datetime.today().replace(day=1)) - holidays=holiday_dates_list(Holiday.objects.all()) for leave in leave_request: - leave_dates = [] - - for leave_date in leave.requested_dates(): - leave_dates.append(leave_date) - - filtered_dates = [date for date in leave_dates if date.month == today.month and date.year == today.year] - leave_type_dates = [] - for filtered in filtered_dates: - if filtered not in company_leave_dates and filtered not in holidays: - leave_type_dates.append(filtered) for lev in leave_types: - if lev ==leave.leave_type_id: - leave_type_count[lev.name] += len(leave_type_dates) - + if lev ==leave.leave_type_id: + leave_type_count[lev.name] += leave.requested_days + labels= [leave_type.name for leave_type in leave_types] - dataset=[ - { - "label":_(""), - "data":list(leave_type_count.values()), - }, - ] + response={ "labels":labels, - "dataset":dataset, + "dataset":[ + { + "data":list(leave_type_count.values()), + }, + ], } return JsonResponse(response) diff --git a/static/images/ui/sunbed outline.png b/static/images/ui/sunbed outline.png new file mode 100644 index 000000000..e8d1fd822 Binary files /dev/null and b/static/images/ui/sunbed outline.png differ