Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Grafana Dashboard JSON Compatibility

This document provides a comprehensive feature-parity table between the Grafana Dashboard JSON Model and what Grafatui currently supports.

Snapshot: Grafatui v0.1.9. The roadmap prioritizes Grafana parity first, then user-visible product value. See the roadmap for milestone slices built from this compatibility ladder.

Legend:

  • βœ… Supported β€” Fully implemented and working
  • πŸ”Ά Partial β€” Partially implemented or with limitations
  • ❌ Not Implemented β€” Recognized but not yet functional
  • β›” Not Applicable β€” Cannot be implemented in a TUI context (e.g., browser-only features)

Dashboard-Level Properties

JSON FieldStatusNotes
titleβœ… SupportedDisplayed in the title bar
uid❌ Not ImplementedNot used (not needed for local JSON import)
id❌ Not ImplementedNot used
version❌ Not ImplementedNot used
tags❌ Not ImplementedIgnored
timezone❌ Not ImplementedAll timestamps displayed in UTC
editableβ›” Not ApplicableGrafatui is read-only
styleβ›” Not ApplicableTUI has its own theme system
schemaVersion❌ Not ImplementedNot validated
refreshβœ… SupportedUsed as the default data refresh interval; overridden by config or --refresh-rate
time❌ Not ImplementedUses --range CLI option instead
time.from / time.to❌ Not ImplementedUses --range CLI option instead
fiscalYearStartMonthβ›” Not Applicable
liveNow❌ Not ImplementedUses 0 key to reset to live instead
weekStartβ›” Not Applicable

Panels

Panel Types

Panel TypeStatusNotes
graph (legacy)βœ… SupportedRendered as a line chart (Braille markers)
timeseriesβœ… SupportedMapped to graph renderer
statβœ… SupportedBig value + sparkline
gaugeβœ… SupportedHorizontal gauge bar
bargaugeβœ… SupportedVertical bar chart
tableβœ… SupportedTwo-column table (Series, Value)
heatmapβœ… SupportedCharacter-based block heatmap
rowπŸ”Ά PartialRow panels are traversed for nested panels, but row headers/collapse are not rendered
text❌ Not ImplementedSkipped during import
dashlist❌ Not ImplementedSkipped during import
alertlist❌ Not ImplementedSkipped during import
newsβ›” Not Applicable
annolist❌ Not Implemented
barchart❌ Not ImplementedSkipped (distinct from bargauge)
candlestick❌ Not Implemented
canvasβ›” Not ApplicableInteractive canvas not feasible in TUI
datagrid❌ Not Implemented
debugβ›” Not Applicable
geomapβ›” Not ApplicableMap visualization not feasible in TUI
histogram❌ Not Implemented
logs❌ Not Implemented
nodeGraphβ›” Not Applicable
piechart❌ Not Implemented
state-timeline❌ Not Implemented
status-history❌ Not Implemented
trend❌ Not Implemented
xychart❌ Not Implemented

Graph & Timeseries Parity

FeatureJSON FieldBehaviorGrafanaGrafatui
Draw stylesfieldConfig.defaults.custom.drawStyleLine, points, and bars map to terminal graph stylesπŸŸ‘βœ…
Point displayfieldConfig.defaults.custom.showPointsalways overlays visible point markers; never suppresses area/line point markersπŸŸ‘πŸ”Ά
Area fillfieldConfig.defaults.custom.fillOpacityNonzero fill opacity renders terminal/SVG area fill behind the lineπŸŸ‘πŸ”Ά
StackingfieldConfig.defaults.custom.stackingParsed and retained; non-off modes render non-stacked in this sliceπŸŸ‘πŸ”Ά
Axis placementfieldConfig.defaults.custom.axisPlacementhidden suppresses y-axis labels; left/right map to the terminal y-axisπŸŸ‘πŸ”Ά
Axis gridfieldConfig.defaults.custom.axisGridShowControls per-panel autogrid guide linesπŸŸ‘βœ…
Threshold stylefieldConfig.defaults.custom.thresholdsStyleDashed/line style is parsed for graph threshold renderingπŸŸ‘πŸ”Ά

