Added discord webhooks, better filtering, and automated ticket creation

This commit is contained in:
2024-12-02 21:21:10 -05:00
parent 67c0c68f6c
commit 5120afddf5
4 changed files with 178 additions and 31 deletions

View File

@ -291,25 +291,62 @@ function initSearch() {
// Filter by status
function initStatusFilter() {
const filter = document.createElement('select');
filter.innerHTML = `
<option value="">All Status</option>
<option value="Open">Open</option>
<option value="Closed">Closed</option>
`;
filter.className = 'status-filter';
filter.onchange = (e) => {
const status = e.target.value;
const rows = document.querySelectorAll('tbody tr');
rows.forEach(row => {
if (!status || row.querySelector('.status-' + status)) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
const filterContainer = document.createElement('div');
filterContainer.className = 'status-filter-container';
// Create dropdown container
const dropdown = document.createElement('div');
dropdown.className = 'status-dropdown';
// Create dropdown header
const dropdownHeader = document.createElement('div');
dropdownHeader.className = 'dropdown-header';
dropdownHeader.textContent = 'Status Filter';
// Create dropdown content
const dropdownContent = document.createElement('div');
dropdownContent.className = 'dropdown-content';
const statuses = ['Open', 'Closed'];
statuses.forEach(status => {
const label = document.createElement('label');
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.value = status;
checkbox.id = `status-${status.toLowerCase()}`;
const urlParams = new URLSearchParams(window.location.search);
const currentStatuses = urlParams.get('status') ? urlParams.get('status').split(',') : [];
checkbox.checked = currentStatuses.includes(status);
label.appendChild(checkbox);
label.appendChild(document.createTextNode(status));
dropdownContent.appendChild(label);
});
const saveButton = document.createElement('button');
saveButton.className = 'btn save-filter';
saveButton.textContent = 'Apply Filter';
saveButton.onclick = () => {
const checkedBoxes = dropdownContent.querySelectorAll('input:checked');
const selectedStatuses = Array.from(checkedBoxes).map(cb => cb.value);
localStorage.setItem('statusFilter', selectedStatuses.join(','));
window.location.href = selectedStatuses.length ? `?status=${selectedStatuses.join(',')}` : '?';
dropdown.classList.remove('active');
};
document.querySelector('.table-controls .table-actions').prepend(filter);
// Toggle dropdown on header click
dropdownHeader.onclick = () => {
dropdown.classList.toggle('active');
};
dropdown.appendChild(dropdownHeader);
dropdown.appendChild(dropdownContent);
dropdownContent.appendChild(saveButton);
filterContainer.appendChild(dropdown);
document.querySelector('.table-controls .table-actions').prepend(filterContainer);
}
function sortTable(table, column) {