Online Probability Tree Diagram Generator

Probability Tree Diagram Generator

Define events and outcomes to visualize probabilities.

P = ${finalProb.toFixed(4)}

`; }).join(''); lastResult.paths = paths; }; // --- PDF Generation --- const generatePdf = async () => { if (!lastResult.tree) return; const treeImage = canvas.toDataURL('image/png'); const tableRows = lastResult.paths.map(path => { const pathString = path.map(p => p.name).join(', '); const finalProb = path.reduce((acc, p) => acc * p.prob, 1); return `${pathString}${finalProb.toFixed(4)}`; }).join(''); pdfContentArea.innerHTML = `

Probability Tree Report

Probability Tree Diagram

Final Probabilities

${tableRows}
PathProbability
`; pdfContentArea.style.display = 'block'; pdfContentArea.style.position = 'absolute'; pdfContentArea.style.left = '-9999px'; pdfContentArea.style.width = '1000px'; try { const pdfCanvas = await html2canvas(pdfContentArea, { scale: 2 }); const imgData = pdfCanvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'portrait', unit: 'px', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const imgHeight = pdfCanvas.height * pdfWidth / pdfCanvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, imgHeight); pdf.save(`Probability-Tree-Report.pdf`); } catch (error) { console.error("PDF generation failed:", error); alert("Could not generate PDF."); } finally { pdfContentArea.style.display = 'none'; } }; const showError = (msg) => { errorMessage.textContent = msg; errorMessage.style.display = 'block'; }; // --- Event Listeners --- addEventBtn.addEventListener('click', () => addEvent()); eventsContainer.addEventListener('click', (e) => { if (e.target.classList.contains('add-outcome-btn')) { addOutcome(e.target.previousElementSibling); } if (e.target.classList.contains('remove-outcome-btn')) { e.target.closest('.outcome-item').remove(); } if (e.target.classList.contains('remove-event-btn')) { e.target.closest('.event-block').remove(); } }); generateBtn.addEventListener('click', () => { errorMessage.style.display = 'none'; const events = parseInputData(); if (events) { const treeData = generateTreeData(events); lastResult.tree = treeData; drawTree(treeData); displayProbabilities(treeData); resultsContainer.style.display = 'block'; } }); downloadPdfBtn.addEventListener('click', generatePdf); // --- Initial State --- addEvent(true); // Add the first event block });
Scroll to Top