THEN show: "${rule.action.text.substring(0, 40)}..."
Logged In: ${simulatedUser.isLoggedIn}
Page Visits: ${simulatedUser.pageVisits}
Cart Value: $${simulatedUser.cartValue}
${rules.map(r => `
`;
document.getElementById('pdf-preview-container').innerHTML = document.querySelector('.w-full.max-w-sm.mx-auto').innerHTML;
document.getElementById('pdf-logic-trace').innerHTML = document.getElementById('logic-trace').innerHTML;
const reportEl = document.getElementById('pdf-report');
reportEl.classList.remove('hidden');
const canvas = await html2canvas(reportEl, { scale: 2 });
reportEl.classList.add('hidden');
const imgData = canvas.toDataURL('image/png');
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation: 'p', unit: 'in', format: 'letter' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const pdfHeight = (canvas.height * pdfWidth) / canvas.width;
pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
pdf.save('Chat-Personalization-Scenario.pdf');
}
document.getElementById('user-attributes').addEventListener('input', e => {
if (e.target.id === 'pageVisits') {
document.getElementById('pageVisitsLabel').textContent = e.target.value;
}
evaluateRules();
});
document.getElementById('addRuleBtn').addEventListener('click', () => openRuleModal());
document.getElementById('cancelModalBtn').addEventListener('click', closeRuleModal);
document.getElementById('saveRuleBtn').addEventListener('click', saveRule);
document.getElementById('downloadPdfBtn').addEventListener('click', generatePdf);
document.getElementById('rules-list').addEventListener('click', e => {
const id = parseInt(e.target.dataset.id);
if (e.target.matches('.edit-rule-btn')) {
const rule = rules.find(r => r.id === id);
openRuleModal(rule);
}
if (e.target.matches('.remove-rule-btn')) {
rules = rules.filter(r => r.id !== id);
renderRulesList();
evaluateRules();
}
});
renderRulesList();
evaluateRules();
});
Rule #${r.id}: IF ${r.condition.attribute} ${r.condition.operator} ${r.condition.value}
`).join('')}