Appearance
JSON-DAT: userPreference.value
JSONB element of: userPreference .value
Description: The value stored under a table.<TableViewKey>.columns key: which columns of one overview the user shows, and in what order. It records the user's choice only. What a column is — its label, whether it is mandatory, whether the user may see it — comes from the overview's column catalogue at read time, never from this value, so a stored arrangement can never grant access to a column or turn a mandatory column off.
Other keys stored in userPreference define their own shape on their own JSON-DAT page.
Data Attributes Table
| Attribute Name | Description | Data Type | Default Value | Required (= Nullable) | Unique | Format | Validations | Index | Example |
|---|---|---|---|---|---|---|---|---|---|
| version | Shape version of this value, so the shape can evolve without guessing what an old row means. | Integer | 1 | Yes | No | - | Equals a version the backend supports. | — | 1 |
| columns | The columns the user has arranged, in display order. Visible columns are shown in exactly this order. | Array | - | Yes | No | Array of objects | 1–100 items. No duplicate key. | — | [{"key":"name","visible":true},{"key":"area","visible":false}] |
| columns[].key | Column identifier from the overview's column catalogue. | String | - | Yes | Unique within the array | ^[a-z][a-zA-Z0-9]*$ | Max 50 characters. A key the catalogue no longer offers is dropped on read, not rejected. | — | consumption |
| columns[].visible | Whether the user shows the column. | Boolean | - | Yes | No | - | Ignored for a mandatory column, which is always shown. | — | false |
Reconciliation on read
The stored value is reconciled against the overview's current column catalogue for the requesting user every time it is served:
| Case | Result |
|---|---|
| Stored column no longer in the catalogue | Dropped. |
| Stored column the user may no longer see (permission, module, customer) | Dropped — never served, never exported. |
| Mandatory column stored as hidden | Served as visible. |
| Mandatory column missing from the stored list | Added as visible at its default position. |
| Optional column added to the catalogue after the value was saved | Added as hidden, after the stored columns. |
The reconciled result is served but not written back; the row changes only when the user confirms a change.