[
https://issues.apache.org/jira/browse/ATLAS-5369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18117244#comment-18117244
]
ASF subversion and git services commented on ATLAS-5369:
--------------------------------------------------------
Commit 14d8b26a87a5d2399bc300d3941521f9d1075006 in atlas's branch
refs/heads/ATLAS-5411_UI_fix from Prasad Pawar
[ https://gitbox.apache.org/repos/asf?p=atlas.git;h=14d8b26a8 ]
ATLAS-5411: ATLAS-5412: ATLAS-5369: Atlas UI: React UI Audit tab show deleted
entity references with Classic UI styling, Search Button, Businessmetada
options as dropdown
> ATLAS UI: Fix Business Metadata enum attributes rendering as search/text
> input instead of dropdown in Atlas React UI
> --------------------------------------------------------------------------------------------------------------------
>
> Key: ATLAS-5369
> URL: https://issues.apache.org/jira/browse/ATLAS-5369
> Project: Atlas
> Issue Type: Task
> Components: atlas-webui
> Affects Versions: 3.0.0
> Reporter: Prasad P. Pawar
> Assignee: Prasad P. Pawar
> Priority: Major
>
> In the Atlas React dashboard, Business Metadata attributes with enum typedefs
> are not consistently rendered as dropdown controls on the entity detail page
> edit form. Instead, its seen as a search-style Autocomplete (with free-text
> entry) or a plain text input, even when a valid enum definition exists in
> Atlas.
> The backend and enum typedef are valid, but the UI does not render
> enum-specific controls and falls back to generic input fields.
> Scope of this ticket: Business Metadata edit flow in the React dashboard
> ({{{}BMAttributesFields{}}}). The legacy entity create/edit enum issue is a
> separate enhancement.
> h2. Root Cause
> Enum handling in {{BMAttributesFields.tsx}} was incomplete:
> # Enum options were not built reliably for multi-valued enums
> Options were only loaded when {{{}!isMultiValued || typeName ===
> "array<boolean>"{}}}, so types like {{array<adls_gen2_replication>}} often
> had no enum options from Redux {{{}enumDefs{}}}.
> # Array enum attributes used searchable Autocomplete with {{freeSolo}}
> Generic array handling allowed arbitrary text entry. Array enum attributes
> went through this path, so they appeared as a search input instead of a
> constrained dropdown.
> # Enum type detection logic was incorrect
> The condition to distinguish enum vs non-enum types was too broad and did not
> reliably route enum attributes to dropdown controls.
> # Default fallback is a plain {{TextField}}
> Any attribute that is not recognized as an enum falls through to a standard
> text input with no UI-level enum validation.
> Atlas backend/REST behavior is unaffected. This is a UI rendering limitation
> only.
> ||Scenario||Current Behavior||
> |Single enum (e.g. {{{}adls_gen2_replication{}}})|Falls back to plain
> {{TextField}} if enum is not detected|
> |Multi enum (e.g. {{{}array<adls_gen2_replication>{}}})|Renders as
> {{Autocomplete}} with {{freeSolo}} — search-style input, not a strict
> dropdown|
> |{{enumDefs}} not loaded from Redux|Enum not recognized → {{TextField}}
> fallback|
> |Unknown / undefined enum typedef|No matching definition → {{TextField}}
> fallback (expected)|
> |Non-enum arrays ({{{}array<string>{}}}, {{{}array<int>{}}},
> etc.)|Intentionally remain free-text searchable Autocomplete|
>
> h2. Fix
> h3. 1. New utility: {{bmAttributesEnumUtils.ts}}
> Centralized enum logic:
> * {{isEnumTypeName()}} — matches type against loaded {{enumDefs}}
> * {{buildEnumOptionsForTypeName()}} — builds options from enum
> {{elementDefs}}
> * {{normalizeMultiEnumValue()}} — normalizes stored values for multi-select
> * {{areEnumOptionsEqual()}} / {{getEnumOptionLabel()}} — Autocomplete helpers
> h3. 2. Updated {{BMAttributesFields.tsx}}
> ||Attribute Type||Control After Fix||
> |Single enum ({{{}EnumName{}}})|MUI {{Select}} dropdown|
> |Multi enum ({{{}array<EnumName>{}}})|MUI {{Autocomplete}} multi-select,
> {{freeSolo}} disabled|
> |Non-enum arrays|Unchanged — searchable Autocomplete with free text|
> |Unknown enum / missing {{enumDefs}}|Fallback to {{TextField}}|
> h3. 3. Updated {{BMAttributes.tsx}}
> * Submit handling supports both string and {{{ label, value }}} formats for
> array enum values
> * Layout/styling updates for BM attribute rows
> h2. Test Plan
> h3. Automated Tests — 11/11 passing
> {{bmAttributesEnumUtils.test.ts}} (7 tests)
> * Detects array enum type names
> * Extracts inner enum type from {{array<EnumName>}}
> * Builds enum options for single and multi-value enums
> * Distinguishes enum vs non-enum types
> * Normalizes stored string values to enum option objects
> * Handles missing/invalid multi enum values
> * Compares enum options for Autocomplete selection
> ||Test||Case||Expected Result||
> |Single-value enum|Positive|Renders MUI {{Select}} dropdown|
> |{{array<adls_gen2_replication>}}|Positive|Multi-select dropdown; shows LRS,
> ZRS, GRS|
> |{{array<string>}}|Negative|Keeps free-text searchable Autocomplete|
> |{{array<unknown_enum>}}|Negative|Falls back to plain {{TextField}}|
>
> h3. Manual Verification
> # Open entity detail → Business Metadata → Edit
> # Single enum attribute → verify {{Select}} dropdown with enum values
> # Multi enum attribute → verify multi-select dropdown, no free-text entry
> # Save → confirm values persist and display correctly in read mode
> # Non-enum {{array<string>}} → verify free-text entry still works
> # Unknown enum type → verify graceful fallback to text input
> h2. Acceptance Criteria
> * Single enum BM attributes render as {{Select}} dropdown
> * Multi enum BM attributes render as constrained multi-select (no
> {{{}freeSolo{}}})
> * Options populated from Redux {{enumDefs}} / {{elementDefs}}
> * Non-enum arrays unchanged
> * Unknown enums fall back to text input
> * Save/submit persists values correctly
> * All 11 unit tests pass
--
This message was sent by Atlassian Jira
(v8.20.10#820010)