49 lines
1.5 KiB
PHP
49 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Charts;
|
|
|
|
use ArielMejiaDev\LarapexCharts\LarapexChart;
|
|
|
|
class MonthlyDBDChart
|
|
{
|
|
protected $chart;
|
|
protected $dataByYear;
|
|
protected $year;
|
|
|
|
public function __construct($dataByYear, $year)
|
|
{
|
|
$this->chart = new LarapexChart;
|
|
$this->dataByYear = $dataByYear;
|
|
$this->year = $year;
|
|
}
|
|
|
|
public function build(): \ArielMejiaDev\LarapexCharts\LineChart
|
|
{
|
|
$monthlyData = []; // Inisialisasi array kosong untuk data bulanan
|
|
|
|
// Jika ada data untuk tahun tertentu
|
|
if ($this->dataByYear->isNotEmpty()) {
|
|
// Loop melalui setiap data untuk mengumpulkan jumlah kasus per bulan
|
|
foreach ($this->dataByYear as $data) {
|
|
// Jika belum ada data untuk bulan tersebut, tambahkan ke array
|
|
if (!isset($monthlyData[$data->bulan])) {
|
|
$monthlyData[$data->bulan] = $data->jumlah_kasus;
|
|
} else {
|
|
// Jika sudah ada data untuk bulan tersebut, tambahkan jumlah kasus ke data yang sudah ada
|
|
$monthlyData[$data->bulan] += $data->jumlah_kasus;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Pisahkan label bulan dan data jumlah kasus dari array asosiatif
|
|
$labels = array_keys($monthlyData);
|
|
$jumlahKasus = array_values($monthlyData);
|
|
|
|
// Bangun chart dengan data yang dikumpulkan
|
|
return $this->chart->lineChart()
|
|
->addData('Jumlah Kasus', $jumlahKasus)
|
|
->setXAxis($labels)
|
|
->setHeight(220);
|
|
}
|
|
}
|