Suite chart creation and settings editing UX pass
Problem
The chart creation and settings editing experience in Cloud Suite is too rough for analysts to use independently. Common tasks — picking a chart type, configuring axes, adjusting visual settings — require falling back to raw YAML editing, which is inaccessible to non-technical users. The settings panel lacks coverage of key visual and query options needed for real dashboards. Until the chart authoring UX reaches a pilot-usable baseline, analysts cannot build production-quality dashboards without engineering assistance.
Context
- Chart creation flow supports common analyst intents with minimal friction.
- Settings editor supports key visual/query options needed for pilot dashboards.
- Analysts can complete core chart workflows without engineering intervention.
- M1 scope should focus on the smallest set of chart authoring actions analysts need weekly, not full parity with raw YAML.
- Nice-to-have advanced settings should remain out of scope unless they block the pilot workflow.
Possible Solutions
- A — Standalone chart creator first: Polish
/…/charts/new/until analysts can ship a chart without touching YAML, then align dashboard visual editor properties with the same field set. - B — Dashboard-first: Deepen visual-editor chart properties and drill-in to a focused chart editor from the board canvas; treat
/charts/new/as secondary. - Recommended: Hybrid for M1 — pick one narrow weekly workflow (e.g. “new bar chart from SQL + title + axes + save into a board”) and make it work end-to-end in both
/charts/new/and “edit chart in context” so analysts are not forced into raw YAML for that slice only.
Plan
Minimum pilot workflows (candidates — confirm with 1–2 analysts)
- Create chart from SQL — Write/run query, pick chart type, map X/Y (or equivalent), set title, preview, save (standalone creator).
- Adjust existing chart on a board — Open chart from dashboard context, change type/axes/title/query without full-dashboard YAML editing.
- Recover from bad config — Clear validation when query returns wrong shape; no silent wrong chart.
Concrete product surfaces to cover
| Surface | Route (dev seed) | Notes from exploratory pass (2026-03-23, local Cloud :8000) |
|---|---|---|
| Standalone chart creator | /dundersign/signing-analytics/charts/new/ |
SQL editor, Run, many chart-type buttons (emoji toolbar), X/Y comboboxes (empty until query result columns exist), title field, AI copilot panel, preview area (“No tables available” / prompt to run query). |
| Full dashboard YAML | /…/d/<slug>/edit/ |
Raw YAML + preview; Boards/Charts tree exists but Properties stays generic until canvas selection — gap for “chart settings without YAML”. |
| Dashboard visual canvas | /…/d/<slug>/ → Visual editor |
Layout primitives (rows/cols/grid/tabs), variable types, chart-type quick-add (Line, Bar, KPI, …). Properties still “select an element on the canvas” — need chart-specific panel when a chart is selected. |
| Per-chart editor | /…/d/<slug>/c/<chart_id>/ |
404 “Chart not found” for chart_id=kpis on overview in this session — treat as blocker to verify: compile/focus error vs wrong URL vs seed data drift. |
Engineering sequence
- Reproduce and fix per-chart editor deep link (or document correct
chart_idcontract if URLs are wrong). - Define the single M1 workflow slice and map each field to UI (standalone creator vs visual editor vs properties panel).
- Implement missing controls + validation for that slice only; defer advanced Vega/style parity.
- Short analyst acceptance on the slice; update task with explicit non-goals for M1.
Implementation Progress
- graph-library chart capability baseline
- dft-core chart settings contract
- Scope clarification: this task should deliver a bounded pilot baseline, not comprehensive chart-editor coverage.
- 2026-03-23: Exploratory browser pass on seeded org/project; standalone creator is usable skeleton; dashboard visual editor exposes chart types but per-chart URL path returned 404 — investigate before pilot.
- 2026-03-22: Implementation pass — chart creation and settings UX improvements:
- Per-chart 404 root cause: Not a routing bug. The
<slug:chart_slug>URL pattern works correctly; the 404 was caused by usingkpisas chart_id when the actual IDs arenew_users_kpi,docs_kpi, etc. Thechart_not_found.htmltemplate already shows available chart IDs in the error message fromfocus_on_chart(). - Dashboard properties panel: Added
chart_typestodashboard_viewcontext and embedded as JSON inDASHBOARD_CONFIG. AddedsetupChartSelection()ininit.js— clicking a chart on the canvas now shows its ID, title, type, and an "Edit Chart" link in the Properties panel. - Chart editor color selector: Added
colorfield to the settings form (populated from query columns like X/Y). Wired intogetCurrentEdits()so color is included in save and preview edits.update_chart_in_yamlalready supported color — only the form was missing. - Empty-state guidance: Added "Run a query to see available columns" hint below the X Axis selector, hidden once columns populate.
- Tests: 4 new tests in
tests/cloud/test_chart_editor_ux.py— dashboard_view chart_types context, chart_editor color in definition, 404 shows available charts, settings form has color selector. All 127 cloud tests pass. - Non-goals for M1: Orientation toggle (bar charts only, low-freq), size/metric selectors (KPI-only), full Vega style parity, inline chart editing from dashboard canvas (properties panel links to chart editor instead).
QA Exploration
- [x] QA exploration completed (or N/A for non-UI tasks)
Session notes (manual / in-editor browser, not scripts/qa-explore)
- Logged in as seed admin; exercised Dundersign → Signing Analytics.
/charts/new/: full chrome (Save, Save & Close, Run, type picker, axes, title, AI). Axis dropdowns only populate after a successful query — expected, but analysts need obvious empty-state guidance.- Dashboard overview visual mode: strong layout/chart-type palette; Properties panel does not yet surface chart query/axis/title when nothing selected — main UX gap vs task goal.
/d/overview/c/kpis/: 404 — prioritize root cause (compile vs routing vs chart id).
Review Feedback
- [ ] Review cleared