---
id: SCR-PFM-QRY-010
title: Dashboard designer
route: '/console/{tenantId}/reports/dashboardLab/{dashboardId}'
surface: console
product_area: platform
module: queries
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
purpose: Arrange and present dashboard widgets supplied by reusable questions.
supports:
  - JNY-PFM-QRY-004
  - CAP-PFM-QRY-012
  - CAP-PFM-QRY-013
permission: >-
  platform.reports.read to present; platform.reports.use to change; each widget’s data needs the
  source query and dataset access
entry_from:
  - Dashboard list
  - Report catalog
exits_to:
  - print preview
  - schedule editor dialog
displays:
  - field: >-
      Dashboard pages, filters, layouts, widgets and source-change information, withholding
      inaccessible source names.
    source: getReport
  - field: 'Authorized widget figures, chart series and tables after dashboard refinements.'
    source: runSavedQuery (refine with dashboard filters)
actions:
  - label: Save
    operation_id: updateReport
    permission: platform.reports.use
    confirm: false
  - label: Share
    operation_id: updateReport
    permission: platform.reports.share
    confirm: false
  - label: Export PDF
    operation_id: startReportExport
    permission: platform.reports.use
    confirm: false
  - label: Schedule
    operation_id: createQuerySchedule
    permission: >-
      platform.query-schedules.use (console); route also requires platform.queries.read and schedule
      use or manage; service requires platform.reports.use
    confirm: false
  - label: Delete
    operation_id: deleteReport
    permission: platform.reports.use
    confirm: true
states:
  - dashboard loading
  - viewer presentation mode
  - layout editing
  - widget source unavailable
  - dashboard save conflict
  - viewer cannot edit
validation:
  - BR-CAP-PFM-QRY-012-02
  - BR-CAP-PFM-QRY-012-03
  - BR-CAP-PFM-QRY-012-04
  - BR-CAP-PFM-QRY-012-07
  - BR-CAP-PFM-QRY-012-09
  - BR-CAP-PFM-QRY-012-10
patterns:
  - Full layout (PageLayout default)
  - grid layout of widgets
  - widget configuration panel
  - dashboard filters
  - save conflict dialog
component: components/dashboard-lab/dashboard-designer.tsx (DashboardDesigner)
evidence:
  - >-
    react-console at baf6dae:
    app/(console)/console/[tenantId]/reports/dashboardLab/[dashboardId]/page.tsx;
    lib/dashboard-lab/*.ts
controls: [TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-DAT-005, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-SEC-001, TC-SEC-002, TC-SEC-003, TC-SEC-004, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---

# Dashboard designer

## What the Screen Is For

Arrange and present dashboard widgets supplied by reusable questions.

## What It Shows and Lets People Do

The designer combines KPI, chart, table and text widgets. Each data widget executes its saved source as the viewer, and one failed source can remain a widget-level error. Saving records source references and checks audience width. Export, scheduling and deletion follow their separate controls.

## States and Errors

The view distinguishes loading, editing and read-only presentation. Source visibility or execution failure does not establish access to that source through the dashboard. Stale writes conflict.

## Patterns It Must Respect

The full-width PageLayout hosts the existing widget layout engine, configuration panels, filters and conflict dialog. Its default width comes from the shared console layout.
