Skip to content

A dashboard widget of ANY non-chart family that selects no measures renders the authoring placeholder, and no lint rule reports it #15508

Description

@claude

Found while implementing #15462 (PR #15507). Out of scope there: that card's ruling scoped both new ids to the CHART family, and this is the same unreported degradation on every OTHER widget family.

What is unreported

Read at the @object-ui revision this repo pins (.objectui-sha = 00d3f09c500c4a45b5f27aca8af80349412faaf1), packages/plugin-dashboard/src/DatasetWidget.tsx:683:

if (values.length === 0) {
  return ... tt('dashboard.pickMeasures', 'Pick measures (values) for this dataset widget.') ...
}

That return is type-independent and stands above every family branch — isMetric (:423), isTable (:424) and the chart branch alike (:702, :798, :854). So a metric, kpi, gauge, solid-gauge, bullet, table or pivot widget that selects no measures renders the authoring placeholder too: the KPI number the author asked for is not drawn at all.

Nothing reports it. In packages/lint/src/validate-widget-bindings.ts:

A metric tile is the single most common widget on a shipped board (the platform's own system_overview has six), and the failure direction is the family docblock's own: the tile is not merely wrong, it is missing, and a missing tile on a dashboard reads as "nothing to report".

The decision this needs

Whether it is one id or two, and at which tier:

  • A. Widen chart-measures-missing's population from the chart family to every widget family, and re-word its message (it currently says "no chart is drawn"). Cheapest, but the id then names a condition that is no longer chart-specific.
  • B. A second id for the non-chart families (e.g. a widget-measures-missing), leaving chart-measures-missing exactly as ruled. One id per class, which is how this family is built.
  • C. Nothing — an empty selection is a work-in-progress state, and the chart-family ruling was about a chart being replaced, not about a widget being unfinished.

Tier, on the #15462 precedent: warning, suppressible, so a half-authored board still builds.

Filed unassigned and unlabeled for triage — not started, no branch.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions