Skip to content

Extension point: custom data view / form #332

Description

@hpehl

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)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions