Skip to main content

List Views

The List Views editor is the configuration page for the four spec-driven list pages: Invoices, Integration Errors, E-Reporting and Processing Log. One JSON spec per view drives the column shape on each page — labels, type, format, alignment, width, default sort and the filter-row allow-list — and is editable here without touching code.

A second concept lives next to the spec: the column catalog. Each view ships a catalog of every column the underlying tables can produce — the catalog is the source of truth for what is addressable, the spec picks a subset and presents it. The + Add column picker is just a filtered view of the catalog.


At a glance

List Views💾 SaveInvoicesIntegration ErrorsE-ReportingProcessing Logview.invoicesoverrideSource: db-nomaubl property · falls back to bundled default if unset⠿ · NAME · LABEL EN · LABEL FR · TYPE · FORMAT · WIDTH · VISIBLE · FILTER · ⌫statusCodeStatusStatutstringbadge90×customerNameCustomerClientstring180×grossAmountTotal TTCTotal TTCnumberamount120×logPaUuidPA UUIDUUID PAstring200×+ Add columnPick from column cataloglogSourceFile · logActivityCode · logBusinessUnit · logDueDate · logUser · logJobn …One card per viewcollapsible, switchableoverride / defaultbadge follows the specstorage stateDrag handle ⠿reorders columnsin the grid+ Add columnfiltered catalog picker

View selector

A pill bar at the top of the page switches between the four views currently driven by a spec:

ViewPage driven
InvoicesInvoicesview.invoices.
Integration ErrorsIntegration Errorsview.integration-errors.
E-ReportingE-Reportingview.ereporting.
Processing LogProcessing Logview.processing-log.

Only one view at a time is loaded into the editor. Switching views does not lose unsaved changes on the previous view as long as the page stays open; Save writes the active card only.

A small badge next to the view name tells the operator whether the active spec comes from the bundled JAR default (default) or from an entry stored on db-nomaubl (override):

  • default — no view.<name> property exists on db-nomaubl. The bundled JSON in config/list-views/view.<name>.json is what the page renders. Saving from the editor writes a property and switches the badge to override.
  • override — a property has been stored. The editor reads the stored value, the page reads the stored value, the bundled default is ignored.

Column rows

Each card carries a table of the columns currently in the spec. One row per column.

ColumnDescription
⠿ (drag handle)Drag to reorder. The order in the editor is the order the column appears in the grid.
NameThe spec column name — must match a column in the view's catalog. Read-only on existing rows (the name is the join key with the catalog); editable only when adding via the picker.
Label EN / Label FRThe labels shown in the grid header. Label FR is used when the active locale starts with fr, otherwise Label EN. Both fields are free-form.
Typestring / number / date / datetime. Drives sorting and cell alignment defaults.
FormatOptional renderer: date / datetime / amount / percent / badge. Applied on top of the type.
WidthPixel width passed to the table's <colgroup>. Columns without a width share the leftover horizontal space.
VisibleMaster toggle. Off = the column is in the spec but hidden in the grid (still queryable).
FilterAllow-list for the Advanced Filters panel. Off = no filter chip is offered for this column.
⌫ (remove)Drops the column from the spec. The catalog entry is untouched — re-adding it later seeds the same shape.

The default sort lives on the spec but is set elsewhere (today, by editing the bundled JSON or the stored property directly; a UI toggle is planned for a future release). Each view ships a sensible default.


+ Add column

The button below the row list opens the catalog picker — a searchable list of every catalog entry the current spec does not already contain. Each entry shows:

FieldWhat it carries
NameThe catalog column name — same value the spec stores.
LabelThe default English label suggested by the catalog. The French label is derived from the catalog's labelFr if present; both labels can be edited after the column lands in the spec.
TypeSTRING / NUMBER / DATE / JDE_DATE / JDE_DATETIME. Drives the spec row's default type. JDE-specific dates carry a built-in decoder (Julian or composite UPMJ+UPMT).

Picking an entry inserts a new row at the end of the table seeded with the catalog defaults. Click Save to commit; the column appears in the page on its next render.

The catalog itself is server-side and is not editable from the UI. Adding a truly new column (one the back-end does not know how to project) requires a code change on the Java handler.


Advanced Filters panel

The spec's filter: true allow-list seeds a second UI on the destination page: the Advanced Filters panel — a collapsible panel keyed by spec column name with per-column operator pickers (contains, equals, , <, , >, , between, empty, not empty). The panel emits a draft state; an explicit Run button commits it as appliedFilters so typing does not spam the back-end.

The list of operators offered per column depends on the catalog entry's filter behaviour:

Catalog filterKindOperators offered
exactequals, , empty, not empty.
LIKEcontains, equals, , empty, not empty.
inListequals (multi-pick — the catalog splits comma-separated buckets into an IN (?,?,?,?,?) clause).
between<, , >, , between. Applies to numeric and date columns.

Marking a column Filter = off in the spec keeps it visible in the grid but removes its chip from the panel; useful for read-only fields the operator does not need to query.


Schema reference

The spec file looks like this (excerpt):

{
"name": "view.invoices",
"defaultSort": [{"column": "creationDate", "direction": "desc"}],
"columns": [
{
"name": "statusCode",
"label": "Status",
"labelFr": "Statut",
"type": "string",
"format": "badge",
"align": "left",
"width": 90,
"visible": true,
"filter": true
},
{
"name": "customerName",
"label": "Customer",
"labelFr": "Client",
"type": "string",
"width": 180,
"visible": true,
"filter": true
}
]
}

The name joins with the catalog entry that has a matching key; everything else on the row is presentation. Saving from the editor writes the same shape under db-nomaubl.view.<name>. Resetting the property — easiest done via Configuration → System → Global while it carries the JSON properties — falls the page back to the bundled default and switches the badge to default.


Tips & best practices

  • Start with the bundled default. Each view ships a curated default; modify only when an operator-specific need surfaces. The override badge is the operator's signal that the spec drifted from the shipped configuration.
  • Use the catalog before requesting code changes. When a column the operator wants is already in the catalog (e.g. logBusinessUnit, logDueDate), + Add column solves it in a few clicks. Reach for a code change only when the column is not in the catalog.
  • Keep the filter allow-list small. Marking every column filter: true clutters the Advanced Filters panel — limit the allow-list to the columns operators actually query.
  • Set widths on the columns that benefit from them. Status badges, dates, codes have natural widths; long strings should be left without a width so they take whatever room is left. width is also the column's CSS min-width — a too-large value cramps the rest of the grid.
  • Hidden ≠ removed. Setting Visible = off keeps the column queryable by the Advanced Filters panel. Use it for technical fields the operator filters on but does not need to read.