chart = $chart; } public function build(): \ArielMejiaDev\LarapexCharts\LineChart { $tahun = date('Y'); $bulan = date('m'); $hariIni = date('N'); // Mendapatkan hari saat ini dalam bentuk numerik (1 = Senin, 7 = Minggu) // Array untuk menyimpan nama hari $dataHari = ['Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu', 'Minggu']; $dataPenjumlahan = []; // Looping untuk setiap hari dalam seminggu (Senin sampai Minggu) hingga hari ini for ($i = 0; $i < $hariIni; $i++) { // Penyesuaian untuk memulai dari Senin (hari pertama) $hariMySQL = $i + 1; // Hari dalam MySQL (1 = Minggu, 2 = Senin, dst.) // Ambil data terbaru sensor jarak untuk `klampisan_atas` $latestSensorAtas = SensorData::where('device_name', 'klampisan_atas') ->whereYear('created_at', $tahun) ->whereMonth('created_at', $bulan) ->whereRaw('WEEKDAY(created_at) = ?', [$i]) // `WEEKDAY` untuk mendapatkan hari mulai dari Senin (0 = Senin) ->orderBy('created_at', 'desc') ->first(); // Ambil data terbaru sensor jarak untuk `klampisan_bawah` $latestSensorBawah = SensorData::where('device_name', 'klampisan_bawah') ->whereYear('created_at', $tahun) ->whereMonth('created_at', $bulan) ->whereRaw('WEEKDAY(created_at) = ?', [$i]) ->orderBy('created_at', 'desc') ->first(); // Hitung penjumlahan jarak dari kedua device $distanceAtas = $latestSensorAtas ? $latestSensorAtas->distance : 0; $distanceBawah = $latestSensorBawah ? $latestSensorBawah->distance : 0; $totalDistance = round($distanceAtas + $distanceBawah, 2); // Simpan hasil penjumlahan dalam array $dataPenjumlahan[] = $totalDistance; } // Hasilnya akan tersimpan dalam $dataPenjumlahan yang berisi total distance dari klampisan_atas dan klampisan_bawah untuk setiap hari return $this->chart->lineChart() ->setDataset([ [ 'name' => 'Penjumlahan Data Klampisan Atas & Bawah', 'data' => $dataPenjumlahan ] ]) ->setHeight(270) ->setXAxis(array_slice($dataHari, 0, $hariIni)); // Hanya tampilkan hari hingga hari ini di X-axis } }