- Add comprehensive documentation in botbook/ with 12 chapters - Add botapp/ Tauri desktop application - Add botdevice/ IoT device support - Add botlib/ shared library crate - Add botmodels/ Python ML models service - Add botplugin/ browser extension - Add botserver/ reorganized server code - Add bottemplates/ bot templates - Add bottest/ integration tests - Add botui/ web UI server - Add CI/CD workflows in .forgejo/workflows/ - Add AGENTS.md and PROD.md documentation - Add dependency management scripts (DEPENDENCIES.sh/ps1) - Remove legacy src/ structure and migrations - Clean up temporary and backup files
410 lines
No EOL
9.8 KiB
Markdown
410 lines
No EOL
9.8 KiB
Markdown
# Dashboards
|
|
|
|
> **Build custom data visualizations with AI-powered insights**
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
Dashboards is the business intelligence and data visualization app in General Bots Suite. Create custom dashboards with drag-and-drop widgets, connect to multiple data sources, and use natural language queries to explore your data. Dashboards helps you monitor KPIs, track metrics, and make data-driven decisions.
|
|
|
|
**Key Capabilities:**
|
|
- **Visual Dashboard Builder** - Drag-and-drop widgets and layouts
|
|
- **Multiple Data Sources** - Connect databases, APIs, files, and cloud warehouses
|
|
- **Conversational Analytics** - Ask questions in natural language
|
|
- **Real-time Updates** - Auto-refresh with configurable intervals
|
|
- **Templates** - Pre-built dashboards for common use cases
|
|
- **Sharing & Export** - Share dashboards or export as PDF/PNG
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
### Dashboard Builder
|
|
|
|
Create dashboards visually with a flexible grid system:
|
|
|
|
**Layout Options:**
|
|
|
|
| Layout | Columns | Best For |
|
|
|--------|---------|----------|
|
|
| **12 Columns** | 12 | Complex dashboards with many widgets |
|
|
| **6 Columns** | 6 | Medium complexity |
|
|
| **4 Columns** | 4 | Simple, mobile-friendly dashboards |
|
|
|
|
**Widget Types:**
|
|
|
|
| Category | Widgets |
|
|
|----------|---------|
|
|
| **Charts** | Line, Bar, Pie, Donut, Area, Scatter, Heatmap |
|
|
| **Data Display** | KPI Card, Table, Gauge, Map |
|
|
| **Content** | Text, Image, Embed (iframe) |
|
|
| **Filters** | Dropdown Filter, Date Range Picker |
|
|
|
|
---
|
|
|
|
### Widget Configuration
|
|
|
|
Each widget can be configured with:
|
|
|
|
**Chart Widgets:**
|
|
- X-axis and Y-axis field mapping
|
|
- Multiple data series
|
|
- Colors and legend position
|
|
- Animation settings
|
|
- Stacked or grouped display
|
|
|
|
**KPI Widgets:**
|
|
- Value field
|
|
- Comparison (previous period, target, YoY)
|
|
- Thresholds for color coding
|
|
- Prefix/suffix formatting
|
|
|
|
**Table Widgets:**
|
|
- Column selection and ordering
|
|
- Sorting and filtering
|
|
- Pagination settings
|
|
- Export options
|
|
|
|
---
|
|
|
|
### Data Sources
|
|
|
|
Connect to various data sources:
|
|
|
|
| Source Type | Examples |
|
|
|-------------|----------|
|
|
| **Databases** | PostgreSQL, MySQL, SQL Server, MongoDB |
|
|
| **Cloud Warehouses** | BigQuery, Snowflake, Redshift |
|
|
| **APIs** | REST API, GraphQL API |
|
|
| **Files** | CSV, Excel, Google Sheets |
|
|
| **Internal** | GB Suite internal tables |
|
|
|
|
**Connection Setup:**
|
|
|
|
1. Click **Add Data Source** in sidebar
|
|
2. Select source type
|
|
3. Enter connection details:
|
|
- Host, port, database name
|
|
- Username and password (stored in vault)
|
|
- SSL configuration
|
|
4. Click **Test Connection**
|
|
5. Click **Add Source**
|
|
|
|
---
|
|
|
|
### Conversational Analytics
|
|
|
|
Ask questions about your data in natural language:
|
|
|
|
**Example Queries:**
|
|
|
|
| Query | Result |
|
|
|-------|--------|
|
|
| "Show me sales by region for last quarter" | Bar chart with regional breakdown |
|
|
| "What's the trend in customer signups?" | Line chart with trend analysis |
|
|
| "Top 10 products by revenue" | Table with ranking |
|
|
| "Compare this month vs last month" | KPI cards with comparison |
|
|
| "Which day had the most orders?" | Single value with date |
|
|
|
|
**How It Works:**
|
|
|
|
1. Type your question in the query box
|
|
2. Select target data source (or "All")
|
|
3. AI translates to SQL/query
|
|
4. Results displayed as visualization
|
|
5. Save as widget to dashboard
|
|
|
|
---
|
|
|
|
### Templates
|
|
|
|
Pre-built dashboard templates for common use cases:
|
|
|
|
| Template | Widgets Included |
|
|
|----------|------------------|
|
|
| **Sales Dashboard** | Revenue KPI, Sales by Region, Top Products, Pipeline |
|
|
| **Marketing Dashboard** | Leads, Conversion Rate, Campaign Performance |
|
|
| **Operations Dashboard** | Uptime, Response Time, Error Rate, Active Users |
|
|
| **Finance Dashboard** | Revenue, Expenses, Cash Flow, P&L |
|
|
| **HR Dashboard** | Headcount, Turnover, Hiring Pipeline |
|
|
|
|
---
|
|
|
|
### Sharing & Permissions
|
|
|
|
**Visibility Options:**
|
|
|
|
| Setting | Description |
|
|
|---------|-------------|
|
|
| **Private** | Only you can view and edit |
|
|
| **Team** | Team members can view |
|
|
| **Organization** | Everyone in org can view |
|
|
| **Public** | Anyone with link can view |
|
|
|
|
**Sharing Actions:**
|
|
- Copy link to clipboard
|
|
- Embed in other applications
|
|
- Schedule email reports
|
|
- Export as PDF or PNG
|
|
|
|
---
|
|
|
|
## Keyboard Shortcuts
|
|
|
|
| Shortcut | Action |
|
|
|----------|--------|
|
|
| `N` | New dashboard |
|
|
| `E` | Edit mode toggle |
|
|
| `R` | Refresh data |
|
|
| `S` | Save dashboard |
|
|
| `W` | Add widget |
|
|
| `/` | Focus query input |
|
|
| `Escape` | Close modal/exit edit mode |
|
|
| `Ctrl+D` | Duplicate widget |
|
|
| `Delete` | Delete selected widget |
|
|
|
|
---
|
|
|
|
## Tips & Tricks
|
|
|
|
### Building Effective Dashboards
|
|
|
|
💡 **Start with KPIs** - Place most important metrics at the top
|
|
|
|
💡 **Use consistent colors** - Same color = same meaning across widgets
|
|
|
|
💡 **Group related widgets** - Organize by topic or data source
|
|
|
|
💡 **Add context** - Include text widgets to explain metrics
|
|
|
|
### Performance Tips
|
|
|
|
💡 **Limit widgets** - 10-15 widgets per dashboard for best performance
|
|
|
|
💡 **Use date filters** - Narrow data range to speed up queries
|
|
|
|
💡 **Cache queries** - Enable caching for slow data sources
|
|
|
|
💡 **Aggregate data** - Pre-aggregate when possible
|
|
|
|
### Data Source Best Practices
|
|
|
|
💡 **Use read replicas** - Don't query production databases
|
|
|
|
💡 **Create views** - Pre-join tables for simpler queries
|
|
|
|
💡 **Index properly** - Ensure indexes on filtered columns
|
|
|
|
💡 **Limit permissions** - Grant minimum necessary access
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Dashboard not loading
|
|
|
|
**Possible causes:**
|
|
1. Data source connection failed
|
|
2. Query timeout
|
|
3. Authentication expired
|
|
|
|
**Solution:**
|
|
1. Check data source status in sidebar
|
|
2. Increase timeout in settings
|
|
3. Re-authenticate with data source
|
|
4. Check query performance
|
|
|
|
---
|
|
|
|
### Widget shows no data
|
|
|
|
**Possible causes:**
|
|
1. Query returns empty result
|
|
2. Date filter excludes all data
|
|
3. Field mapping incorrect
|
|
|
|
**Solution:**
|
|
1. Test query directly in data source
|
|
2. Adjust date range filter
|
|
3. Verify field names match schema
|
|
4. Check data type compatibility
|
|
|
|
---
|
|
|
|
### Slow dashboard performance
|
|
|
|
**Possible causes:**
|
|
1. Too many widgets
|
|
2. Complex queries
|
|
3. Large data volumes
|
|
4. No caching enabled
|
|
|
|
**Solution:**
|
|
1. Split into multiple dashboards
|
|
2. Simplify queries, add aggregations
|
|
3. Narrow date ranges
|
|
4. Enable query caching in settings
|
|
|
|
---
|
|
|
|
## BASIC Integration
|
|
|
|
Use Dashboards features in your dialogs:
|
|
|
|
### Query Dashboard Data
|
|
|
|
```basic
|
|
' Get data from a dashboard widget
|
|
data = QUERY DASHBOARD "sales-dashboard" WIDGET "revenue-kpi"
|
|
TALK "Current revenue: $" + data.value
|
|
TALK "Change from last period: " + data.change + "%"
|
|
```
|
|
|
|
### Embed Dashboard in Bot
|
|
|
|
```basic
|
|
' Show a dashboard in the conversation
|
|
SHOW DASHBOARD "sales-overview" TO user
|
|
TALK "Here's your sales dashboard. What would you like to know more about?"
|
|
```
|
|
|
|
### Create Dashboard Programmatically
|
|
|
|
```basic
|
|
' Create a new dashboard from bot
|
|
dashboard = CREATE DASHBOARD
|
|
NAME "Weekly Report"
|
|
TEMPLATE "sales"
|
|
DATE_RANGE "last_7_days"
|
|
|
|
SHARE DASHBOARD dashboard.id WITH user.email
|
|
TALK "Your dashboard is ready: " + dashboard.url
|
|
```
|
|
|
|
### Natural Language Query
|
|
|
|
```basic
|
|
' Let user ask questions about data
|
|
TALK "What would you like to know about your data?"
|
|
HEAR question AS TEXT
|
|
|
|
result = QUERY DATA question FROM "sales-db"
|
|
|
|
IF result.type = "chart" THEN
|
|
SHOW CHART result.data
|
|
ELSE
|
|
TALK result.answer
|
|
END IF
|
|
```
|
|
|
|
---
|
|
|
|
## API Reference
|
|
|
|
### Endpoints Summary
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/api/dashboards` | GET | List all dashboards |
|
|
| `/api/dashboards` | POST | Create new dashboard |
|
|
| `/api/dashboards/{id}` | GET | Get dashboard details |
|
|
| `/api/dashboards/{id}` | PUT | Update dashboard |
|
|
| `/api/dashboards/{id}` | DELETE | Delete dashboard |
|
|
| `/api/dashboards/{id}/widgets` | POST | Add widget |
|
|
| `/api/dashboards/{id}/widgets/{wid}` | PUT | Update widget |
|
|
| `/api/dashboards/{id}/widgets/{wid}` | DELETE | Delete widget |
|
|
| `/api/dashboards/{id}/widgets/{wid}/data` | GET | Get widget data |
|
|
| `/api/dashboards/sources` | GET | List data sources |
|
|
| `/api/dashboards/sources` | POST | Add data source |
|
|
| `/api/dashboards/sources/{id}/test` | POST | Test connection |
|
|
| `/api/dashboards/query` | POST | Natural language query |
|
|
| `/api/dashboards/templates` | GET | List templates |
|
|
|
|
### Example: Create Dashboard
|
|
|
|
```json
|
|
POST /api/dashboards
|
|
|
|
{
|
|
"name": "Sales Overview",
|
|
"description": "Weekly sales metrics and trends",
|
|
"layout": {
|
|
"columns": 12,
|
|
"row_height": 80,
|
|
"gap": 16
|
|
},
|
|
"is_public": false,
|
|
"tags": ["sales", "weekly"]
|
|
}
|
|
|
|
Response:
|
|
{
|
|
"id": "dash_abc123",
|
|
"name": "Sales Overview",
|
|
"created_at": "2025-01-27T10:00:00Z",
|
|
"widgets": [],
|
|
"url": "/dashboards/dash_abc123"
|
|
}
|
|
```
|
|
|
|
### Example: Add Widget
|
|
|
|
```json
|
|
POST /api/dashboards/dash_abc123/widgets
|
|
|
|
{
|
|
"widget_type": "line_chart",
|
|
"title": "Revenue Trend",
|
|
"position": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 6,
|
|
"height": 4
|
|
},
|
|
"data_query": {
|
|
"source_id": "src_sales_db",
|
|
"sql": "SELECT date, SUM(amount) as revenue FROM orders GROUP BY date ORDER BY date",
|
|
"fields": ["date", "revenue"]
|
|
},
|
|
"config": {
|
|
"chart_config": {
|
|
"x_axis": "date",
|
|
"y_axis": "revenue",
|
|
"colors": ["#10b981"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Example: Natural Language Query
|
|
|
|
```json
|
|
POST /api/dashboards/query
|
|
|
|
{
|
|
"query": "Show me top 5 customers by revenue last month",
|
|
"data_source_id": "src_sales_db"
|
|
}
|
|
|
|
Response:
|
|
{
|
|
"query": "SELECT customer_name, SUM(amount) as revenue FROM orders WHERE date >= '2025-01-01' GROUP BY customer_name ORDER BY revenue DESC LIMIT 5",
|
|
"data": [
|
|
{"customer_name": "Acme Corp", "revenue": 150000},
|
|
{"customer_name": "TechStart", "revenue": 120000},
|
|
...
|
|
],
|
|
"suggested_visualization": "bar_chart",
|
|
"explanation": "Top 5 customers ranked by total revenue for January 2025"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## See Also
|
|
|
|
- [Analytics App](./analytics.md) - Built-in analytics and metrics
|
|
- [Compliance App](./compliance.md) - Compliance dashboards
|
|
- [Research App](./research.md) - Data research tools
|
|
- [Sheet App](./sheet.md) - Spreadsheet data source |