From ad1a339dbe85c8d0d48ec048af28e0e0895aa83f Mon Sep 17 00:00:00 2001 From: kdeterme Date: Mon, 12 Oct 2026 19:51:13 +0200 Subject: [PATCH] feat(interventions): modernize index page with 3-tab filter modal and native table - Refactor filter modal into 3 categorized tabs with dynamic badge counters - Replace bootstrap-table with custom responsive HTML5 table and column chooser - Add active filter chips bar, sortable headers, and client pagination - Align design system with assets and controls modules - Update and compile translations (fr, en, nl) --- .../locale/en/LC_MESSAGES/django.mo | Bin 126026 -> 126533 bytes .../locale/en/LC_MESSAGES/django.po | 22 + .../locale/en/LC_MESSAGES/djangojs.mo | Bin 22523 -> 22865 bytes .../locale/en/LC_MESSAGES/djangojs.po | 18 + .../locale/fr/LC_MESSAGES/django.mo | Bin 141851 -> 142339 bytes .../locale/fr/LC_MESSAGES/django.po | 22 + .../locale/fr/LC_MESSAGES/djangojs.mo | Bin 24635 -> 25001 bytes .../locale/fr/LC_MESSAGES/djangojs.po | 18 + .../locale/nl/LC_MESSAGES/django.mo | Bin 131710 -> 132252 bytes .../locale/nl/LC_MESSAGES/django.po | 23 + .../locale/nl/LC_MESSAGES/djangojs.mo | Bin 23335 -> 23695 bytes .../locale/nl/LC_MESSAGES/djangojs.po | 18 + .../interventions/interventions_index.css | 954 ++++++++ .../interventions/interventions_index.js | 1219 +++++++--- .../interventions/interventions_index.html | 2139 +++++++---------- 15 files changed, 2826 insertions(+), 1607 deletions(-) create mode 100644 loko/interventions/static/interventions/interventions_index.css diff --git a/loko/interventions/locale/en/LC_MESSAGES/django.mo b/loko/interventions/locale/en/LC_MESSAGES/django.mo index 5252ef23d34f081ae75f3bec3c1d9cf44837753b..9e46f094b0cea580b0c469b5df30757ced6e5111 100644 GIT binary patch delta 34997 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 GNclfPS{yC_ delta 34559 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 Xzmsz-Hr4+DQR9PF diff --git a/loko/interventions/locale/en/LC_MESSAGES/django.po b/loko/interventions/locale/en/LC_MESSAGES/django.po index e9d5ea4..27b9a03 100644 --- a/loko/interventions/locale/en/LC_MESSAGES/django.po +++ b/loko/interventions/locale/en/LC_MESSAGES/django.po @@ -8458,5 +8458,27 @@ msgstr "My favorite filters" msgid "Enregistrer le filtre actuel..." msgstr "Save current filter..." +msgid "Classification & Statut" +msgstr "Classification & Status" +msgid "Acteurs & Marchés" +msgstr "Actors & Contracts" + +msgid "Dates & Lieux" +msgstr "Dates & Locations" + +msgid "Choisir les colonnes à afficher" +msgstr "Choose columns to display" + +msgid "Toutes" +msgstr "All" + +msgid "Défaut" +msgstr "Default" + +msgid "Afficher par" +msgstr "Show by" + +msgid "Aucune intervention ne correspond aux critères de recherche." +msgstr "No interventions match the search criteria." diff --git a/loko/interventions/locale/en/LC_MESSAGES/djangojs.mo b/loko/interventions/locale/en/LC_MESSAGES/djangojs.mo index 7a77808dfccd249b797c3f49aa71ada2ab582c03..424e6f80582748e5fc9d61d4837d0c0d6ed83c99 100644 GIT binary patch delta 6762 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 delta 6481 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 PpTz~;?s_+NUmx&apL464 diff --git a/loko/interventions/locale/en/LC_MESSAGES/djangojs.po b/loko/interventions/locale/en/LC_MESSAGES/djangojs.po index 8a6fc48..518fbf4 100644 --- a/loko/interventions/locale/en/LC_MESSAGES/djangojs.po +++ b/loko/interventions/locale/en/LC_MESSAGES/djangojs.po @@ -1298,6 +1298,24 @@ msgstr "Error updating favorite filter." msgid "Filtre '%s' appliqué." msgstr "Filter '%s' applied." +msgid "Filtres actifs" +msgstr "Active filters" + +msgid "Supprimer ce critère" +msgstr "Remove this criterion" + +msgid "Tout effacer" +msgstr "Clear all" + +msgid "Rechercher dans les colonnes..." +msgstr "Search columns..." + +msgid "Lignes par page" +msgstr "Rows per page" + +msgid "Afficher par" +msgstr "Show by" + #~ msgid "Veuillez entrer un entier de maximum 6 chiffres" #~ msgstr "Please enter an integer with maximum 6 digits" diff --git a/loko/interventions/locale/fr/LC_MESSAGES/django.mo b/loko/interventions/locale/fr/LC_MESSAGES/django.mo index 54b4a0f4a57c60972989274edb89f640765b80c7..8473bcbf459ae5fb6e9d97e491e893d3f2bff694 100644 GIT binary patch delta 35744 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 MVAQ^hzKx>)4=qDGD*ylh delta 35405 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 SA=k@2bI>W@|5G!IgMJ4*)a{P| delta 6513 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 diff --git a/loko/interventions/locale/fr/LC_MESSAGES/djangojs.po b/loko/interventions/locale/fr/LC_MESSAGES/djangojs.po index db25a87..2bd048f 100644 --- a/loko/interventions/locale/fr/LC_MESSAGES/djangojs.po +++ b/loko/interventions/locale/fr/LC_MESSAGES/djangojs.po @@ -1305,6 +1305,24 @@ msgstr "Erreur lors de la mise à jour du favori." msgid "Filtre '%s' appliqué." msgstr "Filtre '%s' appliqué." +msgid "Filtres actifs" +msgstr "Filtres actifs" + +msgid "Supprimer ce critère" +msgstr "Supprimer ce critère" + +msgid "Tout effacer" +msgstr "Tout effacer" + +msgid "Rechercher dans les colonnes..." +msgstr "Rechercher dans les colonnes..." + +msgid "Lignes par page" +msgstr "Lignes par page" + +msgid "Afficher par" +msgstr "Afficher par" + #~ msgid "Veuillez entrer un entier de maximum 6 chiffres" #~ msgstr "Veuillez entrer un entier de maximum 6 chiffres" diff --git a/loko/interventions/locale/nl/LC_MESSAGES/django.mo b/loko/interventions/locale/nl/LC_MESSAGES/django.mo index 087010893c8a7d691e09f1734c8d808bca07f0eb..5c7dce2def3526b64c55b3552f08f5f95f25f6b8 100644 GIT binary patch delta 35033 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 Rv;70QwAfbYRzRuL{|8!+YWe^G delta 34548 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 delta 6482 zcmYk>3w+PjAII@CvkSYAZHBRp-Q30uW6f>C$}Ab9{vo*}q>xB_Rm#FrZt;(lXobRl zh=i9Thk|>u*s9x{i_w4cbe;@nodCvJ>&N-iRzTfH5oGm`3n|z!TkyRHM zjx--*>f(@U#*|QA6RB2XPS!FeAAi7jOpi4t0Pn+^*bk#|G&aEL*c{)(8h8`~@gnNJ z>!|Dha_f$Xs_mYL!!S-HVHCE)WV{!<;8rWU;{Ss;bcWisLcw-#RFp@$COh&EgFw`1NMt_`(;kX#p@hYs2n^Bqi z4B0lO0@Z#7HGs?3KT+p>6Kn=h_r)fVf6XX^h8WDZ4z(9dK@DIb>H$lU!JAUlKzCy* zR-o3@kM)pIs0kz?KjtoekyJAf8{t%2e?QT2*M1KTX`Hx$>L7sy)`gu=OEC(Y;LDhT zn^2qc1Zpk)*jXA#1JoYsfjU17TVV-bbEgzCxw?56r-3jokr1jC%bZM@@7lYT%17TK$(% z(B|8VdX0Xt-aw@+goW3Pl2PY#(I5MxHrpUn>YqR+ZyfA`rMCSS)OEK|&kJhmE_p+Y zqJPtrf?ls&)CZ#wHK1V_j8icLXJHU7M$KR)Y9KpM9qdBA&WBOY`586f+oc)9k4Oe0)u0?gQ9d+XY48%jI>yD#3I*ZD{9Sp&wbaykiM12vn zQA^nqb^VBR@~@FOG*rjMs2Q!Wu13wM4EZs;_@xf7qcWzyG|ET>s)IPx`R1tSwnI&@ z5H+wTP}eO&O>}j0@~;oWHX4-j3RL}?t=DMb&a^Rx(w>RRK&~|pHLwB!uLrfKzC}&sCaS~KHty@1@9LNd6!_|zWvCgIqc;N>Nj)LUJ)ensU=eCy zlkqNGjYW74HNcK-jj4j8P`7?nplQ8MTjnyoKIZQfO=CD@1>z&6x%pQ85EeyoKTFwTcR>1=?m^luWGhAtR^+Wp0- zkS2GAF^83$tx9EW@)%?xxpQ7EGji`TF= zhPHQ?A`PRc7oj%QXw29V>fu?de@AyfNvJ*10UyNCs1Ej`mgXqd#j~iTsmg3LkqFGg#;CpV6h4AqVgk14 z?7pVGJ3H<_tp?MeH6D&y!%3*rJ%{S31U2I~P;0#c)!|xO|HQf*wG`i=W>|r|Smq*X zNfUG3e%heEBY6%5eJ~18GaFz}JdRqc@u&e6qXzUUY5+@69hIUwT93M}9F>86sJ(C+ zmHOMZ9@E7=pN>^&ck(D`)Ahs#*atP!NvPC5Z_h774fI{q=G%ygxF5BqzoJqbc(;4L z5vEb^gxU)uQ3G0n>SqIz5yu>%kV3;n)Q2LftNWlXs0R;2K8D6YeGkg4pJNvFBdCre zy15f+iJEacRHpi%GBU{4pTPj?FQWJFe+h*o8djio`99PG&Y&Oqba(ea04f7fs0=l< zHbrHmHS&=&`8Wlqqn4%$J5igv1}0+$Dzp8u5&O?fprEyV8?{M3Kne%ijmZBq6QY++ue+HP!lM?YhF*FfiGlFiKp-+11V8eqe^8UeEcc*K84X#6V(4Odtw1?d~c2QPoY58ya!qIrg;m#PAH{s5kra9 zgpTWk)@}x&CHjS6n|P1E`Muqi@5aY%SsbwCyKp`6KEcvCW}rQB()zNsk^&0V8Sy0B z@CoiDp0#yxoG2&sU8u{oPhu^iJ5hNIpb*VD?fh9p5M}jm7C~2n?}SOD(Z_p&_n!Jz zLdRtna{-?wqPS*_ZQEu22v-paoXf>uiDg6?F_P#^)Ztt&TuSI$agqMLuNatr6DeHq z6ebbx5tYa9w(t$+5PfWYnpGqddA2^!s@JhL&%9;p|4(}=>ffBTt@^K$V# zIYL|`3JDM4J-9B*7Ej|7=;jV9RON)7IJes4ctD<2FjA#0Vmg2UQ+*DO9!f zuPMJt45>VcZHecIY@#LcCsBFaPvIRRiTlT5sC`Z|d%+bt&B{7mS7WPFa_5t9iWmxvhJ z`{QCFglJ8?t4~=Ng)fM?^G3vO@HDDjC)iV%T div:first-child { + width: 100% !important; + } +} + +/* ─── Airbnb-style Filter Modal ────────────────────────────────────── */ +#filterModal .modal-dialog { + max-width: 880px; + 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 0.5rem 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; +} + +/* Filter Modal Tabs */ +.filter-modal-tabs { + gap: 0.5rem; + border-bottom: 1px solid #e2e8f0; + margin-top: 0.75rem; +} + +.filter-modal-tabs .nav-link { + border: none; + border-bottom: 2.5px solid transparent; + color: #64748b; + font-size: 0.88rem; + font-weight: 500; + padding: 0.6rem 0.85rem; + background: transparent; + border-radius: 0; + display: inline-flex; + align-items: center; + gap: 0.4rem; + transition: all 0.15s ease; +} + +.filter-modal-tabs .nav-link:hover { + color: #0f172a; + border-bottom-color: #cbd5e1; +} + +.filter-modal-tabs .nav-link.active { + color: #0f172a; + font-weight: 700; + border-bottom-color: #0f172a; + background: transparent; +} + +.filter-modal-tabs .nav-link .badge { + font-size: 0.68rem; + padding: 2px 6px; + background-color: #0f172a !important; +} + +#filterModal .modal-body { + padding: 1.25rem 1.5rem; + overflow-y: auto; + background-color: #f8fafc; +} + +#filterModal .modal-footer { + padding: 1rem 1.5rem; + border-top: 1px solid #f1f5f9; + background-color: #ffffff; + display: flex; + justify-content: space-between; + align-items: center; +} + +/* Filter Section Cards inside Modal */ +.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.75rem; + gap: 0.75rem; +} + +.filter-section-header label { + font-size: 0.9rem; + font-weight: 700; + color: #0f172a; + letter-spacing: -0.01em; + margin: 0; +} + +.filter-section-buttons { + display: flex; + gap: 0.35rem; + margin-left: auto; +} + +.filter-section-buttons .btn, +.select-all-btn, +.deselect-all-btn { + font-size: 0.74rem; + font-weight: 500; + padding: 0.2rem 0.55rem; + border-radius: 6px; + border: 1px solid #e2e8f0; + background-color: #ffffff; + color: #64748b; + transition: all 0.15s ease; +} + +.filter-section-buttons .btn:hover, +.select-all-btn:hover, +.deselect-all-btn:hover { + background-color: #f1f5f9; + color: #0f172a; + border-color: #cbd5e1; +} + +/* Thematic Grid (Airbnb-style visual cards) */ +.thematic-grid { + display: grid !important; + grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)) !important; + gap: 0.65rem !important; + width: 100% !important; +} + +@media (max-width: 576px) { + .thematic-grid { + grid-template-columns: repeat(2, 1fr) !important; + } +} + +.thematic-tile { + position: relative; + display: flex !important; +} + +.thematic-tile input[type="checkbox"] { + position: absolute; + opacity: 0; + width: 0; + height: 0; + pointer-events: none; +} + +.thematic-tile label { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + width: 100%; + min-height: 90px; + padding: 0.75rem 0.5rem; + background-color: #ffffff; + border: 1.5px solid #e2e8f0; + border-radius: 12px; + cursor: pointer; + transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1); + user-select: none; + margin: 0; +} + +.thematic-tile .thematic-icon { + font-size: 1.75rem; + color: #475569; + margin-bottom: 0.4rem; + transition: transform 0.18s ease, color 0.18s ease; + line-height: 1; +} + +.thematic-tile .thematic-label { + font-size: 0.78rem; + font-weight: 600; + color: #334155; + line-height: 1.25; + transition: color 0.18s ease; +} + +.thematic-tile:hover label { + background-color: #f8fafc; + border-color: #94a3b8; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); +} + +.thematic-tile:hover .thematic-icon { + color: #0f172a; + transform: scale(1.08); +} + +.thematic-tile input[type="checkbox"]:checked + label { + background-color: #0f172a !important; + border-color: #0f172a !important; + box-shadow: 0 4px 14px rgba(15, 23, 42, 0.22); + transform: translateY(-1px); +} + +.thematic-tile input[type="checkbox"]:checked + label .thematic-icon { + color: #ffffff !important; + transform: scale(1.05); +} + +.thematic-tile input[type="checkbox"]:checked + label .thematic-label { + color: #ffffff !important; +} + +/* Filter Options (Pills) */ +.filter-options { + display: flex; + flex-wrap: wrap; + gap: 0.45rem; + align-items: center; + background-color: transparent !important; + border: none !important; + padding: 0 !important; + min-height: auto !important; +} + +.filter-option { + display: inline-flex; + margin: 0; + position: relative; +} + +.filter-option input[type="checkbox"], +.filter-option input[type="radio"] { + position: absolute; + opacity: 0; + width: 0; + height: 0; + pointer-events: none; +} + +.filter-option label { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.35rem; + padding: 0.35rem 0.8rem; + font-size: 0.78rem; + font-weight: 500; + color: #334155; + background-color: #ffffff; + border: 1.5px solid #e2e8f0; + border-radius: 9999px; + cursor: pointer; + transition: all 0.15s ease; + user-select: none; + white-space: nowrap; + margin: 0; +} + +.filter-option label:hover { + background-color: #f8fafc; + border-color: #94a3b8; + color: #0f172a; +} + +/* Checked state for generic badges */ +.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 badges (Statut, maintenance, stock) */ +.filter-option label.context-badge { + border-color: currentColor; + color: inherit; + background-color: transparent; +} + +.filter-option label.btn-outline-primary { border-color: #0d6efd; color: #0d6efd; } +.filter-option label.btn-outline-danger { border-color: #dc3545; color: #dc3545; } +.filter-option label.btn-outline-warning { border-color: #d97706; color: #b45309; } +.filter-option label.btn-outline-success { border-color: #16a34a; color: #15803d; } +.filter-option label.btn-outline-info { border-color: #0891b2; color: #0e7490; } +.filter-option label.btn-outline-dark { border-color: #334155; color: #1e293b; } +.filter-option label.btn-outline-secondary { border-color: #64748b; color: #475569; } + +.filter-option input[type="checkbox"]:checked + label.btn-outline-primary { + background-color: #0d6efd !important; + border-color: #0d6efd !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-danger { + background-color: #dc3545 !important; + border-color: #dc3545 !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-warning { + background-color: #d97706 !important; + border-color: #d97706 !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-success { + background-color: #16a34a !important; + border-color: #16a34a !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-info { + background-color: #0891b2 !important; + border-color: #0891b2 !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-dark { + background-color: #0f172a !important; + border-color: #0f172a !important; + color: #ffffff !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-secondary { + background-color: #64748b !important; + border-color: #64748b !important; + color: #ffffff !important; +} + +/* Priority styling with modern colors */ +.filter-option label.btn-outline-priority-1 { border-color: #dc3545; color: #dc3545; } +.filter-option label.btn-outline-priority-2 { border-color: #f97316; color: #ea580c; } +.filter-option label.btn-outline-priority-3 { border-color: #0284c7; color: #0369a1; } +.filter-option label.btn-outline-priority-4 { border-color: #64748b; color: #475569; } + +.filter-option input[type="checkbox"]:checked + label.btn-outline-priority-1 { + background: linear-gradient(135deg, #dc3545 0%, #ef4444 100%) !important; + border-color: #dc3545 !important; + color: white !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-priority-2 { + background: linear-gradient(135deg, #f97316 0%, #fb923c 100%) !important; + border-color: #f97316 !important; + color: white !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-priority-3 { + background: linear-gradient(135deg, #0284c7 0%, #38bdf8 100%) !important; + border-color: #0284c7 !important; + color: white !important; +} +.filter-option input[type="checkbox"]:checked + label.btn-outline-priority-4 { + background: linear-gradient(135deg, #64748b 0%, #94a3b8 100%) !important; + border-color: #64748b !important; + color: white !important; +} + +.filter-option-break { + flex-basis: 100%; + height: 0; +} +.filter-option.subcategory-option { + margin-left: 0.75rem; +} + +/* Timeline Preview & Dates */ +.date-timeline-card { + background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%); + border: 1px solid #cbd5e1; +} + +.timeline-axis-line { + height: 3px; + background: linear-gradient(90deg, #cbd5e1 0%, #94a3b8 50%, #cbd5e1 100%); + border-radius: 2px; + position: relative; +} + +.timeline-bar-wrapper { + position: relative; + height: 12px; + border-radius: 6px; + overflow: hidden; + background-color: #e2e8f0; + border: 1px solid #cbd5e1; +} + +.timeline-track-bg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #e2e8f0; +} + +.timeline-bar { + position: absolute; + top: 0; + height: 100%; + border-radius: 5px; + transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1), width 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease; +} + +.timeline-bar-begin { + background: linear-gradient(90deg, #10b981, #059669); + box-shadow: 0 0 8px rgba(16, 185, 129, 0.35); +} + +.timeline-bar-end { + background: linear-gradient(90deg, #3b82f6, #1d4ed8); + box-shadow: 0 0 8px rgba(59, 130, 246, 0.35); +} + +.timeline-bar.is-all { + left: 0% !important; + width: 100% !important; + opacity: 0.3; + background: #94a3b8 !important; + box-shadow: none !important; +} + +/* Chips pour Localisations */ +.location-item { + background-color: #ffffff; + border: 1px solid #e2e8f0; + border-left: 3.5px solid #0d6efd !important; + border-radius: 8px; + padding: 0.4rem 0.65rem; + margin-bottom: 0.35rem; + transition: all 0.15s ease-in-out; +} + +.location-item:hover { + background-color: #f8fafc; + border-color: #cbd5e1; +} + +/* ─── Main Content & Toolbar ───────────────────────────────────────── */ +.interventions-tabs .nav-link { + font-size: 0.88rem; + font-weight: 600; + color: #475569; + border: none; + border-bottom: 2px solid transparent; + padding: 0.5rem 0.85rem; + display: inline-flex; + align-items: center; + gap: 0.4rem; +} + +.interventions-tabs .nav-link.active { + color: #0f172a; + border-bottom-color: #0f172a; + background: transparent; +} + +.tab-counter-badge { + font-size: 0.72rem; + font-weight: 700; + padding: 2px 7px; + border-radius: 9999px; + background-color: #f1f5f9; + color: #475569; + border: 1px solid #e2e8f0; +} + +.interventions-tabs .nav-link.active .tab-counter-badge { + background-color: #0f172a; + color: #ffffff; + border-color: #0f172a; +} + +.btn-new-intervention { + background-color: #0f172a; + color: #ffffff !important; + border: 1px solid #0f172a; + border-radius: 8px; + padding: 0.35rem 0.75rem; + font-size: 0.82rem; + font-weight: 600; + display: inline-flex; + align-items: center; + gap: 0.4rem; + transition: all 0.15s ease; + text-decoration: none; + box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08); + white-space: nowrap; +} + +.btn-new-intervention:hover { + background-color: #1e293b; + color: #ffffff !important; + border-color: #1e293b; + transform: translateY(-1px); + box-shadow: 0 4px 6px -1px rgba(15, 23, 42, 0.12); +} + +/* ─── Active Filters Bar ───────────────────────────────────────────── */ +.active-filters-bar { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.45rem; + padding: 0 0.15rem; + margin-bottom: 0.45rem; +} + +.active-filter-label { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: #94a3b8; + margin-right: 0.2rem; +} + +.active-filter-chip { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.2rem 0.6rem; + font-size: 0.76rem; + font-weight: 500; + border-radius: 9999px; + background-color: #f1f5f9; + border: 1px solid #e2e8f0; + color: #334155; + transition: all 0.12s ease; +} + +.active-filter-chip .remove-filter-btn { + border: none; + background: none; + padding: 0; + margin-left: 2px; + color: #94a3b8; + cursor: pointer; + display: inline-flex; + align-items: center; + font-size: 0.75rem; + line-height: 1; +} + +.active-filter-chip .remove-filter-btn:hover { + color: #dc2626; +} + +.btn-clear-all-filters { + font-size: 0.76rem; + color: #dc2626; + background: none; + border: none; + text-decoration: none; + font-weight: 600; + padding: 0.2rem 0.5rem; + border-radius: 6px; + transition: background-color 0.12s ease; + cursor: pointer; +} + +.btn-clear-all-filters:hover { + background-color: #fef2f2; + color: #b91c1c; +} + +/* ─── Table Toolbar & Buttons ──────────────────────────────────────── */ +.interventions-toolbar { + padding: 0.25rem 0; +} + +.filter-trigger-btn, +#favoriteFiltersDropdown, +#columns-dropdown-btn, +#bulk-action-dropdown button { + border: 1px solid #cbd5e1; + border-radius: 8px; + font-size: 0.82rem; + font-weight: 500; + padding: 0.32rem 0.75rem; + background-color: #ffffff; + color: #334155; + display: inline-flex; + align-items: center; + gap: 0.4rem; + transition: all 0.15s ease; + text-decoration: none; +} + +.filter-trigger-btn:hover, +#favoriteFiltersDropdown:hover, +#columns-dropdown-btn:hover, +#bulk-action-dropdown button:hover { + background-color: #f8fafc; + border-color: #94a3b8; + color: #0f172a; +} + +#filter-badge { + background-color: #0f172a !important; + color: #ffffff !important; + font-size: 0.7rem; + font-weight: 700; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + top: -5px !important; + right: -7px !important; + left: auto !important; + transform: none !important; + min-width: 1.25rem; + height: 1.25rem; + padding: 0 4px !important; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.columns-dropdown-menu { + border-radius: 12px; + border: 1px solid #e2e8f0; + box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.12), 0 8px 10px -6px rgba(0, 0, 0, 0.08); + min-width: 250px; + z-index: 1060; +} + +.columns-checkbox-list { + max-height: 280px; + overflow-y: auto; +} + +.columns-checkbox-list .form-check { + margin-bottom: 0.25rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.page-size-selector { + font-size: 0.82rem; + color: #64748b; +} + +.page-size-select { + padding: 0.25rem 0.55rem; + font-size: 0.82rem; + border: 1px solid #cbd5e1; + border-radius: 7px; + background-color: #ffffff; + color: #334155; + cursor: pointer; + font-weight: 500; +} +.page-size-select:focus { + outline: none; + border-color: #2563eb; +} + +/* ─── Custom Interventions Table Card ──────────────────────────────── */ +.interventions-table-card { + background-color: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03); + overflow: hidden; +} + +#interventions-table-scrollable { + overflow-y: auto; + overflow-x: auto; +} + +/* Scrollbar discrète */ +#interventions-table-scrollable::-webkit-scrollbar { + width: 6px; + height: 6px; +} +#interventions-table-scrollable::-webkit-scrollbar-track { + background: #f8fafc; +} +#interventions-table-scrollable::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 4px; +} +#interventions-table-scrollable::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + +.interventions-table { + width: 100%; + margin-bottom: 0; + border-collapse: separate; + border-spacing: 0; +} + +/* Table Headers (Sticky) */ +.interventions-table thead th { + position: sticky; + top: 0; + z-index: 5; + background-color: #f8fafc !important; + color: #475569 !important; + font-size: 0.74rem !important; + font-weight: 600 !important; + text-transform: uppercase !important; + letter-spacing: 0.04em !important; + border-bottom: 2px solid #cbd5e1 !important; + padding: 0.55rem 0.75rem !important; + vertical-align: middle !important; + white-space: nowrap !important; + user-select: none; +} + +.interventions-table thead th.sortable { + cursor: pointer; + transition: background-color 0.12s ease; +} + +.interventions-table thead th.sortable:hover { + background-color: #f1f5f9 !important; + color: #0f172a !important; +} + +.sort-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.4rem; +} + +.sort-icon { + font-size: 0.75rem; +} + +/* Table Rows & Cells */ +.interventions-table tbody td { + padding: 0.45rem 0.75rem !important; + vertical-align: middle !important; + font-size: 0.82rem !important; + color: #334155; + border-bottom: 1px solid #e2e8f0 !important; + line-height: 1.35 !important; +} + +.interventions-table tbody tr { + transition: background-color 0.12s ease; +} + +.interventions-table tbody tr:hover { + background-color: #f8fafc !important; +} + +.interventions-table tbody tr.selected, +.interventions-table tbody tr.rowhighlight { + background-color: #eff6ff !important; +} + +/* Monospace Code Link Badge */ +.table-code-link { + font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important; + font-size: 0.79rem !important; + font-weight: 600 !important; + color: #0f172a !important; + text-decoration: none !important; + white-space: nowrap !important; + display: inline-flex; + align-items: center; + max-width: 145px; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; + padding: 2px 7px; + border-radius: 5px; + background-color: #f8fafc; + border: 1px solid #e2e8f0; + transition: all 0.15s ease; +} + +.table-code-link:hover { + color: #2563eb !important; + border-color: #93c5fd; + background-color: #eff6ff; +} + +/* Title cell (2-line clamp with tooltip) */ +.intervention-title-cell { + font-size: 0.82rem; + max-height: 2.8em; + line-height: 1.35; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + word-wrap: break-word; +} + +.intervention-title-cell[data-truncated="true"] { + cursor: help; +} + +/* Action button / Zoom button / Selection Toggle */ +.zoom-btn, +.intervention-btn-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 27px; + height: 27px; + padding: 0; + border-radius: 6px; + color: #64748b; + background-color: transparent; + border: 1px solid transparent; + transition: all 0.15s ease; +} + +.zoom-btn:hover, +.intervention-btn-toggle:hover { + color: #0f172a; + background-color: #f1f5f9; + border-color: #cbd5e1; +} + +/* Custom Pagination Bar */ +.interventions-pagination-bar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.65rem 1rem; + border-top: 1px solid #e2e8f0; + background-color: #ffffff; + flex-wrap: wrap; + gap: 0.5rem; +} + +.interventions-pagination-bar .pagination-info { + font-size: 0.82rem; + color: #64748b; +} + +.interventions-pagination-bar .pagination .page-item .page-link { + border-radius: 6px; + margin: 0 2px; + border-color: #e2e8f0; + color: #334155; + font-size: 0.8rem; + padding: 0.25rem 0.55rem; + text-decoration: none; +} + +.interventions-pagination-bar .pagination .page-item.active .page-link { + background-color: #0f172a; + border-color: #0f172a; + color: #ffffff; +} + +.interventions-pagination-bar .pagination .page-item.disabled .page-link { + color: #cbd5e1; + background-color: transparent; + border-color: #f1f5f9; +} + +/* Map styling */ +.interventions-map { + height: calc(100vh - 190px); + min-height: 360px; + position: relative; + width: 100%; + border-radius: 12px; + border: 1px solid #e2e8f0; + margin-top: 44px; +} + +.interventions-map-filter { + position: absolute; + top: 0.75rem; + right: 2.75rem; + z-index: 5; + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15); + border-radius: 8px; + font-weight: 500; + font-size: 0.8rem; +} + +.popup-scrollable { + max-height: 220px; + overflow-y: auto; + font-size: 0.85rem; +} + +.popup-scrollable .badge { + font-size: 0.75rem; +} diff --git a/loko/interventions/static/interventions/interventions_index.js b/loko/interventions/static/interventions/interventions_index.js index befb50b..e60d231 100644 --- a/loko/interventions/static/interventions/interventions_index.js +++ b/loko/interventions/static/interventions/interventions_index.js @@ -1,8 +1,15 @@ var interventions_geojson = {}; +let allInterventions = []; +let filteredInterventions = []; let visibleRows = []; +let currentMapFilteredData = []; -let allInterventions = []; // full dataset -let currentMapFilteredData = []; // result of map-based filtering +let currentPage = 1; +let pageSize = 50; +let sortField = 'code'; +let sortDir = 'asc'; +let hiddenColumns = new Set(); +const INTERVENTIONS_COLUMNS_KEY = 'interventions_columns_hidden'; let selectedLocations = []; // items: { ct, obj, type, type_label, thematic, name, code, label, lon, lat } @@ -156,6 +163,10 @@ map.on('click', 'interventions', function(e) { .setLngLat(e.lngLat) .setHTML(popupContent) .addTo(map); + + if (features[0] && features[0].properties && features[0].properties.id) { + highlightInterventionRow(features[0].properties.id); + } }); map.on('mouseenter', 'interventions', () => { @@ -165,26 +176,30 @@ map.on('mouseleave', 'interventions', () => { map.getCanvas().style.cursor = ''; }); +function highlightInterventionRow(id) { + const numId = parseInt(id, 10); + const index = filteredInterventions.findIndex(r => r.id === numId); + if (index === -1) return; + const targetPage = Math.floor(index / pageSize) + 1; + if (targetPage !== currentPage) { + currentPage = targetPage; + renderTable(); + } + const rowEl = document.querySelector(`#interventions-table tbody tr[data-id="${numId}"]`); + if (rowEl) { + document.querySelectorAll('#interventions-table tbody tr.rowhighlight').forEach(el => el.classList.remove('rowhighlight')); + rowEl.classList.add('rowhighlight'); + rowEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + } +} + function persistInterventionsListContext() { - const $table = $('#interventions-table'); - if (!$table.length || typeof $table.bootstrapTable !== 'function') { - return; - } - - let data; - try { - data = $table.bootstrapTable('getData'); - } catch (error) { - console.warn('Unable to retrieve interventions data for navigation context.', error); - return; - } - - if (!Array.isArray(data) || data.length === 0) { + if (!Array.isArray(filteredInterventions) || filteredInterventions.length === 0) { sessionStorage.removeItem(INTERVENTION_LIST_CONTEXT_KEY); return; } - const items = data + const items = filteredInterventions .map(row => { if (!row || row.id === undefined || row.id === null) { return null; @@ -203,12 +218,12 @@ function persistInterventionsListContext() { return; } - const options = $table.bootstrapTable('getOptions') || {}; + const searchInput = document.getElementById('interventions-search-input'); const context = { items, - sortName: options.sortName || null, - sortOrder: options.sortOrder || null, - searchText: options.searchText || '', + sortName: sortField || null, + sortOrder: sortDir || null, + searchText: searchInput ? searchInput.value.trim() : '', listUrl: window.location.pathname + (window.location.search || ''), timestamp: Date.now() }; @@ -227,7 +242,12 @@ interventionsgeojsonloader.loadGeojson(interventionsgeojsonUrl+`?${params}`); // Reset table if error occurs when loading GeoJSON interventionsgeojsonloader.addEventListener("geojsonError", event => { - loadDataIntoInterventionsTable([]); + document.getElementById('interventions-spinner')?.classList.add('d-none'); + document.getElementById('interventions-table-container')?.classList.remove('d-none'); + allInterventions = []; + filteredInterventions = []; + renderTable(); + updateResultCount(0); }); // Constante de limite @@ -235,19 +255,17 @@ const MAX_ITEMS = 5000; // Load data into table when GeoJSON is loaded interventionsgeojsonloader.addEventListener("geojsonLoaded", event => { - var geojson_data = event.detail; - loadDataIntoInterventionsTable(geojson_data.features); + var geojson_data = event.detail; interventions_geojson = geojson_data; - allInterventions = geojson_data.features; // Store the full dataset for later use + const features = geojson_data.features || []; + loadDataIntoInterventionsTable(features); currentMapFilteredData = [...allInterventions]; // Afficher/masquer l'alerte "limite atteinte" const alertEl = document.getElementById('filter-limit-alert'); if (alertEl) { - const reached = (allInterventions?.length || 0) >= MAX_ITEMS; + const reached = (features.length || 0) >= MAX_ITEMS; alertEl.classList.toggle('d-none', !reached); - // (Optionnel) infobulle avec le nombre exact reçu - // if (reached) alertEl.title = `Réception: ${allInterventions.length} éléments (seuls 5 000 sont affichés)`; } }); @@ -279,23 +297,15 @@ document.getElementById('apply-filters').addEventListener('click', async functio } } - // Save preferences before redirecting - await savePreferencesFromForm(params); - if (selectedLocations.length) { const payload = selectedLocations.map(x => ({ ct: x.ct, obj: x.obj })); params.set('locations', JSON.stringify(payload)); - } - else { + } else { params.delete('locations'); } - // Update URL - const newUrl = `${window.location.pathname}?${params.toString()}`; - window.history.pushState({}, '', newUrl); - - // Update filter badge after URL change - updateFilterBadge(); + // Save preferences before redirecting + await savePreferencesFromForm(params); // Preserve active search if any const _activeQ = $('#interventions-search-input').val().trim(); @@ -305,6 +315,13 @@ document.getElementById('apply-filters').addEventListener('click', async functio params.set('search_mode', _activeMode); } + // Update URL + const newUrl = `${window.location.pathname}?${params.toString()}`; + window.history.pushState({}, '', newUrl); + + // Update filter badge and tab badges after URL change + updateFilterTabBadges(); + // Load filtered data handleGeojsonMapLoading(init=false, interventionsgeojsonloader, 'interventions'); interventionsgeojsonloader.loadGeojson(interventionsgeojsonUrl+`?${params}`); @@ -331,6 +348,9 @@ document.getElementById('reset-filters').addEventListener('click', async functio checkbox.checked = false; }); + selectedLocations = []; + renderLocationChips(); + togglePauseReasonFilter(); filterCategoriesByThematics(); filterProvidersAndContracts(); @@ -352,7 +372,7 @@ document.getElementById('reset-filters').addEventListener('click', async functio 'Content-Type': 'application/json', 'X-CSRFToken': getCookie('csrftoken') }, - body: JSON.stringify({ filters: {}, sort: {} }) + body: JSON.stringify({ filters: {}, sort: {}, columns: [...hiddenColumns] }) }); } catch (err) { // Silently fail @@ -362,8 +382,8 @@ document.getElementById('reset-filters').addEventListener('click', async functio // Remove URL parameters window.history.pushState({}, '', window.location.pathname); - // Update filter badge after URL change - updateFilterBadge(); + // Update filter badge & tab badges after URL change + updateFilterTabBadges(); if (typeof checkActiveFavoriteMatch === 'function') { checkActiveFavoriteMatch(); @@ -393,71 +413,88 @@ $("#filterzone").on( "click", function(e) { // Loads data into table function loadDataIntoInterventionsTable(features) { - const tableData = features.map((feature) => { + const tableData = (features || []).map((feature) => { + const props = feature.properties || {}; + const coords = feature.geometry && feature.geometry.coordinates ? feature.geometry.coordinates : []; return { - actions: '', // Column for action icons, manipulated by the formatter - id: feature.id, - code: feature.properties.code, - status: feature.properties.status, - prep_state: feature.properties.prep_state, - maintain_type: feature.properties.maintain_type, - title: feature.properties.title, - location_code: feature.properties.location_code || '', - begin_time: feature.properties.begin_time, - assigned_provider: feature.properties.assigned_provider || '', - contract_number: feature.properties.contract_number || '', - contract_provider: feature.properties.contract_provider || '', - origin_type: feature.properties.origin_type || '', - source_category: feature.properties.source_category || '', - is_assigned: Boolean(feature.properties.is_assigned), - team: feature.properties.team || '', - member: feature.properties.member || '', - lon: feature.geometry && feature.geometry.coordinates ? feature.geometry.coordinates[0] : null, // Longitude - lat: feature.geometry && feature.geometry.coordinates ? feature.geometry.coordinates[1] : null // Latitude + id: feature.id || props.id, + code: props.code || '', + status: props.status || '', + prep_state: props.prep_state || '', + maintain_type: props.maintain_type || '', + title: props.title || '', + location_code: props.location_code || '', + begin_time: props.begin_time || '', + assigned_provider: props.assigned_provider || '', + contract_number: props.contract_number || '', + contract_provider: props.contract_provider || '', + origin_type: props.origin_type || '', + source_category: props.source_category || '', + is_assigned: Boolean(props.is_assigned), + team: props.team || '', + member: props.member || '', + is_blocked_due_to_contract: Boolean(props.is_blocked_due_to_contract), + contract: props.contract || null, + lon: coords.length ? coords[0] : null, + lat: coords.length ? coords[1] : null }; }); - $('#interventions-spinner').hide(); - $('#interventions-table-container').show(); - $('#interventions-table').bootstrapTable('load', tableData); + allInterventions = tableData; + filteredInterventions = [...allInterventions]; + sortData(filteredInterventions, sortField, sortDir); + + currentPage = 1; + renderTable(); + + document.getElementById('interventions-spinner')?.classList.add('d-none'); + document.getElementById('interventions-table-container')?.classList.remove('d-none'); + + visibleRows = filteredInterventions; + syncMapWithTable(); + + updateResultCount(filteredInterventions.length); + updateFilterTabBadges(); + persistInterventionsListContext(); } // Refresh table view when switching tabs $('#interventions-table-tab').on('click', function () { - $('#interventions-table').bootstrapTable('resetView'); + renderTable(); }); -// Add action buttons for each row of the table -function actionsFormatter(value, row, index) { - resp = ''; - // resp = ``; +function escapeHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} +function maintainTypeFormatter(type) { + const types = { + 'corrective': { label: gettext('Corrective'), badge: 'danger' }, + 'preventive': { label: gettext('Préventive'), badge: 'warning' }, + 'ameliorative': { label: gettext('Améliorative'), badge: 'success' }, + }; + const entry = types[type]; + if (!entry) return type ? `${escapeHtml(type)}` : '-'; + return `${escapeHtml(entry.label)}`; +} - if (selected_interventions_set.has(row.id)) { - icon_select = 'bi-check-square-fill'; - } else { - icon_select = 'bi-square'; - } - resp = resp + - ``; - - if (row.lon) { - resp = resp + - ` - `; - } - - - - return resp; +function prepStateFormatter(state) { + const states = { + 'processed': { label: gettext('Prêt'), badge: 'success', icon: 'bi-box-seam' }, + 'not_processed': { label: gettext('En attente'), badge: 'danger', icon: 'bi-box' }, + 'none': { label: '-', badge: 'secondary', icon: '' } + }; + const entry = states[state]; + if (!entry || state === 'none') return '-'; + return `${escapeHtml(entry.label)}`; } function codeFormatter(value, row) { @@ -624,125 +661,705 @@ map.on('mouseleave', 'interventions-clusters', () => { -// Initialization after page load -$( document ).ready(function() { - // Prepare initial sort from saved preferences - const initialSort = {}; - if (typeof SAVED_SORT !== 'undefined' && SAVED_SORT.sortName) { - initialSort.sortName = SAVED_SORT.sortName; - initialSort.sortOrder = SAVED_SORT.sortOrder || 'asc'; +// ─── Custom Table Core ─────────────────────────────────────────────── + +const AVAILABLE_COLUMNS = [ + { key: 'code', label: gettext('Code') }, + { key: 'status', label: gettext('Statut') }, + { key: 'title', label: gettext('Titre') }, + { key: 'location_code', label: gettext('Localisation') }, + { key: 'begin_time', label: gettext('Début') }, + { key: 'maintain_type', label: gettext('Maintenance') }, + { key: 'prep_state', label: gettext('Stock') }, + { key: 'contract_number', label: gettext('Contrat') }, + { key: 'assigned_provider', label: gettext('Prestataire') }, + { key: 'team', label: gettext('Équipe') }, + { key: 'member', label: gettext('Membre') }, + { key: 'origin_type', label: gettext("Type d'origine") }, + { key: 'source_category', label: gettext("Source") } +]; + +function getHiddenColumns() { + try { + if (typeof SAVED_COLUMNS !== 'undefined' && Array.isArray(SAVED_COLUMNS) && SAVED_COLUMNS.length > 0) { + return new Set(SAVED_COLUMNS); + } + const raw = localStorage.getItem(INTERVENTIONS_COLUMNS_KEY); + if (raw) { + const parsed = JSON.parse(raw); + if (Array.isArray(parsed)) return new Set(parsed); + } + return new Set(['contract_number', 'origin_type', 'source_category']); + } catch (e) { + return new Set(['contract_number', 'origin_type', 'source_category']); } - - $('#interventions-table').bootstrapTable({ - columns: [ - { field: 'actions', title: '', formatter:'actionsFormatter', class: 'text-nowrap', searchable: false }, - { field: 'code', title: gettext('Code'), formatter: 'codeFormatter', class: 'text-nowrap', sortable: true }, - { field: 'status', title: gettext('Statut'), formatter: 'statusFormatter', class: 'text-nowrap', sortable: true }, - { field: 'title', title: gettext('Titre'), formatter: 'titleFormatter', sortable: true }, - { field: 'location_code', title: gettext('Localisation'), class: 'text-nowrap', sortable: true }, - { field: 'begin_time', title: gettext('Début'), formatter: 'dateFormatter', class: 'text-nowrap', sortable: true }, - { field: 'contract_number', title: gettext('Contrat'), formatter: 'contractFormatter', class: 'text-nowrap', visible: false, sortable: true }, - { field: 'origin_type', title: gettext("Type d'origine"), class: 'text-nowrap', visible: false, sortable: true }, - { field: 'source_category', title: gettext("Source"), class: 'text-nowrap', visible: false, sortable: true }, - ], - height: calculateTableHeight(), // Apply the calculated height - ...initialSort // Spread saved sort if available +} + +function saveHiddenColumns(set) { + try { + localStorage.setItem(INTERVENTIONS_COLUMNS_KEY, JSON.stringify([...set])); + } catch (e) { + // ignore + } + saveColumnPreferences(); +} + +function saveColumnPreferences() { + if (typeof savePreferencesUrl === 'undefined') return; + const filters = getCurrentFilters(); + const sort = { sortName: sortField, sortOrder: sortDir }; + fetch(savePreferencesUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': getCookie('csrftoken') + }, + body: JSON.stringify({ filters: filters, sort: sort, columns: [...hiddenColumns] }) + }).catch(err => console.warn('Could not save column preferences:', err)); +} + +function initColumnChooser() { + const container = document.getElementById('columns-list-container'); + if (!container) return; + + container.innerHTML = ''; + AVAILABLE_COLUMNS.forEach(col => { + const isVisible = !hiddenColumns.has(col.key); + const div = document.createElement('div'); + div.className = 'form-check py-1'; + div.innerHTML = ` + + + `; + container.appendChild(div); }); - // Restore saved column visibility - _restoreColumnVisibility($('#interventions-table')); - - $('#interventions-table').on('post-body.bs.table', function() { - // Persist context and mark truncated titles - persistInterventionsListContext(); - detectTruncatedTitles(); - // Recalculate widths/height without triggering another post-body loop - const $table = $('#interventions-table'); - if ($table.data('bootstrap.table')) { - $table.bootstrapTable('resetView', { height: calculateTableHeight() }); + container.addEventListener('change', (e) => { + const cb = e.target.closest('.col-toggle-check'); + if (!cb) return; + const colKey = cb.dataset.column; + if (cb.checked) { + hiddenColumns.delete(colKey); + } else { + hiddenColumns.add(colKey); + } + saveHiddenColumns(hiddenColumns); + applyColumnVisibility(); + }); + + document.querySelector('.columns-dropdown-menu')?.addEventListener('click', (e) => { + e.stopPropagation(); + }); + + document.getElementById('cols-select-all')?.addEventListener('click', (e) => { + e.preventDefault(); + hiddenColumns.clear(); + saveHiddenColumns(hiddenColumns); + container.querySelectorAll('.col-toggle-check').forEach(cb => { cb.checked = true; }); + applyColumnVisibility(); + }); + + document.getElementById('cols-reset-default')?.addEventListener('click', (e) => { + e.preventDefault(); + hiddenColumns = new Set(['contract_number', 'origin_type', 'source_category']); + saveHiddenColumns(hiddenColumns); + container.querySelectorAll('.col-toggle-check').forEach(cb => { + cb.checked = !hiddenColumns.has(cb.dataset.column); + }); + applyColumnVisibility(); + }); + + applyColumnVisibility(); +} + +function applyColumnVisibility() { + AVAILABLE_COLUMNS.forEach(col => { + const isHidden = hiddenColumns.has(col.key); + document.querySelectorAll(`.col-${col.key}`).forEach(el => { + el.classList.toggle('d-none', isHidden); + }); + }); +} + +function sortData(data, field, dir) { + const multiplier = dir === 'asc' ? 1 : -1; + data.sort((a, b) => { + let valA = a[field]; + let valB = b[field]; + + if (valA === null || valA === undefined || valA === '') return 1 * multiplier; + if (valB === null || valB === undefined || valB === '') return -1 * multiplier; + + if (field === 'begin_time') { + return (new Date(valA).getTime() - new Date(valB).getTime()) * multiplier; + } + return String(valA).localeCompare(String(valB), undefined, { numeric: true, sensitivity: 'base' }) * multiplier; + }); +} + +function handleHeaderSort(field) { + if (sortField === field) { + sortDir = sortDir === 'asc' ? 'desc' : 'asc'; + } else { + sortField = field; + sortDir = ['begin_time'].includes(field) ? 'desc' : 'asc'; + } + + sortData(filteredInterventions, sortField, sortDir); + currentPage = 1; + renderTable(); + savePreferencesFromUrl(); +} + +function updateHeaderSortIcons() { + document.querySelectorAll('#interventions-table thead th.sortable').forEach(th => { + const field = th.dataset.field; + const icon = th.querySelector('.sort-icon'); + if (!icon) return; + if (field === sortField) { + icon.className = `sort-icon bi ${sortDir === 'asc' ? 'bi-sort-up' : 'bi-sort-down'} text-primary`; + } else { + icon.className = 'sort-icon bi bi-arrow-down-up text-muted opacity-50'; + } + }); +} + +function renderTable() { + const tbody = document.getElementById('interventions-table-tbody'); + if (!tbody) return; + + const totalItems = filteredInterventions.length; + const totalPages = Math.ceil(totalItems / pageSize) || 1; + if (currentPage > totalPages) currentPage = totalPages; + if (currentPage < 1) currentPage = 1; + + const startIndex = (currentPage - 1) * pageSize; + const endIndex = Math.min(startIndex + pageSize, totalItems); + const pageItems = filteredInterventions.slice(startIndex, endIndex); + + if (totalItems === 0) { + tbody.innerHTML = ` + + +
+
+
${gettext('Aucune intervention trouvée')}
+
${gettext('Aucune intervention ne correspond à vos critères de recherche actuels.')}
+ +
+ + + `; + updatePaginationBar(0, 0, 0, 1); + updateHeaderSortIcons(); + applyColumnVisibility(); + return; + } + + let rowsHtml = ''; + for (let i = 0; i < pageItems.length; i++) { + rowsHtml += renderRowHtml(pageItems[i]); + } + tbody.innerHTML = rowsHtml; + + updatePaginationBar(startIndex + 1, endIndex, totalItems, totalPages); + updateHeaderSortIcons(); + applyColumnVisibility(); + detectTruncatedTitles(); + persistInterventionsListContext(); +} + +function renderRowHtml(row) { + const isSelected = selected_interventions_set.has(row.id); + const codeLabel = escapeHtml(row.code || `INT#${row.id}`); + const detailUrl = `${interventionsurl}${row.id}/`; + + const maintenanceTypeColor = { + 'corrective': 'danger', + 'preventive': 'warning', + 'ameliorative': 'success', + }; + const maintenanceColorClass = maintenanceTypeColor[row.maintain_type] || 'secondary'; + const gearIcon = ``; + + const selectIcon = isSelected ? 'bi-check-square-fill text-primary' : 'bi-square text-muted'; + const selectBtn = ``; + + const zoomBtn = (row.lon && row.lat) + ? `` + : ``; + + const statusHtml = statusFormatter(row.status, row); + const titleHtml = titleFormatter(row.title, row); + const beginTimeHtml = dateFormatter(row.begin_time); + const maintainTypeHtml = maintainTypeFormatter(row.maintain_type); + const prepStateHtml = prepStateFormatter(row.prep_state); + const contractFormatted = contractFormatter(row.contract_number, row); + const contractHtml = contractFormatted ? escapeHtml(contractFormatted) : '-'; + const locationHtml = escapeHtml(row.location_code || '-'); + const providerHtml = escapeHtml(row.assigned_provider || '-'); + const teamHtml = escapeHtml(row.team || '-'); + const memberHtml = escapeHtml(row.member || '-'); + const originHtml = escapeHtml(row.origin_type || '-'); + const sourceHtml = escapeHtml(row.source_category || '-'); + + return ` + + ${selectBtn}${zoomBtn} + + ${gearIcon}${codeLabel} + + ${statusHtml} + ${titleHtml} + ${locationHtml} + ${beginTimeHtml} + ${maintainTypeHtml} + ${prepStateHtml} + ${contractHtml} + ${providerHtml} + ${teamHtml} + ${memberHtml} + ${originHtml} + ${sourceHtml} + + `; +} + +function updatePaginationBar(start, end, total, totalPages) { + const infoEl = document.getElementById('interventions-pagination-info'); + const listEl = document.getElementById('interventions-pagination-list'); + if (!infoEl || !listEl) return; + + if (total === 0) { + infoEl.textContent = gettext('Aucune intervention chargée'); + listEl.innerHTML = ''; + return; + } + + infoEl.innerHTML = interpolate( + gettext('Affichage de %(start)s à %(end)s sur %(total)s intervention(s)'), + { start, end, total }, + true + ); + + if (totalPages <= 1) { + listEl.innerHTML = ''; + return; + } + + let pagesHtml = ''; + + // First & Previous + pagesHtml += ` +
  • + +
  • +
  • + +
  • + `; + + // Numerical pages (window of 5 around current) + const windowSize = 5; + let startPage = Math.max(1, currentPage - Math.floor(windowSize / 2)); + let endPage = Math.min(totalPages, startPage + windowSize - 1); + if (endPage - startPage + 1 < windowSize) { + startPage = Math.max(1, endPage - windowSize + 1); + } + + if (startPage > 1) { + pagesHtml += `
  • …
  • `; + } + + for (let p = startPage; p <= endPage; p++) { + pagesHtml += ` +
  • + ${p} +
  • + `; + } + + if (endPage < totalPages) { + pagesHtml += `
  • …
  • `; + } + + // Next & Last + pagesHtml += ` +
  • + +
  • +
  • + +
  • + `; + + listEl.innerHTML = pagesHtml; +} + +function updateResultCount(count) { + const badge = document.getElementById('interventions-counter-badge'); + if (badge) { + badge.textContent = count; + } +} + +function updateFilterTabBadges() { + const form = document.getElementById('filter-form'); + if (!form) return; + + // Tab 1: Classification & Statut + let count1 = 0; + const tab1Fields = ['thematic', 'status', 'pause_reason', 'category', 'maintain_type', 'type', 'priority']; + tab1Fields.forEach(f => { + const checked = form.querySelectorAll(`input[name="${f}"]:checked`); + if (checked.length > 0) count1++; + }); + if (form.querySelector('input[name="is_blocked_due_to_contract"]:checked')) count1++; + if (form.querySelector('input[name="followed_only"]:checked')) count1++; + + const badge1 = document.getElementById('tab-badge-classification'); + if (badge1) { + if (count1 > 0) { + badge1.textContent = count1; + badge1.classList.remove('d-none'); + } else { + badge1.classList.add('d-none'); + } + } + + // Tab 2: Acteurs & Marchés + let count2 = 0; + const tab2Fields = ['provider', 'contract', 'assigned_team', 'assigned_member', 'prep_state']; + tab2Fields.forEach(f => { + const checked = form.querySelectorAll(`input[name="${f}"]:checked`); + if (checked.length > 0) count2++; + }); + const personVal = document.getElementById('filter-person-select')?.value; + if (personVal) count2++; + + const badge2 = document.getElementById('tab-badge-actors'); + if (badge2) { + if (count2 > 0) { + badge2.textContent = count2; + badge2.classList.remove('d-none'); + } else { + badge2.classList.add('d-none'); + } + } + + // Tab 3: Dates & Lieux + let count3 = 0; + if (selectedLocations && selectedLocations.length > 0) count3++; + const bMin = document.getElementById('begin_date_min')?.value; + const bMax = document.getElementById('begin_date_max')?.value; + if (bMin || bMax) count3++; + const eMin = document.getElementById('end_date_min')?.value; + const eMax = document.getElementById('end_date_max')?.value; + if (eMin || eMax) count3++; + if (form.querySelector('input[name="overdue"]:checked')) count3++; + if (form.querySelector('input[name="to_be_planned_soon"]')?.value) count3++; + + const badge3 = document.getElementById('tab-badge-dates'); + if (badge3) { + if (count3 > 0) { + badge3.textContent = count3; + badge3.classList.remove('d-none'); + } else { + badge3.classList.add('d-none'); + } + } + + // Overall filter count badge + const totalCount = count1 + count2 + count3; + const filterBadge = document.getElementById('filter-badge'); + const filterCountSpan = document.getElementById('filter-count'); + if (filterBadge && filterCountSpan) { + if (totalCount > 0) { + filterCountSpan.textContent = totalCount; + filterBadge.classList.remove('d-none'); + } else { + filterBadge.classList.add('d-none'); + } + } + + renderActiveFilterChips(); +} + +function updateFilterBadge() { + updateFilterTabBadges(); +} + +function renderActiveFilterChips() { + const bar = document.getElementById('active-filters-bar'); + if (!bar) return; + + const chips = []; + const params = new URLSearchParams(window.location.search); + + params.getAll('thematic').forEach(val => { + const labelEl = document.querySelector(`label[for="thematic_${val}"] .thematic-label`); + chips.push({ param: 'thematic', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('status').forEach(val => { + const labelEl = document.querySelector(`label[for="status_${val}"]`); + chips.push({ param: 'status', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('priority').forEach(val => { + chips.push({ param: 'priority', val, label: `Priorité ${val}` }); + }); + + params.getAll('maintain_type').forEach(val => { + const labelEl = document.querySelector(`label[for="maintain_type_${val}"]`); + chips.push({ param: 'maintain_type', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('provider').forEach(val => { + const labelEl = document.querySelector(`label[for="provider_${val}"]`); + chips.push({ param: 'provider', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('contract').forEach(val => { + const labelEl = document.querySelector(`label[for="contract_${val}"]`); + chips.push({ param: 'contract', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('assigned_team').forEach(val => { + const labelEl = document.querySelector(`label[for="assigned_team_${val}"]`); + chips.push({ param: 'assigned_team', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('assigned_member').forEach(val => { + const labelEl = document.querySelector(`label[for="assigned_member_${val}"]`); + chips.push({ param: 'assigned_member', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('category').forEach(val => { + const labelEl = document.querySelector(`label[for="category_${val}"]`); + chips.push({ param: 'category', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + params.getAll('prep_state').forEach(val => { + const labelEl = document.querySelector(`label[for="prep_state_${val}"]`); + chips.push({ param: 'prep_state', val, label: labelEl ? labelEl.textContent.trim() : val }); + }); + + if (params.get('overdue') === 'true' || params.get('overdue') === '1') { + chips.push({ param: 'overdue', val: 'true', label: gettext('En retard') }); + } + + if (params.get('is_blocked_due_to_contract') === 'true' || params.get('is_blocked_due_to_contract') === '1') { + chips.push({ param: 'is_blocked_due_to_contract', val: 'true', label: gettext('Marché bloqué') }); + } + + if (params.get('followed_only') === 'true' || params.get('followed_only') === '1') { + chips.push({ param: 'followed_only', val: 'true', label: gettext('Suivies uniquement') }); + } + + const bMin = params.get('begin_date_min'); + const bMax = params.get('begin_date_max'); + if (bMin || bMax) { + const label = bMin && bMax ? `${bMin} → ${bMax}` : (bMin ? `≥ ${bMin}` : `≤ ${bMax}`); + chips.push({ param: 'begin_date', val: 'begin_date', label: `${gettext('Début')} : ${label}` }); + } + + const eMin = params.get('end_date_min'); + const eMax = params.get('end_date_max'); + if (eMin || eMax) { + const label = eMin && eMax ? `${eMin} → ${eMax}` : (eMin ? `≥ ${eMin}` : `≤ ${eMax}`); + chips.push({ param: 'end_date', val: 'end_date', label: `${gettext('Fin')} : ${label}` }); + } + + if (selectedLocations && selectedLocations.length > 0) { + selectedLocations.forEach(loc => { + chips.push({ param: 'locations', val: `${loc.ct}_${loc.obj}`, label: loc.label || loc.name || loc.code }); + }); + } + + const q = $('#interventions-search-input').val().trim() || params.get('q'); + if (q) { + chips.push({ param: 'q', val: q, label: `"${escapeHtml(q)}"` }); + } + + if (chips.length === 0) { + bar.classList.add('d-none'); + bar.innerHTML = ''; + return; + } + + bar.classList.remove('d-none'); + let html = `${gettext('Filtres actifs')} :`; + chips.forEach(chip => { + html += ` + + ${escapeHtml(chip.label)} + + + `; + }); + html += ` + + `; + bar.innerHTML = html; + + bar.querySelectorAll('.remove-filter-btn').forEach(btn => { + btn.addEventListener('click', function(e) { + e.preventDefault(); + removeSingleFilter(this.dataset.param, this.dataset.val); + }); + }); + + document.getElementById('btn-clear-all-chips')?.addEventListener('click', function(e) { + e.preventDefault(); + document.getElementById('reset-filters')?.click(); + }); +} + +function removeSingleFilter(param, val) { + if (param === 'q') { + $('#interventions-search-input').val(''); + $('#interventions-search-clear').css('visibility', 'hidden'); + runInterventionSearch(); + return; + } + if (param === 'begin_date') { + document.getElementById('begin_date_min').value = ''; + document.getElementById('begin_date_max').value = ''; + updateDateFilterTimelinePreview(); + } else if (param === 'end_date') { + document.getElementById('end_date_min').value = ''; + document.getElementById('end_date_max').value = ''; + updateDateFilterTimelinePreview(); + } else if (param === 'locations') { + const parts = val.split('_'); + selectedLocations = selectedLocations.filter(loc => !(String(loc.ct) === String(parts[0]) && String(loc.obj) === String(parts[1]))); + renderLocationChips(); + } else { + const checkbox = document.querySelector(`input[name="${param}"][value="${val}"]`); + if (checkbox) { + checkbox.checked = false; + } + } + document.getElementById('apply-filters')?.click(); +} + +function initInterventionsTable() { + hiddenColumns = getHiddenColumns(); + + if (typeof SAVED_SORT !== 'undefined' && SAVED_SORT && SAVED_SORT.sortName) { + sortField = SAVED_SORT.sortName; + sortDir = SAVED_SORT.sortOrder || 'asc'; + } else { + sortField = 'code'; + sortDir = 'asc'; + } + + const pageSizeSelect = document.getElementById('page-size-select'); + if (pageSizeSelect) { + pageSize = parseInt(pageSizeSelect.value, 10) || 50; + pageSizeSelect.addEventListener('change', function () { + pageSize = parseInt(this.value, 10) || 50; + currentPage = 1; + renderTable(); + }); + } + + initColumnChooser(); + + document.querySelectorAll('#interventions-table thead th.sortable').forEach(th => { + th.addEventListener('click', function () { + const field = this.dataset.field; + if (!field) return; + handleHeaderSort(field); + }); + }); + + document.getElementById('interventions-pagination-list')?.addEventListener('click', (e) => { + const link = e.target.closest('a.page-link'); + if (!link) return; + e.preventDefault(); + const newPage = parseInt(link.dataset.page, 10); + if (!isNaN(newPage) && newPage >= 1 && newPage !== currentPage) { + currentPage = newPage; + renderTable(); + const scrollable = document.getElementById('interventions-table-scrollable'); + if (scrollable) scrollable.scrollTo({ top: 0, behavior: 'smooth' }); } }); - // Register actions to the table - registerDetailAction('#interventions-table', '.detail-btn', interventionsurl); - registerZoomAction('#interventions-table', '.zoom-btn', map, 17); + const tbody = document.getElementById('interventions-table-tbody'); + if (tbody) { + tbody.addEventListener('click', (e) => { + const zoomBtn = e.target.closest('.zoom-btn'); + if (zoomBtn && map) { + const lon = parseFloat(zoomBtn.dataset.lon); + const lat = parseFloat(zoomBtn.dataset.lat); + if (!isNaN(lon) && !isNaN(lat)) { + map.flyTo({ + center: [lon, lat], + zoom: 17, + essential: true + }); + } + return; + } - // Register intervention selection action to table interventions - registerSelectInterventionAction('#interventions-table', '.intervention-btn-toggle'); + const toggleBtn = e.target.closest('.intervention-btn-toggle'); + if (toggleBtn) { + const id = parseInt(toggleBtn.dataset.id, 10); + if (id) { + toggleSelectedIntervention(id, $(toggleBtn)); + const tr = toggleBtn.closest('tr'); + if (tr) { + tr.classList.toggle('selected', selected_interventions_set.has(id)); + } + } + return; + } + }); + } - // Réappliquer la hauteur quand une colonne est (dé)masquée, et mémoriser la visibilité - $('#interventions-table').on('column-switch.bs.table', function () { - _saveColumnVisibility($('#interventions-table')); - // After toggling columns, recalc widths for proper alignment - setTimeout(function(){ - $('#interventions-table').bootstrapTable('resetView'); - }, 0); - }); + // Modal input changes update filter tab badges dynamically + document.getElementById('filter-form')?.addEventListener('change', updateFilterTabBadges); +} +// Initialization after page load +$( document ).ready(function() { + initInterventionsTable(); }); - - - - function syncMapWithTable() { if (!map.getLayer('interventions')) { return; } - // Si le tableau montre toutes les lignes => reset du filtre if (visibleRows.length === allInterventions.length) { map.setFilter('interventions', null); return; } - // Extrait les IDs à afficher const idsToShow = visibleRows.map(row => row.id); - // Applique un filtre sur la couche MapLibre if (idsToShow.length > 0) { map.setFilter('interventions', ['in', ['get', 'id'], ['literal', idsToShow]]); } else { - // Si aucune ligne visible, masquer tous les points map.setFilter('interventions', ['==', ['get', 'id'], '__none__']); } } - -function getSearchableVisibleFields() { - const columns = $('#interventions-table').bootstrapTable('getVisibleColumns'); - return columns - .filter(col => col.searchable !== false) - .map(col => col.field) - .filter(Boolean); -} - -function customSearch(data, text) { - const searchableFields = getSearchableVisibleFields(); - const lowerText = text.toLowerCase(); - - const filtered = data.filter(row => - searchableFields.some(field => { - const value = row[field]; - return value != null && value.toString().toLowerCase().includes(lowerText); - }) - ); - - visibleRows = filtered; - syncMapWithTable(); - - return filtered; -} - - - map.on('draw.create', e => updateSelection(e.features[0])); map.on('draw.update', e => updateSelection(e.features[0])); map.on('draw.delete', e => { resetMapFilter(); }); - function updateSelection(geometry) { const source = map.getSource('interventions'); if (!source) return; @@ -752,31 +1369,25 @@ function updateSelection(geometry) { const selectedIds = data.features .filter(f => f && f.geometry && f.geometry.type === "Point" && turf.booleanPointInPolygon(f, geometry)) - .map(f => f.properties.id); + .map(f => f.properties.id || f.id); - currentMapFilteredData = allInterventions.filter(row => selectedIds.includes(row.id)); + filteredInterventions = allInterventions.filter(row => selectedIds.includes(row.id)); + currentPage = 1; + renderTable(); - // Recharge la table — recherche utilisateur sera réappliquée juste après - loadDataIntoInterventionsTable(currentMapFilteredData); - - // Simule une recherche utilisateur en réinjectant le texte existant - const currentSearchText = $('#interventions-table').bootstrapTable('getOptions').searchText || ''; - $('#interventions-table').bootstrapTable('refreshOptions', { - searchText: currentSearchText - }); + visibleRows = filteredInterventions; + syncMapWithTable(); + updateResultCount(filteredInterventions.length); } - -// Réinitialiser le filtre carte function resetMapFilter() { - // Recharge les données - loadDataIntoInterventionsTable(allInterventions); + filteredInterventions = [...allInterventions]; + currentPage = 1; + renderTable(); - // Simule une recherche utilisateur en réinjectant le texte existant - const currentSearchText = $('#interventions-table').bootstrapTable('getOptions').searchText || ''; - $('#interventions-table').bootstrapTable('refreshOptions', { - searchText: currentSearchText - }); + visibleRows = filteredInterventions; + syncMapWithTable(); + updateResultCount(filteredInterventions.length); } @@ -850,27 +1461,18 @@ function updateInputAndStatus() { document.addEventListener("DOMContentLoaded", function () { - document.getElementById("select-all").addEventListener("click", () => { - const allRows = $('#interventions-table').bootstrapTable('getData'); - allRows.forEach(row => { + document.getElementById("select-all")?.addEventListener("click", () => { + const rows = filteredInterventions && filteredInterventions.length ? filteredInterventions : allInterventions; + rows.forEach(row => { selected_interventions_set.add(parseInt(row.id)); - const btn = document.querySelector(`.intervention-btn-toggle[data-id="${row.id}"]`); - if (btn) { - $(btn).find('i').removeClass('bi-square').addClass('bi-check-square-fill'); - } }); + renderTable(); updateInputAndStatus(); }); - document.getElementById("deselect-all").addEventListener("click", () => { - selected_interventions_set.clear(); - const allRows = $('#interventions-table').bootstrapTable('getData'); - allRows.forEach(row => { - const btn = document.querySelector(`.intervention-btn-toggle[data-id="${row.id}"]`); - if (btn) { - $(btn).find('i').removeClass('bi-check-square-fill').addClass('bi-square'); - } - }); + document.getElementById("deselect-all")?.addEventListener("click", () => { + selected_interventions_set.clear(); + renderTable(); updateInputAndStatus(); }); @@ -1300,14 +1902,18 @@ document.addEventListener("DOMContentLoaded", function () { showToast(interpolate(msg, { count }, true), "success"); // Mise à jour directe des lignes dans le tableau + const statusLabel = statusSelect?.options[statusSelect.selectedIndex]?.text || newStatus; validIds.forEach(id => { - $('#interventions-table').bootstrapTable('updateByUniqueId', { - id: id, - row: { - status: newStatus + const numId = parseInt(id); + [allInterventions, filteredInterventions].forEach(arr => { + const target = arr.find(row => parseInt(row.id) === numId); + if (target) { + target.status = newStatus; + target.status_label = statusLabel; } }); }); + renderTable(); } // Check if any emails failed @@ -1321,8 +1927,9 @@ document.addEventListener("DOMContentLoaded", function () { showToast(gettext("Une erreur est survenue."), "danger"); }); - // Optionnel : recharger le tableau - $('#interventions-table').bootstrapTable('refresh'); + // Recharger les données GeoJSON (met à jour la carte et le tableau) + const currentParams = window.location.search ? window.location.search.substring(1) : ''; + interventionsgeojsonloader.loadGeojson(interventionsgeojsonUrl + (currentParams ? '?' + currentParams : '')); statusModal.hide(); statusErrorMsg.classList.add('d-none'); @@ -1378,8 +1985,9 @@ document.addEventListener("DOMContentLoaded", function () { // success showToast(data.message || gettext("Interventions associées."), 'success'); associateOrderModal?.hide(); - // Optionnel: rafraîchir table pour refléter éventuelles colonnes liées - $('#interventions-table').bootstrapTable('refresh'); + // Rafraîchir les données GeoJSON + const currentParams = window.location.search ? window.location.search.substring(1) : ''; + interventionsgeojsonloader.loadGeojson(interventionsgeojsonUrl + (currentParams ? '?' + currentParams : '')); } } catch (e) { showToast(gettext("Une erreur est survenue."), 'danger'); @@ -1451,12 +2059,9 @@ function calculateTableHeight() { // Helper to consistently apply the computed table height function refreshTableHeight() { - const $table = $('#interventions-table'); - // Guard: avoid calling before bootstrap-table is initialized - if (!$table.data('bootstrap.table')) return; - const tableHeight = calculateTableHeight(); - $table.bootstrapTable('refreshOptions', { height: tableHeight }); - $table.bootstrapTable('resetView'); + if (typeof detectTruncatedTitles === 'function') { + detectTruncatedTitles(); + } } // Function to save layout preference to backend @@ -2218,52 +2823,16 @@ function getCookie(name) { // ==================== Column Visibility Persistence ==================== -function _getHiddenColumns($table) { - try { - const allCols = $table.bootstrapTable('getOptions').columns[0] || []; - const visibleFields = $table.bootstrapTable('getVisibleColumns').map((c) => c.field); - return allCols - .filter((c) => c.field && c.field !== 'actions' && !visibleFields.includes(c.field)) - .map((c) => c.field); - } catch (e) { - return []; - } +function _getHiddenColumns() { + return Array.from(hiddenColumns); } -function _saveColumnVisibility($table) { - if (typeof savePreferencesUrl === 'undefined') return; - const hiddenFields = _getHiddenColumns($table); - const filters = getCurrentFilters(); - const sort = getCurrentSort(); - fetch(savePreferencesUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'X-CSRFToken': getCookie('csrftoken') - }, - body: JSON.stringify({ filters: filters, sort: sort, columns: hiddenFields }) - }).catch(err => console.warn('Could not save column preferences:', err)); +function _saveColumnVisibility() { + saveColumnPreferences(); } -function _restoreColumnVisibility($table) { - try { - // null = jamais sauvegardé, on laisse les défauts de la définition des colonnes - if (typeof SAVED_COLUMNS === 'undefined' || SAVED_COLUMNS === null) return; - if (!Array.isArray(SAVED_COLUMNS)) return; - - // On récupère tous les champs définis (hors 'actions') - const allCols = $table.bootstrapTable('getOptions').columns[0] || []; - allCols.forEach((col) => { - if (!col.field || col.field === 'actions') return; - if (SAVED_COLUMNS.includes(col.field)) { - $table.bootstrapTable('hideColumn', col.field); - } else { - $table.bootstrapTable('showColumn', col.field); - } - }); - } catch (e) { - // ignore - } +function _restoreColumnVisibility() { + applyColumnVisibility(); } // ==================== Filter and Sort Preferences Management ==================== @@ -2368,21 +2937,10 @@ function getCurrentFilters() { * Get current sort settings from the table */ function getCurrentSort() { - const $table = $('#interventions-table'); - if (!$table.length || typeof $table.bootstrapTable !== 'function') { - return {}; - } - - try { - const options = $table.bootstrapTable('getOptions') || {}; - return { - sortName: options.sortName || null, - sortOrder: options.sortOrder || null - }; - } catch (error) { - console.warn('Unable to get current sort:', error); - return {}; - } + return { + sortName: sortField || null, + sortOrder: sortDir || null + }; } /** @@ -2393,11 +2951,9 @@ function savePreferences() { const filters = getCurrentFilters(); const sort = getCurrentSort(); - const $table = $('#interventions-table'); - const columns = $table.length && $table.data('bootstrap.table') ? _getHiddenColumns($table) : undefined; + const columns = Array.from(hiddenColumns); - const payload = { filters: filters, sort: sort }; - if (columns !== undefined) payload.columns = columns; + const payload = { filters: filters, sort: sort, columns: columns }; fetch(savePreferencesUrl, { method: 'POST', @@ -2409,48 +2965,6 @@ function savePreferences() { }).catch(err => console.warn('Could not save preferences:', err)); } -// ==================== Filter and Sort Preferences Management ==================== - -// Count active filters from URL parameters -function countActiveFilters() { - const urlParams = new URLSearchParams(window.location.search); - let count = 0; - - // Define filter parameters used in the global filter modal - const filterParams = [ - 'thematic', 'status', 'priority', 'maintain_type', 'category', 'type', - 'provider', 'contract', 'assigned_team', 'assigned_member', - 'assigned_controller', 'intervention_manager', 'inspector', 'pause_reason', - 'begin_date_min', 'begin_date_max', 'end_date_min', 'end_date_max', 'locations', - 'overdue', 'to_be_planned_soon', 'followed_only', 'is_blocked_due_to_contract' - ]; - - filterParams.forEach(param => { - const values = urlParams.getAll(param); - if (values.length > 0 && values[0] !== '') { - count++; // Each filter type counts as 1, regardless of number of selected values - } - }); - - return count; -} - -// Update filter badge display -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'); - } - } -} - // Save preferences from URL parameters (used when filters are already applied) function savePreferencesFromUrl() { if (typeof savePreferencesUrl === 'undefined') { @@ -2480,23 +2994,10 @@ function savePreferencesFromUrl() { }); // Get current sort from table - const $table = $('#interventions-table'); - let sort = {}; + const sort = getCurrentSort(); + const columns = Array.from(hiddenColumns); + const payload = { filters, sort, columns }; - if ($table.length && $table.data('bootstrap.table')) { - const options = $table.bootstrapTable('getOptions'); - if (options.sortName) { - sort = { - sortName: options.sortName, - sortOrder: options.sortOrder || 'asc' - }; - } - } - - // Send to server - const columns = $table.length && $table.data('bootstrap.table') ? _getHiddenColumns($table) : undefined; - const payload = { filters, sort }; - if (columns !== undefined) payload.columns = columns; fetch(savePreferencesUrl, { method: 'POST', headers: { @@ -2533,25 +3034,9 @@ async function savePreferencesFromForm(urlParams) { } }); - // Get current sort from table (if available) - const $table = $('#interventions-table'); - let sort = {}; - - if ($table.length && $table.data('bootstrap.table')) { - const options = $table.bootstrapTable('getOptions'); - if (options.sortName) { - sort = { - sortName: options.sortName, - sortOrder: options.sortOrder || 'asc' - }; - } - } - - // Send to server with keepalive to ensure request completes even after redirect - const $tableForm = $('#interventions-table'); - const columnsForm = $tableForm.length && $tableForm.data('bootstrap.table') ? _getHiddenColumns($tableForm) : undefined; - const payloadForm = { filters, sort }; - if (columnsForm !== undefined) payloadForm.columns = columnsForm; + const sort = getCurrentSort(); + const columns = Array.from(hiddenColumns); + const payloadForm = { filters, sort, columns }; try { await fetch(savePreferencesUrl, { method: 'POST', @@ -2575,14 +3060,6 @@ document.addEventListener('DOMContentLoaded', function() { initDateFilterPresets(); initRolePersonFilter(); initFavoriteFilters(); - - // Save preferences when table sort changes (user action only) - const $table = $('#interventions-table'); - if ($table.length) { - $table.on('sort.bs.table', function() { - setTimeout(savePreferencesFromUrl, 500); // Debounce and save after sort is applied - }); - } }); // Update badge after page fully loads (including after filter redirect) diff --git a/loko/interventions/templates/interventions/interventions_index.html b/loko/interventions/templates/interventions/interventions_index.html index dacbd64..1693230 100644 --- a/loko/interventions/templates/interventions/interventions_index.html +++ b/loko/interventions/templates/interventions/interventions_index.html @@ -3,1112 +3,638 @@ {% load i18n %} {% block head %} - - - - + + + + {% endblock head %} - {% block content %} - +