`;
updateDonut(sumCmg, sumLmg, sumHmg);
updateBar(edcValsMg); // Bar grafiğe mg değerleri gönder
});
// DONUT GRAFİK (oran için mg)
function updateDonut(cValMg, lValMg, hValMg){
const totalMg = cValMg + lValMg + hValMg || 1;
const pc = (cValMg/totalMg*100).toFixed(1);
const pl = (lValMg/totalMg*100).toFixed(1);
const ph = (hValMg/totalMg*100).toFixed(1);
const dataArr = [ +pc, +pl, +ph ];
if(!donutChart){
const ctx = document.getElementById(“donutChart”).getContext(“2d”);
donutChart = new Chart(ctx,{
type:”doughnut”,
data:{
labels:[“Temizlik”,”Çamaşır”,”Sağlık & Güzellik”],
datasets:[{
data:dataArr,
backgroundColor:[“#F7464A”,”#46BFBD”,”#FDB45C”]
}]
},
plugins:[ChartDataLabels],
options:{
responsive:true,
plugins:{
tooltip:{enabled:false},
datalabels:{
color:”#fff”,
formatter:function(value,ctx){
return ctx.chart.data.labels[ctx.dataIndex] + “n” + value + “%”;
}
}
}
}
});
} else {
donutChart.data.datasets[0].data = dataArr;
donutChart.update();
}
}
// BAR GRAFİK (mg cinsinden)
function updateBar(valsMg){
const labelsArr = [
“Yüzey”,”Zemin”,”Cam”,”Küvet/Fayans”,”Oda spreyi”,”Halı temiz.”,
“Tuvalet temiz.”,”Cila/wax”,”Bulaşık mak.”,”Elde bulaşık”,
“Çamaşır suyu”,”Çamaşır det.”,”Kurutucu mend.”,
“El sabunu”,”El dezenf.”,”Katı sabun”,”Duş jeli”,”Şampuan”,”Saç kremi”,
“Tıraş kremi”,”Vücut losyonu”,”Yüz losyonu”,”Yüz temizl.”,”Diş macunu”,
“Deodorant”,”Saç ürünü”,”Ruj”,”Maskara”,”Fondöten”,”Oje”,”Güneş kremi”,”Parfüm”
];
// valsMg: mg tam sayı
if(!barChart){
const ctx = document.getElementById(“barChart”).getContext(“2d”);
barChart = new Chart(ctx,{
type:”bar”,
data:{
labels: labelsArr,
datasets:[{
label:”EDC (mg)”,
data: valsMg,
backgroundColor:”#467261″
}]
},
options:{
responsive:true,
indexAxis:”y”,
scales:{
x:{beginAtZero:true}
}
}
});
} else {
barChart.data.labels = labelsArr;
barChart.data.datasets[0].data = valsMg;
barChart.update();
}
}
// SIRALAMA BUTONU (mg bazında küçük->büyük / büyük->küçük)
btnSort.addEventListener(“click”, ()=>{
if(!barChart) return;
const direction = sortSelect.value; // asc/desc
const dataArr = barChart.data.datasets[0].data; // mg
const labArr = barChart.data.labels;
// mg ve etiketleri eşleştir
let combined = dataArr.map((val,i)=>({ label: labArr[i], value: val }));
// Sırala
if(direction===”asc”){
combined.sort((a,b)=>a.value – b.value);
} else {
combined.sort((a,b)=>b.value – a.value);
}
// Grafiği güncelle
barChart.data.labels = combined.map(o=>o.label);
barChart.data.datasets[0].data = combined.map(o=>o.value);
barChart.update();
});
})();
Görüntüleme: 477