Files
cleftlipdata/public/main/assets/js/dashboard-data.js
T
2026-06-06 10:05:39 +07:00

245 lines
9.6 KiB
JavaScript

$(function () {
// Function to fetch data for users by role chart
function fetchUsersByRoleData() {
$.ajax({
url: '/api/users-by-role-data',
method: 'GET',
success: function (response) {
// =====================================
// Data Berdasarkan Role Pengguna
// =====================================
var users_by_role = {
chart: {
type: 'bar',
height: 330,
fontFamily: "'Plus Jakarta Sans', sans-serif",
foreColor: "#ffffff",
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: '55%',
endingShape: 'rounded'
},
},
dataLabels: {
enabled: true,
style: {
colors: ['#000000']
}
},
stroke: {
show: true,
width: 2,
colors: ['transparent']
},
series: [
{
name: 'Jumlah'
}
],
xaxis: {
categories: ['Administrator', 'Ahli bedah mulut', 'Dokter', 'Operator', 'Peneliti', 'Perawat'],
},
yaxis: {
title: {
text: 'Jumlah Pengguna',
forceNiceScale: true,
}
},
fill: {
opacity: 1,
colors: ['#d2d8d7']
},
tooltip: {
theme: "dark",
fillSeriesColor: false,
}
};
// Update chart configuration with fetched data
users_by_role.series[0].data = response.data.map(Number);
// Render chart
var chart = new ApexCharts(document.querySelector("#users_by_role"), users_by_role);
chart.render();
//var total_data_users_by_role = users_by_role.series[0].data[0] + users_by_role.series[0].data[1] + users_by_role.series[0].data[2] + users_by_role.series[0].data[3] + users_by_role.series[0].data[4];
var total_data_users_by_role = response.data.reduce((total, current) => total + Number(current), 0);
document.querySelector("#total_data_users_by_role").textContent = total_data_users_by_role;
},
error: function (error) {
console.error('Error fetching users by role data:', error);
}
});
}
// Function to fetch data for jenis terapi chart
function fetchDataJenisTerapi() {
$.ajax({
url: '/api/data-jenis-terapi',
method: 'GET',
success: function (response) {
// =====================================
// Data Jenis Terapi
// =====================================
var data_jenis_terapi = {
color: "#adb5bd",
labels: ["Gnatoplasty", "Labioplasty", "Palatoplasty"],
chart: {
width: 180,
type: "donut", // Mengubah tipe chart menjadi donut
fontFamily: "'Plus Jakarta Sans', sans-serif",
foreColor: "#ffffff",
},
plotOptions: {
pie: {
startAngle: 0,
endAngle: 360,
expandOnClick: false,
},
donut: { // Menambahkan plotOptions untuk donut
size: '65%', // Ukuran bagian donut relatif terhadap pie (dalam persen)
labels: {
show: true,
name: {
offsetY: 15,
},
value: {
offsetY: -15,
formatter: function (val) {
return val;
}
}
}
}
},
stroke: {
show: false,
},
dataLabels: {
enabled: false,
},
legend: {
show: false,
},
colors: ["#ffb234", "#ffcf8f", "#ff9764"],
responsive: [{
breakpoint: 991,
options: {
chart: {
width: 150,
},
},
}],
tooltip: {
theme: "dark",
fillSeriesColor: false,
},
};
// Update chart configuration with fetched data
data_jenis_terapi.series = response.data.map(Number);
var chart = new ApexCharts(document.querySelector("#data_jenis_terapi"), data_jenis_terapi);
chart.render();
var labioplastyValue = data_jenis_terapi.series[1];
document.querySelector("#labioplastyValue").textContent = labioplastyValue;
var palatoplastyValue = data_jenis_terapi.series[2];
document.querySelector("#palatoplastyValue").textContent = palatoplastyValue;
var gnatoplastyValue = data_jenis_terapi.series[0];
document.querySelector("#gnatoplastyValue").textContent = gnatoplastyValue;
//var total_data_jenis_terapi = data_jenis_terapi.series[0] + data_jenis_terapi.series[1] + data_jenis_terapi.series[2];
var total_data_jenis_terapi = data_jenis_terapi.series.reduce((total, current) => total + current, 0);
document.querySelector("#total_data_jenis_terapi").textContent = total_data_jenis_terapi;
},
error: function (error) {
console.error('Error fetching jenis terapi data:', error);
}
});
}
// Function to fetch data for jenis kelamin chart
function fetchDataJenisKelamin() {
$.ajax({
url: '/api/data-jenis-kelamin',
method: 'GET',
success: function (response) {
// =====================================
// Data Jenis Kelamin
// =====================================
var data_jenis_kelamin = {
color: "#adb5bd",
series: [33, 24],
labels: ["Laki-Laki", "Perempuan"],
chart: {
width: 180,
type: "pie",
fontFamily: "'Plus Jakarta Sans', sans-serif",
foreColor: "#ffffff",
},
plotOptions: {
pie: {
startAngle: 0,
endAngle: 360,
expandOnClick: false,
},
},
stroke: {
show: false,
},
dataLabels: {
enabled: false,
},
legend: {
show: false,
},
colors: ["#4693ff", "#e680ff"],
responsive: [
{
breakpoint: 991,
options: {
chart: {
width: 150,
},
},
},
],
tooltip: {
theme: "dark",
fillSeriesColor: false,
},
};
// Update chart configuration with fetched data
data_jenis_kelamin.series = response.data.map(Number);
var chart = new ApexCharts(document.querySelector("#data_jenis_kelamin"), data_jenis_kelamin);
chart.render();
var maleValue = data_jenis_kelamin.series[0];
document.querySelector("#maleValue").textContent = maleValue;
var femaleValue = data_jenis_kelamin.series[1];
document.querySelector("#femaleValue").textContent = femaleValue;
//var total_data_jenis_kelamin = data_jenis_kelamin.series[0] + data_jenis_kelamin.series[1];
var total_data_jenis_kelamin = data_jenis_kelamin.series.reduce((total, current) => total + current, 0);
document.querySelector("#total_data_jenis_kelamin").textContent = total_data_jenis_kelamin;
},
error: function (error) {
console.error('Error fetching jenis kelamin data:', error);
}
});
}
// Call the functions to fetch data initially
fetchUsersByRoleData();
fetchDataJenisTerapi();
fetchDataJenisKelamin();
});