coming together

This commit is contained in:
HotSwapp
2025-08-13 18:53:35 -05:00
parent acc5155bf7
commit 5111079149
51 changed files with 14457 additions and 588 deletions

View File

@@ -141,15 +141,15 @@
<i class="fa-solid fa-file-import"></i>
<span>Import</span>
</button>
<button class="flex items-center gap-2 px-6 py-4 text-sm font-medium border-b-2 border-transparent hover:border-primary-300 text-neutral-600 dark:text-neutral-400 hover:text-primary-600 dark:hover:text-primary-400 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-all duration-200" id="backup-tab" data-tab-target="#backup" type="button" role="tab">
<i class="fa-solid fa-shield-halved"></i>
<span>Backup</span>
</button>
<button class="flex items-center gap-2 px-6 py-4 text-sm font-medium border-b-2 border-transparent hover:border-primary-300 text-neutral-600 dark:text-neutral-400 hover:text-primary-600 dark:hover:text-primary-400 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-all duration-200" id="issues-tab" data-tab-target="#issues" type="button" role="tab">
<i class="fa-solid fa-bug"></i>
<span>Issues</span>
<span class="ml-1 px-2 py-0.5 bg-red-100 dark:bg-red-800 text-red-700 dark:text-red-400 text-xs rounded-full hidden" id="issues-badge">0</span>
</button>
<button class="flex items-center gap-2 px-6 py-4 text-sm font-medium border-b-2 border-transparent hover:border-primary-300 text-neutral-600 dark:text-neutral-400 hover:text-primary-600 dark:hover:text-primary-400 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-all duration-200" id="backup-tab" data-tab-target="#backup" type="button" role="tab">
<i class="fa-solid fa-shield-halved"></i>
<span>Backup</span>
</button>
</nav>
<!-- Tab Content -->
@@ -2087,36 +2087,54 @@ async function viewIssue(issueId) {
}[issue.status] || 'bg-neutral-200 text-neutral-700 dark:bg-neutral-700 dark:text-neutral-300');
// Update context info
document.getElementById('issueCurrentPage').textContent = issue.current_page || 'Unknown';
document.getElementById('issueBrowserInfo').textContent = issue.browser_info || 'Unknown';
document.getElementById('issueIpAddress').textContent = issue.ip_address || 'Unknown';
document.getElementById('issueDetailPage').textContent = issue.current_page || 'Unknown';
document.getElementById('issueDetailBrowser').textContent = issue.browser_info || 'Unknown';
// Update sidebar info
document.getElementById('issueDetailReporter').textContent = issue.contact_name;
document.getElementById('issueDetailEmail').textContent = issue.contact_email;
document.getElementById('issueDetailCreated').textContent = new Date(issue.created_at).toLocaleString();
document.getElementById('issueDetailUpdated').textContent = issue.updated_at ? new Date(issue.updated_at).toLocaleString() : 'Never';
// Update sidebar info (only if elements exist)
const reporterEl = document.getElementById('issueDetailReporter');
if (reporterEl) reporterEl.textContent = issue.contact_name;
const emailEl = document.getElementById('issueDetailEmail');
if (emailEl) emailEl.textContent = issue.contact_email;
const createdEl = document.getElementById('issueDetailCreated');
if (createdEl) createdEl.textContent = new Date(issue.created_at).toLocaleString();
const updatedEl = document.getElementById('issueDetailUpdated');
if (updatedEl) updatedEl.textContent = issue.updated_at ? new Date(issue.updated_at).toLocaleString() : 'Never';
if (issue.resolved_at) {
document.getElementById('issueDetailResolved').textContent = new Date(issue.resolved_at).toLocaleString();
document.getElementById('issueResolvedInfo').style.display = 'block';
const resolvedEl = document.getElementById('issueDetailResolved');
if (resolvedEl) resolvedEl.textContent = new Date(issue.resolved_at).toLocaleString();
const resolvedInfoEl = document.getElementById('issueResolvedInfo');
if (resolvedInfoEl) resolvedInfoEl.style.display = 'block';
} else {
document.getElementById('issueResolvedInfo').style.display = 'none';
const resolvedInfoEl = document.getElementById('issueResolvedInfo');
if (resolvedInfoEl) resolvedInfoEl.style.display = 'none';
}
// Update form fields for editing
document.getElementById('updateStatus').value = issue.status;
document.getElementById('updatePriority').value = issue.priority;
document.getElementById('updateAssignee').value = issue.assigned_to || '';
// Update form fields for editing (only if elements exist)
const statusEl = document.getElementById('updateStatus');
if (statusEl) statusEl.value = issue.status;
const priorityEl = document.getElementById('updatePriority');
if (priorityEl) priorityEl.value = issue.priority;
const assigneeEl = document.getElementById('updateAssignee');
if (assigneeEl) assigneeEl.value = issue.assigned_to || '';
// Store current issue ID for updates
window.currentIssueId = issue.id;
// Load users for assignment dropdown
await loadUsersForAssignment();
// Load users for assignment dropdown (if function exists)
if (typeof loadUsersForAssignment === 'function') {
await loadUsersForAssignment();
}
// Load and display responses
displayIssueResponses(issue.responses);
// Load and display responses (if function exists)
if (typeof displayIssueResponses === 'function') {
displayIssueResponses(issue.responses);
}
// Show modal
openModal('issueDetailModal');