Skip to content

DS-6393 & DS-6394 Search field added to dataset menu and TROPO added as a top-level dataset #2425#2426

Closed
artisticlight wants to merge 5 commits intotestfrom
andy/menu-phase-1-tropo
Closed

DS-6393 & DS-6394 Search field added to dataset menu and TROPO added as a top-level dataset #2425#2426
artisticlight wants to merge 5 commits intotestfrom
andy/menu-phase-1-tropo

Conversation

@artisticlight
Copy link
Copy Markdown
Contributor

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

Key English (en) Spanish (es) Context / Where Used
SEARCH_DATASETS Search datasets... Buscar conjuntos de datos... Placeholder text in the search field
ACTIVE_DATASETS Active Datasets Conjuntos de datos activos Header above active dataset section (when All chip is selected)
INACTIVE_DATASETS Inactive Datasets Conjuntos de datos inactivos Header above inactive dataset section (when All chip is selected)
NO_MATCHING_DATASETS No matching datasets No se encontraron conjuntos de datos Empty-state text when search/filter returns zero datasets
SHOWING_X_OF_Y Showing {{shown}} of {{total}} datasets Mostrando {{shown}} de {{total}} conjuntos de datos Footer count text
FILTER_ALL All Todos Filter chip label for all datasets
DATASET_ACTIVE Active Activos Filter chip label for active datasets
DATASET_INACTIVE Inactive Inactivos Filter chip label for inactive datasets

Existing Keys To Reuse

Key English (en) Spanish (es) Context
CLOSE Close Cerrar Mobile close-button tooltip/label

Key-Collision Notes

  • Do not repurpose existing key ALL (currently lowercase in runtime files) for this chip. Use FILTER_ALL for the dataset menu.
  • ACTIVE and INACTIVE are not reliable as global keys in current locale files for this context. Use DATASET_ACTIVE and DATASET_INACTIVE.

Tests & Build

  • [ x] npm run lint passes
  • npm test passes (or N/A)
  • [ x] npm run build succeeds

Notes

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.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@SpicyGarlicAlbacoreRoll
Copy link
Copy Markdown
Contributor

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.
@artisticlight
Copy link
Copy Markdown
Contributor Author

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.

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.

@artisticlight
Copy link
Copy Markdown
Contributor Author

Inadvertently closed. This should be reviewed.

Add explicit aria-label to close button and clear search button
so screen readers announce them correctly.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants