54 lines
1.8 KiB
PHP
54 lines
1.8 KiB
PHP
<?php
|
|
namespace App\Charts;
|
|
|
|
use App\Models\SensorData;
|
|
use ArielMejiaDev\LarapexCharts\LarapexChart;
|
|
|
|
class PresureChart
|
|
{
|
|
protected $chart;
|
|
|
|
public function __construct(LarapexChart $chart)
|
|
{
|
|
$this->chart = $chart;
|
|
}
|
|
|
|
public function build(): \ArielMejiaDev\LarapexCharts\RadialChart
|
|
{
|
|
// Ambil data pressure terbaru dari device_name 'kawedanan'
|
|
$latestData = SensorData::where('device_name', 'kawedanan')
|
|
->orderBy('created_at', 'desc') // Mengurutkan berdasarkan data terbaru
|
|
->first(); // Mengambil data terbaru
|
|
|
|
// Cek jika data ditemukan
|
|
if (!$latestData) {
|
|
return $this->chart->radialChart()
|
|
->addData([0]) // Jika tidak ada data, set 0
|
|
->setHeight(280)
|
|
->setLabels(['Kawedanan'])
|
|
->setColors(['#03A9F4'])
|
|
->setTitle("Pressure: 0 bar")
|
|
->setSubtitle("Data tidak ditemukan.");
|
|
}
|
|
|
|
// Jika data ada, ambil nilai pressure
|
|
$latestPressure = $latestData->pressure;
|
|
$createdAt = $latestData->created_at;
|
|
|
|
// Membatasi angka desimal menjadi 2 digit
|
|
$formattedPressure = number_format($latestPressure, 2);
|
|
|
|
// Format tanggal dan waktu untuk ditampilkan di judul
|
|
$formattedDateTime = $createdAt->format('l, d F Y H:i'); // Contoh: Senin, 02 Oktober 2024 14:30
|
|
|
|
// Membuat chart dengan data pressure terbaru
|
|
return $this->chart->radialChart()
|
|
->addData([$formattedPressure]) // Memasukkan nilai pressure terbaru
|
|
->setHeight(280)
|
|
->setLabels(['Kawedanan'])
|
|
->setColors(['#03A9F4'])
|
|
->setTitle("Pressure: {$formattedPressure} bar")
|
|
->setSubtitle("Data dari: {$formattedDateTime}");
|
|
}
|
|
}
|