back to docs
[reference] views grid kanban calendar layouts

Views Guide

Data views in dForge: grid, card, kanban, calendar, list, and gallery layouts. Configuration, data sources, and filters.

published · updated

What is a View?

dForge has two related view systems that work together:

  • Data views are saved multi-record screen configurations — grids, kanbans, calendars. They’re attached to menu items: when a user clicks a menu item, the matching data view loads.
  • Entity views are per-folder column configurations and form layouts for a single record. They control which columns a user can see when opening a record from a folder, and how the form is laid out.

Together they let the same entity look completely different in two folders — different columns, different forms, different filters — without duplicating the underlying table.

Data View Types

TypeBest forDescription
GridLists of recordsSpreadsheet-style table with sortable columns, inline editing, and selection. Always available.
KanbanPipeline trackingBoard grouped by a status/category field. Requires the entity to have a status field.
ListCompact browsingTitle + subtitle template, good for simple data and mobile.
CalendarDate-based recordsMonth/week/day calendar. Requires a date field.
TimelineScheduled workGantt-style timeline. Requires start and end date fields.
GalleryImage-heavy dataCard grid with image thumbnails. (Planned.)

The card view isn’t a data view type — it’s the single-record form rendered from an entity view’s layout when a user opens a row.

If a client receives a view type it doesn’t support — or one that doesn’t fit the entity (e.g., kanban without a status field) — it falls back to grid automatically.

Grid View

The default and most common view. Features:

  • Column configuration — choose which fields appear, their order, and width
  • Sorting — click column headers to sort ascending/descending
  • Inline editing — double-click a cell to edit in place
  • Selection — checkbox column for bulk operations
  • Aggregations — footer row with sum, count, average, min, max per column
  • Master-detail — expand a row to show related child records

Card (Single-Record Form)

The detail form for a single record. Layouts are defined per entity view, so the same entity can have different forms in different folders. Layouts are made up of two element types:

  • columnGroup — a section of fields rendered together. Maps to entity column groups, which can show as two-line headers in grids.
  • set — an inline detail grid for a child set field (master-detail), e.g., invoice lines inside an invoice form.

Both element types specify the exact list of fields to render, in order. Formula columns and generated aggregates display alongside physical fields.

Kanban View

Board layout grouped by a field value. Configuration:

  • Group field — which field determines the columns (e.g., Status, Stage)
  • Title field — what to show as the card title
  • Subtitle fields — additional fields shown on each card

Drag and drop a card between columns to update the group field value.

Calendar View

Displays records on a calendar. Configuration:

  • dateField — which field positions the event
  • titleField — what to show on the event

Timeline View

Gantt-style timeline. Configuration:

  • startField / endField — date range fields
  • titleField — bar label

List View

Compact list with title and subtitle template. Configuration:

  • titleField — the primary display field
  • subtitleField — secondary information

Data Sources

A data view declares one or more dataSources — the entities and columns it shows.

Single Entity (Most Common)

{
  "viewType": "grid",
  "dataSources": [
    {
      "entityCode": "product",
      "level": 0,
      "columns": ["name", "sku", "category", "price", "quantity"]
    }
  ]
}

Master-Detail (Hierarchical)

A parent entity at level: 0 with detail entities at level: 1+. The relationship follows a set field on the parent. Rows expand to show their children.

{
  "viewType": "grid",
  "dataSources": [
    { "entityCode": "order", "level": 0,
      "columns": ["order_number", "order_date", "status", "total"] },
    { "entityCode": "order_detail", "level": 1,
      "parentSetField": "details",
      "columns": ["product_id", "quantity", "price", "amount"] }
  ]
}

Same-Level Union

Multiple entities at level 0, shown together — works best when they share common columns (e.g., a unified “recent activity” list).

View Columns

Columns can be written as plain strings (just the column code) or as objects with overrides. Both forms can be mixed:

"columns": [
  "name",
  { "column_cd": "sku", "width": 120 },
  { "column_cd": "internal_note", "visible": false },
  "price"
]
PropertyDescription
column_cdColumn code (matches an entity_column.column_cd)
widthColumn width in pixels (grid)
visibleWhether the column is shown by default

The string form is preferred in module packages for brevity; user-customized views serialize as objects to preserve widths and visibility.

Filters

Filter Composition

Every query is filtered by four layers that are AND-ed together at the database:

LayerSourcePurpose
1. Folder filterThe folder’s row_filterScopes data to the folder’s context (e.g., warehouse, division)
2. View filterThe data view’s filterNarrows to a view-specific subset (e.g., amount > 1000)
3. Security filterRow-level security rulesEnforces access control (e.g., own records only)
4. User ad-hoc filterUI filter barTemporary filters the user adds at runtime

This is why folders can be thought of as dynamic filtered views: the folder layer alone determines which records ever appear in any view inside it.

User Filters

Users can add filters per column at runtime:

  • Text: contains, equals, starts with
  • Number: equals, greater than, less than, between
  • Date: equals, before, after, between, today, this week, this month
  • Dropdown/Flags: is, is not, is any of
  • Lookup: is, is not (search-based)

Column-Level Security

Entity views also act as the column-level security layer. The entity_v_column rows for a view list which columns are accessible — anything not listed is hidden, and the user can’t query it. Different folders can bind the same entity to different entity views, so a Storekeeper folder can expose quantity and location while an Accounting folder exposes price, cost, and margin on the exact same product table.

Aggregations

Grid views can show footer aggregations per column. Available aggregation types depend on the field type:

AggregationSupported types
Sumnumber, currency
Countall types
Averagenumber, currency, percent
Minnumber, currency, date, datetime
Maxnumber, currency, date, datetime
/ was this helpful?

Stuck on something?
Tell us.

We read every message and update the docs based on what readers ask. The fastest way to improve the docs is to write to us.