Panel Common Fields

JSON FieldStatusNotes
titleβœ… SupportedDisplayed as the panel border title
typeβœ… SupportedUsed to select the renderer
gridPosβœ… Supported24-column grid layout fully supported
gridPos.xβœ… Supported
gridPos.yβœ… Supported
gridPos.wβœ… Supported
gridPos.hβœ… Supported
id❌ Not ImplementedNot used
description❌ Not ImplementedNot displayed
transparentβ›” Not ApplicableTUI panels always have borders
linksβ›” Not ApplicableNo browser navigation
repeat❌ Not ImplementedTemplate repeat not supported
repeatDirection❌ Not Implemented
maxPerRow❌ Not Implemented
collapsed (row)❌ Not ImplementedRows are always expanded
panels (nested in row)βœ… SupportedNested panels are extracted recursively

Targets (Queries)

JSON FieldStatusNotes
targets (array)βœ… SupportedMultiple targets per panel supported
targets[].exprβœ… SupportedPromQL expression
targets[].legendFormatβœ… Supported{{label}} syntax for legend formatting
targets[].refId❌ Not ImplementedNot used
targets[].datasource❌ Not ImplementedOnly Prometheus datasource is supported
targets[].interval❌ Not ImplementedUses global --step instead
targets[].intervalFactor❌ Not Implemented
targets[].instantβœ… SupportedUses Prometheus instant query when true; Gauge, BarGauge, and Table default to instant
targets[].format❌ Not ImplementedAlways treated as time_series
targets[].hideβœ… SupportedHidden targets are skipped during import
targets[].exemplar❌ Not Implemented
targets[].editorModeβ›” Not ApplicableUI-only setting

PromQL Special Variables

VariableStatusNotes
$__rate_intervalβœ… SupportedComputed as max(step Γ— 4, 60s)
$__rate_interval_msβœ… SupportedMillisecond form of $__rate_interval
$__intervalβœ… SupportedComputed from the current range and panel resolution, bounded by --step
$__interval_msβœ… SupportedMillisecond form of $__interval
$__rangeβœ… SupportedCurrent dashboard time range
$__range_sβœ… SupportedCurrent dashboard time range in seconds
$__range_msβœ… SupportedCurrent dashboard time range in milliseconds

Templating (Variables)

JSON FieldStatusNotes
templating.listβœ… SupportedVariables extracted from dashboard
templating.list[].nameβœ… SupportedUsed as $var or ${var} in queries
templating.list[].current.valueβœ… SupportedUsed as default value
templating.list[].current.textπŸ”Ά PartialUsed as fallback if value is missing
templating.list[].allValueβœ… SupportedUsed when value is $__all, falls back to .*
templating.list[].typeπŸ”Ά Partialquery variables are resolved for Prometheus
templating.list[].queryπŸ”Ά PartialSupports Prometheus label_values(...) and query_result(...)
templating.list[].definitionπŸ”Ά PartialUsed as a fallback query expression for dynamic query variables
templating.list[].datasource❌ Not Implemented
templating.list[].regexπŸ”Ά PartialApplied to dynamic query variable results
templating.list[].sort❌ Not Implemented
templating.list[].multi❌ Not ImplementedMulti-value selection not supported
templating.list[].includeAll❌ Not Implemented
templating.list[].refreshπŸ”Ά PartialDynamic variables refresh before panel queries
templating.list[].options❌ Not ImplementedNo dropdown/picker UI
templating.list[].hide❌ Not Implemented
CLI --var KEY=VALUE overrideβœ… SupportedOverrides dashboard defaults from command line
Config file vars overrideβœ… SupportedOverrides via TOML config

Variable Substitution

