Skip to content

Data management

Status: ✅ Implemented (Java; .NET/Python ports planned)

Present a data set two ways — a data grid and a Gantt timeline — on one dense, full-width page, with a toolbar switcher so the user can review it as a table or as a schedule. The Oracle Redwood Data management template.

Extend DataManagement and supply the two views:

@UI("/project-plan")
@Title("Project plan")
public class ProjectPlanBoard extends DataManagement {
@Override protected Component gridView(HttpRequest rq) { return theDenseTable(); }
@Override protected Component ganttView(HttpRequest rq) { return theGanttCanvas(); }
}
  • The page lays out full width (PageWidthStyle.FULL_WIDTH).
  • A toolbar switcher (two buttons, labels via gridLabel()/ganttLabel()) flips the active view.
  • The active view is kept in state (_view, "grid" by default) and the page re-renders in place when the user switches — no navigation.
  • A heading (from @Title) sits above the toolbar; override heading() or return blank to omit it.

gridView is any component — typically a dense table (an embedded crud/listing, a fluent Grid, or @InlineEditing + @Compact for in-place editing); ganttView is typically a Gantt (the same canvas the GanttPage archetype uses). Pure composition of existing components, so it renders on every renderer without renderer work.

The real data-management-page API is considerably richer than “grid ⇄ Gantt”: it is a transactional page with four dockable panels. Mateu covers the view switcher and the full-width canvas; the panel system is not built. The canonical page-header elements shared by every template are documented once in Page templates.

Legend: ✅ supported · 🟡 partial · — not supported · ⚪ deliberately out of scope

Redwood prop / slotMateu
Full-width canvaspageWidth()PageWidthStyle.FULL_WIDTH
View switchergridView/ganttView + gridLabel()/ganttLabel(); the active view is page state and re-renders in place
Page headingheading() (from @Title; return blank to omit)
Slots innerEnd / outerEnd / innerBottom / outerBottom— the four dockable panels are not built. Drawer already supports the underlying mechanic (layout = true docks and pushes the content instead of overlaying, for every DrawerPosition), so the missing piece is the page-level slot grammar, not the behaviour🟡
endOpened / bottomOpened: inner | outer | none
endDisplay / bottomDisplay: reflowModeless | overlayModalDrawer.layout (reflow) vs Drawer.modeless (overlay) express both modes at component level🟡
bottomDrawerState: auto | closed | maximized | minimized + displayOptions.bottomDrawerMode/HeightDrawerPosition.bottom + collapsible + maximizable + DrawerSize🟡
Transactional header (save/cancel)— this archetype is a viewer; use AutoCrud or an advanced create-edit form for the transaction
Slot messagestoasts/alerts ride on the wire’s messages, not as a page slot🟡
Slot searchthe app-level smart search bar / ⌘K palette, not a page slot🟡
Slot announcement (aria-live)live regions are installed client-side for a11y, but the backend cannot declare announcement content🟡
feedback + openFeedback⚪ the embedded survey is a Fusion Apps concern, out of scope by decision

demo-admin-panel/.../datamanagement/DataManagementDemo.java (/data-management-demo): a project plan shown as a table and as a Gantt, switchable from the toolbar.