Fix(ui): empty state domain dataproduct - #31690
Conversation
❌ PR checklist incompleteThis 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 |
| "no-data-assets-to-display": "لا توجد أصول بيانات لعرضها", | ||
| "no-data-found": "لم يتم العثور على بيانات", | ||
| "no-data-products-yet": "لا توجد منتجات بيانات بعد", | ||
| "no-data-products-yet-description": "Create your first data product to make trusted datasets available for discovery and access.", |
There was a problem hiding this comment.
Locale placeholders remain in English
The new description is identical to the en-US source in all 19 changed non-English bundles, causing the translation validation gate to fail and displaying English empty-state copy for those locales. Replace these synchronized placeholders with real translations; the same pattern occurs in the other changed locale files.
Context Used: CLAUDE.md (source)
e087061 to
215b66d
Compare
✅ Playwright Results — workflow succeededValidated commit ✅ 751 passed · ❌ 0 failed · 🟡 1 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking 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) 54m 40s ⏱️ Max setup 3m 38s · max shard execution 20m 43s · max shard-job elapsed before upload 24m 29s · reporting 6s 🌐 217.03 requests/attempt · 2.71 app boots/UI scenario · 10.38% common-shard skew Optimization targets still in progress:
🟡 1 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
|
| Count | Rule |
|---|---|
| 3 | sonarjs/cyclomatic-complexity |
| 2 | sonarjs/no-duplicate-string |
| 2 | react-hooks/exhaustive-deps |
All findings
| Location | Rule | Message | |
|---|---|---|---|
| 🟡 | src/components/DataProduct/DataProductListPage.tsx:69:30 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 12 which is greater than 10 authorized.","cost":2,"secondaryLocations":[{"line":69,"column":29,"endLine":69,"endColumn" |
| 🟡 | src/components/DataProduct/DataProductListPage.tsx:141:15 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 4 times. |
| 🟡 | src/components/DataProduct/DataProductListPage.tsx:162:56 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 13 which is greater than 10 authorized.","cost":3,"secondaryLocations":[{"line":162,"column":55,"endLine":162,"endColum |
| 🟡 | src/components/DataProduct/DataProductListPage.tsx:363:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has missing dependencies: 'dataProductColumns' and 'dataProductListing'. Either include them or remove the dependency array. |
| 🟡 | src/components/DomainListing/DomainListPage.tsx:51:68 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 13 which is greater than 10 authorized.","cost":3,"secondaryLocations":[{"line":51,"column":67,"endLine":51,"endColumn" |
| 🟡 | src/components/DomainListing/DomainListPage.tsx:125:15 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/DomainListing/DomainListPage.tsx:255:6 |
react-hooks/exhaustive-deps |
React Hook useMemo has missing dependencies: 'domainColumns' and 'domainListing'. Either include them or remove the dependency array. |
Fix locally (fast - only checks files changed in this branch):
make ui-checkstyle-changed
|
Code Review ✅ Approved 4 resolved / 4 findingsReplaces generic empty-state placeholders with context-specific messages and icons across Domain and Data Product listing pages. Resolved the untranslated locale keys, incomplete filter-clearing behavior, and unused label keys. ✅ 4 resolved✅ Quality: no-data-products-yet-description untranslated in all locales
✅ Bug: Clear-filters action ignores active quick filters
✅ Bug: Clear-filters action leaves quick filters active
✅ Quality: Unused label.no-domains-yet-description key added to all locales
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
* fix(ui): replace generic empty-state placeholders with context-specific messages in AI mode * updated the empty placholder * added empty state icons * lint fix * addressed gitar comment * update imapact.json * playwright fix * lint fix



Describe your changes:
Fixes #
I worked on ... because ...
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Greptile Summary
The PR replaces domain and data-product empty states with the UI-core placeholder components and updates Playwright coverage and impact mapping.
Confidence Score: 4/5
The PR is not yet safe to merge because Clear Filters can leave the search query active and preserve the empty result.
The “fixed” and “already fixed” replies from the unnamed thread author are contradicted by current HEAD: both listing actions still issue separate search and filter navigations, while the shared URL hook provides a single resetAll transition that would clear both atomically.
Files Needing Attention: openmetadata-ui/src/main/resources/ui/src/components/DataProduct/DataProductListPage.tsx and openmetadata-ui/src/main/resources/ui/src/components/DomainListing/DomainListPage.tsx
Important Files Changed
Reviews (6): Last reviewed commit: "lint fix" | Re-trigger Greptile
Context used: