Skip to content

Commit

Permalink
feat: add tabs to approvals list
Browse files Browse the repository at this point in the history
  • Loading branch information
hellodeloo committed Sep 11, 2024
1 parent dee32a0 commit e2abc49
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 102 deletions.
64 changes: 43 additions & 21 deletions itou/templates/approvals/list.html
Original file line number Diff line number Diff line change
@@ -1,42 +1,63 @@
{% extends "layout/base.html" %}
{% load django_bootstrap5 %}
{% load static %}
{% load matomo %}
{% load str_filters %}

{% block title %}Salariés et PASS IAE {{ block.super }}{% endblock %}

{% block title_prevstep %}
{% include "layout/previous_step.html" with back_url=back_url only %}
{% endblock %}

{% block title_content %}<h1>Salariés et PASS IAE</h1>{% endblock %}
{% block title_content %}<h1>Salariés</h1>{% endblock %}

{% block title_extra %}
{% if request.current_organization.can_use_employee_record %}
<ul class="s-tabs-01__nav nav nav-tabs" data-it-sliding-tabs="true">
<li class="nav-item active">
<a class="nav-link active" href="{% url 'approvals:list' %}" {% matomo_event "employeurs" "clic" "onglet-salaries-pass-iae" %}>
Salariés et PASS IAE
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'employee_record_views:list' %}?status=NEW" {% matomo_event "employeurs" "clic" "onglet-fiches-salaries" %}>
<span>Fiches salariés ASP</span>
{% if num_rejected_employee_records %}
<span class="badge badge-sm rounded-pill bg-warning text-white ms-2">{{ num_rejected_employee_records }}</span>
{% endif %}
</a>
</li>
</ul>
{% endif %}
{% endblock %}

{% block content %}
<section class="s-section">
<div class="s-section__container container">
<div class="s-section__row row">
<div class="col-12">
<form hx-get="{% url 'approvals:list' %}"
hx-trigger="change delay:.5s, change from:#id_job_seeker"
hx-indicator="#approvals-list"
hx-target="#approvals-list"
hx-swap="outerHTML"
hx-push-url="true"
hx-include="#id_job_seeker">
<div class="btn-dropdown-filter-group mb-3 mb-md-4">
{% include "approvals/includes/approvals_filters/status.html" %}
{% include "includes/btn_dropdown_filter/radio.html" with field=filters_form.expiry only %}
{% include "approvals/includes/list_reset_filters.html" %}
<div class="tab-content">
<h2 class="mb-3 mb-md-4">Salariés et PASS IAE</h2>
<form hx-get="{% url 'approvals:list' %}"
hx-trigger="change delay:.5s, change from:#id_job_seeker"
hx-indicator="#approvals-list"
hx-target="#approvals-list"
hx-swap="outerHTML"
hx-push-url="true"
hx-include="#id_job_seeker">
<div class="btn-dropdown-filter-group mb-3 mb-md-4">
{% include "approvals/includes/approvals_filters/status.html" %}
{% include "includes/btn_dropdown_filter/radio.html" with field=filters_form.expiry only %}
{% include "approvals/includes/list_reset_filters.html" %}
</div>
</form>
<div class="d-flex flex-column flex-md-row align-items-md-center justify-content-md-between mb-3 mb-md-4">
{% include "approvals/includes/list_counter.html" %}
<div class="flex-column flex-md-row mt-3 mt-md-0">{% bootstrap_field filters_form.job_seeker layout="inline" %}</div>
</div>
</form>
</div>
</div>
<div class="s-section__row row">
<div class="col-12">
<div class="d-flex flex-column flex-md-row align-items-md-center justify-content-md-between mb-3 mb-md-4">
{% include "approvals/includes/list_counter.html" %}
<div class="flex-column flex-md-row mt-3 mt-md-0">{% bootstrap_field filters_form.job_seeker layout="inline" %}</div>
{% include "approvals/includes/list_results.html" %}
</div>
{% include "approvals/includes/list_results.html" %}
</div>
</div>
</div>
Expand All @@ -45,6 +66,7 @@

{% block script %}
{{ block.super }}
<script src='{% static "js/sliding_tabs.js" %}'></script>
<script src='{% static "js/htmx_compat.js" %}'></script>
<script src='{% static "js/htmx_dropdown_filter.js" %}'></script>
<!-- Needed to use the Select2MultipleWidget JS widget. -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<span>Fiches salariés ASP</span>
</a>
{% if num_rejected_employee_records %}
<span class="badge rounded-pill badge-xs bg-danger">{{ num_rejected_employee_records }}</span>
<span class="badge rounded-pill badge-xs bg-warning">{{ num_rejected_employee_records }}</span>
{% endif %}
{% if request.current_organization.kind == CompanyKind.EITI %}
{% include "dashboard/includes/stats_new_badge.html" %}
Expand Down
123 changes: 74 additions & 49 deletions itou/templates/employee_record/list.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{% extends "layout/base.html" %}
{% load django_bootstrap5 %}
{% load static %}
{% load matomo %}

