AccountedPro - Building a view
A layout is the saved description of one list: its columns, tabs, cards, filters, buttons, expanded row and theme. A DocType can have several, and readers pick between them from the layout dropdown in the toolbar.
Opening the builder
| DocType | Where |
|---|---|
| Standard (Sales Order, Item, …) | Customize Form → pick the DocType → Advanced List View tab |
| Custom (your own DocTypes) | /app/advanced-list-builder?doctype=<name> |
Both are the same builder. Customize Form refuses to open a custom DocType — that is Frappe's rule, not this app's — which is why the standalone page exists. There is also a button on the DocType form itself for custom DocTypes.
From Customize Form the layout is saved by Customize Form's own Update button; on the standalone page there is a Save layout button. Either way nothing is live until you save: the header reads Unsaved changes · Press Update to save while you have work in hand.
The screen
┌ Panel ───────────────┬ PREVIEW ────────────────────────┐
│ Columns │ [cards] │
│ ⋮⋮ Item │ [filter bar] [tabs] │
│ ⋮⋮ Status │ ┌──────┬────────┬──────────┐ │
│ │ │ Item │ Status │ Actions │ │
│ COLUMN: STATUS │ ├──────┼────────┼──────────┤ │
│ Label, width, … │ │ … │ [pill] │ [buttons]│ │
│ Elements ▸ │ └──────┴────────┴──────────┘ │
└──────────────────────┴────────────────────────────────────┘
The panels
| Panel | Decides |
|---|---|
| Columns | What each column shows, in what order, how wide, frozen or not |
| Tabs | Named presets across the top, each with its own filter, count and order |
| Cards | KPI tiles above the list |
| Filters | The filter bar readers use |
| Buttons | Header buttons and bulk actions (row buttons are elements in a column) |
| Expanded row | The panel that opens when a row is clicked |
| Theme | Density, colours, group headers, sidebar, links, custom CSS |
| List settings | Page length, row click, grouping, data source, full screen |
| JSON | The layout as a document — read/write |
The preview
The canvas runs the real renderer over real rows from the live DocType, so what you build is what readers get — there is no separate preview mode to trust.
- Click anything in it to select that element and open its settings, like a browser inspector.
- Desktop / Mobile above it switches which rendering you are looking at.
- With the Tabs panel open, the preview becomes that tab: narrowed by its condition, in its order. Selecting a different tab refetches.
- The first row is drawn expanded while the Expanded row panel is open, so blocks can be built without clicking anything.
Building the pieces
- + Column adds a column; drag the ⋮⋮ handle to reorder.
- Inside a column, + Element adds to the stack. Elements nest — a Group element holds its own stack with its own arrangement, and elements can be dragged between levels.
- Every list in the builder reorders by dragging, and removes with ×.
- Sections collapse, so a long panel stays navigable.
Layouts, defaults and versions
| Control | Does |
|---|---|
| The dropdown | Switches which layout you are editing |
| New | Starts an empty one |
| Default | Marks the one readers get unless they choose otherwise |
| Export / Import | Moves a layout between sites as a file |
Every save keeps a version, so a change that turns out badly can be rolled back from the layout document.
Validation
Saving validates the whole layout. Errors block the save and name where the problem is (columns[2].elements[0].fieldname); warnings do not block — a field that a Server Script invents is a warning, because the app cannot know what the script returns.
Linkable views
The layout, the view mode and full screen live in the URL, so a particular way of looking at a list can be sent to someone:
/app/sales-order?alv=Dispatch%20Board&alv_mode=Cards&alv_full=1
| Parameter | Values |
|---|---|
alv |
A layout name |
alv_mode |
Table, Cards, Board |
alv_full |
1 |
A first view, end to end
- Enable the DocType in Advanced Listview Settings, then reload the Desk.
- Open the builder, press New, and give the layout a title.
- Columns → + Column → + Element → Field → the record's title. Set a width.
- A second column for the status; on that element add a Colour rule — pill, red when overdue — and leave a rule with no condition last as the fallback.
- Tabs → + Tab → label it Mine, condition Created By
equalsthe logged-in user, tick Show a count, and set Order by to your date field, newest first. - Expanded row → + Block → Fields, and add three or four values worth seeing without opening the record.
- Save, open
/app/<doctype>, and compare it with the preview.