From 57f9bfcfb00893d84d4cba0940491c39cb59874e Mon Sep 17 00:00:00 2001 From: int2001 Date: Fri, 20 Mar 2026 07:24:34 +0000 Subject: [PATCH 1/3] Show indicatio if filter is set --- application/views/logbookadvanced/index.php | 12 ++++++ assets/js/sections/logbookadvanced.js | 42 +++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index 3e3cca5e8..aa2bf70a5 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -263,6 +263,18 @@ padding-right: 5px; padding-left: 5px; } + .btn-filter-active { + background-color: #ffc107 !important; + border-color: #ffc107 !important; + color: #000 !important; + } + .btn-filter-active:hover { + background-color: #e0a800 !important; + border-color: #e0a800 !important; + } + .btn-filter-active .fas { + color: #000 !important; + } { + const $el = $(selector); + if (!$el.length) return false; + const val = $el.val(); + if (Array.isArray(val)) { + return false; + } + return val && val !== '*' && val !== '' && val !== 'All'; + }); +} + +function updateFilterButtonStates() { + const hasActive = hasActiveFilters(); + + if (hasActive) { + $('#filterDropdown').addClass('btn-filter-active'); + } else { + $('#filterDropdown').removeClass('btn-filter-active'); + } +} + function rebind_checkbox_trigger() { $('#checkBoxAll').change(function (event) { if (this.checked) { @@ -1960,6 +2000,7 @@ function saveOptions() { dateTo.value = ''; break; } + updateFilterButtonStates(); } // Reset dates function @@ -1968,6 +2009,7 @@ function saveOptions() { const dateTo = document.getElementById('dateTo'); dateFrom.value = ''; dateTo.value = ''; + updateFilterButtonStates(); } function checkUpdateDistances() { From 873ff86af512f6f9eff424303d3930869b160c56 Mon Sep 17 00:00:00 2001 From: int2001 Date: Fri, 20 Mar 2026 09:05:06 +0000 Subject: [PATCH 2/3] Different approach / use class --- application/views/logbookadvanced/index.php | 94 ++++++++++----------- assets/js/sections/logbookadvanced.js | 37 +++++--- 2 files changed, 73 insertions(+), 58 deletions(-) diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index aa2bf70a5..ce4d5886f 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -290,12 +290,12 @@ $options = json_decode($options);
" method="post"> - - - - - - + + + + + +
@@ -326,19 +326,19 @@ $options = json_decode($options);
datetime->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - +
datetime->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - +
dx->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
dxcc->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> -
state->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
gridsquare->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
mode->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - $mode) { @@ -380,7 +380,7 @@ $options = json_decode($options);
band->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> -
propagation->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -434,7 +434,7 @@ $options = json_decode($options);
cqzone->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> -
ituzone->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> -
county->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
dok->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
sota->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
pota->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
iota->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> -
wwff->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
operator->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
contest->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
continent->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -519,15 +519,15 @@ $options = json_decode($options);
comment->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
distance->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
duration->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
@@ -569,7 +569,7 @@ $options = json_decode($options);
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -580,7 +580,7 @@ $options = json_decode($options);
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -591,7 +591,7 @@ $options = json_decode($options);
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -601,7 +601,7 @@ $options = json_decode($options);
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -613,7 +613,7 @@ $options = json_decode($options);
lotw->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -624,7 +624,7 @@ $options = json_decode($options);
lotw->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -636,7 +636,7 @@ $options = json_decode($options);
clublog->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -647,7 +647,7 @@ $options = json_decode($options);
clublog->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -660,7 +660,7 @@ $options = json_decode($options);
eqsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -671,7 +671,7 @@ $options = json_decode($options);
eqsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -682,7 +682,7 @@ $options = json_decode($options);
dcl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -691,7 +691,7 @@ $options = json_decode($options);
dcl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -702,11 +702,11 @@ $options = json_decode($options);
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - "> + ">
qsl->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -714,7 +714,7 @@ $options = json_decode($options);
qrz->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - @@ -723,7 +723,7 @@ $options = json_decode($options);
qrz->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl"> - diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 1c943b74c..29e8601bf 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -6,6 +6,7 @@ let inStateFixing = false; let stateFixStats = {fixed: 0, skipped: 0, fixedDxcc: new Set(), skippedDxcc: new Set(), skipReasons: new Set(), skippedDetails: []}; let lastChecked = null; let silentReset = false; +const filterDefaults = {}; document.addEventListener("DOMContentLoaded", function() { document.querySelectorAll('.dropdown').forEach(dd => { @@ -626,7 +627,22 @@ function unselectQsoID(qsoID) { $('#checkBoxAll').prop("checked", false); } +// Capture default values for all filter fields on page load +function captureFilterDefaults() { + $('.filter-field').each(function() { + const $el = $(this); + const id = $el.attr('id'); + const name = $el.attr('name'); + // Use id as key if available, otherwise use name + const key = id ? '#' + id : '[name="' + name + '"]'; + filterDefaults[key] = $el.val(); + }); +} + $(document).ready(function () { + // Capture default filter values BEFORE any other initialization + captureFilterDefaults(); + // initialize multiselect dropdown for locations // Documentation: https://davidstutz.github.io/bootstrap-multiselect/index.html @@ -1687,20 +1703,19 @@ $(document).ready(function () { }); function hasActiveFilters() { - const textFilters = ['#dx', '#state', '#gridsquare', '#county', '#dok', '#sota', '#pota', '#wwff', '#operator', '#contest', '#comment', '#qslvia', '#distance', '#duration']; - const dateFilters = ['#dateFrom', '#dateTo']; - const selectFilters = ['#dxcc', '#mode', '#band', '#sats', '#orbits', '#propmode', '#cqzone', '#ituzone', '#iota', '#continent', '#qslSent', '#qslReceived', '#qslSentMethod', '#qslReceivedMethod', '#lotwSent', '#lotwReceived', '#clublogSent', '#clublogReceived', '#eqslSent', '#eqslReceived', '#dclSent', '#dclReceived', '#qrzSent', '#qrzReceived', '#qslimages']; - const hiddenFilters = ['#dupes', '#invalid', '#dupedate', '#dupemode', '#dupeband', '#dupesat']; - const allFilters = [...textFilters, ...dateFilters, ...selectFilters, ...hiddenFilters]; - - return allFilters.some(selector => { + return Object.keys(filterDefaults).some(selector => { const $el = $(selector); if (!$el.length) return false; - const val = $el.val(); - if (Array.isArray(val)) { - return false; + const currentVal = $el.val(); + const defaultVal = filterDefaults[selector]; + + // Handle arrays (multi-select) + if (Array.isArray(currentVal)) { + return false; // Multi-selects not currently used } - return val && val !== '*' && val !== '' && val !== 'All'; + + // Compare current value to stored default + return currentVal !== defaultVal; }); } From e09404f30c2a1628f56c53ed87df8256b67a2c21 Mon Sep 17 00:00:00 2001 From: int2001 Date: Fri, 20 Mar 2026 09:14:32 +0000 Subject: [PATCH 3/3] Include Sort/Dir of Filter-Menu into the logic --- application/views/logbookadvanced/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index ce4d5886f..3db48f04c 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -533,7 +533,7 @@ $options = json_decode($options);
- @@ -542,7 +542,7 @@ $options = json_decode($options);
-