`).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();
});