{% block title %}Fiches salarié ASP - {{ request.current_organization.display_name }} {{ block.super }}{% endblock %}

Expand Down Expand Up @@ -29,67 +30,90 @@
{% endif %}
{% endblock %}

{% block title_content %}
<h1>Fiches salarié ASP - {{ request.current_organization.display_name }}</h1>
<h2 class="h3">Nous transférons vos fiches salarié à l'ASP afin de vous faire gagner du temps</h2>
<p>Une fois envoyées et validées, vous retrouverez directement vos données sur l'extranet de l'ASP.</p>
<ul>
<li>
Ne sont présentes dans cette liste que les candidatures acceptées (embauches) à partir du <b>{{ feature_availability_date|date }}</b>.
</li>
<li>
Vous devez avoir une annexe financière valide dans l'extranet de l'ASP pour pouvoir déclarer une fiche salarié dans les emplois.
</li>
<li>La visualisation dans l’Extranet IAE 2.0 interviendra dans les 2 heures suivant l’envoi.</li>
</ul>
{% include "employee_record/includes/list_status_help.html" with request=request status=form.status.value only %}
{% block title_content %}<h1>Salariés</h1>{% endblock %}

{% block title_extra %}
{% if request.current_organization.can_use_employee_record %}
<ul class="s-tabs-01__nav nav nav-tabs" data-it-sliding-tabs="true">
<li class="nav-item">
<a class="nav-link" href="{% url 'approvals:list' %}" {% matomo_event "employeurs" "clic" "onglet-salaries-pass-iae" %}>
Salariés et PASS IAE
</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="{% url 'employee_record_views:list' %}?status=NEW" {% matomo_event "employeurs" "clic" "onglet-fiches-salaries" %}>
<span>Fiches salariés ASP</span>
{% if num_rejected_employee_records %}
<span class="badge badge-sm rounded-pill bg-warning text-white ms-2">{{ num_rejected_employee_records }}</span>
{% endif %}
</a>
</li>
</ul>
{% endif %}
{% endblock %}