PatternStatusNotes
$varnameβœ… SupportedSimple substitution
${varname}βœ… SupportedBraced substitution
${varname:regex}❌ Not ImplementedFormat modifiers not supported
${varname:pipe}❌ Not Implemented
${varname:csv}❌ Not Implemented
${varname:json}❌ Not Implemented
${varname:queryparam}❌ Not Implemented
$__allβœ… SupportedReplaced with allValue or .*

Field Configuration (fieldConfig)

fieldConfig is partially implemented. Thresholds, explicit min/max bounds, selected display formatting fields, threshold style, and per-panel autogrid settings are parsed; value mappings, display names, and field overrides remain major gaps.

JSON FieldStatusNotes
fieldConfigπŸ”Ά PartialParsed for supported defaults/custom fields below
fieldConfig.defaultsπŸ”Ά PartialParsed for min/max, thresholds, and selected custom fields
fieldConfig.defaults.unitπŸ”Ά PartialCommon units such as bytes, bits, seconds, milliseconds, percent, percentunit, ops, request rate, and byte rate are formatted; unknown units fall back to Grafatui’s compact SI formatter
fieldConfig.defaults.minβœ… SupportedUsed for Graph y-axis lower bounds, percentage thresholds, and Gauge limits
fieldConfig.defaults.maxβœ… SupportedUsed for Graph y-axis upper bounds, gauge scaling, and threshold boundaries
fieldConfig.defaults.decimalsβœ… SupportedControls numeric precision in panel values, graph axes, legends, and exports
fieldConfig.defaults.color❌ Not ImplementedUses theme palette instead
fieldConfig.defaults.mappings❌ Not ImplementedValue mappings not supported; import diagnostics warn when mappings are ignored
fieldConfig.defaults.noValueπŸ”Ά PartialUsed for null Stat/Table values and exports; empty panels still show Grafatui’s No data state
fieldConfig.defaults.displayName❌ Not Implemented
fieldConfig.defaults.customπŸ”Ά PartialUsed for graph draw style, fill/points, axis placement, stacking metadata, threshold style, and axis grid visibility
fieldConfig.defaults.custom.lineWidth❌ Not ImplementedTUI limitation
fieldConfig.defaults.custom.fillOpacityπŸ”Ά PartialNonzero values enable terminal/SVG area fill; exact browser opacity is approximated
fieldConfig.defaults.custom.pointSizeβ›” Not ApplicableTUI points use fixed terminal-cell markers
fieldConfig.defaults.custom.axisLabel❌ Not Implemented
fieldConfig.defaults.custom.axisGridShowβœ… SupportedControls per-panel autogrid guide lines for graph/time-series panels
fieldConfig.defaults.custom.thresholdsStyleπŸ”Ά Partialmode is parsed for threshold rendering; glyph style is also controlled by Grafatui’s marker setting
fieldConfig.defaults.custom.scaleDistribution❌ Not ImplementedAlways linear
fieldConfig.overrides❌ Not Implemented

Thresholds

