Prasad P. Pawar created ATLAS-5371:
--------------------------------------
Summary: Atlas UI: Render ENUM-typed entity attributes as
dropdowns in Create/Edit Entity form
Key: ATLAS-5371
URL: https://issues.apache.org/jira/browse/ATLAS-5371
Project: Atlas
Issue Type: Bug
Components: atlas-webui
Affects Versions: 2.5.0, 3.0.0
Reporter: Prasad P. Pawar
Assignee: Prasad P. Pawar
When creating or editing a custom entity with attributes whose typeName
references
an Atlas ENUM typedef (e.g., glossario_natureza_termo), the Atlas UI renders a
freeform text input instead of a dropdown populated with the enum's allowed
values.
Users expect to select predefined values (e.g., term categories, City metadata)
from a combo box when filling custom entity attributes, matching behavior
already
available in Business Metadata and Classification tag attribute forms.
h2. Expected Behavior
* Attributes with typeName matching an ENUM typedef should render as a <select>
dropdown populated from the enum's elementDefs.
* Optional attributes should show a placeholder option (e.g., "-- Select --").
* On entity edit, the current enum value should be pre-selected.
* Support array<enumType> for LIST cardinality (multi-select), consistent with
Business Metadata behavior.
h2. Actual Behavior
* ENUM-typed entity attributes render as plain text <input> fields in the
Create/Edit Entity modal.
* Users must manually type enum values, with no UI guidance on valid options.
h2. Root Cause
CreateEntityLayoutView.getElement() does not check enumDefCollection for ENUM
types. Unsupported types fall through to getInput().
Additionally, CreateEntityLayoutView does not receive enumDefCollection from
its parent views, even though parent views (SearchResultLayoutView, etc.)
already
have it loaded.
h2. Reference Implementations (working enum dropdowns)
* EntityBusinessMetaDataItemView.js (~lines 234–250)
* AddTagModalView.js (~lines 437–445)
h2. Affected Files
* dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
* dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
* Callers: SearchResultLayoutView, SearchDefaultLayoutView,
EntityDetailTableLayoutView (v2 + v3)
h2. Proposed Fix
# Pass enumDefCollection to CreateEntityLayoutView from all instantiation
points.
# In getElement(), detect ENUM types via enumDefCollection lookup.
# Render <select> with options from elementDefs (mirror Business Metadata
logic).
# Add unit tests for enum attribute rendering (create + edit, optional +
required,
single + array).
h2. Acceptance Criteria
* Creating an entity with an ENUM-typed attribute shows a dropdown with all
enum values from elementDefs.
* Editing an entity pre-selects the stored enum value in the dropdown.
* Optional enum attributes allow empty/unset selection.
* Invalid enum values cannot be submitted via UI (only predefined options
shown).
* Behavior is consistent between dashboardv2 and dashboardv3.
* No regression for entity references, boolean, struct, map, or primitive
types.
h2. Notes
* Backend/REST API already validates enum values correctly; this is UI-only.
* Business Metadata enum dropdowns can serve as the implementation reference.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)