{% block content %}
<section class="s-section">
<div class="s-section__container container">
<div class="row my-3 my-md-5">
<div class="col-12">
<div class="c-box p-3 p-md-4 d-flex align-items-center">
<div class="p-0 flex-grow-1 h5 m-0">Vous ne trouvez pas la fiche salarié d’un de vos salariés ?</div>
<a class="btn btn-primary" href="{% url "employee_record_views:add" %}">Créer une fiche salarié</a>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<form hx-get="{% url 'employee_record_views:list' %}"
hx-trigger="change delay:.5s, change from:#id_job_seeker"
hx-indicator="#employee-records-container"
hx-target="#employee-records-container"
hx-swap="outerHTML"
hx-push-url="true"
hx-include="#id_job_seeker">
<div class="btn-dropdown-filter-group mb-3 mb-md-4">
<div class="dropdown">
<button type="button" class="btn btn-dropdown-filter dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
Statut
</button>
<ul class="dropdown-menu">
{% include "employee_record/includes/employee_record_filters/status.html" %}
<div class="tab-content">
<div class="d-flex flex-column flex-lg-row gap-3 align-items-lg-center justify-content-lg-between mb-3">
<h2 class="mb-0">Fiches salarié ASP</h2>
<div class="d-flex flex-column flex-md-row gap-2 justify-content-md-end" role="group" aria-label="Actions sur les collaborateurs">
<a class="btn btn-primary btn-ico" href="{% url "employee_record_views:add" %}">
<i class="ri-user-add-line ri-lg" aria-hidden="true"></i>
<span>Créer une fiche salarié</span>
</a>
</div>
</div>
{% include "employee_record/includes/list_status_help.html" with request=request status=form.status.value only %}
<div class="c-info mb-3 mb-md-4">
<button class="c-info__summary collapsed" data-bs-toggle="collapse" data-bs-target="#collapseInfoASP" aria-expanded="false" aria-controls="collapseInfoASP">
<span>Nous transférons vos fiches salarié à l'ASP afin de vous faire gagner du temps</span>
</button>
<div class="c-info__detail collapse" id="collapseInfoASP">
<p>Une fois envoyées et validées, vous retrouverez directement vos données sur l'extranet de l'ASP.</p>
<ul>
<li>
Ne sont présentes dans cette liste que les candidatures acceptées (embauches) à partir du <b>{{ feature_availability_date|date }}</b>.
</li>
<li>
Vous devez avoir une annexe financière valide dans l'extranet de l'ASP pour pouvoir déclarer une fiche salarié dans les emplois.
</li>
<li>La visualisation dans l’Extranet IAE 2.0 interviendra dans les 2 heures suivant l’envoi.</li>
</ul>
</div>
</div>
{# Filled via jQuery. Does not need reloading with HTMX, its content is static. #}
{{ form.order.as_hidden }}
</form>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="d-flex flex-column flex-md-row align-items-md-center mb-3 mb-md-4">
{% include "employee_record/includes/list_counter.html" %}
{% include "employee_record/includes/list_order.html" %}
<div class="flex-column flex-md-row mt-3 mt-md-0 ms-md-3">
{% bootstrap_field filters_form.job_seeker layout="inline" %}
<form hx-get="{% url 'employee_record_views:list' %}"
hx-trigger="change delay:.5s, change from:#id_job_seeker"
hx-indicator="#employee-records-container"
hx-target="#employee-records-container"
hx-swap="outerHTML"
hx-push-url="true"
hx-include="#id_job_seeker">
<div class="btn-dropdown-filter-group mb-3 mb-md-4">
<div class="dropdown">
<button type="button" class="btn btn-dropdown-filter dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
Statut
</button>
<ul class="dropdown-menu">
{% include "employee_record/includes/employee_record_filters/status.html" %}
</ul>
</div>
</div>
{# Filled via jQuery. Does not need reloading with HTMX, its content is static. #}
{{ form.order.as_hidden }}
</form>
<div class="d-flex flex-column flex-md-row align-items-md-center mb-3 mb-md-4">
{% include "employee_record/includes/list_counter.html" %}
{% include "employee_record/includes/list_order.html" %}
<div class="flex-column flex-md-row mt-3 mt-md-0 ms-md-3">
{% bootstrap_field filters_form.job_seeker layout="inline" %}
</div>
</div>
{% include "employee_record/includes/list_results.html" %}
</div>
{% include "employee_record/includes/list_results.html" %}
</div>
</div>
</div>
Expand All @@ -98,6 +122,7 @@ <h2 class="h3">Nous transférons vos fiches salarié à l'ASP afin de vous faire

{% block script %}
{{ block.super }}
<script src='{% static "js/sliding_tabs.js" %}'></script>
<script src='{% static "js/htmx_compat.js" %}'></script>
<script src='{% static "js/htmx_dropdown_filter.js" %}'></script>
<!-- Needed to use Select2MultipleWidget. -->
Expand Down
13 changes: 7 additions & 6 deletions itou/www/approvals_views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,9 @@

from itou.approvals import enums as approvals_enums
from itou.approvals.constants import PROLONGATION_REPORT_FILE_REASONS
from itou.approvals.models import (
Approval,
ProlongationRequest,
ProlongationRequestDenyInformation,
Suspension,
)
from itou.approvals.models import Approval, ProlongationRequest, ProlongationRequestDenyInformation, Suspension
from itou.employee_record.enums import Status
from itou.employee_record.models import EmployeeRecord
from itou.files.models import File
from itou.job_applications.enums import JobApplicationState
from itou.job_applications.models import JobApplication
Expand Down Expand Up @@ -179,6 +176,7 @@ def __init__(self):

def setup(self, request, *args, **kwargs):
super().setup(request, *args, **kwargs)
# self.siae = get_current_company_or_404(request)
if self.siae:
self.form = ApprovalForm(self.siae.pk, self.request.GET or None)

Expand All @@ -203,6 +201,9 @@ def get_context_data(self, **kwargs):
context["filters_form"] = self.form
context["filters_counter"] = self.form.get_filters_counter()
context["back_url"] = reverse("dashboard:index")
context["num_rejected_employee_records"] = (
EmployeeRecord.objects.for_company(self.siae).filter(status=Status.REJECTED).count(),
)
return context


Expand Down
3 changes: 3 additions & 0 deletions itou/www/employee_record_views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,9 @@ def list_employee_records(request, template_name="employee_record/list.html"):
"ordered_by_label": order_by.label,
"matomo_custom_title": "Fiches salarié ASP",
"back_url": reverse("dashboard:index"),
"num_rejected_employee_records": EmployeeRecord.objects.for_company(siae)
.filter(status=Status.REJECTED)
.count(),
}

return render(request, "employee_record/includes/list_results.html" if request.htmx else template_name, context)
Expand Down
Loading

0 comments on commit e2abc49

Please sign in to comment.