TIF_NGANJUK_E41211253/app/Charts/PresureChart.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}");
}
}