export function renderPhaseBarChart(chartData, containerId, tableContainerId) { // Pulizia del contenitore del grafico const chartContainer = document.querySelector(`#${containerId}`); if (chartContainer) { chartContainer.innerHTML = ""; } else { console.error(`Contenitore del grafico non trovato: #${containerId}`); return; } // Estrai i dati per il grafico a barre const phaseRatingsData = chartData || []; // Validazione dei dati if (!Array.isArray(phaseRatingsData) || phaseRatingsData.length === 0) { chartContainer.innerHTML = '
No data available for Phase Rating Distribution.
'; const tableContainer = document.querySelector(`#${tableContainerId}`); if (tableContainer) { tableContainer.innerHTML = 'No data available.
'; } return; } const phases = phaseRatingsData.map((item) => item.phase || "Unknown"); const passData = phaseRatingsData.map( (item) => parseInt(item.passCount) || 0, ); const failData = phaseRatingsData.map( (item) => parseInt(item.failCount) || 0, ); const otherData = phaseRatingsData.map( (item) => parseInt(item.otherCount) || 0, ); // Verifica se ci sono dati validi da visualizzare const hasValidData = passData.some((value) => value > 0) || failData.some((value) => value > 0) || otherData.some((value) => value > 0); if (!hasValidData) { chartContainer.innerHTML = 'No ratings to display.
'; const tableContainer = document.querySelector(`#${tableContainerId}`); if (tableContainer) { tableContainer.innerHTML = 'No ratings to display.
'; } return; } // Configurazione del grafico a barre orizzontali const options = { series: [ { name: "Pass", data: passData, }, { name: "Fail", data: failData, }, { name: "Others", data: otherData, }, ], chart: { type: "bar", height: 600, stacked: true, toolbar: { show: true, tools: { download: true, selection: false, zoom: false, zoomin: false, zoomout: false, pan: false, reset: false, }, }, }, plotOptions: { bar: { horizontal: true, barHeight: "80%", }, }, dataLabels: { enabled: false, }, xaxis: { categories: phases, title: { text: "Number of Reports", }, }, yaxis: { title: { text: "Phase", }, }, colors: ["#28A745", "#FF4D4D", "#FFA500"], fill: { opacity: 1, }, tooltip: { y: { formatter: function (val) { return val + " reports"; }, }, }, legend: { position: "top", horizontalAlign: "left", offsetX: 40, }, }; // Render del grafico const chart = new ApexCharts(chartContainer, options); chart.render(); // Genera una tabella per i dati const tableHTML = `| Phase | Pass | Fail | Others |
|---|---|---|---|
| ${item.phase || "Unknown"} | ${parseInt(item.passCount) || 0} | ${parseInt(item.failCount) || 0} | ${parseInt(item.otherCount) || 0} |