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">
-
qrz->show ?? "true") == "false") { echo 'style="display:none"'; } ?> class="mb-3 col-lg-2 col-md-2 col-sm-3 col-xl">
-
+
@@ -711,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 e23d141fc..445333008 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
@@ -1592,6 +1608,7 @@ $(document).ready(function () {
} else {
$("#"+type).val(col1);
}
+ updateFilterButtonStates();
$('#searchForm').submit();
});
}
@@ -1663,17 +1680,55 @@ $(document).ready(function () {
silentReset = false; // reset flag
return; // skip submit
}
+ requestAnimationFrame(function() {
+ updateFilterButtonStates();
+ });
setTimeout(function() {
$('#searchForm').submit();
});
});
+ $('#searchForm').on('change', 'input, select', function() {
+ updateFilterButtonStates();
+ });
+
rebind_checkbox_trigger();
$('#searchForm').submit();
+ setTimeout(function() {
+ updateFilterButtonStates();
+ }, 100);
+
});
+function hasActiveFilters() {
+ return Object.keys(filterDefaults).some(selector => {
+ const $el = $(selector);
+ if (!$el.length) 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
+ }
+
+ // Compare current value to stored default
+ return currentVal !== defaultVal;
+ });
+}
+
+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 +2015,7 @@ function saveOptions() {
dateTo.value = '';
break;
}
+ updateFilterButtonStates();
}
// Reset dates function
@@ -1968,6 +2024,7 @@ function saveOptions() {
const dateTo = document.getElementById('dateTo');
dateFrom.value = '';
dateTo.value = '';
+ updateFilterButtonStates();
}
function checkUpdateDistances() {