JSON FieldStatusNotes
fieldConfig.defaults.thresholdsβœ… SupportedApplied to Graph limit lines and dynamic coloring for Stat, Gauge & BarGauge
fieldConfig.defaults.thresholds.modeβœ… Supported(absolute / percentage)
fieldConfig.defaults.thresholds.stepsβœ… Supported
fieldConfig.defaults.thresholds.steps[].valueβœ… SupportedEvaluated mathematically against metric values
fieldConfig.defaults.thresholds.steps[].colorβœ… SupportedMaps keywords (e.g., green) and hex codes (e.g., #FF0000)

Panel Options (options)

Panel-specific options are not parsed yet. Grafatui currently applies its own compact TUI defaults for legends, stat sparklines, gauges, and inspect-mode tooltips.

JSON FieldStatusNotes
options❌ Not ImplementedPanel-specific options object is ignored
options.legend❌ Not ImplementedGrafatui uses its own compact legend
options.legend.displayMode❌ Not ImplementedAlways shows inline legend
options.legend.placement❌ Not ImplementedAlways bottom
options.legend.calcs❌ Not ImplementedNo calculated legend values (min/max/avg)
options.tooltip❌ Not ImplementedInspect mode serves as tooltip substitute
options.tooltip.mode❌ Not Implemented
options.orientation❌ Not Implemented
options.reduceOptions❌ Not ImplementedStat/Gauge always use last value; import diagnostics warn when reduce options are ignored
options.reduceOptions.calcs❌ Not Implemented
options.reduceOptions.fields❌ Not Implemented
options.textMode❌ Not Implemented
options.colorMode❌ Not Implemented
options.graphMode❌ Not ImplementedStat always shows sparkline

Annotations

JSON FieldStatusNotes
annotations❌ Not Implemented
annotations.list❌ Not Implemented

JSON FieldStatusNotes
options.dataLinksβ›” Not ApplicableNo browser navigation in TUI
transformations❌ Not Implemented
transformations[].id❌ Not Implemented(e.g., organize, merge, reduce)

Alert Rules

JSON FieldStatusNotes
alert❌ Not ImplementedPanel-level alerts
alert.conditions❌ Not Implemented
alert.notifications❌ Not Implemented

Datasource Configuration

FeatureStatusNotes
Prometheus (query_range)βœ… SupportedPrimary and only supported datasource
Prometheus (query instant)βœ… SupportedUsed for dynamic template variables and instant panel targets
Prometheus labels APIβœ… SupportedUsed for dynamic variable label_values(...)
Mixed datasource❌ Not Implemented
InfluxDB❌ Not Implemented
Loki❌ Not Implemented
Elasticsearch❌ Not Implemented
Other datasources❌ Not Implemented

Summary Statistics

CategorySupportedPartialNot ImplementedNot Applicable
Dashboard Properties10104
Panel Types71145
Panel Common Fields8062
Targets / Queries3081
PromQL Variables7000
Templating6660
Variable Substitution3050
Field Config46102
Thresholds5000
Panel Options00140
Annotations0020
Data Links / Transforms0021
Alert Rules0030
Datasources3050
Total47138515

Most Requested Missing Features

Based on user feedback, the following missing features are most commonly expected:

  1. Value mappings (fieldConfig.defaults.mappings) β€” Map numeric values to text labels
  2. Broader unit formatting (fieldConfig.defaults.unit) β€” Extend the current common-unit subset to more Grafana unit families
  3. Reduce options (options.reduceOptions) β€” Use min/max/mean/total instead of always using the latest value
  4. Import diagnostics β€” Warn clearly about skipped panel types and ignored high-impact fields
  5. Additional panel types β€” text, piechart, histogram, logs

What Grafatui Does Instead

Grafatui provides several TUI-native capabilities that don’t map directly to Grafana JSON features:

Grafatui FeatureDescription
8 color themesdefault, dracula, monokai, solarized-dark, solarized-light, gruvbox, tokyo-night, catppuccin
Keyboard navigationVim-style (j/k), arrow keys, page up/down
Panel search/ opens a fuzzy-search popup
Fullscreen modef to focus on a single panel
Inspect modev enables cursor-based point-in-time inspection
Y-axis toggley switches between auto-scale and zero-based
Series toggling1–9 to show/hide individual series
Autogrid toggleg toggles automatic guide lines
Mouse supportClick to select, scroll to navigate, drag cursor in fullscreen
Smart cachingRequest deduplication and caching for identical queries
Client-side downsamplingMax-pooling to ~200 points to preserve peaks
SVG/PNG export and recordingsSave dashboard snapshots or changed-frame recording bundles
TOML configurationPersistent config file for all CLI options

This document was reviewed against the Grafatui source code at v0.1.9. If you notice any inaccuracies, please open an issue or PR.