Skip to content

fix(ui): tier display names + service/domain icons in Explore quick filters - #33017

Open
harsh-vador wants to merge 7 commits into
mainfrom
fix-6120-quick-filter-display
Open

fix(ui): tier display names + service/domain icons in Explore quick filters#33017
harsh-vador wants to merge 7 commits into
mainfrom
fix-6120-quick-filter-display

Conversation

@harsh-vador

@harsh-vador harsh-vador commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Describe your changes

Fixes #33020

Part of the explore-filter polish epic (display-name items). Explore quick-filter dropdowns showed the raw tier FQN (tier.tier1) and rendered Service Type / Domain options as plain text.

  • Tier: options now show the tier name (Tier1, Tier2, …). The filter value stays the raw FQN, so query building, saved filters, and shared URLs are untouched. Enabler: the label formatter in getOptionsFromAggregationBucket now runs after the sourceFields top-hits resolution, so it formats the original-cased value instead of being overwritten by it (behavior identical for the existing entity-type formatter, which has no sourceFields).
  • Service Type: options render the service logo via the existing getServiceLogo helper — the same icons the Browse Estate tree shows. The lowercased bucket key resolves fine because getServiceIcon normalizes its lookup key.
  • Domains: options render the domain entity icon next to the (already display-name-cased) label.

