TotalBase
Dashboards

Creating a Dashboard

A blank dashboard, or one proposed from a table.

In the admin: Dashboards › New Dashboard

New Dashboard, at the top of the Dashboards list, offers two ways to start:

  • Blank: an empty draft. You add its widgets and variables yourself.
  • From a table: pick a table or view, and TotalBase proposes the widgets, variables and filters. You choose what goes in.

The same two choices show as large buttons when no dashboard is selected. A table's or view's page in Database also has Create Dashboard, which opens From a table with that table already chosen.

Either way, the result is an unpublished draft that only administrators see.

With an AI agent. Ask "Build an Operations dashboard with open orders as a number and by status as bars, for managers". The agent calls create_dashboard, tries each query with preview_query, saves the widgets with save_widget and publishes with publish_dashboard. See Recipes › A dashboard.

Blank

New Dashboard › Blank asks for its identity only:

Field
NameRequired, up to 32 characters, unique. Its name in the admin and in the App menu
DescriptionOptional, up to 128 characters
SlugIts address in the App: /admin/app/dashboards/operations. Proposed from the name until you edit it
Icon, ColorOptional, for the menu entry
Show in the App menuOn by default. Turn it off for a dashboard that only makes sense embedded in a DataView page

Create opens the new dashboard in the editor.

From a table

New Dashboard › From a table is a four-step assistant. It reads the table's definition, its constraints and PostgreSQL's statistics, never its rows, and proposes a dashboard you then review.

New Dashboard from a table: the Analysis step for work_orders, each column with its role and why.
New Dashboard from a table: the Analysis step for work_orders, each column with its role and why.

1. Source

Pick the Table or view. Choosing it analyzes it at once: 12 columns analyzed, 9 widgets proposed.

2. Analysis

Each column with the Role it was given and Why:

RoleA column that isBecomes
Momenta required date or timestamp with a default of now() or CURRENT_DATE, such as reported_atthe time axis and the period filter
Deadlinea date that defaults to the future, such as due_atnever an axis
Measurea number that isn't a keya sum or an average
Categorya CHECK list, an enum, a boolean, a small range of whole numbers, such as status or prioritya donut, a split
Dimensiona foreign key, shown by its table's row presentation, such as branch or techniciana ranking and a filter
Placea point, such as a site's locationa map
Filea foreign key to the files tablea thumbnail
Identifierthe primary key, a unique column, free text with many valuesleft out
Discardeda single value, a uuid without a foreign key, text without a CHECKleft out

Above the table, hints say what would make the proposal better, such as adding a CHECK to a text column so it can be charted. After you change the table, Analyze again reads it again and keeps what you ticked.

3. Review

  • Name: up to 32 characters; the slug comes from it.
  • Widgets: a checkbox per widget, each with its type and why it was proposed. The proposed ones are ticked: KPIs, a ranking per dimension, the trend over the moment, a donut per small category, a map of the place, the latest records. More are listed unticked.
  • Variables: the filters viewers will pick: a date range over the moment, and a list for each dimension with few enough rows. You change them later in Settings › Variables.
  • Security: a notice that the queries run with the dashboard's authority, so every viewer sees every row. When your users table has a foreign key to a dimension's table, such as Acme's branch, two options appear, off by default:
OptionDoes
Open on the viewer's branchthe branch list starts on the viewer's own branch; they can change it
Only the viewer's branchevery query adds ($USER.branch IS NULL OR branch = $USER.branch): a viewer sees only their branch's rows; one without a branch, such as a manager, sees all of them. The branch list and ranking are left out

At most one is on. Choosing one switches to its proposal and keeps your ticks.

4. Generate

A summary: name, source, number of widgets and variables, and the security chosen. Create Dashboard creates the draft and opens it. If the server finds a problem, it lists each one with the widget it's in, and nothing is created.

What it creates is an ordinary draft. Every widget's SQL stays visible and editable, and there is no link back to the assistant.

A view's column takes the role of the table column it comes from. A column the view computes is a measure if it's a number, and is left out otherwise.

Next steps