Skip to main content

Dashboards

A dashboard puts several widgets — figures, decision lists, proportion bars, charts, tables — side by side, each fed by a query of a connector. It opens from the menu like a screen, and it is built in Liberty Next → Build → Dashboards.


At a glance​

Sales overviewRevenue and orders by companyPeriodThis month · 01/10 – 27/10 ▾CompanyAll ▾↻Updated at 14:05REVENUE1,284,500▲ +12.4%previous: 1,142,700ORDERS3 412▼ -3.1%previous: 3 521MARGIN RATE31.2 %▲ +1.4 ptsprevious: 29.8 %Revenue by month050607080910Top customersACME212 400Beta SARL184 900Gamma SA97 300Delta65 100Periodpresets, calendar, date basisComparechange vs the previous periodChart widgeta saved chart or inlineFiltersone dropdown per dictionary itemRefreshbypasses the cache · fetch timeTable widgetchosen columns, row cap

Widgets​

Widgets sit on a 12-column grid, in the order they are declared. Each one takes a width of 1 to 12 columns and a height of 1 to 8 rows, and carries a title and an optional subtitle — one line under the title that says what the widget covers.

WidgetShowsSettings
KPIOne figure computed over every row of a query.Connector, query, column, aggregation (count, sum, avg, min, max, or none for the first row's value), format, and compare with the previous period.
FigureA figure card read from the query's first row, with a line of detail under it.Value column, Format, Unit, Sub line.
ListA decision or ranked list: one line per row, with a coloured dot, a title, a subtitle, a figure and a tag.Title column (required), Subtitle column, Value column, format, unit, Count column and Count wording, Tone column, Tag column, Rows shown.
BarsA ranked list with a proportion bar under each row.Label column and Value column (required), Sub label column, format, unit, Bar as a share of, Note under the bars, Rows shown.
ChartA bar, line, area or pie chart.A chart saved in Liberty Next → Build → Charts, or a connector, a query and a chart definition written in the widget — see Charts.
TableThe rows of a query.Connector, query, the columns to show (all when empty), a row limit.
TextA block of Markdown: what the page is for, how to read it. Headings, lists and links are allowed.Text (Markdown).
JobsThe Nomaflow jobs with their next run, their schedule in words and their last state, and Run now / Pause / Resume. Superusers only.Jobs (ids, in order) — empty = every scheduled job —, Only these tags, Max rows (12 when blank).
LinksA card of entry points: menu items of the dashboard's application, or web addresses.Links per row (1 to 4); per link a Menu item or a URL, an Icon, a Label (blank: the menu item's) and a Description.

A widget whose query the user may not run is hidden; the rest of the dashboard still shows. Every card carries its title and subtitle inside it, and the page grows with its widgets: it scrolls to the last one.

Sales synthesisThe loaded periods, the quantities and the revenue at a glancePERIODLast 12 months ▾BUSINESS UNITAll ▾ExcelPDF↻Updated at 08:02RevenueInvoiced over the period€1,284,35012 companies · 4 business unitsInvoice linesLoaded lines48,9205 periods · 2 closedCustomersWith at least one sale1,13538 new this monthPeriods to look atStatus of each loaded period2026-02validated9,8122026-03open — lines still arriving4,2062026-01closed — a reload was refusedclosed10,4402025-12validated8,965Quantity by familyShare of the largest familyBeverages18,400Groceries12,950Fresh produce9,310Household4,120Figurea value, a templated sub lineListtone dot, subtitle, figure, tagExportwhat the bar holds, to Excel or PDFSubtitleon every widgetBarsshare of the total or the largest

Figure, List and Bars​

These three widgets turn a dashboard into a synthesis page: the figures that matter, what needs a decision, and the proportions, each read from a query written for it.

  • Format: Number, Integer, Currency (euros, no decimals for a whole amount) or Percent — a ratio between 0 and 1, shown as a percentage. The Unit follows the figure (users, lines); a currency carries its own symbol.
  • Sub line (Figure): a sentence with placeholders filled from the first row, {COLUMN} or {COLUMN:format} — {ENABLED:integer} enabled · {DISABLED:integer} disabled gives 380 enabled · 32 disabled. A placeholder naming an unknown column stays as written.
  • Tone column (List): a column holding ok, warn, error or info colours the dot green, orange, red or blue; any other value gives a grey dot. The query decides the tone — a period that is closed, an amount above a threshold.
  • Count wording (List): the text around the count column, {n} conflict lines. The Tag column shows its value as a pill next to the title, in the line's tone.
  • Bar as a share of (Bars): The total of the rows — the bars add up to 100 % — or The largest row, which gets the full bar.

The editor shows a live preview of the widget as soon as the connector, the query and the required columns are chosen.

Jobs​

A Jobs card puts the scheduler on a dashboard. Each line shows the job — a click opens it in Nomaflow —, its next run or Paused, its schedule in words (every day at 03:00), the state of its last run, and three buttons: Run now with the job's saved values, Pause the schedule, Resume the schedule — applied at once. Without ids, the card lists the scheduled jobs, the next to run first, optionally narrowed to some tags (main, nomasx1). The card refreshes itself while a run is going.

The card is for superusers only: for anyone else, it does not show on the dashboard.

These two widgets turn a dashboard into the home page of an application: a few lines on what it does, the figures, then where to go.

  • A Text or Links widget the full width of the grid (12 columns) takes the height of its content, with no scroll bar; a narrower one scrolls within its tile.
  • A Links widget only shows the menu items the user may open: an entry their roles do not grant disappears from the card. A URL opens in a new browser tab. A URL link needs a label.
  • In an export, a text keeps its Markdown and a links card becomes a table (Link, Description).

