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);
|
||||
}
|
||||
|
||||
// Date ranges
|
||||
const createdFrom = document.getElementById('adv-created-from').value;
|
||||
const createdTo = document.getElementById('adv-created-to').value;
|
||||
const updatedFrom = document.getElementById('adv-updated-from').value;
|
||||
const updatedTo = document.getElementById('adv-updated-to').value;
|
||||
// Date ranges — swap if the user entered an end date before the start date
|
||||
let createdFrom = document.getElementById('adv-created-from').value;
|
||||
let createdTo = document.getElementById('adv-created-to').value;
|
||||
if (createdFrom && createdTo && createdFrom > createdTo) {
|
||||
[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 (createdTo) params.set('created_to', createdTo);
|
||||
@@ -105,9 +111,12 @@ function performAdvancedSearch(event) {
|
||||
params.set('status', selectedStatuses.join(','));
|
||||
}
|
||||
|
||||
// Priority range
|
||||
const priorityMin = document.getElementById('adv-priority-min').value;
|
||||
const priorityMax = document.getElementById('adv-priority-max').value;
|
||||
// Priority range — swap if min > max so the range is always satisfiable
|
||||
let priorityMin = document.getElementById('adv-priority-min').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 (priorityMax) params.set('priority_max', priorityMax);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user