Reading database constraint errors the admin can explain to a user.
Reading database constraint errors the admin can explain to a user.
Display roles for the admin overview (ADR-040).
A field's role says what its value is to a reader — a relation, money, a
due date — and decides how a list cell renders it. Roles are derived from
the field's type, its name and the entity's relations; an explicit
:display in the field config wins. Pure: config in, data out.
Display roles for the admin overview (ADR-040). A field's role says what its value is to a reader — a relation, money, a due date — and decides how a list cell renders it. Roles are derived from the field's type, its name and the entity's relations; an explicit `:display` in the field config wins. Pure: config in, data out.
What an entity form shows, which of a form's errors it cannot show next to a field, and the child rows a parent is created with (BOU-570).
What an entity form shows, which of a form's errors it cannot show next to a field, and the child rows a parent is created with (BOU-570).
Who may do what in the admin, as pure decisions.
Under :wagoe/authorization :mode :off and :report today's rule
decides: the :admin role. Under :enforce the user's rights do
(ADR-041 §6): admin.<entity>/read to see an entity, admin.<entity>/write
to change it, each held in scopes the entity can check. A platform admin
holds everything, everywhere.
The shell puts the request's rights on the user map under ::access
(with-access); a user without it is decided by the role.
Who may do what in the admin, as pure decisions. Under `:wagoe/authorization :mode :off` and `:report` today's rule decides: the `:admin` role. Under `:enforce` the user's rights do (ADR-041 §6): `admin.<entity>/read` to see an entity, `admin.<entity>/write` to change it, each held in scopes the entity can check. A platform admin holds everything, everywhere. The shell puts the request's rights on the user map under `::access` (`with-access`); a user without it is decided by the role.
Pure functions for database schema introspection and entity configuration.
This namespace contains pure business logic for transforming raw database metadata into UI-friendly entity configurations. All functions are pure (no side effects) and testable without database connections.
Key responsibilities:
Pure functions for database schema introspection and entity configuration. This namespace contains pure business logic for transforming raw database metadata into UI-friendly entity configurations. All functions are pure (no side effects) and testable without database connections. Key responsibilities: - Parse database column metadata into field configurations - Infer appropriate UI widgets from database types - Detect relationships and foreign keys - Merge auto-detected configuration with manual overrides - Generate sensible defaults for labels and field ordering
Admin UI components using Hiccup for server-side HTML generation.
This namespace is a thin FACADE: the implementation lives in focused
sibling namespaces under wagoe.admin.core.ui.*. Every public function
consumers rely on is re-exported here so admin-ui/entity-list-page,
ui/format-field-label, etc. keep resolving unchanged.
Implementation namespaces:
wagoe.admin.core.ui.base — shared URL/field/column primitiveswagoe.admin.core.ui.layout — sidebar nav, home, error pageswagoe.admin.core.ui.list — entity list page, table, rows, searchwagoe.admin.core.ui.filters — advanced filter builderwagoe.admin.core.ui.inline-editing — inline (double-click) cell editingwagoe.admin.core.ui.detail — detail/edit page, form, field groupingwagoe.admin.core.ui.drawer — the record drawer beside the listSee each impl namespace for the original docstrings on these functions.
Admin UI components using Hiccup for server-side HTML generation. This namespace is a thin FACADE: the implementation lives in focused sibling namespaces under `wagoe.admin.core.ui.*`. Every public function consumers rely on is re-exported here so `admin-ui/entity-list-page`, `ui/format-field-label`, etc. keep resolving unchanged. Implementation namespaces: - `wagoe.admin.core.ui.base` — shared URL/field/column primitives - `wagoe.admin.core.ui.layout` — sidebar nav, home, error pages - `wagoe.admin.core.ui.list` — entity list page, table, rows, search - `wagoe.admin.core.ui.filters` — advanced filter builder - `wagoe.admin.core.ui.inline-editing` — inline (double-click) cell editing - `wagoe.admin.core.ui.detail` — detail/edit page, form, field grouping - `wagoe.admin.core.ui.drawer` — the record drawer beside the list See each impl namespace for the original docstrings on these functions.
Shared admin UI primitives used across multiple ui.* sections.
Leaf namespace: URL helpers, field-value rendering, list-column width heuristics, and small formatting/label utilities. Must NOT require any other wagoe.admin.core.ui.* implementation namespace — it is the dependency root that the focused sections build on.
Shared admin UI primitives used across multiple ui.* sections. Leaf namespace: URL helpers, field-value rendering, list-column width heuristics, and small formatting/label utilities. Must NOT require any other wagoe.admin.core.ui.* implementation namespace — it is the dependency root that the focused sections build on.
List cells rendered by display role (ADR-040).
cell turns one value into the content of its list cell according to the
field's role; cell-class is the class every cell of that role carries, so
the stylesheet styles roles, never fields. What a cell needs beyond the
value — a relation's title, a has-many count, the time — arrives in the
overview the shell computed for the page. Pure Hiccup.
List cells rendered by display role (ADR-040). `cell` turns one value into the content of its list cell according to the field's role; `cell-class` is the class every cell of that role carries, so the stylesheet styles roles, never fields. What a cell needs beyond the value — a relation's title, a has-many count, the time — arrives in the overview the shell computed for the page. Pure Hiccup.
Entity detail/edit page components: form widgets, field grouping, the entity form, parent-context/related-records tables, and the detail page.
Pure Hiccup generators. Depends on base for URL and field helpers.
Entity detail/edit page components: form widgets, field grouping, the entity form, parent-context/related-records tables, and the detail page. Pure Hiccup generators. Depends on `base` for URL and field helpers.
The record drawer: one record beside its list, opened by clicking its row.
Read-only, rendered by the same display roles as the list cells (ADR-040), so a relation is a name, an enum a badge, money formatted. Editing stays on the detail page; the drawer links there. Pure Hiccup.
The record drawer: one record beside its list, opened by clicking its row. Read-only, rendered by the same display roles as the list cells (ADR-040), so a relation is a name, an enum a badge, money formatted. Editing stays on the detail page; the drawer links there. Pure Hiccup.
Advanced filter builder components for admin entity lists.
Pure Hiccup generators for the filter UI: operator selection per field type, value inputs, filter rows, and the overall filter builder.
Advanced filter builder components for admin entity lists. Pure Hiccup generators for the filter UI: operator selection per field type, value inputs, filter rows, and the overall filter builder.
Inline (double-click) table-cell editing components.
Pure Hiccup generators for the editable-cell display mode, the inline edit form, and the inline edit form with a validation error.
Inline (double-click) table-cell editing components. Pure Hiccup generators for the editable-cell display mode, the inline edit form, and the inline edit form with a validation error.
Admin nav contribution, page layout, error pages, and URL utilities.
Pure Hiccup generators for the admin chrome: the admin's contribution to
the sidebar of the shell in wagoe.shared.ui.core.shell, the dashboard
home, 403/404 error pages and the build-table-url helper.
Admin nav contribution, page layout, error pages, and URL utilities. Pure Hiccup generators for the admin chrome: the admin's contribution to the sidebar of the shell in `wagoe.shared.ui.core.shell`, the dashboard home, 403/404 error pages and the `build-table-url` helper.
Entity list-page components: search form, table rows, table, and the complete list page (toolbar + filter builder + table).
Pure Hiccup generators. Depends on base for URL helpers, field-value
rendering, and column sizing, and on filters for the filter builder.
Entity list-page components: search form, table rows, table, and the complete list page (toolbar + filter builder + table). Pure Hiccup generators. Depends on `base` for URL helpers, field-value rendering, and column sizing, and on `filters` for the filter builder.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |