Skip to content

Chart (`gsp_chart`)

Bounded single- or multi-series line chart.

Use it to show status, a measurement, or motion.

First set up the commands from the compatibility guide, then run from an unpacked component or public repository root with gspc and gsp_sim_host:

chart-preview.sh
mkdir -p gsp-out/widget-preview
gspc pack \
examples/usage/widgets/chart/chart.json \
--deployable -o gsp-out/widget-preview/chart.gspb
gsp_sim_host \
--bundle gsp-out/widget-preview/chart.gspb --frames 0

These commands compile the example and open it in the ESP-GSP simulator browser preview.

Each series declares its name, color and initial points. The point count fixes its capacity. Generated set_series functions replace one complete series atomically; append shifts the window and adds one sample. Pass values in the authored min/max range. Updates copy the supplied values before returning.

If application code must read or update an object, give it a stable name. GSPC then generates the typed functions listed below.

chart.json
{"screen":"widget_chart","w":480,"h":320,"screen_bg":"#101827","objects":[{"type":"chart","parent":-1,"name":"telemetry","x":42,"y":45,"w":396,"h":220,"grid_lines":4,"bg_color":"#142033","fg_color":"#38BDF8","border_color":"#2D425F","border_width":1,"radius":10,"series":[{"name":"temperature","points":[12,28,20,54,43,78,62,92,70,86,58,74],"color":"#38BDF8"},{"name":"humidity","points":[65,61,68,59,55,49,53,44,50,47,56,51],"color":"#FBBF24"}]}]}

The canonical example is examples/usage/widgets/chart/chart.json. Copy any relative assets referenced by the scene with it.

const gsp_component_directory_t *const * gsp_chart_docs_component_directories(uint16_t *out_count)
esp_err_t gsp_widget_chart_telemetry_get_effective_visible(esp_gsp_handle_t gsp, bool *out_visible)
esp_err_t gsp_widget_chart_telemetry_get_info(esp_gsp_handle_t gsp, esp_gsp_component_info_t *out_info)
esp_gsp_config_t gsp_chart_docs_config(void)
esp_gsp_err_t gsp_widget_chart_telemetry_humidity_append(esp_gsp_handle_t gsp, int32_t value)
esp_gsp_err_t gsp_widget_chart_telemetry_humidity_set_series( esp_gsp_handle_t gsp, const int32_t *values, size_t count)
esp_gsp_err_t gsp_widget_chart_telemetry_temperature_append(esp_gsp_handle_t gsp, int32_t value)
esp_gsp_err_t gsp_widget_chart_telemetry_temperature_set_series( esp_gsp_handle_t gsp, const int32_t *values, size_t count)
size_t gsp_chart_docs_dynamic_image_slots(void)

These signatures come from the actual compiler output for this JSON.

