154 lines
3.6 KiB
Markdown
154 lines
3.6 KiB
Markdown
|
|
# Troubleshooting Dashboard Data Kosong
|
||
|
|
|
||
|
|
## 🔍 Checklist Debugging
|
||
|
|
|
||
|
|
### 1. Cek Console Browser
|
||
|
|
Buka browser console (F12) dan cek:
|
||
|
|
- Apakah ada error?
|
||
|
|
- Apakah API call berhasil?
|
||
|
|
- Apakah response data ada?
|
||
|
|
|
||
|
|
**Expected logs:**
|
||
|
|
```
|
||
|
|
[Dashboard] Summary response raw: {total_count: 47, total_amount: 112000, ...}
|
||
|
|
[Dashboard] By Category response raw: {labels: [...], series: {...}}
|
||
|
|
[Dashboard] State date: 2025-12-16
|
||
|
|
[Dashboard] Parsed summary: {totalAmount: 112000, summary: {...}}
|
||
|
|
[Dashboard] Final counts: {personCount: 33, motorCount: 12, carCount: 2, totalAmount: 112000}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Cek API Response
|
||
|
|
Test langsung API endpoint:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Login dulu untuk dapat token
|
||
|
|
curl -X POST http://localhost:8000/auth/v1/login \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-d '{"username":"admin","password":"password"}'
|
||
|
|
|
||
|
|
# Test summary endpoint (ganti YOUR_TOKEN)
|
||
|
|
curl "http://localhost:8000/retribusi/v1/dashboard/summary?date=2025-12-16" \
|
||
|
|
-H "Authorization: Bearer YOUR_TOKEN"
|
||
|
|
|
||
|
|
# Expected response:
|
||
|
|
# {"success":true,"data":{"total_count":47,"total_amount":112000,...}}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Cek Data di Database
|
||
|
|
```bash
|
||
|
|
cd api-btekno
|
||
|
|
php bin/check_dashboard_data.php
|
||
|
|
```
|
||
|
|
|
||
|
|
**Expected output:**
|
||
|
|
- Entry Events: Ada data
|
||
|
|
- Daily Summary: Ada data untuk tanggal yang dipilih
|
||
|
|
- Test Query: Total Count > 0, Total Amount > 0
|
||
|
|
|
||
|
|
### 4. Cek Konfigurasi Frontend
|
||
|
|
**File**: `retribusi (frontend)/public/dashboard/js/config.js`
|
||
|
|
|
||
|
|
Pastikan BASE_URL benar:
|
||
|
|
```javascript
|
||
|
|
// Untuk PHP built-in server
|
||
|
|
BASE_URL: 'http://localhost:8000'
|
||
|
|
|
||
|
|
// Untuk Laragon
|
||
|
|
BASE_URL: 'http://localhost/api-btekno/public'
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. Cek Default Date
|
||
|
|
**File**: `retribusi (frontend)/public/dashboard/js/dashboard.js`
|
||
|
|
|
||
|
|
Default date sudah di-set ke tanggal yang ada data:
|
||
|
|
```javascript
|
||
|
|
const state = {
|
||
|
|
date: '2025-12-16', // Tanggal yang ada data
|
||
|
|
locationCode: '',
|
||
|
|
gateCode: ''
|
||
|
|
};
|
||
|
|
```
|
||
|
|
|
||
|
|
## 🐛 Masalah Umum
|
||
|
|
|
||
|
|
### Masalah 1: Data Kosong (0)
|
||
|
|
**Penyebab**:
|
||
|
|
- Date tidak sesuai dengan tanggal yang ada data
|
||
|
|
- Data belum di-aggregate ke daily_summary
|
||
|
|
|
||
|
|
**Solusi**:
|
||
|
|
1. Pilih tanggal yang ada data di filter date (2025-12-16)
|
||
|
|
2. Atau aggregate data: `php bin/daily_summary.php 2025-12-16`
|
||
|
|
|
||
|
|
### Masalah 2: API Error 401
|
||
|
|
**Penyebab**:
|
||
|
|
- Token expired atau tidak valid
|
||
|
|
- Tidak ada Authorization header
|
||
|
|
|
||
|
|
**Solusi**:
|
||
|
|
1. Login ulang
|
||
|
|
2. Cek token di localStorage: `localStorage.getItem('token')`
|
||
|
|
3. Cek apakah token masih valid
|
||
|
|
|
||
|
|
### Masalah 3: API Error 404
|
||
|
|
**Penyebab**:
|
||
|
|
- Route tidak ditemukan
|
||
|
|
- Base URL salah
|
||
|
|
|
||
|
|
**Solusi**:
|
||
|
|
1. Cek base URL di `config.js`
|
||
|
|
2. Pastikan API server running
|
||
|
|
3. Test health endpoint: `http://localhost:8000/health`
|
||
|
|
|
||
|
|
### Masalah 4: CORS Error
|
||
|
|
**Penyebab**:
|
||
|
|
- CORS tidak dikonfigurasi dengan benar
|
||
|
|
- Origin tidak diizinkan
|
||
|
|
|
||
|
|
**Solusi**:
|
||
|
|
1. Cek `.env` di backend: `CORS_ALLOWED_ORIGINS=*`
|
||
|
|
2. Pastikan CORS middleware aktif
|
||
|
|
3. Restart API server
|
||
|
|
|
||
|
|
## ✅ Quick Fix
|
||
|
|
|
||
|
|
Jika data masih tidak muncul, coba:
|
||
|
|
|
||
|
|
1. **Set date manual di browser console:**
|
||
|
|
```javascript
|
||
|
|
// Buka browser console (F12)
|
||
|
|
state.date = '2025-12-16';
|
||
|
|
loadSummaryAndCharts();
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Cek response langsung:**
|
||
|
|
```javascript
|
||
|
|
// Di browser console
|
||
|
|
const response = await apiGetSummary({ date: '2025-12-16' });
|
||
|
|
console.log('Response:', response);
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Force refresh:**
|
||
|
|
- Hard refresh: Ctrl+Shift+R (Windows) atau Cmd+Shift+R (Mac)
|
||
|
|
- Clear cache dan reload
|
||
|
|
|
||
|
|
4. **Cek Network Tab:**
|
||
|
|
- Buka DevTools > Network
|
||
|
|
- Cek request ke `/retribusi/v1/dashboard/summary`
|
||
|
|
- Lihat response body dan status code
|
||
|
|
|
||
|
|
## 📝 Expected Data untuk 2025-12-16
|
||
|
|
|
||
|
|
Berdasarkan test:
|
||
|
|
- **Total Count**: 47
|
||
|
|
- **Total Amount**: 112,000
|
||
|
|
- **Person Walk**: 33
|
||
|
|
- **Motor**: 12
|
||
|
|
- **Car**: 2
|
||
|
|
|
||
|
|
Jika data ini tidak muncul, ada masalah dengan:
|
||
|
|
1. API call
|
||
|
|
2. Response parsing
|
||
|
|
3. Data rendering
|
||
|
|
|