Designing Table Views
A view is a designed table: a chosen set of columns over a chosen source, with a filter and a sort order saved alongside it. Everybody who opens the view sees the same design. This is different from a saved view on an ordinary list, which is your own arrangement of an existing table — see Working with Lists for those.
A view is also the usual data source for widgets: a Table, List, Metric, Chart or Calendar on a dashboard reads its rows from a view you design here. See Widgets: the full guide.
Where to find it
| Screen | Where it lives | What you need |
|---|---|---|
Views — /admin/views | Settings → Data model → Views | Permission to read views; adding and editing need the write permission, and deleting needs the delete permission and your password |
Who can do this
| To do this | You need |
|---|---|
| Open the designer and preview a view | crm.virtual_tables.read |
| Add a view, or edit one | crm.virtual_tables.write |
| Delete a view | crm.virtual_tables.delete — and the app asks for your password first, unless you gave it a short while ago |
Without the read permission the page says "You do not have permission to view the view designer." The + Add view, Edit and Delete buttons appear only for people who may use them.
The catalogue
Every view in the space is listed with its Name, its Source and the number of Columns it has. Badges beside the name tell you what kind of row you are looking at — System (shipped by the application), Locked (read-only in the designer), Disabled (switched off, so it cannot be opened).
Press + Add view to create one. Each row has Preview, and Edit to change it.
Name and Enabled
Give the view a Name. Enabled (the view can be opened) switches it on or off without deleting it.
A view is not a menu item. To show it in the sidebar, add a menu row for it under Menus and pick the view there by its name — its icon, order and placement are set there, which is why this designer has no icon field.
Source table
Pick what the view reads. Today that is Contacts; the picker shows that one option and says "Views over other tables arrive with the registry-driven source picker."
Columns
A view needs at least one column — a new view starts with Name — and the columns are shown in the order you arrange them. The picker groups what is available:
| Group | What it offers |
|---|---|
| Contact columns | the record itself — Name, Type, Enabled, Phones, Emails, Addresses, Groups, Roles, Created, Modified |
| Linked (person / entity) | the name parts of the person or organization behind the contact — Name prefix, First name, Middle name, Last name, Name suffix, Nickname, Description |
| Custom fields | this space's custom fields. A calculated or rollup field carries a Computed — read-only badge |
| Extension tables | columns from the extension tables attached to the record, each with its table's name beside it |
| Linked contacts | the contacts on the other end of a link type |
Use Move up / Move down (the ↑ and ↓ arrows) to arrange them, and Remove (×) to take one out.
Some columns are read-only by their nature, and the designer marks them Read-only rather than letting you discover it on save. Roles are one: a role column displays roles, but roles are granted and removed on the contact's page, never by saving a view. A column that holds protected data is badged Sensitive.
Linked-contact columns
A Linked contacts column shows the contacts reached through one link type — "Employee of", "Member of", and so on. For each enabled link type the picker offers two entries, one per direction, labelled with that type's own words:
- outbound — this record links out;
- inbound — other records link in;
- either direction — offered as a single entry when the link type reads the same both ways.
These columns are read-only and cannot be sorted (they hold many values). They filter on the linked contact's name, and — when the link type carries its own fields, such as a status or a start date — on those fields too. See Filtering & Searching.
If a link column names a link type that is not enabled in this space, it is badged Unknown or disabled link type and the server refuses to save the view until the type is re-enabled or the column removed.
Filter
A view can carry a filter: an AND/OR tree built with the same filter builder as the lists (see Filtering & Searching for how to read and write one). It is saved with the view and applied to everyone who opens it — it is part of the design, not a personal narrowing.
The filter can use the view's columns, and also a few fields that are there only to filter on: a contact's group, a role it holds, and — for each extension table with many rows per contact — "has a row where" and "has no row where". Date fields can be set relative to today, and a person or group is picked by name. Check filter tests what you have built, and Clear filter empties it.
Incomplete conditions are ignored rather than saved half-finished, and the designer tells you when it has dropped one: "Incomplete filter conditions were ignored."
Sort
Press + Add sort to add a sort column, each Ascending or Descending. Columns that hold many values cannot be sorted.
Preview
Preview on a row runs the view as it is saved and shows its first ten rows, so preview after you save a change. If it comes back with "No rows.", the view is valid and nothing matched — which is usually a filter you want to re-read.
System views
A view the application ships behaves differently: its Name and Enabled are yours to change, but its columns, filter and sort are managed by the application and shown read-only. It cannot be deleted — the designer says "System views cannot be deleted — disable instead."
Deleting a view
Deleting is a soft delete, and the confirmation says the one thing that is easy to forget: menu rows pointing at the view are not removed. Retire those under Menus, or they will point at a view nobody can open.
Views and widgets
When a widget reads a view, the widget's own filter narrows the view's rows further. If someone building a widget wants to filter on a field the view does not carry, the widget builder offers to add it to the view as a hidden column — a column the view can filter on but does not show. That needs the same write permission as this designer. See Widgets: the full guide.