Advanced Search: swap inverted date/priority ranges instead of submitting them (#61)
A user could set an end date before a start date, or priority_min > priority_max, and the filter would be silently sent as an unsatisfiable range with zero results and no explanation. Now swaps min/max (and from/to) before building the query string when they're in the wrong order. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MGDKHiU5RJdo3dqQUDow3X
This commit is contained in:
@@ -87,11 +87,17 @@ function performAdvancedSearch(event) {
|
|||||||
params.set('search', searchText);
|
params.set('search', searchText);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date ranges
|
// Date ranges — swap if the user entered an end date before the start date
|
||||||
const createdFrom = document.getElementById('adv-created-from').value;
|
let createdFrom = document.getElementById('adv-created-from').value;
|
||||||
const createdTo = document.getElementById('adv-created-to').value;
|
let createdTo = document.getElementById('adv-created-to').value;
|
||||||
const updatedFrom = document.getElementById('adv-updated-from').value;
|
if (createdFrom && createdTo && createdFrom > createdTo) {
|
||||||
const updatedTo = document.getElementById('adv-updated-to').value;
|
[createdFrom, createdTo] = [createdTo, createdFrom];
|
||||||
|
}
|
||||||
|
let updatedFrom = document.getElementById('adv-updated-from').value;
|
||||||
|
let updatedTo = document.getElementById('adv-updated-to').value;
|
||||||
|
if (updatedFrom && updatedTo && updatedFrom > updatedTo) {
|
||||||
|
[updatedFrom, updatedTo] = [updatedTo, updatedFrom];
|
||||||
|
}
|
||||||
|
|
||||||
if (createdFrom) params.set('created_from', createdFrom);
|
if (createdFrom) params.set('created_from', createdFrom);
|
||||||
if (createdTo) params.set('created_to', createdTo);
|
if (createdTo) params.set('created_to', createdTo);
|
||||||
@@ -105,9 +111,12 @@ function performAdvancedSearch(event) {
|
|||||||
params.set('status', selectedStatuses.join(','));
|
params.set('status', selectedStatuses.join(','));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Priority range
|
// Priority range — swap if min > max so the range is always satisfiable
|
||||||
const priorityMin = document.getElementById('adv-priority-min').value;
|
let priorityMin = document.getElementById('adv-priority-min').value;
|
||||||
const priorityMax = document.getElementById('adv-priority-max').value;
|
let priorityMax = document.getElementById('adv-priority-max').value;
|
||||||
|
if (priorityMin && priorityMax && Number(priorityMin) > Number(priorityMax)) {
|
||||||
|
[priorityMin, priorityMax] = [priorityMax, priorityMin];
|
||||||
|
}
|
||||||
if (priorityMin) params.set('priority_min', priorityMin);
|
if (priorityMin) params.set('priority_min', priorityMin);
|
||||||
if (priorityMax) params.set('priority_max', priorityMax);
|
if (priorityMax) params.set('priority_max', priorityMax);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user