Fix double-firing event handlers, non-bubbling keyboard status event, and saved filter status type
- Remove duplicate edit-comment/delete-comment cases from TicketView.php inline
script — ticket.js already handles them. Double-call of editComment() would
immediately open then close the edit form (second call sees .editing → cancels)
- Fix keyboard shortcut 1-4 status change: dispatchEvent(new Event('change'))
was non-bubbling (default), so the document-level change delegation in TicketView
never received it. Now uses { bubbles: true } so updateTicketStatus() fires correctly
- Fix saved filter status type: getCurrentFilterCriteria() was saving status as a
joined string "Open,Pending" but pill-click handler called .join() expecting an array
(TypeError swallowed by try/catch → status filter silently not applied). Now saves
as array; applySavedFilterCriteria handles both arrays and legacy strings
- Pill-click handler also updated to handle both array and string status formats
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -181,7 +181,7 @@ function getCurrentFilterCriteria() {
|
||||
|
||||
const statusSelect = document.getElementById('adv-status');
|
||||
const selectedStatuses = Array.from(statusSelect.selectedOptions).map(opt => opt.value);
|
||||
if (selectedStatuses.length > 0) criteria.status = selectedStatuses.join(',');
|
||||
if (selectedStatuses.length > 0) criteria.status = selectedStatuses; // keep as array — pill handler uses .join(',')
|
||||
|
||||
const priorityMin = document.getElementById('adv-priority-min').value;
|
||||
if (priorityMin) criteria.priority_min = priorityMin;
|
||||
@@ -256,9 +256,11 @@ function applySavedFilterCriteria(criteria) {
|
||||
document.getElementById('adv-updated-from').value = criteria.updated_from || '';
|
||||
document.getElementById('adv-updated-to').value = criteria.updated_to || '';
|
||||
|
||||
// Status
|
||||
// Status — criteria.status may be an array (new saves) or a comma-joined string (old saves)
|
||||
const statusSelect = document.getElementById('adv-status');
|
||||
const statuses = criteria.status ? criteria.status.split(',') : [];
|
||||
const statuses = criteria.status
|
||||
? (Array.isArray(criteria.status) ? criteria.status : criteria.status.split(','))
|
||||
: [];
|
||||
Array.from(statusSelect.options).forEach(option => {
|
||||
option.selected = statuses.includes(option.value);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user