Concrete Classes (/admin/concrete-classes) stores mix classes referenced by project.concrete_class_id. The list shows Name and Status (Active/Inactive).
Permissions: FunctionId CONCRETE_CLASS (36), menu entry Concrete Classes (function.url = concrete_class). View opens the page; Add controls New; Edit controls the wizard; Delete controls row and bulk delete.
Screen layout
Figure: FoodHub list — New in the page header; data card with Search concrete classes…, Export, sortable Name and Status, row ⋮, checkboxes, and pagination.
| Region | What you see |
|---|---|
| Page toolbar | Title Concrete Classes, subtitle, New (Add), and the ? icon. |
| Data card | Search, Export, sortable columns, checkboxes (Delete), bulk bar, mobile cards, pagination. |
| Modal | Surface B on /admin/concrete-classes (?create=1 / ?edit=\{id\}). New = single General step. Edit = stepper General · Projects (read-only). |
List behavior
- Search — matches Name when the term is empty or at least three characters (legacy DataTables rule).
- Export — Copy, Excel, and CSV for the current page.
- Sort — Name, Status (default Name ascending).
- Row ⋮ — Edit · Delete when permitted.
Modal — General
| Field | Rules |
|---|---|
| Name | Required. Unique name (legacy duplicate message). |
| Status | Active / Inactive switch. |
Titles: New Concrete Class: / Update Concrete Class: \{name\}.
Modal — Projects (edit only)
Read-only table of projects where concrete_class_id matches the class: C & G Project #, County, Name, Description, Due Date, Company, Status, Notes, View when you have project View permission.
Delete
Single and bulk delete remove rows not linked to a project. Linked rows show The concrete class could not be deleted, because it is related to a project (or the bulk variant).