mirror of
https://github.com/johndoe6345789/workforce-pay-bill-p.git
synced 2026-04-24 13:24:57 +00:00
248 lines
6.1 KiB
Markdown
248 lines
6.1 KiB
Markdown
# Dashboard JSON Configuration
|
|
|
|
The dashboard layout, data, and translations are now loaded from JSON files, making it easy to customize and configure the dashboard without modifying React components.
|
|
|
|
## Files
|
|
|
|
- **`/src/data/dashboard.json`** - Dashboard layout and configuration
|
|
- **`/src/data/translations/en.json`** - English translations (including dashboard keys)
|
|
- **`/src/data/translations/fr.json`** - French translations
|
|
- **`/src/data/translations/es.json`** - Spanish translations
|
|
|
|
## Dashboard Configuration Structure
|
|
|
|
### Layout Sections
|
|
|
|
The dashboard is divided into three main sections:
|
|
|
|
#### 1. Metrics Grid
|
|
Displays key performance indicators (KPIs) in a grid layout.
|
|
|
|
```json
|
|
{
|
|
"id": "metrics",
|
|
"type": "metrics-grid",
|
|
"columns": {
|
|
"mobile": 1,
|
|
"tablet": 2,
|
|
"desktop": 4
|
|
},
|
|
"metrics": [
|
|
{
|
|
"id": "pendingApprovals",
|
|
"titleKey": "dashboard.pendingApprovals",
|
|
"dataSource": "metrics.pendingApprovals",
|
|
"icon": "ClockCounterClockwise",
|
|
"iconColor": "text-warning",
|
|
"variant": "warning",
|
|
"trend": {
|
|
"enabled": true,
|
|
"direction": "up",
|
|
"value": 12,
|
|
"textKey": "dashboard.vsLastWeek",
|
|
"textParams": { "value": "12" }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
#### 2. Financial Summary Cards
|
|
Shows financial metrics like revenue, payroll, and margins.
|
|
|
|
```json
|
|
{
|
|
"id": "financial-summary",
|
|
"type": "cards-grid",
|
|
"columns": {
|
|
"mobile": 1,
|
|
"tablet": 1,
|
|
"desktop": 3
|
|
},
|
|
"cards": [
|
|
{
|
|
"id": "monthlyRevenue",
|
|
"titleKey": "dashboard.monthlyRevenue",
|
|
"descriptionKey": "dashboard.monthlyRevenueDescription",
|
|
"dataSource": "metrics.monthlyRevenue",
|
|
"format": "currency",
|
|
"currencySymbol": "£",
|
|
"trend": {
|
|
"enabled": true,
|
|
"direction": "up",
|
|
"value": 12.5,
|
|
"textKey": "dashboard.vsLastMonth",
|
|
"textParams": { "value": "12.5" },
|
|
"color": "text-success"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
#### 3. Activity Feed & Quick Actions
|
|
Two-column layout showing recent activities and quick action buttons.
|
|
|
|
```json
|
|
{
|
|
"id": "activity-and-actions",
|
|
"type": "two-column-cards",
|
|
"columns": {
|
|
"mobile": 1,
|
|
"tablet": 1,
|
|
"desktop": 2
|
|
},
|
|
"cards": [
|
|
{
|
|
"id": "recentActivity",
|
|
"type": "activity-feed",
|
|
"titleKey": "dashboard.recentActivity",
|
|
"descriptionKey": "dashboard.recentActivityDescription",
|
|
"dataSource": "recentActivities",
|
|
"maxItems": 4
|
|
},
|
|
{
|
|
"id": "quickActions",
|
|
"type": "action-list",
|
|
"titleKey": "dashboard.quickActions",
|
|
"descriptionKey": "dashboard.quickActionsDescription",
|
|
"actions": [
|
|
{
|
|
"id": "createTimesheet",
|
|
"labelKey": "dashboard.createTimesheet",
|
|
"icon": "Clock",
|
|
"action": "navigate",
|
|
"target": "timesheets"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Recent Activities
|
|
|
|
Activity feed items are defined separately:
|
|
|
|
```json
|
|
{
|
|
"recentActivities": [
|
|
{
|
|
"id": "activity-1",
|
|
"icon": "CheckCircle",
|
|
"iconColor": "text-success",
|
|
"titleKey": "dashboard.timesheetApproved",
|
|
"description": "John Smith - Week ending 15 Jan 2025",
|
|
"timeKey": "dashboard.minutesAgo",
|
|
"timeParams": { "value": "5" },
|
|
"timestamp": "2025-01-15T14:55:00Z"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Data Sources
|
|
|
|
The `dataSource` field references metrics from the application's state:
|
|
|
|
- `metrics.pendingApprovals` → Dashboard metrics object
|
|
- `metrics.monthlyRevenue` → Financial data
|
|
- `metrics.complianceAlerts` → Compliance tracking
|
|
|
|
The hook automatically resolves nested paths like `metrics.pendingApprovals` by traversing the metrics object.
|
|
|
|
## Available Icons
|
|
|
|
Icons are mapped from Phosphor Icons library:
|
|
- Clock
|
|
- Receipt
|
|
- CurrencyDollar
|
|
- ClockCounterClockwise
|
|
- CheckCircle
|
|
- Warning
|
|
- Notepad
|
|
- Download
|
|
- ArrowUp
|
|
- ArrowDown
|
|
|
|
## Variants
|
|
|
|
Metric cards support visual variants:
|
|
- `default` - Standard border
|
|
- `success` - Green accent border
|
|
- `warning` - Yellow/orange accent border
|
|
- `error` - Red accent border
|
|
|
|
## Formats
|
|
|
|
Financial cards support multiple formats:
|
|
- `currency` - Displays with currency symbol (e.g., £1,234)
|
|
- `percentage` - Displays with % symbol (e.g., 15.5%)
|
|
- `number` - Plain number with locale formatting
|
|
|
|
## Translations
|
|
|
|
All text is loaded from translation files using translation keys:
|
|
|
|
```json
|
|
{
|
|
"dashboard": {
|
|
"title": "Dashboard",
|
|
"subtitle": "Real-time overview of your workforce operations",
|
|
"pendingApprovals": "Pending Approvals",
|
|
"monthlyRevenue": "Monthly Revenue",
|
|
"vsLastWeek": "{{value}}% vs last week",
|
|
"minutesAgo": "{{value}} minutes ago"
|
|
}
|
|
}
|
|
```
|
|
|
|
Translation keys support parameter interpolation using `{{paramName}}` syntax.
|
|
|
|
## Custom Hook
|
|
|
|
The `useDashboardConfig` hook provides easy access to the configuration:
|
|
|
|
```typescript
|
|
import { useDashboardConfig } from '@/hooks/use-dashboard-config'
|
|
|
|
const {
|
|
config, // Full configuration object
|
|
loading, // Loading state
|
|
error, // Error state
|
|
getMetricsSection, // Get metrics section config
|
|
getFinancialSection, // Get financial cards config
|
|
getRecentActivities, // Get activity feed (with optional limit)
|
|
getQuickActions // Get quick action buttons
|
|
} = useDashboardConfig()
|
|
```
|
|
|
|
## Adding New Metrics
|
|
|
|
To add a new metric:
|
|
|
|
1. Add the metric to `/src/data/dashboard.json` in the appropriate section
|
|
2. Add translation keys to all language files (`en.json`, `fr.json`, `es.json`)
|
|
3. Ensure the data source path matches your metrics object structure
|
|
|
|
Example:
|
|
```json
|
|
{
|
|
"id": "activeWorkers",
|
|
"titleKey": "dashboard.activeWorkers",
|
|
"dataSource": "metrics.activeWorkers",
|
|
"icon": "Users",
|
|
"iconColor": "text-info",
|
|
"variant": "default"
|
|
}
|
|
```
|
|
|
|
## Benefits
|
|
|
|
✅ **No code changes needed** - Update dashboard by editing JSON
|
|
✅ **Fully internationalized** - All text comes from translation files
|
|
✅ **Flexible layout** - Responsive column configurations
|
|
✅ **Type-safe** - TypeScript interfaces ensure correct structure
|
|
✅ **Easy maintenance** - Centralized configuration
|
|
✅ **Reusable** - Same pattern can be applied to other views
|