Parent: #320
Summary
Allow resources to customize the Data tab's view and edit modes. Currently, ResourceData drives everything through the pipeline and ResourceView/ResourceForm with no way for consumers to inject custom content, filter attributes, or override save behavior.
Motivation
- Custom view items — inject non-attribute UI into the read-only view (e.g., a "Test Connection" button for datasources, a live status panel, a chart of pool statistics)
- Custom form items — add form fields not derived from metadata (e.g., password confirmation, file upload for certificates, a color picker for a theme attribute)
- Attribute filtering/reordering — control which attributes appear and in what order, or group them differently than the auto-grouping
- Custom save behavior — override or augment what happens on save (e.g., composite operations that write to multiple resources, post-save actions like "test connection")
Capabilities
- Inject view/form items — add items before, after, or between the pipeline-generated items
- Filter attributes — exclude specific attributes from the Data tab (e.g., computed attributes that are better shown elsewhere)
- Custom attribute grouping — override the auto-grouping with resource-specific groups
- Custom save handler — replace or wrap the default
uic().crud().save() call
Registration
A registry keyed by Environment + AddressTemplate. When ResourceData initializes for a matching template, the registry provides the customizations.
Open Questions
- Should this be one registry with multiple optional hooks, or separate registries for view items, form items, filtering, and save behavior?
- How does this interact with the existing
operation(Operation) customization on ResourceData?
- Should attribute filtering be declarative (list of attribute names to include/exclude) or functional (a predicate)?
Parent: #320
Summary
Allow resources to customize the Data tab's view and edit modes. Currently,
ResourceDatadrives everything through the pipeline andResourceView/ResourceFormwith no way for consumers to inject custom content, filter attributes, or override save behavior.Motivation
Capabilities
uic().crud().save()callRegistration
A registry keyed by
Environment+AddressTemplate. WhenResourceDatainitializes for a matching template, the registry provides the customizations.Open Questions
operation(Operation)customization onResourceData?