var organizationResetFilterBtn = document.getElementById('organizationResetFilterBtn'); var organizationRows = Array.prototype.slice.call(document.querySelectorAll('#organizationTable .organization-row')); var organizationPaginationWrap = document.getElementById('organizationPaginationWrap'); var organizationPaginationPrev = document.getElementById('organizationPaginationPrev'); var organizationPaginationNext = document.getElementById('organizationPaginationNext'); var organizationPageNumbers = document.getElementById('organizationPageNumbers'); var organizationPage = 1; var organizationPerPage = getResponsiveAdminTablePageSize(); var preservedOrganizationState = window.consumeAdminTabUiState('organizations'); if (preservedOrganizationState) { var preservedOrganizationValues = preservedOrganizationState.values || {}; if (organizationSearch && Object.prototype.hasOwnProperty.call(preservedOrganizationValues, 'organizationSearch')) { organizationSearch.value = preservedOrganizationValues.organizationSearch; } if (organizationStatusFilter && Object.prototype.hasOwnProperty.call(preservedOrganizationValues, 'organizationStatusFilter')) { organizationStatusFilter.value = preservedOrganizationValues.organizationStatusFilter; } organizationPage = Math.max(1, Number(preservedOrganizationState.page) || 1); } function renderOrganizationPageButtons(totalPages) { window.DocuFlowPagination.render(organizationPageNumbers, organizationPage, totalPages, function (page) { organizationPage = page; applyOrganizationFilter(); }); } function applyOrganizationFilter() { var search = organizationSearch ? organizationSearch.value.toLowerCase().trim() : ''; var status = organizationStatusFilter ? organizationStatusFilter.value : 'all'; var filteredRows = []; organizationRows.forEach(function (row) { var matchSearch = search === '' || row.dataset.nameSearch.indexOf(search) !== -1; var matchStatus = status === 'all' || row.dataset.status === status; row.style.display = 'none'; if (matchSearch && matchStatus) { filteredRows.push(row); } }); var totalPages = Math.max(1, Math.ceil(filteredRows.length / organizationPerPage)); if (organizationPage > totalPages) organizationPage = totalPages; filteredRows.slice((organizationPage - 1) * organizationPerPage, organizationPage * organizationPerPage).forEach(function (row) { row.style.display = ''; }); var showPagination = filteredRows.length > organizationPerPage; if (organizationPaginationWrap) organizationPaginationWrap.style.display = showPagination ? 'flex' : 'none'; if (showPagination) renderOrganizationPageButtons(totalPages); if (organizationPaginationPrev) organizationPaginationPrev.classList.toggle('disabled', organizationPage <= 1); if (organizationPaginationNext) organizationPaginationNext.classList.toggle('disabled', organizationPage >= totalPages); } if (organizationSearch) organizationSearch.addEventListener('input', function () { organizationPage = 1; applyOrganizationFilter(); }); if (organizationStatusFilter) organizationStatusFilter.addEventListener('change', function () { organizationPage = 1; applyOrganizationFilter(); }); if (organizationResetFilterBtn) organizationResetFilterBtn.addEventListener('click', function () { if (organizationSearch) organizationSearch.value = ''; if (organizationStatusFilter) organizationStatusFilter.value = 'all'; organizationPage = 1; applyOrganizationFilter(); }); if (organizationPaginationPrev) organizationPaginationPrev.addEventListener('click', function (e) { e.preventDefault(); if (!this.classList.contains('disabled')) { organizationPage = Math.max(1, organizationPage - 1); applyOrganizationFilter(); } }); if (organizationPaginationNext) organizationPaginationNext.addEventListener('click', function (e) { e.preventDefault(); if (!this.classList.contains('disabled')) { organizationPage = organizationPage + 1; applyOrganizationFilter(); } }); window.addEventListener('resize', function () { var nextPerPage = getResponsiveAdminTablePageSize(); if (nextPerPage !== organizationPerPage) { organizationPerPage = nextPerPage; organizationPage = 1; applyOrganizationFilter(); } }); document.addEventListener('dashboard-data-table:sort', function (event) { if (!event.detail || !event.detail.table || event.detail.table.id !== 'organizationTable') { return; } event.preventDefault(); event.detail.handled = true; organizationRows = sortAdminDashboardRows(organizationRows, event.detail.columnIndex, event.detail.order); organizationPage = 1; applyOrganizationFilter(); }); function getOrganizationFormError(payload) { if (!payload || typeof payload !== 'object') return ''; if (payload.errors && typeof payload.errors === 'object') { var keys = Object.keys(payload.errors); if (keys.length > 0 && Array.isArray(payload.errors[keys[0]]) && payload.errors[keys[0]].length > 0) { return payload.errors[keys[0]][0]; } } return payload.message || ''; } function submitOrganizationFormWithAlert(formEl, successTitle) { if (!formEl) return; var submitBtn = formEl.querySelector('button[type="submit"]'); if (submitBtn) submitBtn.disabled = true; fetch(formEl.action, { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json' }, body: new FormData(formEl) }) .then(function (response) { return response.json().catch(function () { return {}; }).then(function (payload) { if (!response.ok) { throw new Error(getOrganizationFormError(payload) || '