Seera/TROUBLESHOOTING_CHARTS.md
2025-11-03 13:38:27 +05:30

211 lines
5.0 KiB
Markdown

# Charts Not Showing - Troubleshooting Guide
## Step 1: Check Browser Console
1. Open your browser's Developer Tools (F12)
2. Go to the **Console** tab
3. Look for error messages for each chart
4. Look for API call logs showing chart data
You should see logs like:
```
Up & Down Time Chart data: {labels: [...], datasets: [...]}
```
If you see errors instead, note them down.
## Step 2: Verify Backend API is Deployed
The Python file `frappe_dashboard_api.py` must be copied to your Frappe server:
```bash
# SSH to your Frappe server
cd frappe-bench/apps/asset_lite
# Create api directory if it doesn't exist
mkdir -p asset_lite/api
# Copy the file
cp /path/to/frappe_dashboard_api.py asset_lite/api/dashboard_api.py
# Restart Frappe
bench restart
```
## Step 3: Test API Directly
Open a new browser tab and try accessing the API directly:
### Test Number Cards
```
https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_number_cards
```
**Expected Response:**
```json
{
"message": {
"total_assets": 7109,
"work_orders_open": 3,
"work_orders_in_progress": 1,
"work_orders_completed": 2
}
}
```
### Test Chart Data
```
https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.dashboard_api.get_dashboard_chart_data?chart_name=Work%20Order%20Status%20Chart
```
**Expected Response:**
```json
{
"message": {
"labels": ["Open", "Completed", "Pending"],
"datasets": [{
"name": "Count",
"values": [10, 20, 5],
"color": "#4F46E5"
}],
"type": "Bar"
}
}
```
## Step 4: Check Dashboard Chart Names
The chart names in React MUST match EXACTLY (including spaces and capitalization) with your Frappe Dashboard Chart docnames.
In Frappe, go to: **Desk → Dashboard Chart List**
Current names in React code:
- `Up & Down Time Chart`
- `Work Order Status Chart`
- `Maintenance - Asset wise Count`
- `Asset Maintenance Assignees Status Count`
- `Asset Maintenance Frequency Chart`
- `PPM Status`
- `PPM Template Counts`
If your Frappe charts have different names, update them in `ModernDashboard.tsx` line 12-18.
## Step 5: Verify Dashboard Chart Configuration
Each Dashboard Chart in Frappe must have:
1. **Chart Type:** "Report"
2. **Use Report Chart:** ✓ (checked)
3. **Report Name:** A valid report name
4. **X Field:** The field to use for X-axis (e.g., `status`, `item_name`)
5. **Y Axis Fields:** At least one entry in child table with:
- Y Field (e.g., `count`, `amount`)
- Color (e.g., `#4F46E5`)
- Label (e.g., `Count`)
6. **Is Public:** ✓ (checked) OR user has permission
## Step 6: Check Network Tab
1. Open Developer Tools (F12)
2. Go to **Network** tab
3. Refresh the dashboard page
4. Look for API calls to `get_dashboard_chart_data`
5. Click on each call and check:
- **Status Code:** Should be 200
- **Response:** Should contain chart data
### Common Errors:
**404 Not Found**
- Backend API file not deployed
- Endpoint path is wrong
**500 Internal Server Error**
- Chart doesn't exist in Frappe
- Report has an error
- Python code has a bug
**401 Unauthorized**
- Not logged in
- Session expired
**403 Forbidden**
- Chart is not Public
- User doesn't have permission
## Step 7: Quick Fixes
### If API endpoint doesn't exist (404):
```bash
# On Frappe server
cd frappe-bench/apps/asset_lite
ls -la asset_lite/api/ # Check if dashboard_api.py exists
bench restart
```
### If chart names don't match:
Edit `src/pages/ModernDashboard.tsx` and update chart names to match exactly.
### If charts are private:
In Frappe, for each Dashboard Chart:
1. Open the chart
2. Check **Is Public**
3. Save
### If using wrong report:
The backend expects Report-based charts. Regular charts won't work.
## Step 8: Enable Debug Mode
Add this to see what's being fetched:
Open `src/hooks/useApi.ts` and check if errors are being caught properly.
## Step 9: Test with Mock Data
Temporarily add mock data to verify charts render:
```typescript
// In ModernDashboard.tsx, replace chart fetch with:
const mockData = {
labels: ['A', 'B', 'C'],
datasets: [{
name: 'Test',
values: [10, 20, 15],
color: '#4F46E5'
}],
type: 'Bar'
};
const { data: workOrderChart } = { data: mockData, loading: false, error: null };
```
If charts appear with mock data, the problem is the API. If not, it's the chart rendering logic.
## Step 10: Contact Support
If none of the above work, provide:
1. Browser console errors
2. Network tab screenshots showing API responses
3. Frappe Dashboard Chart configuration screenshots
4. Frappe error logs: `bench logs`
---
## Quick Checklist
- [ ] `frappe_dashboard_api.py` copied to `asset_lite/api/dashboard_api.py`
- [ ] Frappe server restarted (`bench restart`)
- [ ] Chart names in React match Frappe exactly
- [ ] All charts are marked "Is Public" in Frappe
- [ ] Charts are "Report" type with "Use Report Chart" checked
- [ ] Each chart has X Field and Y Axis configured
- [ ] Can access API endpoint directly in browser
- [ ] Browser console shows no 404/500 errors
- [ ] Logged in user has permissions
---
**Most Common Issue:** Backend API file not deployed to Frappe server yet!