Field Type Required Default / range Dynamic Compiler definition
type string yes — — widget type
parent int yes default -1; -1…65534 — parent object index (-1 = screen root)
x int yes default 0; -32768…32767 scene: yes; template: — x relative to parent
y int yes default 0; -32768…32767 scene: yes; template: — y relative to parent
w int yes 0…65535 scene: —; template: — width in px
h int yes 0…65535 scene: —; template: — height in px
name identifier — — — stable component name; generates GSP_OBJ_KEY_<NAME>
fg_color color — — — foreground color (text/knob/line/mark per type)
bg_color color — — yes background/fill color (#RRGGBB or #RRGGBBAA)
radius int — default 0; 0…65535 scene: —; template: — corner radius in px
border_color color — — — border stroke color
border_width int — 0…65535 — border stroke width (needs border_color)
series chart_series — — — fixed-capacity chart series objects
grid_lines int — default 0; 0…32 — chart grid line count
Show other fields supported by this Widget
Field Type Required Default / range Dynamic Compiler definition
min_width int — 0…65535 — compile-time minimum width in px
max_width int — 0…65535 — compile-time maximum width in px
min_height int — 0…65535 — compile-time minimum height in px
max_height int — 0…65535 — compile-time maximum height in px
layout enum — row, column, grid — child auto-layout: row/column/grid
layout_wrap bool — default false — wrap row/column children into additional lines
grid_columns int — 1…65535 — equal-width column count for grid layout
grid_column_span int — default 1; 1…65535 — column span in the parent grid layout
gap int — default 0; 0…4096 — auto-layout gap in px
padding int — default 0; 0…4096 — auto-layout padding in px
padding_left int — 0…4096 — row layout: leading padding override
padding_right int — 0…4096 — row layout: trailing padding override
padding_top int — 0…4096 — column layout: leading padding override
padding_bottom int — 0…4096 — column layout: trailing padding override
grow int — default 0; 0…100 — auto-layout grow weight
margin int — default 0; 0…4096 — auto-layout space on both child sides
margin_left int — 0…4096 — auto-layout leading margin on the x axis
margin_right int — 0…4096 — auto-layout trailing margin on the x axis
margin_top int — 0…4096 — auto-layout leading margin on the y axis
margin_bottom int — 0…4096 — auto-layout trailing margin on the y axis
align_main enum — start, center, end, space_between — auto-layout main-axis placement
align_cross enum — start, center, end, stretch — auto-layout cross-axis placement
hidden bool — default false yes start hidden (show via actions or set_visible)
opacity int — default 255; 0…255 scene: —; template: — 0-255 blend opacity
bg_gradient color — — — second gradient stop (with bg_color)
gradient_dir enum — default vertical; vertical, horizontal — gradient direction
shadow_color color — — — static hard-shadow color
shadow_opacity int — default 96; 0…255 — static hard-shadow opacity
shadow_offset_x int — -32768…32767 — static hard-shadow x offset
shadow_offset_y int — -32768…32767 — static hard-shadow y offset
shadow_spread int — 0…4096 — static hard-shadow spread in px
shadow_radius int — 0…65535 — static hard-shadow corner radius
border_opacity int — default 255; 0…255 — border stroke opacity
outline_color color — — — outside outline color
outline_width int — default 0; 0…65535 — outside outline width
outline_opacity int — default 255; 0…255 — outside outline opacity
outline_pad int — default 0; 0…4096 — gap between the element and its outline
text_line_space int — default 0; 0…4096 — extra spacing between static text rows in px
text_vertical_align enum — default auto; auto, top, center, bottom — static text block placement; auto preserves single-line center and multiline top
text string — — yes static text content (UTF-8)
text_align enum — left, center, right — text alignment
overflow enum — default clip; clip, ellipsis — single-line overflow
font path — — — per-object TTF/OTF override
font_size int — 1…255 — per-object font pixel size
font_charset string — — — glyphs available to runtime-bound text; static text is added automatically
font_charset_file path — — — UTF-8 character corpus relative to the scene; combined with font_charset and static text
font_link enum — embedded, external, auto — font storage policy: embedded/external/auto
input bool — default false — text field: attaches the caret/keyboard flow
animation_codec enum — lossless, jpeg, hardware_jpeg — animation frame policy: lossless patches, JPEG full frames, or JPEG when the target has hardware decoding
svg_layout enum — content, canvas — SVG part placement: cropped content or original canvas
morph_to path — — — SVG end shape with matching paths and paints
morph int — 0…100 — SVG shape interpolation progress (percent); generates a runtime setter
svg_element string — — — SVG element id; imports its painted bounds as an independent image
tint color — — — SVG silhouette color; generates a runtime color setter
image path — — yes image file path (raster or compiled SVG)
codec enum — raw, lossless, jpeg, auto, speed, size, store, qoi, rle16, rle16_a8, rle32, default, hardware_jpeg — image codec
quality int — 1…100 — JPEG quality 1-100 (omitted = profile default)
jpeg_quality int — 1…100 — legacy JPEG quality alias
compress bool — — — image compression toggle (legacy; prefer codec)
cache_policy enum — mmap_direct, mmap, decode_lru, lru, preload — image cache policy: mmap_direct, decode_lru or preload
store_scale number — 0.05…1.0 — pre-scale factor applied when encoding
max_fps int — 0…120 — GIF/animation frame-rate cap (0 = uncapped)
fit enum — default stretch; stretch, fill, contain, cover — image fit mode
position_x number — default 0.5; 0.0…1.0 — image fit horizontal alignment
position_y number — default 0.5; 0.0…1.0 — image fit vertical alignment
rotation int — default 0; -32768…32767 scene: image; template: — clockwise image rotation around the bounding-box center; source alpha is supported; clipped to the box
scalable bool — default false — enable runtime image scaling
scale number — default 1.0; 0.0625…16.0 — initial runtime image scale
min_scale number — default 0.5; 0.0625…16.0 — minimum runtime image scale
max_scale number — default 4.0; 0.0625…16.0 — maximum runtime image scale
thickness int — default 0; 0…65535 — stroke thickness
enabled bool — — — initial interaction state; when present, exposes a runtime enabled property inherited by descendant controls
disabled_color color — default #808080 — disabled-state overlay color
disabled_opacity int — default 112; 0…255 — disabled-state overlay opacity
bind identifier — — — public state name; generates GSP_BIND_<NAME>
bind_target enum — visible, value, color, text, resource, data — explicit bind state family
callback identifier — — — app callback name; generates scene-qualified event helpers
events action_list — — — input bindings: [{event, action, ...}]
template identifier — — — declare this subtree as a render template
max_instances int — 1…65535 — maximum simultaneously live template instances; included in the automatic pool requirement
dynamic_color bool — — — template member exposes a per-instance color slot
dynamic_image bool — — — template image exposes a per-instance resource slot
points int_list — — — single-series chart data points
min int — default 0 — business value range lower bound
max int — default 100 — business value range upper bound
Show fields shared by every Widget
Field Type Required Default / range Dynamic Compiler definition
parent_name string — — — parent by name instead of index