Self-Service Dashboard

My Open Tickets

0

Resolution Rate

0%

Avg. Resolution Time

0 days

Tickets Logged (30d)

0

Date OpenedTicket IDCategoryStatusActions

${a.content}

`).join(''); } window.openModal = () => { document.getElementById('ticket-form').reset(); document.getElementById('modal-title').textContent = 'Submit New Ticket'; modal.style.display = 'flex'; }; document.getElementById('ticket-form').addEventListener('submit', e => { e.preventDefault(); const newTicket = { id: Date.now(), date: new Date().toISOString().slice(0,10), category: document.getElementById('ticket-category').value, description: document.getElementById('ticket-description').value, status: 'Open' }; selfServiceData.tickets.unshift(newTicket); modal.style.display = 'none'; render(); }); window.deleteTicket = id => { if(confirm('Are you sure you want to delete this ticket?')) { selfServiceData.tickets = selfServiceData.tickets.filter(t => t.id !== id); render(); } }; document.querySelector('.ssd-tabs').addEventListener('click', e => { if(e.target.matches('.ssd-tab-link')) { document.querySelectorAll('.ssd-tab-link, .ssd-tab-content').forEach(el => el.classList.remove('active')); e.target.classList.add('active'); const tabName = e.target.dataset.tab; document.querySelector(`.ssd-tab-content[data-tab-content="${tabName}"]`).classList.add('active'); if(tabName === 'overview') renderCharts(selfServiceData.tickets.map(t => ({...t, age: Math.ceil((TODAY - new Date(t.date)) / (1000*60*60*24)) }))); } }); document.getElementById('add-ticket-btn').addEventListener('click', () => openModal()); document.getElementById('cancel-btn').addEventListener('click', () => modal.style.display = 'none'); document.getElementById('kb-search').addEventListener('input', e => renderKnowledgeBase(e.target.value)); document.getElementById('ssd-pdf-download-btn').addEventListener('click', async () => { const btn = document.getElementById('ssd-pdf-download-btn'); btn.textContent = 'Generating...'; btn.disabled = true; const { jsPDF } = window.jspdf; const pdf = new jsPDF('p', 'mm', 'a4'); pdf.setFontSize(20).text('My Tickets Summary', 105, 15, { align: 'center' }); const canvas = await html2canvas(document.getElementById('ssd-printable-area'), { scale: 2 }); pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 15, 25, 180, canvas.height * 180 / canvas.width); pdf.autoTable({ html: '#tickets-table-body', startY: 100 }); pdf.save('Self_Service_Report.pdf'); btn.textContent = 'Download My Tickets Summary'; btn.disabled = false; }); render(); });
Scroll to Top