Not covered here: the Service (name) filter's per-service icons — the aggregation bucket carries only service.displayName, so per-service logos need serviceType threaded through the top-hits _source; worth doing when that filter's dropdown is migrated to the unified FilterSelect (#33011).

Testing

  • New unit test pinning formatter-after-sourceFields ordering; existing AdvancedSearchPureUtils + ExploreQuickFilters suites: 68/68 pass.
  • ESLint 0 errors (only pre-existing import-graph warnings), Prettier clean, no tsc errors in changed files.

🤖 Generated with Claude Code

@github-actions github-actions Bot added the UI UI specific issues label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

❌ PR checklist incomplete

This PR cannot be merged until the following are addressed on its linked issue:

The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically.

Maintainers can bypass this check by adding the skip-pr-checks label.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

✅ Playwright Results — workflow succeeded

Validated commit fe925fecc77bef052a99d81929c2c8babd137011 in Playwright run 34340403684, attempt 1.

✅ 4483 passed · ❌ 0 failed · 🟡 5 flaky · ⏭️ 1 skipped · 🧰 0 lifecycle flaky

Performance

Blocking targets: ✅ met · Optimization targets: 🟡 in progress

Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting.

🕒 Full workflow signal wall (to summary) 57m 52s

⏱️ Max setup 6m 3s · max shard execution 22m 27s · max shard-job elapsed before upload 26m 32s · reporting 18s

🌐 217.66 requests/attempt · 2.31 app boots/UI scenario · 38.46% common-shard skew

Optimization targets still in progress:

  • Common shard skew was 38.46% (convergence target: at most 15%).
  • Browser traffic was 217.66 requests per attempt (convergence target: fewer than 200).
  • Application boot ratio was 2.31 per UI scenario (10924 boots / 4734 scenarios; convergence target: at most 1).
Shard Passed Failed Flaky Skipped Lifecycle failed Lifecycle flaky
✅ Shard advanced-search-01 130 0 0 0 0 0
✅ Shard chromium-01 154 0 0 0 0 0
✅ Shard chromium-02 130 0 0 1 0 0
✅ Shard chromium-03 135 0 0 0 0 0
🟡 Shard chromium-04 184 0 2 0 0 0
✅ Shard chromium-05 186 0 0 0 0 0
✅ Shard chromium-06 167 0 0 0 0 0
🟡 Shard chromium-07 158 0 1 0 0 0
✅ Shard chromium-08 204 0 0 0 0 0
✅ Shard chromium-09 187 0 0 0 0 0
✅ Shard chromium-10 154 0 0 0 0 0
✅ Shard chromium-11 182 0 0 0 0 0
✅ Shard chromium-12 191 0 0 0 0 0
✅ Shard chromium-13 201 0 0 0 0 0
✅ Shard chromium-14 156 0 0 0 0 0
✅ Shard chromium-15 182 0 0 0 0 0
✅ Shard chromium-16 184 0 0 0 0 0
🟡 Shard chromium-17 219 0 1 0 0 0
✅ Shard chromium-18 191 0 0 0 0 0
✅ Shard chromium-19 242 0 0 0 0 0
✅ Shard chromium-20 185 0 0 0 0 0
✅ Shard chromium-21 178 0 0 0 0 0
🟡 Shard chromium-22 163 0 1 0 0 0
✅ Shard data-asset-rules-01 65 0 0 0 0 0
✅ Shard domain-isolation-01 16 0 0 0 0 0
✅ Shard global-state-01 34 0 0 0 0 0
✅ Shard import-export-01 29 0 0 0 0 0
✅ Shard import-export-02 121 0 0 0 0 0
✅ Shard ingestion-01 40 0 0 0 0 0
✅ Shard ingestion-02 46 0 0 0 0 0
✅ Shard reindex-01 28 0 0 0 0 0
✅ Shard search-01 12 0 0 0 0 0
✅ Shard search-rbac-01 29 0 0 0 0 0
🟡 5 flaky test(s) (passed on retry)
  • Features/DomainTierCertificationVoting.spec.tsDomain - Tier assign, update, and remove (shard chromium-04, 1 retry)
  • Pages/SubDomainPagination.spec.tsVerify subdomain count and pagination functionality (shard chromium-04, 1 retry)
  • Pages/TasksUIFlow.spec.tsCreate and resolve description task for Pipeline via UI (shard chromium-07, 1 retry)
  • Pages/InputOutputPorts.spec.tsOutput ports section collapse/expand (shard chromium-17, 1 retry)
  • Flow/CustomizeWidgets.spec.tsKPI Widget (shard chromium-22, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@harsh-vador harsh-vador self-assigned this Sep 9, 2026
@harsh-vador harsh-vador added the safe to test Add this label to run secure Github workflows on PRs label Sep 9, 2026
harsh-vador and others added 2 commits September 9, 2026 11:59
…ilters

Explore filter dropdowns showed the raw tier FQN (tier.tier1) and rendered
Service Type and Domain options as plain text.

- Tier options now show the tier name (Tier1, Tier2, …); the filter value
  stays the raw FQN. The label formatter in getOptionsFromAggregationBucket
  now runs after the sourceFields top-hits resolution so it formats the
  original-cased value instead of being overwritten by it.
- Service Type options render the service logo (getServiceLogo), matching
  the Browse Estate tree.
- Domain options render the domain entity icon next to the display name.

Fixes items 3–5 of the explore-filter polish epic.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The tier formatter only ran in the dropdown option path, so a selected tier
restored from a reload or shared URL showed the raw FQN (Tier.Tier1) on the
chip while the dropdown showed Tier1.

Move the formatter into AdvancedSearchPureUtils as
getQuickFilterLabelFormatter and apply it in both label-recovery paths —
hydrateQuickFilterLabels (labels from listed rows) and
useQuickFilterLabels.resolvePending (targeted aggregation) — so every
surface renders the same label for the same value.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

🔄 Playwright impact map auto-refreshed

This PR touched specs or UI source that changed the source→spec routing map. I regenerated .github/playwright/impact-map.generated.json and pushed the diff to this branch.

- source entries: 553 → 553
- 0 added, 0 removed, 2 changed spec-list

Entries whose spec list changed:
  openmetadata-ui/src/main/resources/ui/src/components/Glossary/AddGlossaryTermForm/AddGlossaryTermForm.component.tsx
  openmetadata-ui/src/main/resources/ui/src/components/Modals/StyleModal/StyleModal.component.tsx

What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing getByTestId strings. Hand-authored routing in impact-map.json always wins on conflict.

What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit:

python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit  # or a separate commit

Output of .github/scripts/generate_playwright_impact_map.py on current main;
the committed map had drifted (Tag.spec.ts split, StyleModal spec pruning).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@harsh-vador
harsh-vador force-pushed the fix-6120-quick-filter-display branch from 2150f03 to c6474ba Compare September 9, 2026 06:32
harsh-vador and others added 2 commits September 9, 2026 13:35
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Capitalizing the tier FQN leaf mangled custom tier names
(pw-tier-Giraffe → Pw-tier-Giraffe). Format only the default tier1…tierN
keys as Tier1…TierN and keep custom tier names exactly as authored.

E2E: tier quick-filter options now render the tag name (FQN leaf), so the
Explore casing spec asserts the name instead of the full FQN, and the
Lineage tier filter clicks the option by its rendered name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

⚠️ UI Checkstyle passed — lint findings in changed files

🔍 ESLint findings in this PR's files — 0 error(s), 7 warning(s)

Errors block the build. Warnings do not yet — they are rules whose backlog is still
being worked down, listed so this PR does not add to it. See docs/ui-code-quality-gate.md.

0 error(s), 7 warning(s) across 2 changed file(s).

Count Rule
5 openmetadata-imports/no-circular-imports
2 openmetadata-imports/no-lower-layer-page-imports
All findings
Location Rule Message
🟡 src/components/Explore/ExplorePage.interface.ts:50:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/Explore/ExplorePage.interface.ts:51:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Explore/ExplorePage.interface.ts:52:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/Explore/ExploreQuickFilters.tsx:24:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Explore/ExploreQuickFilters.tsx:43:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/Explore/ExploreQuickFilters.tsx:45:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/Explore/ExploreQuickFilters.tsx:47:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.

Fix locally (fast - only checks files changed in this branch):

make ui-checkstyle-changed

Tier quick-filter options render the tag name (FQN leaf), not the FQN, so
the tier selectors in ImpactAnalysis waited on titles that no longer exist.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gitar-bot

gitar-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown
Code Review ✅ Approved 1 resolved / 1 findings

Fixes tier display names and adds service/domain icons in Explore quick filters. Tier options now show formatted names (Tier1, Tier2, …) instead of raw FQNs, Service Type options render service logos, and Domain options include entity icons. The label formatter now runs after sourceFields resolution to preserve formatting on reload and shared URLs. No issues found.

✅ 1 resolved
Bug: Tier chip label shows raw FQN on reload/shared URL

📄 openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchPureUtils.ts:290-304 📄 openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchPureUtils.ts:321-335 📄 openmetadata-ui/src/main/resources/ui/src/components/Explore/ExploreQuickFilters.tsx:62-76
The tier formatter (formatTierLabel) is applied only in the dropdown path via getOptionLabelFormatter, but the selected-value label restoration in hydrateQuickFilterLabels and useQuickFilterLabels.resolvePending calls getOptionsFromAggregationBucket(..., undefined, sourceFields) / findSourceLabel, resolving the tier chip to the raw _source value Tier.Tier1 (from tier.tagFQN) rather than the formatted Tier1. After a reload or on a shared link, the dropdown shows Tier1 while the selected chip/checked option shows Tier.Tier1, undercutting the PR's stated goal. Thread the same per-field label formatter through the hydration/aggregation label-recovery paths so restored tier labels are formatted consistently.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@sonarqubecloud

sonarqubecloud Bot commented Sep 9, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Explore quick filters: tier shows raw FQN, Service Type and Domain options have no icons

1 participant