From 7761f22b77c87083dd11dd562294d0f89f06be73 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Sat, 10 Oct 2026 14:16:59 +0200 Subject: [PATCH] style(ui): align table and filter modal styles in observations and inspections with assets --- .../locale/en/LC_MESSAGES/django.mo | Bin 24771 -> 24903 bytes .../locale/en/LC_MESSAGES/django.po | 4 + .../locale/fr/LC_MESSAGES/django.mo | Bin 30347 -> 30507 bytes .../locale/fr/LC_MESSAGES/django.po | 4 + .../locale/nl/LC_MESSAGES/django.mo | Bin 24194 -> 24345 bytes .../locale/nl/LC_MESSAGES/django.po | 4 + .../static/inspections/inspections_index.css | 421 ++++++++++++++---- .../static/inspections/inspections_index.js | 40 +- .../inspections/inspections_index.html | 66 +-- .../locale/en/LC_MESSAGES/django.mo | Bin 20487 -> 20619 bytes .../locale/en/LC_MESSAGES/django.po | 4 + .../locale/fr/LC_MESSAGES/django.mo | Bin 21978 -> 22138 bytes .../locale/fr/LC_MESSAGES/django.po | 4 + .../locale/nl/LC_MESSAGES/django.mo | Bin 21269 -> 21420 bytes .../locale/nl/LC_MESSAGES/django.po | 4 + .../observations/observations_index.css | 384 ++++++++++++++++ .../static/observations/observations_index.js | 53 ++- .../observations/observations_index.html | 235 ++-------- 18 files changed, 911 insertions(+), 312 deletions(-) diff --git a/loko/inspections/locale/en/LC_MESSAGES/django.mo b/loko/inspections/locale/en/LC_MESSAGES/django.mo index 5a5643141a48bdf1aed79b0b31a7d24f2e22301f..c40ec1b77e79badbbd5e7efede933d9d5b6f0e40 100644 GIT binary patch delta 5830 zcmXZf4Oo`d9mnzWpnxJGBJc==+=wWN;X9-#0xG@%T4jHvF%%XCGtI z==VbfRE*JhE$VD@FZaX7tfbL}fi)P5x8rbZMV+V}b@F#n8+?xJVSYvhn37>P8ibx zGJb|SPzUOyQJKc{#Wdu0O%du!reIhTYG^3pTToZA4QJzvs1wEVw0=)OZIF*jZH2QA zxjpl1)W$nd>pqJ~_$v0t6R34MZ~$gzasNum6h^PY#W)|^a1LHXUCGpb_6}#G=GUP% zxC@zLw&Gy?8!AIzqOPWUw%w=?di2Xs2Uvm%Y<+gvrg94dI{BlhBKec+zl=KB3DnhG zLe)S7$5ASi@M`q17haD{F)L74>Z8_u45M%#>Hsgh{;4nxZTK;2;^(Lcl^-n>MD@p_ z7MzJX`9f4+t5LPkhC1;!jKWj7%l!K#iyaJb=s(n`de0WUrt$cng){ zPf!zoaK;X_{Y+Hk`KVORK+Ru{+GsuMx$T&Xdy&}8SyZjWFgOhJFpB+6hz75+S&B;a zZ%`+C6qVw?xc*7kzl3>=#}Bd#jYAb(6DqZB$P}{=`Hwlrzu4QvQ{gJoLe%fev5@`E zgETm#c@H(Q12r*+T@>*g9E~l`eW;Uvg9@-alNI)BdA*VpBwKx z#J&HEY3Oyh6_vtG*aM$OrM4a8@i@ler>ObgqD~US_c$8!QO^}QD{(yi`N)~f4(x(Q zP|u$lO8%9yuNjENL@q`PWnv^=i4$=!M&WAINn20>`N)6Fll;rWlc*y55tX?W^ z=3Lag32uB2E}*{f}RRzW{Z|*P*I@m9rIN=s$(Z$P1{z-b9`7 z1TM#aqKdmR-`2(oOr+n6y6W%_8a-(oM4j{mCg8WIg`x{=@$|wZ`lYA`=eYh_983Q` z)c51C8~+|v)UkXXWj^XPT!>o#9;6P#W*ZGf^fv15&Y}W|9%UoWMlCQAm4TJ0E4v4~ z;#So2PoRf?Ms0KowNV7Gjxv~py7OVE=Sna|@BcI!$qdvwTTmzUQAP9&>cMxA>oy;v zY9zkUR&^g#0OhFXLf9MEplabh)NA(;PQd-B0L&QXv%iT^13jFC`KZX(V=8V&y*9g0 zf$l}UHE*M?=pv?IhxF#@U)#hcoE6q5?UCDz*!#0J;|240xy-%R$W>jha_hO#b!7t7Skx+=u#M z8!p2AI3U1SiTwhWmD+{wK&8+}y#1mjY{4@P5?9ou~lzqZWD-Rg{NOnfU^BWj`XDVvEN{duVQEvWgMQ3u$K%1k@zq{m(V3~IfL z=wYYHHjsXpruV;yhEh8hm9j>pKFk*68FLa-R7beEOb_&0$G6laUH4#cAx@! z0TuA;sLXwUdON!-iTdrJ8FYxP=V~n7(9YHz-d%q z|3cNyB}~Uaxh?JtR3-+MlYcEVi2)VU^{66Q>iTzLSNfY#8$68Ka3^}WA62X$q89uT z6=)XrBH;takmdb2Dn4Cs2XDgd^~{CMfk?r`sZmM=dl6b!SDW$Y-Mhy9reb8!!X6V>Z5u zO7UlygPr*T+ zjKc>}Dcy`YLmOt#wi^sXeJG~j z6*wKWQ9bGo?{@A$eGgv7UU&#~veT#xoyQRVgsPQ!bF6DIp8nQ3VY>)1k;j+F;545j6Y>~GW|*Zt--X+a#}(D z^v^l|VreV4g;&zn}Rl@U3{f~ zF?D$0YCk)zATY+SPOAz`-1B_eYHw22foJM#Yntm;HZ;_(_3CR^c{NRS%?F-tqIF=q z7rODrx|*f6P2Q^2OOx-gN^f!9s>b@zt=`H8Z$+rl3pFgZkL(Fn@9Ok_4ydRQ delta 5698 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 delta 5292 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 YEb8S)BU2mGkG@k8o^|xW^!`Er2OnBXhX4Qo diff --git a/loko/inspections/locale/nl/LC_MESSAGES/django.po b/loko/inspections/locale/nl/LC_MESSAGES/django.po index 642e15d..7b1f923 100644 --- a/loko/inspections/locale/nl/LC_MESSAGES/django.po +++ b/loko/inspections/locale/nl/LC_MESSAGES/django.po @@ -2095,3 +2095,7 @@ msgstr "Vorige" msgid "Suivant" msgstr "Volgende" +#: inspections/templates/inspections/inspections_index.html +msgid "Sélectionnez les critères à afficher sur la carte et dans le tableau" +msgstr "Selecteer criteria om weer te geven op de kaart en in de tabel" + diff --git a/loko/inspections/static/inspections/inspections_index.css b/loko/inspections/static/inspections/inspections_index.css index 33b801f..8a54e0a 100644 --- a/loko/inspections/static/inspections/inspections_index.css +++ b/loko/inspections/static/inspections/inspections_index.css @@ -1,3 +1,5 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600&display=swap'); + /* Layout helpers for Inspections desktop view */ .inspections-layout #inspections-table-container { position: relative; @@ -43,125 +45,255 @@ border-color: #dee2e6; } -/* Styles pour la modale de filtre */ +/* Filter badge */ +#filter-badge { + background-color: #0f172a !important; + color: #ffffff !important; + font-size: 0.72rem; + font-weight: 700; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + top: 2px !important; + right: -6px !important; + left: auto !important; + transform: none !important; + min-width: 1.25rem; + height: 1.25rem; + padding: 0 4px !important; + line-height: 1.25rem; +} +#filter-badge:not(.d-none) { + display: inline-flex !important; + align-items: center; + justify-content: center; +} + +/* ─── Modern Airbnb-style Filter Modal ──────────────────── */ #filterModal .modal-dialog { - max-width: 95%; + 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: 90vh; + 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; } -/* Default badge styling */ +/* Filter Options (Chips & Tags) */ +.filter-options { + display: flex; + flex-wrap: wrap; + gap: 0.45rem; + background-color: transparent !important; + border: none !important; + padding: 0 !important; + min-height: auto !important; +} +.filter-option { + display: inline-flex; + align-items: center; +} +.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; - 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.5rem; - font-size: 0.75rem; - border: 1px solid #b8d4f1; - transition: all 0.2s ease; - width: 140px; - flex: 1 1 auto; - text-align: center; + transition: all 0.15s ease; + user-select: none; white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + margin: 0; + width: auto; +} +.filter-option label:hover { + background-color: #f8fafc; + border-color: #94a3b8; + color: #0f172a; +} +.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 */ +/* Contextual badges - inactive state (outline) */ .filter-option label.context-badge { background-color: #ffffff; border-width: 1.5px; border-style: solid; - cursor: pointer; - user-select: none; font-weight: 600; - transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; } .filter-option label.btn-outline-primary, -.filter-option label.status-primary { border-color: #0c5cc9; color: #0c5cc9; background-color: #ffffff; } +.filter-option label.status-primary { border-color: #0c5cc9; color: #0c5cc9; } .filter-option label.btn-outline-danger, -.filter-option label.status-damaged { border-color: #dc3545; color: #dc3545; background-color: #ffffff; } +.filter-option label.status-damaged { border-color: #dc3545; color: #dc3545; } .filter-option label.btn-outline-warning, -.filter-option label.status-non_compliant { border-color: #ffc107; color: #997404; background-color: #ffffff; } +.filter-option label.status-non_compliant { border-color: #f59e0b; color: #d97706; } .filter-option label.btn-outline-success, -.filter-option label.status-compliant { border-color: #198754; color: #198754; background-color: #ffffff; } -.filter-option label.btn-outline-info { border-color: #17a2b8; color: #17a2b8; background-color: #ffffff; } +.filter-option label.status-compliant { border-color: #198754; color: #198754; } +.filter-option label.btn-outline-info { border-color: #0284c7; color: #0284c7; } .filter-option label.btn-outline-dark, -.filter-option label.status-missing { border-color: #212529; color: #212529; background-color: #ffffff; } +.filter-option label.status-missing { border-color: #334155; color: #334155; } .filter-option label.btn-outline-secondary, -.filter-option label.status-cancelled { border-color: #6c757d; color: #6c757d; background-color: #ffffff; } +.filter-option label.status-cancelled { border-color: #64748b; color: #64748b; } -/* Default badges - checked state */ -.filter-option input[type="checkbox"]:checked + label:not(.context-badge) { - background-color: #0c5cc9 !important; color: white !important; border-color: #0c5cc9 !important; -} +/* Contextual badges - hover state */ +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-primary, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-primary { background-color: #eff6ff; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-danger, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-damaged { background-color: #fef2f2; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-warning, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-non_compliant { background-color: #fffbeb; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-success, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-compliant { background-color: #f0fdf4; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-info { background-color: #f0f9ff; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-dark, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-missing { background-color: #f8fafc; } +.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-secondary, +.filter-option input[type="checkbox"]:not(:checked):hover + label.status-cancelled { background-color: #f8fafc; } /* Contextual badges - checked state */ +.filter-option input[type="checkbox"]:checked + label.context-badge { + color: #ffffff !important; +} .filter-option input[type="checkbox"]:checked + label.btn-outline-primary, .filter-option input[type="checkbox"]:checked + label.status-primary { - background-color: #0c5cc9 !important; border-color: #0c5cc9 !important; color: #ffffff !important; + background-color: #0c5cc9 !important; border-color: #0c5cc9 !important; box-shadow: 0 2px 6px rgba(12, 92, 201, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-danger, .filter-option input[type="checkbox"]:checked + label.status-damaged { - background-color: #dc3545 !important; border-color: #dc3545 !important; color: #ffffff !important; + background-color: #dc3545 !important; border-color: #dc3545 !important; box-shadow: 0 2px 6px rgba(220, 53, 69, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-warning, .filter-option input[type="checkbox"]:checked + label.status-non_compliant { - background-color: #ffc107 !important; border-color: #ffc107 !important; color: #000000 !important; + background-color: #f59e0b !important; border-color: #f59e0b !important; box-shadow: 0 2px 6px rgba(245, 158, 11, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-success, .filter-option input[type="checkbox"]:checked + label.status-compliant { - background-color: #198754 !important; border-color: #198754 !important; color: #ffffff !important; + background-color: #198754 !important; border-color: #198754 !important; box-shadow: 0 2px 6px rgba(25, 135, 84, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-info { - background-color: #17a2b8 !important; border-color: #17a2b8 !important; color: #ffffff !important; + background-color: #0284c7 !important; border-color: #0284c7 !important; box-shadow: 0 2px 6px rgba(2, 132, 199, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-dark, .filter-option input[type="checkbox"]:checked + label.status-missing { - background-color: #212529 !important; border-color: #212529 !important; color: #ffffff !important; + background-color: #1e293b !important; border-color: #1e293b !important; box-shadow: 0 2px 6px rgba(30, 41, 59, 0.2); } .filter-option input[type="checkbox"]:checked + label.btn-outline-secondary, .filter-option input[type="checkbox"]:checked + label.status-cancelled { - background-color: #6c757d !important; border-color: #6c757d !important; color: #ffffff !important; + background-color: #64748b !important; border-color: #64748b !important; box-shadow: 0 2px 6px rgba(100, 116, 139, 0.2); } -/* Hover states */ -.filter-option input[type="checkbox"]:hover + label:not(.context-badge) { background-color: #cfe2f3; } -.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-success, -.filter-option input[type="checkbox"]:not(:checked):hover + label.status-compliant { background-color: #d1e7dd; color: #0f5132; } -.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-warning, -.filter-option input[type="checkbox"]:not(:checked):hover + label.status-non_compliant { background-color: #fff3cd; color: #664d03; } -.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-danger, -.filter-option input[type="checkbox"]:not(:checked):hover + label.status-damaged { background-color: #f8d7da; color: #842029; } -.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-dark, -.filter-option input[type="checkbox"]:not(:checked):hover + label.status-missing { background-color: #e2e3e5; color: #141619; } -.filter-option input[type="checkbox"]:not(:checked):hover + label.btn-outline-secondary, -.filter-option input[type="checkbox"]:not(:checked):hover + label.status-cancelled { background-color: #e9ecef; color: #495057; } - +/* Subcategories */ .filter-option.subcategory-option label { - font-size: 0.875em; - color: #555; + font-size: 0.8rem; + color: #64748b; } .filter-option-break { flex-basis: 100%; @@ -173,53 +305,152 @@ gap: 0.25rem; } -.filter-section-header { - display: flex; - justify-content: space-between; +/* ─── Modern SaaS Table Styling ────────────────────────────────────── */ +.bootstrap-table { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important; +} + +.bootstrap-table.bootstrap5 .fixed-table-container { + border: 1px solid #e2e8f0 !important; + border-radius: 10px !important; + background-color: #ffffff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03); + overflow: hidden !important; +} + +.bootstrap-table.bootstrap5 .fixed-table-body { + overflow: auto !important; +} + +/* Subtle scrollbar */ +.bootstrap-table.bootstrap5 .fixed-table-body::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.bootstrap-table.bootstrap5 .fixed-table-body::-webkit-scrollbar-track { + background: #f8fafc; +} +.bootstrap-table.bootstrap5 .fixed-table-body::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 4px; +} +.bootstrap-table.bootstrap5 .fixed-table-body::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + +/* Headers */ +.bootstrap-table.bootstrap5 .fixed-table-header th, +.bootstrap-table.bootstrap5 #inspections-table th { + 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: 1.5px solid #e2e8f0 !important; + padding: 0.45rem 0.65rem !important; + vertical-align: middle !important; + white-space: nowrap !important; +} + +.bootstrap-table.bootstrap5 .fixed-table-header th .th-inner { + padding: 0 !important; + font-size: 0.74rem !important; + font-weight: 600 !important; + line-height: 1.3 !important; +} + +/* Rows & Cells */ +.bootstrap-table.bootstrap5 #inspections-table td { + padding: 0.35rem 0.65rem !important; + vertical-align: middle !important; + font-size: 0.82rem !important; + color: #334155; + border-bottom: 1px solid #f1f5f9 !important; + line-height: 1.35 !important; +} + +.bootstrap-table.bootstrap5 #inspections-table tbody tr { + transition: background-color 0.12s ease; +} + +.bootstrap-table.bootstrap5 #inspections-table tbody tr:hover { + background-color: #f8fafc !important; +} + +.bootstrap-table.bootstrap5 #inspections-table tbody tr.selected { + background-color: #f1f5f9 !important; +} + +/* Code link badge in table */ +.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-block; + padding: 2px 6px; + 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; +} + +/* Action button / Zoom button */ +.zoom-btn, +.table-action-btn { + display: inline-flex; align-items: center; - margin-bottom: 0.75rem; - gap: 1rem; + justify-content: center; + width: 28px; + height: 28px; + padding: 0; + border-radius: 6px; + color: #64748b; + background-color: transparent; + border: 1px solid transparent; + transition: all 0.15s ease; } -.filter-section-header label { - font-weight: 600; - color: #333; - margin: 0; - flex-shrink: 0; -} -.filter-section-buttons { - display: flex; - gap: 0.5rem; - margin-left: auto; - flex-shrink: 0; -} -.filter-section-buttons button { - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - white-space: nowrap; +.zoom-btn:hover, +.table-action-btn:hover { + color: #0f172a; + background-color: #f1f5f9; + border-color: #cbd5e1; } -.filter-options { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - min-height: 2.5rem; - padding: 0.5rem; - background-color: #f8f9fa; - border-radius: 0.375rem; - border: 1px solid #dee2e6; +/* Pagination bar */ +.bootstrap-table.bootstrap5 .fixed-table-pagination { + padding: 0.65rem 0.25rem 0 0.25rem !important; + font-size: 0.82rem; + color: #64748b; } - -.filter-option { - display: flex; - align-items: center; +.bootstrap-table.bootstrap5 .pagination-detail .page-list .btn-group .btn { + border-radius: 6px; + border-color: #e2e8f0; + font-size: 0.8rem; + padding: 0.25rem 0.6rem; + background-color: #ffffff; + color: #334155; } - -.filter-option input[type="checkbox"] { - position: absolute; - opacity: 0; - width: 0; - height: 0; - cursor: pointer; +.bootstrap-table.bootstrap5 .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; +} +.bootstrap-table.bootstrap5 .pagination .page-item.active .page-link { + background-color: #0f172a; + border-color: #0f172a; + color: #ffffff; } @media (max-width: 991.98px) { diff --git a/loko/inspections/static/inspections/inspections_index.js b/loko/inspections/static/inspections/inspections_index.js index 05c20e6..8baeff4 100644 --- a/loko/inspections/static/inspections/inspections_index.js +++ b/loko/inspections/static/inspections/inspections_index.js @@ -88,6 +88,7 @@ document.addEventListener('DOMContentLoaded', () => { inspectionsgeojsonloader.loadGeojson(initialUrl); _updateExportExcelUrl(query); + updateFilterBadge(); function checkAndOpenInspectionFromUrl() { let urlInspectionId = new URLSearchParams(window.location.search).get('inspection_id'); @@ -397,6 +398,7 @@ function setupFilterForm() { _applySearchToParams(params); savePreferencesFromForm(params); refreshListing(params); + updateFilterBadge(); const filterModal = bootstrap.Modal.getInstance(document.getElementById('filterModal')); if (filterModal) filterModal.hide(); @@ -433,6 +435,7 @@ function setupFilterForm() { } refreshListing(params); + updateFilterBadge(); const filterModal = bootstrap.Modal.getInstance(document.getElementById('filterModal')); if (filterModal) filterModal.hide(); @@ -763,19 +766,19 @@ function inspActionsFormatter(value, row) { if (row.lon && row.lat) { html += ` - `; } html += ` - `; if (row.can_edit) { html += ` - `; } @@ -786,7 +789,36 @@ function inspActionsFormatter(value, row) { function inspCodeFormatter(value, row) { const label = value || `INSP#${row.id}`; - return `${label}`; + return `${label}`; +} + +function countActiveFilters() { + const form = document.getElementById('filter-form'); + if (!form) return 0; + let count = 0; + if (form.querySelectorAll('input[name="thematic"]:checked').length > 0) count++; + if (form.querySelectorAll('input[name="category"]:checked').length > 0) count++; + if (form.querySelectorAll('input[name="result_status"]:checked').length > 0) count++; + if (form.querySelectorAll('input[name="nature"]:checked').length > 0) count++; + const dateFrom = form.querySelector('input[name="date_from"]')?.value; + const dateTo = form.querySelector('input[name="date_to"]')?.value; + if (dateFrom || dateTo) count++; + if (form.querySelector('input[name="mine"]')?.checked) 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'); + } + } } function inspDateFormatter(value, row) { diff --git a/loko/inspections/templates/inspections/inspections_index.html b/loko/inspections/templates/inspections/inspections_index.html index 0a8321d..c421c38 100644 --- a/loko/inspections/templates/inspections/inspections_index.html +++ b/loko/inspections/templates/inspections/inspections_index.html @@ -12,17 +12,20 @@