DS-6393 & DS-6394 Search field added to dataset menu and TROPO added as a top-level dataset #2425#2426
DS-6393 & DS-6394 Search field added to dataset menu and TROPO added as a top-level dataset #2425#2426artisticlight wants to merge 5 commits intotestfrom
Conversation
feat(models): add priority and active fields to all dataset definitions feat(i18n): add translation keys for dataset menu phase 1 feat(dataset-menu): create DatasetMenuComponent with search, chips, and grouped list feat(dataset-selector): replace MatMenu with CDK Overlay and DatasetMenuComponent Rewire the dataset selector trigger button to open the new DatasetMenuComponent via CDK Overlay instead of the legacy MatMenu. Desktop uses FlexibleConnectedPositionStrategy anchored to the trigger; mobile uses GlobalPositionStrategy for full-screen display. Adds proper ARIA attributes (aria-haspopup, aria-expanded) and focus management. style(dataset-menu): refine layout, theming, and dark mode support - Switch overlay to GlobalPositionStrategy (full window height, 600px width) - Fix dark mode: use light-black for text, invert satellite icons, style chip selected/unselected states, fix search input caret color - Tighten spacing: search field subscript, menu-item-inner margins, info-text positioning, dataset-item padding - Add mobile-specific padding (24px) below dataset items - Fix hr-wrapper alignment in dataset selector button - Remove horizontal scroll from dataset list - Reduce chip hover overlay opacity for readability fix(dataset-menu): address code review findings and fix chip height bug - Remove German i18n support (delete de.json, clean asf-language.service) - Add SubSink subscription management to DatasetSelectorComponent - Add isOpening guard to prevent race condition in toggleMenu - Deduplicate dataset row template with ng-template and ngTemplateOutlet - Internationalize prettyDateRange with DATE_TO and PRESENT keys - Optimize updateFilteredDatasets to single-pass partition - Fix keyboard event bubbling on docs links and source links - Fix chip height snapping caused by leaked ::ng-deep in scene-controls - Scope all ::ng-deep usages with :host or parent selectors - Remove dead code (Window.dataLayer declaration, unused $search-padding) - Guard source link against null url - Simplify always-true class binding to static class - Add dark mode chip token overrides in global styles
Add TROPO as a top-priority dataset that queries OPERA-S1 with processinglevel=TROPO-ZENITH. Architecture supports easy swap to a dedicated API dataset when available. - Create tropo.ts dataset definition (apiValue routes to OPERA-S1) - Add defaultProductTypes field to Dataset interface with NgRx effect that auto-applies product types on dataset selection - Add dataset ID migration map for forward-compatible saved searches - Re-number all dataset priorities to increments of 10 - Add TROPO to all OPERA-S1 dataset-level checks (browse overlay, scene actions, burst ID filters, group ID, beam mode icon) - Hide file type dropdown for datasets with empty productTypes - Apply migration map at URL state and saved search load points - Add en/es i18n translations for TROPO description
Replace rgba() with modern rgb() and sass:color.change() to satisfy Stylelint color-function-notation rule.
There was a problem hiding this comment.
Pull request overview
This PR upgrades the dataset selector UX by replacing the existing Material menu with a custom CDK overlay menu that supports searching and Active/Inactive filtering, and introduces a new top-level “TROPO” dataset (implemented as an OPERA-S1 query with a TROPO file-type filter). It also removes the German locale.
Changes:
- Replaced the dataset dropdown with a new overlay-based dataset menu that adds search + Active/Inactive filter chips and dataset counts.
- Added TROPO as a top-level dataset, including default product type behavior and dataset-ID migration support.
- Removed German i18n support and related language options.
Reviewed changes
Copilot reviewed 46 out of 46 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/styles.scss | Adds dark-theme chip styling for the new dataset menu overlay. |
| src/assets/i18n/en.json | Adds new dataset-menu strings (search/filter/counts) and TROPO description text. |
| src/assets/i18n/es.json | Adds Spanish equivalents for new dataset-menu strings and TROPO description text. |
| src/assets/i18n/de.json | Removes German translation file. |
| src/app/store/user/user.effect.ts | Migrates saved/default dataset IDs and applies dataset migration when restoring dataset filters. |
| src/app/store/map/map.effect.ts | Treats TROPO like OPERA-S1/S1/UAVSAR for relevant map behaviors. |
| src/app/store/filters/filters.effect.ts | Applies dataset defaultProductTypes on dataset selection and after clearing dataset filters. |
| src/app/services/url-state.service.ts | Migrates dataset IDs when loading selected dataset from URL state. |
| src/app/services/browse-overlay.service.ts | Enables browse overlay behavior for TROPO similarly to OPERA-S1. |
| src/app/services/asf-language.service.ts | Removes non-en/es language names and restricts supported languages to en/es. |
| src/app/models/datasets/uavsar.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/smap.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/sirc.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/sentinel-1.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/sentinel-1-burst.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/seasat.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/radarsat_1.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/opera_s1.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/nisar.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/jers_1.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/ers.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/beta.ts | Adds active: false and priority to support Active/Inactive grouping + ordering. |
| src/app/models/datasets/avnir.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/alos_2.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/alos.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/airsar.ts | Adds priority for dataset ordering in the new menu. |
| src/app/models/datasets/tropo.ts | Introduces the new TROPO dataset definition and its default product type. |
| src/app/models/datasets/index.ts | Exports the new TROPO dataset module. |
| src/app/models/dataset.model.ts | Adds priority, active, defaultProductTypes, dataset activity helper, and dataset ID migration helpers; adds TROPO into datasetList. |
| src/app/components/shared/selectors/other-selector/other-selector.component.ts | Adds TROPO id constant for template logic. |
| src/app/components/shared/selectors/other-selector/other-selector.component.html | Hides product-type selector when no product types exist; includes TROPO in ID-based conditions. |
| src/app/components/shared/selectors/dataset-selector/dataset-selector.component.ts | Replaces MatMenu with CDK Overlay + new DatasetMenuComponent integration. |
| src/app/components/shared/selectors/dataset-selector/dataset-selector.component.html | Updates trigger button to open/close the new overlay menu. |
| src/app/components/shared/selectors/dataset-selector/dataset-selector.component.scss | Removes old menu layout styles; keeps underline wrapper styling. |
| src/app/components/shared/selectors/dataset-selector/dataset-menu/dataset-menu.component.ts | New searchable/filterable dataset menu component with Active/Inactive grouping and priority sorting. |
| src/app/components/shared/selectors/dataset-selector/dataset-menu/dataset-menu.component.html | New dataset menu UI (search input, chips, grouped list, footer counts). |
| src/app/components/shared/selectors/dataset-selector/dataset-menu/dataset-menu.component.scss | Styling for the new dataset menu overlay panel and dataset list rows. |
| src/app/components/shared/scene-metadata/scene-metadata.component.ts | Adds TROPO id constant for template logic. |
| src/app/components/shared/scene-metadata/scene-metadata.component.html | Prevents beam-mode menu behavior for TROPO (mirrors OPERA-S1 behavior). |
| src/app/components/results-menu/scenes-list/scene/scene-controls/scene-controls.component.scss | Scopes a ::ng-deep chip style to the host to reduce global impact. |
| src/app/components/results-menu/scenes-list-header/scenes-list-header.component.ts | Adds TROPO id constant for template logic. |
| src/app/components/results-menu/scenes-list-header/scenes-list-header.component.html | Includes TROPO in dataset-specific header behaviors. |
| src/app/components/results-menu/scene-detail/scene-detail.component.ts | Includes TROPO in logic that decides when to clear filters / treat as OPERA-S1-like. |
| src/app/components/results-menu/scene-detail/scene-detail.component.html | Treats TROPO like OPERA-S1 for “source data” tooltip/label and related conditions. |
| src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.ts | Adds TROPO id constant for template logic. |
| src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.html | Shows OPERA-S1-specific panel for TROPO as well. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I noticed the mock tropo dataset added to the models file along with some unique code to make that work. I don't think we should be adding temporary dataset handling logic when we have adding it to asf-search/SearchAPI already on this sprint. I also believe the tropo dataset would be better served being added as a separate PR. |
Completes the aria-haspopup="dialog" contract on the trigger button by adding role="dialog" and aria-label to the overlay panel root.
Christy told me she wanted this even though the "real" dataset would be coming soon. I have structured things so transitioning to the real thing should be easy, but the PO did want this. |
|
Inadvertently closed. This should be reviewed. |
Add explicit aria-label to close button and clear search button so screen readers announce them correctly.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 46 out of 46 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
DS-6393 Add search field to dataset menu
DS-6394 TROPO add as a top-level dataset
The TROPO data set is 'fake'. It is an OPERA S1 search with the TROPO file type filter applied. The code is structured to allow easy replacement of the Dataset ID if/when a real TROPO dataset becomes available.
Related Issues
Solid foundation laid for DS-6392
German key file removed.
i18n
New Keys
SEARCH_DATASETSACTIVE_DATASETSINACTIVE_DATASETSNO_MATCHING_DATASETSSHOWING_X_OF_YFILTER_ALLDATASET_ACTIVEDATASET_INACTIVEExisting Keys To Reuse
CLOSEKey-Collision Notes
ALL(currently lowercase in runtime files) for this chip. UseFILTER_ALLfor the dataset menu.ACTIVEandINACTIVEare not reliable as global keys in current locale files for this context. UseDATASET_ACTIVEandDATASET_INACTIVE.Tests & Build
npm run lintpassesnpm testpasses (or N/A)npm run buildsucceedsNotes