From aa75bcbfeb8a846076f6463a3c185a2cd361e1d1 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Wed, 30 Sep 2026 17:59:01 +0200 Subject: [PATCH] feat(projects): upgrade filter UI to modern modal with badge counter and contextual status styles --- loko/projects/locale/en/LC_MESSAGES/django.mo | Bin 12943 -> 13311 bytes loko/projects/locale/en/LC_MESSAGES/django.po | 25 + loko/projects/locale/fr/LC_MESSAGES/django.mo | Bin 13695 -> 14087 bytes loko/projects/locale/fr/LC_MESSAGES/django.po | 25 + loko/projects/locale/nl/LC_MESSAGES/django.mo | Bin 13469 -> 13866 bytes loko/projects/locale/nl/LC_MESSAGES/django.po | 25 + .../static/projects/projects_index.js | 74 ++- .../templates/projects/projects_index.html | 433 +++++++++++++----- loko/projects/views.py | 16 +- 9 files changed, 457 insertions(+), 141 deletions(-) diff --git a/loko/projects/locale/en/LC_MESSAGES/django.mo b/loko/projects/locale/en/LC_MESSAGES/django.mo index d4a0a6a8f9725be1ab6d7ddccf3e03bcab0d8c68..7b653a85a367997a2c253511829af57464ca60fa 100644 GIT binary patch delta 4574 zcmYk;3vgA%0mkvo`{tz=G(1gmcqAmy5TMaYPy-T3c_}rOLWJ0Basr8$B;0!mhKE;P zmJ}5s8c;N~N_Z&BBWMvRSQ4O}v9uj4Qwpull$J7dN=v8Okz)J*?%7V+@#D999=m&X z&$(uk`=5o;-}g;?(NIp3J4ku5F)4Az1T%Ehm<@hop2jvDhWqNq7)b@GxfKhsb~CEdShYOw|0D$}JqYVNYbx>ut1iP#um#-7o_O;Q~~LPgtKq zAMFjO0XCx^WEV1k>9xntq3*wmnphfx6fnN=Q_&NQ$9$|nUD$}~pbfdlbYg!zfLei{ zVIKb7p6}1aES?#Ox_&HbpmH38(^2EBu*cglmGR9cDv9_K>Pb3r6z-SlXFt|o1NL%2OLi9Zl3m8HVJ7RX zl_*8sP>1SZ9crK#tlLp5@j7ZEZz5foWA^wb7+XQ)KXZkDreVSW)_*9KS*({XXhyvQ zPoj=@S$~Q-w69iWos4Yt2ja7%4$gY__$Xv|`)O{0CU-W~hm7I_2Kf0WX_G&e1 zZ@1VJub`In4b;TmLT%L{)aP{y8Qc5;wd6N&IQHS=*MN7S?wf*|&;zK6*J3#~dq&N> zRPN`%m$)78rT2As4mHDSrmG3M=wJ(KpslD0A4Lst3biE{P!qa@TI%b_+)OI_r!5$c zn)rCk*7sjYrGf)XP&d4fiFg|IBp;#n@H}e3zoG{C7wQQ!a=k6cLaoqXYZ2;+%TP-{ z1GQCiQTaE{`y5Kl!pk7o*zd=p#A{OH{)PO@BuU&$gXf5h1T83J= z?Y6xa$J72LmSEZt_Wv#_WmJl=1=Zexlkhw)z-&GR-LS&CAIH%CBWeZuF`C|$T$~)o zONU|FkF!s7VLn9`%f#h*6LL@wGB%I(*WQ$IK;LB*YR^NMfUWkzRj9q)XxkmAt=M6G z2enm)Q7d*DwPNQ{6TF1#_iw2CzOcsSN4+IW&-ebXm4jNsQdCE?P%l>iwI$2209T?0 z=(6nts0a8h>b`5Jtx4ubK|e$TkVB>zSu`^THL=zxm1HVwP9>H zQD4b(7@L?qzZ3N&2T{Lxr%+q*sXhJ$>i+bR-Z+C$E9t~!|3^^K|5Qe!I=T;2@FCPh zs_gkXETi3m8sI&QJvqjn9Q87PW!nSU554shFb%7$F6v!q#-WUFwo>uo5qm)o>PgR_ z1~_lqmr*PAIckgkjj0&NkA_S~Jy{mU;~l8`b5Rp0LXC4bs-H<1)yq~vMN2dT^$t{F zIyRwhSb_Slb=Q1*BAA<<)Zo@gSx-ewr8TQ zpA)5W3zbK#4X7n-McudtwO7xewrUIN2dTrJ-;1%A5!K-t^yA02eG#>lm$4B4iJEZk zSg#!|rsC(oJan)D^#mJ{)ic|0BA&*3(KpVRdvGe|;aX%n%^uVioyA$`|2luVV>L3S z*=#+5+Jb)|6ONiMsl;(W7cD2R5*57%$H@rt80jW`NHtN>r?!jiRKu3}xSM>}wly)j zH;c&<5+W+Ek^SUx#y8JWxw&Y$`rdTld(@|qefHQ9)Ji;0ZX=CEMK79)L$b*nGLH-= z4-u6^*NPyJ=sfC-XV9BA!<-Yk?)fZH7HGF z3VD>Y5tX+{ZLH?~GZ6F@{J%u`eWn#A6YWubX0yqiM4yVvJtUPpK?W0*aby_L=NKf1 z$s6Ry16LlVhWH7FmFWvbZnZN`uN$))y>$nB()yhv2;BPU`tey#9jTd%`Xl1b7? zJ}DuSiOOmZ^Al?W9who>WGNX<{6yo&N`-Y29q!}Pb%7c;tQYU{(z!9c6i)EGOpIMD0_8f%?;uNj*}d&lVg QsotQ0V6b~i@$`iM0)I#D6#xJL delta 4215 zcmX}v4RqF30mt#XSJ=kO2FSp%vB5S5GB%P(z!)HE2qa(%Xb}qs7$vxoG~b>;rzr`_ zbWTX1L{LOfN6Mzgsl?7n52EgLP%Jzri8>h(=ZGFSY2WXjJMY==`P~2Oz5jdf|9Rlc zWgF`ff9;q4XrLSY?=+(=;A>`(Ua4+WJaBRg9_$v0pkFhs?hJ!F8FN6Xt z!VH{qth71BVM75CSo*RMf4wh1d}KeSTu34Vv=_%?dtS@Z^Z^oD9E$9$ZCj=)?j!^U`g z8!~v|#kk#$HuM%&^U>8_+Ej^u=5(#A39a$paaGhjtD-TwF_VG~S1fz<%_CkI)-@ zfi}>GdC&{c5g39T3Z>{sO+x;{3_fOHEe^wH(c_1)96!uw{5_DycxgEn;S9{i<`!+g)o#=!74H@Nd7Huep`AWmV(L!`YN}{6@RD6<);|UYd8%{>2WOj5R zIu&*34Obwe8&)E1g(md6t>~Nk96E9x=>3nPQ*s=g!qaho;v5x+Foh-WoMfS|PXTf$ zT!PN+JS@efXhZAKC)td4^xyfdX_&#-bg%6dmF@NLyhMI`oZb$2TB<;b}fR?+r}HPV@oZ$9}&5|Da++ z=g}KyumF6r!RU|=Lr10}IuU)+S?EwNz^1GKY5XNH-R^qL3dk0Qs`xt%?3+bKb z-;N0@&r_+!6X=r<i;;d*rO z)uW5H5k2otbSl@EGXCypVTV(&Bf1xzqXX!W{Sh6qV`v9YqBlN`UiVovr7SsOImkK- zMR9u~dY{?oTB^l#TvL`vzSnoK!v>zh3VZ>5f)CIO&!AJ2S)Tl&8HD_WDn1yTa2?vQ zM$E)@=*ZlUKKW*JinpRqei$?H{Y0#Mg!bqpX5c4y5uS<1i}=>@Nz2exUWGO=9c}np zw4;mAk*i0~TZ`Ve1#Nf>dj8J1o!A#E9r3^+bV?4RbNwOOp)b%8N@sYyQ7*FXLIK*b zN$7Q#qvu}}w-=(~8KyOrt zE~??^h>SqzdOYUfO!WNu=r`eF^!~S@=dZ;c_z)(nv{Lbc?dU3h2EE}c(Ie3lSjzr$ zXh(+f_2%_u==qiC6HY_Fn6AWc;94Aq?RX2G!X>!4lJU1^uU97L>P_TpKO93F`W!u8 zI3{_#6dk&8=r`kJ^!Qxtg$tr}=!4Xw=iP&@g~!ki?n2MsGluc^HEL&vH~tfPVQ1X_ zJ9@!s?1P_1(|MU4vHs|FL(mZ^N2g{q`bATXF1jnw`z%7+TN1ZdC#dAGqY+196ZXY@ zar+>8!9TGW&!IgpsOBdWD{u$Q^V&>YFaDG2>!iEfK;>cbV)qW58|%J;w#VDs z^>e<#?OXWRO)S2vw~-Fgk62t(3(1{sP*TZMayw}yR}jn3hzs+(WF@iqkCDsCWHN>P zgsdl7telo{dH~rn9s%JYVr{2E?cSOkQQ<+$tApnVJWe!A=zXV*+eXTNIQ9&%qBk~ zmg*$oZoHB_(mnsYh2ajeoV-k?kv3xKOMXF~BsY;;$@OG4v6LqH>a!%)p2sK1Z@xN` ztZakp$YZ2(P;y__yB@3Ig;?2$3%YmW_O_zLwV9 zUUa0bW#~Iu%?%@e-)rT~#jBU!)KFYoUsv0KSSO2d!3u AIRF3v diff --git a/loko/projects/locale/en/LC_MESSAGES/django.po b/loko/projects/locale/en/LC_MESSAGES/django.po index 28b98b1..de30d2c 100644 --- a/loko/projects/locale/en/LC_MESSAGES/django.po +++ b/loko/projects/locale/en/LC_MESSAGES/django.po @@ -863,3 +863,28 @@ msgstr "Invalid date for “%(name)s”. " #: projects/views.py:1104 msgid "Valeurs sauvegardées avec succès." msgstr "Values ​​saved successfully." + +#: projects/templates/projects/projects_index.html +msgid "Filtrer les projets" +msgstr "Filter projects" + +#: projects/templates/projects/projects_index.html +msgid "Sélectionnez les critères à afficher sur la carte et dans le tableau" +msgstr "Select the criteria to display on the map and in the table" + +#: projects/templates/projects/projects_index.html +msgid "Filtres" +msgstr "Filters" + +#: projects/templates/projects/projects_index.html +msgid "Période" +msgstr "Period" + +#: projects/templates/projects/projects_index.html +msgid "Effacer dates" +msgstr "Clear dates" + +#: projects/templates/projects/projects_index.html +msgid "Tout effacer" +msgstr "Clear all" + diff --git a/loko/projects/locale/fr/LC_MESSAGES/django.mo b/loko/projects/locale/fr/LC_MESSAGES/django.mo index df8ab056b13a5063de5cbae44d463cbbf4224f94..21704c445c6c58b44eef910116417d8cc539ee05 100644 GIT binary patch literal 14087 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 EKj6~MmjD0& literal 13695 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 MapF)zaas8P0W{C~2LJ#7 delta 4206 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 Bc;)~A diff --git a/loko/projects/locale/nl/LC_MESSAGES/django.po b/loko/projects/locale/nl/LC_MESSAGES/django.po index 2afe035..c07f867 100644 --- a/loko/projects/locale/nl/LC_MESSAGES/django.po +++ b/loko/projects/locale/nl/LC_MESSAGES/django.po @@ -850,3 +850,28 @@ msgstr "Ongeldige datum voor “%(name)s”. Verwacht formaat: JJJJ-MM-DD." #: projects/views.py:1104 msgid "Valeurs sauvegardées avec succès." msgstr "Waarden succesvol opgeslagen." + +#: projects/templates/projects/projects_index.html +msgid "Filtrer les projets" +msgstr "Projecten filteren" + +#: projects/templates/projects/projects_index.html +msgid "Sélectionnez les critères à afficher sur la carte et dans le tableau" +msgstr "Selecteer de criteria die op de kaart en in de tabel moeten worden weergegeven" + +#: projects/templates/projects/projects_index.html +msgid "Filtres" +msgstr "Filters" + +#: projects/templates/projects/projects_index.html +msgid "Période" +msgstr "Periode" + +#: projects/templates/projects/projects_index.html +msgid "Effacer dates" +msgstr "Datums wissen" + +#: projects/templates/projects/projects_index.html +msgid "Tout effacer" +msgstr "Alles wissen" + diff --git a/loko/projects/static/projects/projects_index.js b/loko/projects/static/projects/projects_index.js index 6f62ad0..6d45346 100644 --- a/loko/projects/static/projects/projects_index.js +++ b/loko/projects/static/projects/projects_index.js @@ -79,11 +79,49 @@ projectsgeojsonloader.addEventListener("geojsonLoaded", event => { -// Apply the correct width to the dropdown-menu +// Filter badge & active filter count +function countActiveFilters() { + const urlParams = new URLSearchParams(window.location.search); + let count = 0; + ['status', 'thematic', 'tag'].forEach(param => { + const values = urlParams.getAll(param); + if (values.length > 0 && values[0] !== '') { + count++; + } + }); + if (urlParams.get('begin_date') || urlParams.get('end_date')) { + count++; + } + return count; +} + +function updateFilterBadge() { + const count = countActiveFilters(); + const badge = document.getElementById('filter-badge'); + const countSpan = document.getElementById('filter-count'); + if (badge && countSpan) { + if (count > 0) { + countSpan.textContent = count; + badge.classList.remove('d-none'); + } else { + badge.classList.add('d-none'); + } + } +} + document.addEventListener("DOMContentLoaded", function () { - const parent_col = $('#col-left')[0]; - const parentWidth = Math.max(550, parent_col.offsetWidth - 40); - $('.filter-dropdown').width(`${parentWidth}px`); + updateFilterBadge(); + + const clearDatesBtn = document.getElementById('clear-dates-btn'); + if (clearDatesBtn) { + clearDatesBtn.addEventListener('click', function(e) { + e.preventDefault(); + const beginInput = document.getElementById('begin_date'); + const endInput = document.getElementById('end_date'); + if (beginInput) beginInput.value = ''; + if (endInput) endInput.value = ''; + }); + } }); // Apply filters @@ -109,6 +147,9 @@ document.getElementById('apply-filters').addEventListener('click', function(e) { const newUrl = `${window.location.pathname}?${params.toString()}`; window.history.pushState({}, '', newUrl); + // Update filter badge + updateFilterBadge(); + // Load filtered data handleGeojsonMapLoading(init=false, projectsgeojsonloader, 'projects'); projectsgeojsonloader.loadGeojson(projectsgeojsonUrl+`?${params}`); @@ -116,11 +157,10 @@ document.getElementById('apply-filters').addEventListener('click', function(e) { // Save preferences savePreferencesFromForm(params); - // Trouver le dropdown parent et le refermer - const dropdownEl = this.closest('.dropdown'); - const dropdown = bootstrap.Dropdown.getInstance(dropdownEl.querySelector('[data-bs-toggle="dropdown"]')); - if (dropdown) { - dropdown.hide(); // ✅ ferme proprement le dropdown + // Fermer la modale + const filterModal = bootstrap.Modal.getInstance(document.getElementById('filterModal')); + if (filterModal) { + filterModal.hide(); } }); @@ -131,9 +171,7 @@ document.getElementById('reset-filters').addEventListener('click', function(e) { form.reset(); // Reset form fields // Uncheck all filter checkboxes - form.querySelectorAll('input[type="checkbox"][name="status"]').forEach(cb => { cb.checked = false; }); - form.querySelectorAll('input[type="checkbox"][name="thematic"]').forEach(cb => { cb.checked = false; }); - form.querySelectorAll('input[type="checkbox"][name="tag"]').forEach(cb => { cb.checked = false; }); + form.querySelectorAll('input[type="checkbox"]').forEach(cb => { cb.checked = false; }); // Explicitly clear date fields document.getElementById('begin_date').value = ''; @@ -142,6 +180,9 @@ document.getElementById('reset-filters').addEventListener('click', function(e) { // Remove URL parameters window.history.pushState({}, '', window.location.pathname); + // Update filter badge + updateFilterBadge(); + // Reload all data without filters handleGeojsonMapLoading(init=false, projectsgeojsonloader, 'projects'); projectsgeojsonloader.loadGeojson(projectsgeojsonUrl); @@ -155,11 +196,10 @@ document.getElementById('reset-filters').addEventListener('click', function(e) { }).catch(() => {}); } - // Trouver le dropdown parent et le refermer - const dropdownEl = this.closest('.dropdown'); - const dropdown = bootstrap.Dropdown.getInstance(dropdownEl.querySelector('[data-bs-toggle="dropdown"]')); - if (dropdown) { - dropdown.hide(); // ✅ ferme proprement le dropdown + // Fermer la modale + const filterModal = bootstrap.Modal.getInstance(document.getElementById('filterModal')); + if (filterModal) { + filterModal.hide(); } }); diff --git a/loko/projects/templates/projects/projects_index.html b/loko/projects/templates/projects/projects_index.html index a05cf2d..e250989 100644 --- a/loko/projects/templates/projects/projects_index.html +++ b/loko/projects/templates/projects/projects_index.html @@ -17,19 +17,132 @@ margin-top: 2px; } - /* Styles pour afficher les options de filtre sous forme de badges checkables */ + /* ─── Modern Airbnb-style Filter Modal ──────────────────── */ + #filterModal .modal-dialog { + max-width: 820px; + margin: 1.5rem auto; + } + + #filterModal .modal-content { + border: 1px solid #e2e8f0; + border-radius: 18px; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + display: flex; + flex-direction: column; + max-height: 88vh; + overflow: hidden; + background-color: #ffffff; + } + + #filterModal .modal-header { + padding: 1.25rem 1.5rem; + border-bottom: 1px solid #f1f5f9; + background-color: #ffffff; + } + + #filterModal .modal-title { + font-size: 1.25rem; + font-weight: 700; + color: #0f172a; + letter-spacing: -0.02em; + } + + #filterModal .btn-close { + font-size: 0.85rem; + padding: 0.5rem; + opacity: 0.5; + transition: opacity 0.15s ease; + } + + #filterModal .btn-close:hover { + opacity: 1; + } + + #filterModal .modal-body { + padding: 1.5rem; + background-color: #f8fafc; + flex: 1; + overflow-y: auto; + } + + #filterModal .modal-footer { + padding: 1rem 1.5rem; + background-color: #ffffff; + border-top: 1px solid #f1f5f9; + flex-shrink: 0; + display: flex; + justify-content: space-between; + align-items: center; + } + + /* Filter Section Cards */ + .filter-section { + background-color: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 14px; + padding: 1.15rem; + margin-bottom: 1rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02); + transition: border-color 0.15s ease, box-shadow 0.15s ease; + } + + .filter-section:hover { + border-color: #cbd5e1; + } + + .filter-section-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.85rem; + gap: 1rem; + } + + .filter-section-header label, + .filter-section-header .section-title { + font-size: 0.95rem; + font-weight: 700; + color: #0f172a; + margin: 0; + letter-spacing: -0.01em; + } + + .filter-section-buttons { + display: flex; + gap: 0.35rem; + margin-left: auto; + } + + .filter-section-buttons button { + padding: 0.25rem 0.65rem; + font-size: 0.75rem; + font-weight: 500; + border-radius: 6px; + border: 1px solid #e2e8f0; + background-color: #ffffff; + color: #64748b; + transition: all 0.15s ease; + } + + .filter-section-buttons button:hover { + background-color: #f1f5f9; + color: #0f172a; + border-color: #cbd5e1; + } + + /* Filter Options Badges & Chips */ .filter-options { display: flex; flex-wrap: wrap; - gap: 0.5rem; - padding: 0.5rem; - background-color: #f8f9fa; - border-radius: 0.375rem; - border: 1px solid #dee2e6; + gap: 0.45rem; + background-color: transparent !important; + border: none !important; + padding: 0 !important; + min-height: auto !important; } .filter-option { - display: flex; + display: inline-flex; align-items: center; } @@ -38,55 +151,204 @@ opacity: 0; width: 0; height: 0; - cursor: pointer; + pointer-events: none; } - .filter-option label.badge-label { + .filter-option label { display: inline-flex; align-items: center; - justify-content: center; - margin: 0; + gap: 0.35rem; + padding: 0.4rem 0.85rem; + font-size: 0.82rem; font-weight: 500; + color: #334155; + background-color: #ffffff; + border: 1.5px solid #e2e8f0; + border-radius: 9999px; cursor: pointer; - background-color: #e7f1ff; - color: #0c5cc9; - border-radius: 1rem; - padding: 0.4rem 0.6rem; - font-size: 0.75rem; - border: 1px solid #b8d4f1; - transition: all 0.2s ease; - text-align: center; + transition: all 0.15s ease; + user-select: none; white-space: nowrap; } - /* Default badges - checked state */ - .filter-option input[type="checkbox"]:checked + label.badge-label { - background-color: #0c5cc9; - color: white; - border-color: #0c5cc9; + .filter-option label:hover { + background-color: #f8fafc; + border-color: #94a3b8; + color: #0f172a; } - /* Default badges - hover */ - .filter-option input[type="checkbox"]:hover + label.badge-label { - background-color: #cfe2f3; + /* Default badges (Thematics, Tags) - checked state */ + .filter-option input[type="checkbox"]:checked + label:not(.context-badge) { + background-color: #0f172a !important; + border-color: #0f172a !important; + color: #ffffff !important; + font-weight: 600; + box-shadow: 0 2px 6px rgba(15, 23, 42, 0.16); + } + + /* Contextual color badges - inactive state (outline style) */ + .filter-option label.context-badge { + border-color: currentColor; + color: inherit; + background-color: transparent; + } + + .filter-option label.btn-outline-primary { border-color: #0c5cc9; color: #0c5cc9; } + .filter-option label.btn-outline-danger { border-color: #dc3545; color: #dc3545; } + .filter-option label.btn-outline-warning { border-color: #ffc107; color: #b45309; } + .filter-option label.btn-outline-success { border-color: #198754; color: #198754; } + .filter-option label.btn-outline-info { border-color: #0dcaf0; color: #087990; } + .filter-option label.btn-outline-dark { border-color: #343a40; color: #343a40; } + .filter-option label.btn-outline-secondary { border-color: #6c757d; color: #6c757d; } + + /* Contextual status badges - checked state (filled solid) */ + .filter-option input[type="checkbox"]:checked + label.context-badge { + color: #ffffff !important; + font-weight: 600; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12); + } + + .filter-option input[type="checkbox"]:checked + label.btn-outline-primary { background-color: #0c5cc9 !important; border-color: #0c5cc9 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-danger { background-color: #dc3545 !important; border-color: #dc3545 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-warning { background-color: #ffc107 !important; border-color: #ffc107 !important; color: #212529 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-success { background-color: #198754 !important; border-color: #198754 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-info { background-color: #0dcaf0 !important; border-color: #0dcaf0 !important; color: #212529 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-dark { background-color: #343a40 !important; border-color: #343a40 !important; } + .filter-option input[type="checkbox"]:checked + label.btn-outline-secondary { background-color: #6c757d !important; border-color: #6c757d !important; } + + /* Filter trigger badge */ + #filter-badge { + background-color: #0f172a !important; + color: #ffffff !important; + font-size: 0.72rem; + font-weight: 700; } {% endblock head %} -#interventions-table-container { - position: relative; - } - - #filter-dropdown-wrapper { - position: absolute; - top: 0.5rem; - left: 0.5rem; - z-index: 10; - margin-top: 2px; - } - - {% block content %} + + +