init: rapid_dashboards app from fn_registry
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
settings:
|
||||
title: "fn_registry — Dashboard Demo"
|
||||
refresh: 5s
|
||||
width: 1280
|
||||
height: 800
|
||||
columns: 12
|
||||
|
||||
theme: "dark"
|
||||
|
||||
connections:
|
||||
registry:
|
||||
driver: sqlite
|
||||
path: ../../../registry.db
|
||||
|
||||
queries:
|
||||
total_functions:
|
||||
connection: registry
|
||||
sql: "SELECT COUNT(*) as value FROM functions"
|
||||
refresh: 30s
|
||||
|
||||
total_types:
|
||||
connection: registry
|
||||
sql: "SELECT COUNT(*) as value FROM types"
|
||||
refresh: 30s
|
||||
|
||||
total_proposals:
|
||||
connection: registry
|
||||
sql: "SELECT COUNT(*) as value FROM proposals"
|
||||
refresh: 30s
|
||||
|
||||
functions_by_domain:
|
||||
connection: registry
|
||||
sql: "SELECT domain, COUNT(*) as count FROM functions GROUP BY domain ORDER BY count DESC"
|
||||
refresh: 30s
|
||||
|
||||
functions_by_kind:
|
||||
connection: registry
|
||||
sql: "SELECT kind, COUNT(*) as count FROM functions GROUP BY kind ORDER BY count DESC"
|
||||
refresh: 30s
|
||||
|
||||
functions_by_purity:
|
||||
connection: registry
|
||||
sql: "SELECT purity, COUNT(*) as count FROM functions GROUP BY purity ORDER BY count DESC"
|
||||
refresh: 30s
|
||||
|
||||
functions_by_lang:
|
||||
connection: registry
|
||||
sql: "SELECT lang, COUNT(*) as count FROM functions GROUP BY lang ORDER BY count DESC"
|
||||
refresh: 30s
|
||||
|
||||
recent_functions:
|
||||
connection: registry
|
||||
sql: "SELECT id, kind, lang, domain, purity, description FROM functions ORDER BY updated_at DESC LIMIT 20"
|
||||
refresh: 10s
|
||||
|
||||
tested_ratio:
|
||||
connection: registry
|
||||
sql: "SELECT tested, COUNT(*) as count FROM functions GROUP BY tested"
|
||||
refresh: 30s
|
||||
|
||||
filters: {}
|
||||
|
||||
sections:
|
||||
- id: kpis
|
||||
title: "Overview"
|
||||
widgets:
|
||||
- id: total_fn
|
||||
type: kpi
|
||||
title: "Functions"
|
||||
query: total_functions
|
||||
mapping: { value: "value" }
|
||||
span: 3
|
||||
|
||||
- id: total_tp
|
||||
type: kpi
|
||||
title: "Types"
|
||||
query: total_types
|
||||
mapping: { value: "value" }
|
||||
span: 3
|
||||
|
||||
- id: total_pr
|
||||
type: kpi
|
||||
title: "Proposals"
|
||||
query: total_proposals
|
||||
mapping: { value: "value" }
|
||||
span: 3
|
||||
|
||||
- id: tested_kpi
|
||||
type: kpi
|
||||
title: "Tested Ratio"
|
||||
query: tested_ratio
|
||||
mapping: { value: "count" }
|
||||
span: 3
|
||||
|
||||
- id: distribution
|
||||
title: "Distribution"
|
||||
columns: 4
|
||||
widgets:
|
||||
- id: by_domain
|
||||
type: bar_chart
|
||||
title: "By Domain"
|
||||
query: functions_by_domain
|
||||
mapping: { x: "domain", y: "count" }
|
||||
options: { show_grid: true }
|
||||
span: 1
|
||||
|
||||
- id: by_lang
|
||||
type: bar_chart
|
||||
title: "By Language"
|
||||
query: functions_by_lang
|
||||
mapping: { x: "lang", y: "count" }
|
||||
span: 1
|
||||
|
||||
- id: by_kind
|
||||
type: bar_chart
|
||||
title: "By Kind"
|
||||
query: functions_by_kind
|
||||
mapping: { x: "kind", y: "count" }
|
||||
span: 1
|
||||
|
||||
- id: by_purity
|
||||
type: bar_chart
|
||||
title: "By Purity"
|
||||
query: functions_by_purity
|
||||
mapping: { x: "purity", y: "count" }
|
||||
span: 1
|
||||
|
||||
- id: detail
|
||||
title: "Recent Functions"
|
||||
collapsible: true
|
||||
widgets:
|
||||
- id: recent_table
|
||||
type: table
|
||||
title: "Last 20 Updated"
|
||||
query: recent_functions
|
||||
mapping:
|
||||
columns:
|
||||
- { key: "id", label: "ID" }
|
||||
- { key: "kind", label: "Kind" }
|
||||
- { key: "lang", label: "Lang" }
|
||||
- { key: "domain", label: "Domain" }
|
||||
- { key: "purity", label: "Purity" }
|
||||
- { key: "description", label: "Description" }
|
||||
span: 12
|
||||
Reference in New Issue
Block a user