let labels = [];
let dataValues = [];
function clearImage() {
document.getElementById("upload_image").value = "";
$("#result").empty();
$("#penjelasan").hide();
$("#penjelasan").empty();
$("#hasilDeteksi").hide();
$("#pie").hide();
// clearChartData();
// Tambahkan pemanggilan AJAX untuk menghapus gambar
$.ajax({
url: "/delete_image",
type: "POST",
success: function (response) {
console.log(response);
},
error: function (error) {
console.error(error);
},
});
}
function getLink(prediction) {
if (prediction === "Healthy") {
return "/healthy";
} else if (prediction === "Cerscospora") {
return "/cerscospora";
} else if (prediction === "Rust") {
return "/rust";
}
}
//Cropping
$(document).ready(function () {
var $modal = $("#modal");
var image = document.getElementById("sample_image");
var cropper;
$("#upload_image").change(function (event) {
var files = event.target.files;
var done = function (url) {
image.src = url;
$modal.modal("show");
};
if (files && files.length > 0) {
reader = new FileReader();
reader.onload = function (event) {
done(reader.result);
};
reader.readAsDataURL(files[0]);
}
});
$modal
.on("shown.bs.modal", function () {
cropper = new Cropper(image, {
aspectRatio: 1,
viewMode: 3,
preview: ".preview",
minCropBoxWidth: 100, // Menetapkan lebar minimum crop box menjadi 100 piksel
minCropBoxHeight: 100, // Menetapkan tinggi minimum crop box menjadi 100 piksel
maxCropBoxWidth: 100, // Menetapkan lebar maksimum crop box menjadi 100 piksel
maxCropBoxHeight: 100, // Menetapkan tinggi maksimum crop box menjadi 100 piksel
});
})
.on("hidden.bs.modal", function () {
cropper.destroy();
cropper = null;
});
$("#crop").click(function () {
canvas = cropper.getCroppedCanvas({
width: 224,
height: 224,
});
canvas.toBlob(function (blob) {
var reader = new FileReader();
reader.onloadend = function () {
var base64data = reader.result.split(",")[1];
while (base64data.length % 4 !== 0) {
base64data += "=";
}
$.ajax({
url: "/submit",
method: "POST",
data: { image: base64data },
success: function (data) {
$modal.modal("hide");
$("#uploaded_image").attr("src", data.img_path);
var label = data.label;
var highest_probability = data.highest_probability;
$("#hasilDeteksi").show();
$("#result").empty();
var buttonClass =
label === "Healthy" ? "btn-success" : "btn-warning";
var penangananButtonLabel =
label === "Healthy"
? "Tidak ada penanganan"
: "Penanganan penyakit " + label;
$("#result").append(`
Hasil:
Probabilitas Terbesar: ${highest_probability.toFixed(2)}%
${
label === "Healthy"
? `
`
: `
`
}
`);
// Ambil data untuk pie chart dari respons JSON
const labels = [data.label];
const dataValues = [data.highest_probability];
for (const label in data.other_probabilities) {
labels.push(label);
dataValues.push(data.other_probabilities[label]);
}
console.log('Labels:', labels);
console.log('Data Values:', dataValues);
// Menentukan warna berdasarkan label
const backgroundColors = labels.map(label => {
switch (label) {
case 'GIANT':
return 'rgba(0, 100, 0, 0.7)'; // Hijau
case 'LEUKOSIT':
return 'rgba(255, 206, 86, 0.7)'; // Kuning
case 'NORMAL':
return 'rgba(102, 51, 0, 0.7)'; // Ungu
// Tambahkan warna untuk label lain jika diperlukan
default:
return 'rgba(255, 99, 132, 0.7)'; // Warna default
}
});
// Buat konfigurasi untuk pie chart dengan warna yang sudah ditentukan
const config = {
type: 'pie',
data: {
labels: labels,
datasets: [{
data: dataValues,
backgroundColor: backgroundColors,
}]
},
options: {
responsive: true,
aspectRatio: 1,
maintainAspectRatio: false,
width: 100,
height: 100
}
};
// Dapatkan elemen canvas untuk pie chart
const ctx = document.getElementById('pieChart').getContext('2d');
// Buat pie chart menggunakan Chart.js
if (window.pieChart && window.pieChart.destroy) {
window.pieChart.destroy();
}
window.pieChart = new Chart(ctx, config);
// Menampilkan elemen card setelah chart dibuat
$("#pie").show();
// Menampilkan kembali elemen card setelah chart dibuat
const pieCard = document.getElementById('pie');
pieCard.style.display = 'block';
},
error: function (error) {
console.log(error);
},
});
};
reader.readAsDataURL(blob);
});
});
});
function showPenjelasan(penyakit) {
var penjelasanContainer = document.getElementById("penjelasanContainer");
$.ajax({
url: `/handing?clasify=${penyakit}`,
type: "GET",
success: function (response) {
let clasify = response.class;
let guides = response.data;
console.log(penyakit)
var cardBody = penjelasanContainer.querySelector(".card-body");
let penjelasan =
`${clasify} terdeteksi. Berikut adalah langkah-langkah penanganan yang dapat Anda lakukan:
`;
guides.map((data, i) => {
penjelasan += "
" + data.text;
if (data.image != null) {
penjelasan +=
"
";
}
penjelasan += "";
});
penjelasan += "
";
cardBody.innerHTML = penjelasan;
penjelasanContainer.style.display = "block";
},
error: function (error) {
console.error(error);
},
});
}
function closePenjelasan() {
var penjelasanContainer = document.getElementById("penjelasanContainer");
penjelasanContainer.style.display = "none";
}
function clearChartData() {
labels.length = 0;
dataValues.length = 0;
}
$(document).ready(function(){
$('#tutorialCarousel').carousel();
});
function showTutorial() {
$('#tutorialModal').modal('show'); // Tampilkan modal
}
// Fungsi untuk menutup modal
function closeModal() {
$('#tutorialModal').modal('hide');
}
// Fungsi untuk slide ke slide sebelumnya
function prevSlide() {
$('#tutorialCarousel').carousel('prev');
}
// Fungsi untuk slide ke slide berikutnya
function nextSlide() {
$('#tutorialCarousel').carousel('next');
}
function closeModal() {
var modal = document.getElementById('tutorialModal');
$('#tutorialModal').modal('hide');
}
window.onload = function() {
showTutorial();
};