The period​

A dashboard can carry a period: a date range control in its bar that applies to every widget.

  • Presets: Today, Yesterday, Last 7 days, Last 30 days, This month, Last month, This quarter, This year, Last year, Last 12 months, All dates. The Yesterday preset covers yesterday and today.
  • A free range: pick a start date, then an end date, in the two-month calendar, then Apply.
  • Date basis: when the dashboard offers several dates (Document date, Paid on), a Date choice at the bottom of the panel picks the one the range applies to.

The dashboard opens on its own default preset, otherwise on the application's default (Liberty Next → Administer → App → Default period (dashboards), This month by default). A choice lasts as long as the dashboard tab stays open.

What the queries receive​

BindValue
:PERIOD_FROM, :PERIOD_TOThe chosen range, as dates. All dates binds 0001-01-01 to 9999-12-31.
:PREV_FROM, :PREV_TOThe period before (see below).
:PERIOD_BASISThe chosen date basis, when the dashboard offers several.

A query that does not mention them is not affected. When the period names its date column — directly or through a dictionary item found in the widget's screen — the widget is also filtered on the server on that column, without any change to its SQL.

The previous period​

RangeCompared with
Starting on 1 January (This year, Last year)The same dates one year earlier.
Starting on the 1st of a monthThe same number of months just before — Last month with the month before, a whole quarter with the quarter before; This month on the 27th with the 1st–27th of the previous month.
Anything elseThe same number of days just before.

Comparing a KPI​

With Compare with the previous period ticked, a KPI runs its query a second time on the previous period and shows, under the figure, the change — in percent, in points for a percent KPI — in green or red, and the previous value. Nothing is compared on All dates.


Filters​

A dashboard can also carry filters, shown as dropdowns in its bar. Each filter has a label, a dictionary item and a query that provides its choices (value column and label column), and an optional default value. Choosing a value reloads every widget whose query returns a column carrying that dictionary item — through the widget's screen, or directly from the query's result columns: a column with the item's name, or with the connector's column prefix in front of it. The other widgets are left as they are. A period whose date column is given as a dictionary item finds its column the same way.

In the editor, each filter says which widgets it reaches — Reaches: …, with not: … for the others — or Reaches no widget when no column carries the dictionary item.

With All, nothing is filtered: a query that returns one total row first, then one row per value, shows the totals in its Figure and List widgets.


Refresh and cache​

When a dashboard is opened again, each widget reuses its last result for Liberty Next → Administer → App → Dashboard cache (seconds, 0 = none) — 60 seconds by default. The ↻ button in the bar reloads everything, and Updated at 14:05 says when the data was fetched. The cache is kept in the browser, per user, until the page is reloaded.


Export to Excel and PDF​

The Excel and PDF buttons, next to ↻, export what the bar holds: the filter picks, the period and its date basis, under the user's data scope. The server runs every widget again; nothing is taken from the screen.

ExcelPDF
LayoutOne sheet per widget; the KPIs together on a Key figures sheet.A cover with the dashboard, the period and the filters, then the widgets one after the other.
KPI, FigureA row of values.A card, with the sub line in small type under the figure.
List, Bars, TableIts rows.A table.
Text, LinksThe text; the links as rows.The text; a table of the links.
ChartIts data table.The chart drawn, with a legend and the values on the bars.

A widget whose query fails becomes an error section; the rest of the export still renders. Numbers follow the reader's language (1 234,5 / 1,234.5). PDF branding is set in Liberty Next → Administer → App.


Building a dashboard​

In Liberty Next → Build → Dashboards, pick the application, then add or open a dashboard. The editor has:

PartContent
GeneralTitle, description.
PeriodAdd a period: Opens on (a preset, or App default), Date column or dictionary item, and optional Date bases (key, label, date column or dictionary item).
FiltersThe dropdowns of the bar.
WidgetsAdd widget: Chart, KPI, Table, Figure, List, Bars, Text, Links or Jobs. Each widget has a Subtitle. Each widget has buttons to make it narrower or wider (W−, W+), lower or taller (H−, H+), and to move it earlier or later in the grid.

A dashboard reads in the user's language: its title, its description, the filters' labels and the widgets' texts can carry a French version, and a List can read its titles from a French column of its query.

To make the dashboard reachable, add a dashboard entry to a menu (Menus); its permission is dashboard:<app>.<id>.

In TOML​

dashboards.toml
[dashboards.sales.overview]
label = "Sales overview"
period = { column = "DOC_DATE", default = "thisMonth" }

[[dashboards.sales.overview.widgets]]
type = "kpi"
label = "Revenue"
connector = "sales"
query = "revenue_by_company_get"
column = "REVENUE"
aggregation = "sum"
compare_previous = true
col_span = 4

[[dashboards.sales.overview.widgets]]
type = "chart"
chart = "revenue_by_month"
col_span = 8
row_span = 2

Tips​

  • Give the dashboard a period rather than date filters in each query: one control, and the comparison comes for free.
  • For a synthesis page, write one small query per Figure or List and let the query compute the tone: the dashboard only shows it.
  • A KPI with none shows the first row's value: let the query compute the figure when the aggregation is complex.
  • Keep the cache on for dashboards opened often; ↻ always gives fresh figures.