diff --git a/.gitignore b/.gitignore index 1dc9b1154..bbb61b064 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,5 @@ local-serve.sh # Claude Code .claude/ CLAUDE.md +TRANSLATIONS_SCRATCH.md +docs/ diff --git a/package.json b/package.json index 680ddfcf9..c97019f09 100644 --- a/package.json +++ b/package.json @@ -123,4 +123,4 @@ "ts-node": "^8.10.2", "typescript-eslint": "8.40.0" } -} +} \ No newline at end of file diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d5c12b7a4..58b587072 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -8,7 +8,11 @@ import { inject, } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; -import { MatSidenav } from '@angular/material/sidenav'; +import { + MatSidenav, + MatSidenavContainer, + MatSidenavContent, +} from '@angular/material/sidenav'; import { MatIconRegistry } from '@angular/material/icon'; import { DomSanitizer, Title } from '@angular/platform-browser'; import { MatDialog } from '@angular/material/dialog'; @@ -57,6 +61,11 @@ import { NativeDateAdapter, } from '@angular/material/core'; import { MAT_MOMENT_DATE_FORMATS } from '@angular/material-moment-adapter'; +import { NgClass, AsyncPipe } from '@angular/common'; +import { SidebarComponent } from './components/sidebar/sidebar.component'; +import { HeaderComponent } from './components/header/header.component'; +import { MapComponent } from './components/map/map.component'; +import { ResultsMenuComponent } from './components/results-menu/results-menu.component'; @Component({ selector: 'app-root', @@ -70,7 +79,17 @@ import { MAT_MOMENT_DATE_FORMATS } from '@angular/material-moment-adapter'; { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }, { provide: MAT_DATE_LOCALE, useValue: 'en' }, ], - standalone: false, + imports: [ + MatSidenavContainer, + MatSidenav, + NgClass, + SidebarComponent, + MatSidenavContent, + HeaderComponent, + MapComponent, + ResultsMenuComponent, + AsyncPipe, + ], }) export class AppComponent implements OnInit, OnDestroy, AfterViewInit { private store$ = inject>(Store); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 7137d3a24..7078a0df8 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,89 +1,8 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { BrowserModule } from '@angular/platform-browser'; - -import { MatBottomSheetModule } from '@angular/material/bottom-sheet'; -import { MatSidenavModule } from '@angular/material/sidenav'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTableModule } from '@angular/material/table'; -import { MatSortModule } from '@angular/material/sort'; - -import { StoreModule } from '@ngrx/store'; -import { EffectsModule } from '@ngrx/effects'; -import { ToastrModule } from 'ngx-toastr'; - -import * as store from './store'; - -import { MatSharedModule } from '@shared'; -import { SidebarModule } from '@components/sidebar'; -import { HeaderModule } from '@components/header'; -import { MapModule } from '@components/map'; -import { CodeExportModule } from '@components/shared/code-export'; -import { ResultsMenuModule } from '@components/results-menu'; -import { BaselineChartModule } from '@components/baseline-chart'; -import { HelpModule } from '@components/help'; import { AppComponent } from './app.component'; -import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { HttpClient } from '@angular/common/http'; -import * as services from '@services'; - -import { - NgcCookieConsentModule, - NgcCookieConsentConfig, -} from 'ngx-cookieconsent'; -import { getSaver, SAVER } from '@services/saver.provider'; -import { - DateAdapter, - MAT_DATE_FORMATS, - MAT_DATE_LOCALE, -} from '@angular/material/core'; -import { - MAT_MOMENT_DATE_ADAPTER_OPTIONS, - MAT_MOMENT_DATE_FORMATS, - MomentDateAdapter, -} from '@angular/material-moment-adapter'; -import { TimeseriesResultsMenuModule } from '@components/results-menu/timeseries-results-menu/timeseries-results-menu.module'; - -// info about cookie consent module: https://tinesoft.github.io/ngx-cookieconsent/home -const cookieConfig: NgcCookieConsentConfig = { - autoOpen: false, - cookie: { - domain: window.location.hostname, - }, - position: 'bottom', - theme: 'edgeless', - palette: { - popup: { - background: '#000000', - text: '#ffffff', - link: '#ffffff', - }, - button: { - background: '#236192', - text: '#ffffff', - border: 'transparent', - }, - }, - type: 'info', - content: { - message: - 'This website uses cookies to ensure you get the best experience on our website.', - dismiss: 'Dismiss', - deny: 'Refuse cookies', - link: 'Learn more', - href: 'https://cookiesandyou.com', - policy: 'Cookie Policy', - }, -}; - // AoT requires an exported function for factories export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http); @@ -92,85 +11,3 @@ export function HttpLoaderFactory(http: HttpClient) { export const routes = [ { path: '**', name: 'AppComponent', component: AppComponent }, ]; - -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - TranslateModule.forRoot({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), - BrowserAnimationsModule, - NgcCookieConsentModule.forRoot(cookieConfig), - MatBottomSheetModule, - MatSharedModule, - RouterModule.forRoot(routes, { useHash: true }), - StoreModule.forRoot(store.reducers, { metaReducers: store.metaReducers }), - EffectsModule.forRoot(store.appEffects), - MatSidenavModule, - MatTableModule, - MatSortModule, - SidebarModule, - MapModule, - ResultsMenuModule, - HeaderModule, - MatMenuModule, - MatFormFieldModule, - MatIconModule, - MatDialogModule, - BaselineChartModule, - HelpModule, - ToastrModule.forRoot({ positionClass: 'inline', preventDuplicates: true }), - CodeExportModule, - TimeseriesResultsMenuModule, - ], - providers: [ - services.AsfApiService, - services.AsfLanguageService, - services.UrlStateService, - services.MapService, - services.DrawService, - services.WktService, - services.LayerService, - services.ProductService, - services.BulkDownloadService, - services.SearchParamsService, - services.RangeService, - services.PolygonValidationService, - services.DateExtremaService, - services.EnvironmentService, - services.PropertyService, - services.LegacyAreaFormatService, - services.BannerApiService, - services.ScreenSizeService, - services.KeyboardService, - services.UserDataService, - services.SavedSearchService, - services.UnzipApiService, - services.ScenesService, - services.SearchService, - services.Hyp3ApiService, - services.Hyp3JobStatusService, - services.Hyp3JobService, - services.PossibleHyp3JobsService, - services.OnDemandService, - services.Hyp3JobPollingService, - services.PairService, - services.SceneSelectService, - { provide: SAVER, useFactory: getSaver }, - { - provide: DateAdapter, - useClass: MomentDateAdapter, - deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS], - }, - { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS }, - // { provide: Window, useValue: window }, - ], - bootstrap: [AppComponent], - exports: [MatTableModule], -}) -export class AppModule {} diff --git a/src/app/components/baseline-chart/baseline-chart.component.html b/src/app/components/baseline-chart/baseline-chart.component.html index 2165e3c73..704fd6973 100644 --- a/src/app/components/baseline-chart/baseline-chart.component.html +++ b/src/app/components/baseline-chart/baseline-chart.component.html @@ -1,25 +1,31 @@ -
- -
+@if (breakpoint$ | async; as breakpoint) { +
+ +
+}
diff --git a/src/app/components/baseline-chart/baseline-chart.component.ts b/src/app/components/baseline-chart/baseline-chart.component.ts index a08178bb7..004c6082c 100644 --- a/src/app/components/baseline-chart/baseline-chart.component.ts +++ b/src/app/components/baseline-chart/baseline-chart.component.ts @@ -10,7 +10,7 @@ import { import { combineLatest } from 'rxjs'; import { map, tap, filter } from 'rxjs/operators'; -import { TranslateService } from '@ngx-translate/core'; +import { TranslateService, TranslateModule } from '@ngx-translate/core'; import { Store } from '@ngrx/store'; import { AppState } from '@store'; @@ -23,6 +23,8 @@ import { criticalBaselineFor, CMRProduct } from '@models'; import * as d3 from 'd3'; import * as models from '@models'; import * as services from '@services'; +import { AsyncPipe } from '@angular/common'; +import { ResizedDirective } from '../../directives/resized.directive'; export enum ChartDatasets { MASTER = 0, SELECTED = 1, @@ -41,7 +43,7 @@ interface Point { selector: 'app-baseline-chart', templateUrl: './baseline-chart.component.html', styleUrls: ['./baseline-chart.component.scss'], - standalone: false, + imports: [ResizedDirective, AsyncPipe, TranslateModule], }) export class BaselineChartComponent implements OnInit, OnDestroy { translate = inject(TranslateService); diff --git a/src/app/components/baseline-chart/baseline-chart.module.ts b/src/app/components/baseline-chart/baseline-chart.module.ts deleted file mode 100644 index eae3a4506..000000000 --- a/src/app/components/baseline-chart/baseline-chart.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { MatSharedModule } from '@shared'; - -import { BaselineChartComponent } from './baseline-chart.component'; -import { ResizedEventModule } from '@directives/resized.directive'; -import { TranslateModule } from '@ngx-translate/core'; - -@NgModule({ - declarations: [BaselineChartComponent], - imports: [CommonModule, MatSharedModule, ResizedEventModule, TranslateModule], - exports: [BaselineChartComponent], -}) -export class BaselineChartModule {} diff --git a/src/app/components/baseline-chart/index.ts b/src/app/components/baseline-chart/index.ts index 5184f1775..b57127b6f 100644 --- a/src/app/components/baseline-chart/index.ts +++ b/src/app/components/baseline-chart/index.ts @@ -1,2 +1 @@ export * from './baseline-chart.component'; -export * from './baseline-chart.module'; diff --git a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.html b/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.html index bd0ef3c89..24da2fb12 100644 --- a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.html +++ b/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.html @@ -1,126 +1,126 @@ - - - - {{ 'SEARCH_OPTIONS' | translate }} - - - -
- - -
-
- - - - - {{ 'SCENE' | translate }} - - - -
- -
- @if (shouldUseFramesForReference) { - - } - -
-
-
- {{ 'EXAMPLE' | translate }}: - S1A_IW_SLC__1SSV_20150601T010209_20150601T010236_006173_00808F_20A0 - - -
-
- - -
-
+ + {{ 'SEARCH_OPTIONS' | translate }} + + +
+ + +
+ + } - - - - {{ 'DATA_FILTERS' | translate }} + + + {{ 'SCENE' | translate }} + + +
+ +
+ @if (shouldUseFramesForReference) { + + } + +
+
+
+ {{ 'EXAMPLE' | translate }}: + S1A_IW_SLC__1SSV_20150601T010209_20150601T010236_006173_00808F_20A0 + + +
+
- - - -
- -
-
- -
- +
+
+ } - - - - {{ 'BASELINE_CRITERIA' | translate }} - - - - + + + {{ 'DATA_FILTERS' | translate }} + + + + +
+ +
+
+ +
+
+ } - - + @if (areResultsLoaded) { + + + + {{ 'BASELINE_CRITERIA' | translate }} + + + + + + + }
diff --git a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.ts b/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.ts index b39d18408..1d7415c53 100644 --- a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.ts +++ b/src/app/components/filters-dropdown/baseline-filters/baseline-filters.component.ts @@ -9,6 +9,23 @@ import { SubSink } from 'subsink'; import * as models from '@models'; import { ScreenSizeService } from '@services'; import { beta } from '@models/datasets'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { AsyncPipe } from '@angular/common'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { BaselineFrameReferenceToggleComponent } from '@components/shared/selectors/baseline-frame-reference-toggle/baseline-frame-reference-toggle.component'; +import { DatasetSelectorComponent } from '@components/shared/selectors/dataset-selector/dataset-selector.component'; +import { MasterSceneSelectorComponent } from '@components/shared/selectors/master-scene-selector/master-scene-selector.component'; +import { CopyToClipboardComponent } from '@components/shared/copy-to-clipboard/copy-to-clipboard.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { DateSelectorComponent } from '@components/shared/selectors/date-selector/date-selector.component'; +import { SeasonSelectorComponent } from '@components/shared/selectors/season-selector/season-selector.component'; +import { BaselineSlidersComponent } from './baseline-sliders/baseline-sliders.component'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { MASTER = 'Master', @@ -21,7 +38,24 @@ enum FilterPanel { selector: 'app-baseline-filters', templateUrl: './baseline-filters.component.html', styleUrls: ['./baseline-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + BaselineFrameReferenceToggleComponent, + DatasetSelectorComponent, + MasterSceneSelectorComponent, + CopyToClipboardComponent, + DocsModalComponent, + DateSelectorComponent, + SeasonSelectorComponent, + BaselineSlidersComponent, + AsyncPipe, + TranslateModule, + ], }) export class BaselineFiltersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.module.ts b/src/app/components/filters-dropdown/baseline-filters/baseline-filters.module.ts deleted file mode 100644 index 7fe348e22..000000000 --- a/src/app/components/filters-dropdown/baseline-filters/baseline-filters.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatExpansionModule } from '@angular/material/expansion'; - -import { MatSharedModule, SharedModule } from '@shared'; -import { SeasonSelectorModule } from '@components/shared/selectors/season-selector'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { BaselineFiltersComponent } from './baseline-filters.component'; -import { MasterSceneSelectorModule } from '@components/shared/selectors/master-scene-selector'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; -import { BaselineSlidersModule } from './baseline-sliders'; -import { CopyToClipboardModule } from '@components/shared/copy-to-clipboard'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { BaselineFrameReferenceToggleComponent } from '@components/shared/selectors/baseline-frame-reference-toggle'; -import { DatasetSelectorModule } from '@components/shared/selectors/dataset-selector'; -@NgModule({ - declarations: [BaselineFiltersComponent], - imports: [ - CommonModule, - MatExpansionModule, - MatSharedModule, - SeasonSelectorModule, - MasterSceneSelectorModule, - DateSelectorModule, - SearchTypeSelectorModule, - BaselineSlidersModule, - CopyToClipboardModule, - DocsModalModule, - SharedModule, - BaselineFrameReferenceToggleComponent, - DatasetSelectorModule, - ], - exports: [BaselineFiltersComponent], -}) -export class BaselineFiltersModule {} diff --git a/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.component.ts b/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.component.ts index 4d85ceb8c..35bfa3c0e 100644 --- a/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.component.ts +++ b/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.component.ts @@ -23,6 +23,7 @@ import * as scenesStore from '@store/scenes'; import { SubSink } from 'subsink'; import * as models from '@models'; +import { TranslateModule } from '@ngx-translate/core'; export interface BaselineSlider { slider: any; @@ -33,7 +34,7 @@ export interface BaselineSlider { selector: 'app-baseline-sliders', templateUrl: './baseline-sliders.component.html', styleUrls: ['./baseline-sliders.component.scss'], - standalone: false, + imports: [TranslateModule], }) export class BaselineSlidersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.module.ts b/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.module.ts deleted file mode 100644 index bb21e7c7c..000000000 --- a/src/app/components/filters-dropdown/baseline-filters/baseline-sliders/baseline-sliders.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { BaselineSlidersComponent } from './baseline-sliders.component'; -import { SharedModule } from '@shared'; - -@NgModule({ - declarations: [BaselineSlidersComponent], - imports: [CommonModule, SharedModule], - exports: [BaselineSlidersComponent], -}) -export class BaselineSlidersModule {} diff --git a/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.component.ts b/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.component.ts index 08ddc7ca8..8fdd45c4f 100644 --- a/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.component.ts +++ b/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.component.ts @@ -8,6 +8,20 @@ import * as hyp3Store from '@store/hyp3'; import { SubSink } from 'subsink'; import * as models from '@models'; import { ScreenSizeService } from '@services'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { OnDemandUserSelectorComponent } from '@components/shared/selectors/on-demand-user-selector/on-demand-user-selector.component'; +import { JobIdSelectorComponent } from './job-id-selector/job-id-selector.component'; +import { DateSelectorComponent } from '@components/shared/selectors/date-selector/date-selector.component'; +import { ProjectNameSelectorComponent } from '@components/shared/selectors/project-name-selector/project-name-selector.component'; +import { JobStatusSelectorComponent } from '@components/shared/selectors/job-status-selector/job-status-selector.component'; +import { JobProductNameSelectorComponent } from '@components/shared/selectors/job-product-name-selector/job-product-name-selector.component'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { SEARCH = 'SEARCH_OPTIONS', @@ -19,7 +33,20 @@ enum FilterPanel { selector: 'app-custom-products-filters', templateUrl: './custom-products-filters.component.html', styleUrls: ['./custom-products-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + OnDemandUserSelectorComponent, + JobIdSelectorComponent, + DateSelectorComponent, + ProjectNameSelectorComponent, + JobStatusSelectorComponent, + JobProductNameSelectorComponent, + TranslateModule, + ], }) export class CustomProductsFiltersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.module.ts b/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.module.ts deleted file mode 100644 index 928538b49..000000000 --- a/src/app/components/filters-dropdown/custom-products-filters/custom-products-filters.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatSharedModule } from '@shared'; - -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; -import { ProjectNameSelectorModule } from '@components/shared/selectors/project-name-selector'; -import { CustomProductsFiltersComponent } from './custom-products-filters.component'; -import { JobStatusSelectorModule } from '@components/shared/selectors/job-status-selector'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { JobProductNameSelectorModule } from '@components/shared/selectors/job-product-name-selector'; -import { OnDemandUserSelectorModule } from '@components/shared/selectors/on-demand-user-selector'; -import { JobIdSelectorComponent } from './job-id-selector/job-id-selector.component'; - -import { SharedModule } from '@shared'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { FormsModule } from '@angular/forms'; - -@NgModule({ - declarations: [CustomProductsFiltersComponent, JobIdSelectorComponent], - imports: [ - CommonModule, - MatExpansionModule, - MatSharedModule, - MatFormFieldModule, - MatInputModule, - FormsModule, - DateSelectorModule, - SearchTypeSelectorModule, - ProjectNameSelectorModule, - JobStatusSelectorModule, - JobProductNameSelectorModule, - OnDemandUserSelectorModule, - SharedModule, - ], - exports: [CustomProductsFiltersComponent], -}) -export class CustomProductsFiltersModule {} diff --git a/src/app/components/filters-dropdown/custom-products-filters/job-id-selector/job-id-selector.component.ts b/src/app/components/filters-dropdown/custom-products-filters/job-id-selector/job-id-selector.component.ts index aa296c0e8..670960e90 100644 --- a/src/app/components/filters-dropdown/custom-products-filters/job-id-selector/job-id-selector.component.ts +++ b/src/app/components/filters-dropdown/custom-products-filters/job-id-selector/job-id-selector.component.ts @@ -1,11 +1,21 @@ import { Component, EventEmitter, Input, Output, inject } from '@angular/core'; import { NotificationService } from '@services'; +import { MatFormField, MatInput } from '@angular/material/input'; +import { CdkTextareaAutosize } from '@angular/cdk/text-field'; +import { FormsModule } from '@angular/forms'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'app-job-id-selector', templateUrl: './job-id-selector.component.html', styleUrl: './job-id-selector.component.scss', - standalone: false, + imports: [ + MatFormField, + MatInput, + CdkTextareaAutosize, + FormsModule, + TranslateModule, + ], }) export class JobIdSelectorComponent { private notification = inject(NotificationService); diff --git a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.html b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.html index ecf6033ca..bc7c7c4dc 100644 --- a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.html +++ b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.html @@ -1,243 +1,241 @@ - - - - - {{ 'SEARCH_OPTIONS' | translate }} - - - -
- - - - + @if (breakpoint === breakpoints.MOBILE) { + - -
-
- - - - - {{ 'AREA_OF_INTEREST_OPTIONS' | translate }} - - - - - -
- -
-
- - - - - {{ 'DATE_FILTERS' | translate }} - - - - - -
- -
-
- -
-
- @if (selectedDataset === 'NISAR') { + + {{ 'SEARCH_OPTIONS' | translate }} + + +
+ + + + +
+ + } - - {{ 'PRODUCT_FILTERS' | translate }} + + {{ 'AREA_OF_INTEREST_OPTIONS' | translate }} -
- - +
- } - - - - - @if (selectedDataset !== 'NISAR') { - {{ 'ADDITIONAL_FILTERS' | translate }} - - - } @else { - {{ 'OBSERVATIONAL_FILTERS' | translate }} + + + {{ 'DATE_FILTERS' | translate }} - } - - - -
- @if (selectedDataset !== 'NISAR') { - - } @else { - - } -
-
- - - + +
+ +
+
+ +
+
+ @if (selectedDataset === 'NISAR') { + + + + {{ 'PRODUCT_FILTERS' | translate }} + + + + +
+ + +
+
+ } + - - @if (selectedDataset === 'SENTINEL-1 INTERFEROGRAM (BETA)') { - {{ 'TRACK' | translate }} {{ 'FILTERS' | translate }} - } @else if (selectedDataset !== 'NISAR') { - {{ 'PATH_AND_FRAME_FILTERS' | translate }} + + + @if (selectedDataset !== 'NISAR') { + {{ 'ADDITIONAL_FILTERS' | translate }} + + + } @else { + {{ 'OBSERVATIONAL_FILTERS' | translate }} + + + } + + +
+ @if (selectedDataset !== 'NISAR') { + } @else { - {{ 'TRACK_AND_FRAME_FILTERS' | translate }} + } - + + @if (prop.isRelevant(p.PATH) || prop.isRelevant(p.FRAME)) { + + - - - - -
- {{ 'TO' | translate }} -
- - - - - - {{ 'CAMPAIGN_SELECTOR' | translate }} - - - - - - - - - - {{ 'SLC_BURST_FILTERS' | translate }} - - -
- -
-
- - - - - - OPERA S1 Filters - - -
- -
-
- + + @if (selectedDataset === 'SENTINEL-1 INTERFEROGRAM (BETA)') { + {{ 'TRACK' | translate }} {{ 'FILTERS' | translate }} + } @else if (selectedDataset !== 'NISAR') { + {{ 'PATH_AND_FRAME_FILTERS' | translate }} + } @else { + {{ 'TRACK_AND_FRAME_FILTERS' | translate }} + } + + + + +
+ {{ 'TO' | translate }} +
+ + } + @if (prop.isRelevant(p.MISSION_NAME)) { + + + + {{ 'CAMPAIGN_SELECTOR' | translate }} + + + + + } + @if (selectedDataset === 'SENTINEL-1 BURSTS') { + + + + {{ 'SLC_BURST_FILTERS' | translate }} + + +
+ +
+
+ } + @if (selectedDataset === 'OPERA-S1') { + + + + + OPERA S1 Filters + + +
+ +
+
+ } + +} diff --git a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss index 42874ce74..f862ca5fa 100644 --- a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss +++ b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.scss @@ -9,14 +9,22 @@ .selector-card-spacing { margin-top: 20px; } +.panel-title { + align-items: center; + justify-content: space-between; +} + -.info-icon { - margin-left: 10px; - margin-top: 4px; +.info-text { + flex: none; + font-size: small; + font-style: italic; + font-weight: 400; } + .header { @include themify($themes) { background-color: themed('primary-light'); } -} \ No newline at end of file +} diff --git a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.ts b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.ts index b7f361620..15bec2de9 100644 --- a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.ts +++ b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.component.ts @@ -8,6 +8,28 @@ import * as filtersStore from '@store/filters'; import * as models from '@models'; import { PropertyService, ScreenSizeService } from '@services'; +import { AsyncPipe } from '@angular/common'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { DatasetSelectorComponent } from '@components/shared/selectors/dataset-selector/dataset-selector.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { AoiOptionsComponent } from '@components/shared/aoi-options/aoi-options.component'; +import { DateSelectorComponent } from '@components/shared/selectors/date-selector/date-selector.component'; +import { SeasonSelectorComponent } from '@components/shared/selectors/season-selector/season-selector.component'; +import { ProductScienceSelectorComponent } from '@components/shared/selectors/product-science-selector/product-science-selector.component'; +import { ProductionConfigSelectorComponent } from '@components/shared/selectors/production-config-selector/production-config-selector.component'; +import { OtherSelectorComponent } from '@components/shared/selectors/other-selector/other-selector.component'; +import { ObservationPanelSelectorComponent } from '@components/shared/selectors/observation-panel-selector/observation-panel-selector.component'; +import { PathSelectorComponent } from '@components/shared/selectors/path-selector/path-selector.component'; +import { MissionSelectorComponent } from '@components/shared/selectors/mission-selector/mission-selector.component'; +import { BurstSelectorComponent } from '@components/shared/selectors/burst-selector/burst-selector.component'; +import { OperaS1SelectorComponent } from '@components/shared/selectors/opera-s1-selector/opera-s1-selector.component'; +import { TranslateModule } from '@ngx-translate/core'; // import { TranslateService } from "@ngx-translate/core"; enum FilterPanel { @@ -24,7 +46,28 @@ enum FilterPanel { selector: 'app-dataset-filters', templateUrl: './dataset-filters.component.html', styleUrls: ['./dataset-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + DatasetSelectorComponent, + DocsModalComponent, + AoiOptionsComponent, + DateSelectorComponent, + SeasonSelectorComponent, + ProductScienceSelectorComponent, + ProductionConfigSelectorComponent, + OtherSelectorComponent, + ObservationPanelSelectorComponent, + PathSelectorComponent, + MissionSelectorComponent, + BurstSelectorComponent, + OperaS1SelectorComponent, + AsyncPipe, + TranslateModule, + ], }) export class DatasetFiltersComponent implements OnInit, OnDestroy { prop = inject(PropertyService); diff --git a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.module.ts b/src/app/components/filters-dropdown/dataset-filters/dataset-filters.module.ts deleted file mode 100644 index 4a3c90f8a..000000000 --- a/src/app/components/filters-dropdown/dataset-filters/dataset-filters.module.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { CommonModule } from '@angular/common'; - -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatSelectModule } from '@angular/material/select'; -import { MatSharedModule } from '@shared'; - -import { PathSelectorModule } from '@components/shared/selectors/path-selector'; -import { OtherSelectorModule } from '@components/shared/selectors/other-selector'; -import { SeasonSelectorModule } from '@components/shared/selectors/season-selector'; -import { MissionSelectorModule } from '@components/shared/selectors/mission-selector'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; - -import { DatasetFiltersComponent } from './dataset-filters.component'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { DatasetSelectorModule } from '@components/shared/selectors/dataset-selector'; -import { AoiOptionsModule } from '@components/shared/aoi-options'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { BurstSelectorModule } from '@components/shared/selectors/burst-selector'; -import { OperaS1SelectorModule } from '@components/shared/selectors/opera-s1-selector'; -import { ObservationPanelSelectorModule } from '@components/shared/selectors/observation-panel-selector'; -// import { TranslateModule } from "@ngx-translate/core"; -import { SharedModule } from '@shared'; -import { ProductScienceSelectorComponent } from '@components/shared/selectors/product-science-selector/product-science-selector.component'; -import { ProductionConfigSelectorComponent } from '@components/shared/selectors/production-config-selector/production-config-selector.component'; - -@NgModule({ - declarations: [DatasetFiltersComponent], - imports: [ - CommonModule, - FormsModule, - MatSelectModule, - MatExpansionModule, - MatSharedModule, - DocsModalModule, - MissionSelectorModule, - PathSelectorModule, - OtherSelectorModule, - SeasonSelectorModule, - DateSelectorModule, - DatasetSelectorModule, - AoiOptionsModule, - SearchTypeSelectorModule, - BurstSelectorModule, - OperaS1SelectorModule, - SharedModule, - // TranslateModule - ObservationPanelSelectorModule, - ProductScienceSelectorComponent, - ProductionConfigSelectorComponent, - ], - exports: [DatasetFiltersComponent], -}) -export class DatasetFiltersModule {} diff --git a/src/app/components/filters-dropdown/dataset-filters/index.ts b/src/app/components/filters-dropdown/dataset-filters/index.ts index 82d2e4e53..061339887 100644 --- a/src/app/components/filters-dropdown/dataset-filters/index.ts +++ b/src/app/components/filters-dropdown/dataset-filters/index.ts @@ -1,2 +1 @@ -export * from './dataset-filters.module'; export * from './dataset-filters.component'; diff --git a/src/app/components/filters-dropdown/derived-datasets/derived-datasets.module.ts b/src/app/components/filters-dropdown/derived-datasets/derived-datasets.module.ts deleted file mode 100644 index b43da7c6b..000000000 --- a/src/app/components/filters-dropdown/derived-datasets/derived-datasets.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatMenuModule } from '@angular/material/menu'; - -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatSharedModule } from '@shared'; - -import { DerivedDatasetsComponent } from './derived-datasets.component'; -import { SharedModule } from '@shared'; - -@NgModule({ - declarations: [DerivedDatasetsComponent], - imports: [ - CommonModule, - MatSharedModule, - MatExpansionModule, - MatMenuModule, - SharedModule, - ], - exports: [DerivedDatasetsComponent], -}) -export class DerivedDatasetsModule {} diff --git a/src/app/components/filters-dropdown/filters-dropdown.component.html b/src/app/components/filters-dropdown/filters-dropdown.component.html index d8776fae6..07192e567 100644 --- a/src/app/components/filters-dropdown/filters-dropdown.component.html +++ b/src/app/components/filters-dropdown/filters-dropdown.component.html @@ -1,111 +1,95 @@ -
+@if (searchType$ | async; as selectedSearchType) {
-
-
- - {{ 'SEARCH_FILTERS' | translate }} - - - - {{ 'LIST_SEARCH' | translate }} - - - - {{ 'BASELINE_SEARCH' | translate }} - - - - {{ 'SBAS_SEARCH' | translate }} - - - - {{ 'ON_DEMAND_SEARCH' | translate }} - - - - - - {{ 'EVENT_SEARCH' | translate }} - - - @if (selectedSearchType === searchTypes.DISPLACEMENT) { - {{ 'DISPLACEMENT_SEARCH' | translate }} - } -
-
-
- - @if (frameSelectionEnabled$ | async) { - - } @else { - - +
+
+ @if (selectedSearchType === searchTypes.DATASET) { + {{ 'SEARCH_FILTERS' | translate }} + } + @if (selectedSearchType === searchTypes.LIST) { + {{ 'LIST_SEARCH' | translate }} + } + @if (selectedSearchType === searchTypes.BASELINE) { + {{ 'BASELINE_SEARCH' | translate }} + } + @if (selectedSearchType === searchTypes.SBAS) { + {{ 'SBAS_SEARCH' | translate }} + } + @if (selectedSearchType === searchTypes.CUSTOM_PRODUCTS) { + {{ 'ON_DEMAND_SEARCH' | translate }} + + + } + @if (selectedSearchType === searchTypes.SARVIEWS_EVENTS) { + {{ 'EVENT_SEARCH' | translate }} + } + @if (selectedSearchType === searchTypes.DISPLACEMENT) { + {{ 'DISPLACEMENT_SEARCH' | translate }} + } +
+
+
+ @if (selectedSearchType === searchTypes.DATASET) { + @if (frameSelectionEnabled$ | async) { + + } @else { + + + } } - - - - - - - - - - - - - - - - - - - - - - - @if ( - selectedSearchType === searchTypes.DISPLACEMENT && - breakpoint !== breakpoints.FULL - ) { - - } -
- -
-
+} diff --git a/src/app/components/filters-dropdown/filters-dropdown.component.ts b/src/app/components/filters-dropdown/filters-dropdown.component.ts index f7e8ed66e..e4cff006b 100644 --- a/src/app/components/filters-dropdown/filters-dropdown.component.ts +++ b/src/app/components/filters-dropdown/filters-dropdown.component.ts @@ -25,6 +25,20 @@ import * as models from '@models'; import { Observable } from 'rxjs'; import { areFiltersChanged } from '@store/filters'; import { SBASOverlap } from '@models'; +import { AsyncPipe } from '@angular/common'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { FrameOrderFiltersComponent } from './frame-order-filters/frame-order-filters.component'; +import { DatasetFiltersComponent } from './dataset-filters/dataset-filters.component'; +import { ListFiltersComponent } from './list-filters/list-filters.component'; +import { BaselineFiltersComponent } from './baseline-filters/baseline-filters.component'; +import { SbasFiltersComponent } from './sbas-filters/sbas-filters.component'; +import { CustomProductsFiltersComponent } from './custom-products-filters/custom-products-filters.component'; +import { SarviewsFiltersComponent } from './sarviews-filters/sarviews-filters.component'; +import { TimeseriesFiltersComponent } from './timeseries-filters/timeseries-filters.component'; +import { MaxResultsSelectorComponent } from '@components/shared/max-results-selector/max-results-selector.component'; +import { CancelFilterChangesComponent } from '@components/shared/cancel-filter-changes/cancel-filter-changes.component'; +import { SearchButtonComponent } from '@components/shared/search-button/search-button.component'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'app-filters-dropdown', @@ -38,7 +52,22 @@ import { SBASOverlap } from '@models'; transition('false => true', animate('50ms ease-in')), ]), ], - standalone: false, + imports: [ + DocsModalComponent, + FrameOrderFiltersComponent, + DatasetFiltersComponent, + ListFiltersComponent, + BaselineFiltersComponent, + SbasFiltersComponent, + CustomProductsFiltersComponent, + SarviewsFiltersComponent, + TimeseriesFiltersComponent, + MaxResultsSelectorComponent, + CancelFilterChangesComponent, + SearchButtonComponent, + AsyncPipe, + TranslateModule, + ], }) export class FiltersDropdownComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/filters-dropdown.module.ts b/src/app/components/filters-dropdown/filters-dropdown.module.ts deleted file mode 100644 index 62c445265..000000000 --- a/src/app/components/filters-dropdown/filters-dropdown.module.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; - -import { MatTabsModule } from '@angular/material/tabs'; -import { MatSharedModule } from '@shared'; - -import { SearchButtonModule } from '@components/shared/search-button'; -import { CancelFilterChangesModule } from '@components/shared/cancel-filter-changes'; -import { ClearButtonModule } from '@components/shared/clear-button'; -import { MaxResultsSelectorModule } from '@components/shared/max-results-selector'; - -import { FiltersDropdownComponent } from './filters-dropdown.component'; - -import { ListFiltersModule } from './list-filters'; -import { DatasetFiltersModule } from './dataset-filters'; -import { TimeseriesFiltersModule } from './timeseries-filters'; -import { BaselineFiltersModule } from './baseline-filters'; -import { SbasFiltersModule } from './sbas-filters'; -import { CustomProductsFiltersModule } from './custom-products-filters'; -import { SarviewsFiltersModule } from './sarviews-filters'; -import { SearchSelectorModule } from '@components/shared/selectors/search-selector'; - -import { DocsModalModule } from '@components/shared/docs-modal'; -import { SharedModule } from '@shared'; -import { FrameOrderFiltersComponent } from './frame-order-filters'; - -@NgModule({ - imports: [ - CommonModule, - RouterModule, - - MatTabsModule, - MatSharedModule, - - ListFiltersModule, - DatasetFiltersModule, - BaselineFiltersModule, - SbasFiltersModule, - CustomProductsFiltersModule, - SarviewsFiltersModule, - TimeseriesFiltersModule, - SearchButtonModule, - CancelFilterChangesModule, - ClearButtonModule, - MaxResultsSelectorModule, - SharedModule, - - SearchSelectorModule, - DocsModalModule, - FrameOrderFiltersComponent, - ], - declarations: [FiltersDropdownComponent], - exports: [FiltersDropdownComponent], -}) -export class FiltersDropdownModule {} diff --git a/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.html b/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.html index af7e0758b..7a02d3213 100644 --- a/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.html +++ b/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.html @@ -1,29 +1,28 @@ - - - - {{ 'FRAME_ORDER_FILTERS' | translate }} - - - - - -
- {{ 'TO' | translate }} -
- - -
+ + + {{ 'FRAME_ORDER_FILTERS' | translate }} + + + + +
+ {{ 'TO' | translate }} +
+ + +} diff --git a/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.ts b/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.ts index 8d4cce28e..349f44cfc 100644 --- a/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.ts +++ b/src/app/components/filters-dropdown/frame-order-filters/frame-order-filters.component.ts @@ -1,26 +1,9 @@ import { Component, Input, OnInit, OnDestroy, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { CommonModule } from '@angular/common'; import { MatExpansionModule } from '@angular/material/expansion'; import { MatSelectModule } from '@angular/material/select'; -import { MatSharedModule } from '@shared'; - -import { PathSelectorModule } from '@components/shared/selectors/path-selector'; -import { OtherSelectorModule } from '@components/shared/selectors/other-selector'; -import { SeasonSelectorModule } from '@components/shared/selectors/season-selector'; -import { MissionSelectorModule } from '@components/shared/selectors/mission-selector'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; - -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { DatasetSelectorModule } from '@components/shared/selectors/dataset-selector'; -import { AoiOptionsModule } from '@components/shared/aoi-options'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { BurstSelectorModule } from '@components/shared/selectors/burst-selector'; -import { OperaS1SelectorModule } from '@components/shared/selectors/opera-s1-selector'; - -import { SharedModule } from '@shared'; import { SubSink } from 'subsink'; @@ -32,6 +15,9 @@ import * as filtersStore from '@store/filters'; import * as models from '@models'; import { PropertyService, ScreenSizeService } from '@services'; import { FlightDirectionSelectorComponent } from '@components/shared/selectors/flight-direction-selector/flight-direction-selector.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { PathSelectorComponent } from '@components/shared/selectors/path-selector'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { DATE = 'Date', @@ -45,24 +31,13 @@ enum FilterPanel { @Component({ selector: 'app-frame-order-filters', imports: [ - CommonModule, FormsModule, FlightDirectionSelectorComponent, MatSelectModule, MatExpansionModule, - MatSharedModule, - DocsModalModule, - MissionSelectorModule, - PathSelectorModule, - OtherSelectorModule, - SeasonSelectorModule, - DateSelectorModule, - DatasetSelectorModule, - AoiOptionsModule, - SearchTypeSelectorModule, - BurstSelectorModule, - OperaS1SelectorModule, - SharedModule, + DocsModalComponent, + PathSelectorComponent, + TranslateModule, ], templateUrl: './frame-order-filters.component.html', styleUrl: './frame-order-filters.component.scss', diff --git a/src/app/components/filters-dropdown/list-filters/list-filters.component.html b/src/app/components/filters-dropdown/list-filters/list-filters.component.html index 648d7eba6..6efc96228 100644 --- a/src/app/components/filters-dropdown/list-filters/list-filters.component.html +++ b/src/app/components/filters-dropdown/list-filters/list-filters.component.html @@ -1,151 +1,155 @@
- - - - - - {{ 'SEARCH_OPTIONS' | translate }} - - - -
- - -
-
- - - - {{ 'SEARCH_LIST_INPUT' | translate }} - - - - -
-
-
+ @if (breakpoint === breakpoints.MOBILE) { + + -
-

- {{ 'LIST_TYPE' | translate }} -

-
-
- - - {{ 'SCENE' | translate }} - - - - {{ 'FILE' | translate }} - - -
+ + {{ 'SEARCH_OPTIONS' | translate }} + +
+
+ +
-
- - - + +
+ + +
+
-
-
{{ 'DRAG_AND_DROP' | translate }}
-
-
{{ 'FILES_HERE' | translate }}
-
- (csv, geojson, metalink, kml) +
+

+ {{ 'LIST_TYPE' | translate }} +

+
+
+ + + {{ 'SCENE' | translate }} + + + {{ 'FILE' | translate }} + + +
+
+
+ + + +
+
+
+ {{ 'DRAG_AND_DROP' | translate }}
-
- (csv, geojson) +
+
{{ 'FILES_HERE' | translate }}
+ @if (mode === types.SCENE) { +
+ (csv, geojson, metalink, kml) +
+ } + @if (mode !== types.SCENE) { +
(csv, geojson)
+ }
-
-
-
- - {{ 'EXAMPLE' | translate }} {{ listExamples[mode] }} - -
- - -
+
- {{ 'FILE_IMPORT_SUPPORTED' | translate }} (csv, geojson{{ - mode === types.SCENE ? ', metalink, kml' : '' - }}) + {{ 'EXAMPLE' | translate }} {{ listExamples[mode] }} +
+ + +
+
+ + {{ 'FILE_IMPORT_SUPPORTED' | translate }} (csv, geojson{{ + mode === types.SCENE ? ', metalink, kml' : '' + }}) + +
-
- - - + + + } + }
diff --git a/src/app/components/filters-dropdown/list-filters/list-filters.component.ts b/src/app/components/filters-dropdown/list-filters/list-filters.component.ts index 957a7de80..2d3c6de4e 100644 --- a/src/app/components/filters-dropdown/list-filters/list-filters.component.ts +++ b/src/app/components/filters-dropdown/list-filters/list-filters.component.ts @@ -24,6 +24,24 @@ import * as searchStore from '@store/search'; import * as models from '@models'; import * as services from '@services'; import { ofType } from '@ngrx/effects'; +import { AsyncPipe } from '@angular/common'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { + MatButtonToggleGroup, + MatButtonToggle, +} from '@angular/material/button-toggle'; +import { MatTooltip } from '@angular/material/tooltip'; +import { MatFormField, MatInput } from '@angular/material/input'; +import { FormsModule } from '@angular/forms'; +import { CopyToClipboardComponent } from '@components/shared/copy-to-clipboard/copy-to-clipboard.component'; +import { TranslateModule } from '@ngx-translate/core'; enum ListPanel { SEARCH = 'search', @@ -39,7 +57,23 @@ enum FileErrors { selector: 'app-list-filters', templateUrl: './list-filters.component.html', styleUrls: ['./list-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + DocsModalComponent, + MatButtonToggleGroup, + MatButtonToggle, + MatTooltip, + MatFormField, + MatInput, + FormsModule, + CopyToClipboardComponent, + AsyncPipe, + TranslateModule, + ], }) export class ListFiltersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/list-filters/list-filters.module.ts b/src/app/components/filters-dropdown/list-filters/list-filters.module.ts deleted file mode 100644 index 1edbe707b..000000000 --- a/src/app/components/filters-dropdown/list-filters/list-filters.module.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatButtonToggleModule } from '@angular/material/button-toggle'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; - -import { MatSharedModule } from '@shared'; -import { CopyToClipboardModule } from '@components/shared/copy-to-clipboard'; -import { NgxCsvParserModule } from 'ngx-csv-parser'; - -import { ListFiltersComponent } from './list-filters.component'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { SharedModule } from '@shared'; - -@NgModule({ - declarations: [ListFiltersComponent], - imports: [ - CommonModule, - MatExpansionModule, - SearchTypeSelectorModule, - - FormsModule, - CopyToClipboardModule, - NgxCsvParserModule, - MatFormFieldModule, - MatInputModule, - MatButtonToggleModule, - MatSharedModule, - DocsModalModule, - SharedModule, - ], - exports: [ListFiltersComponent], -}) -export class ListFiltersModule {} diff --git a/src/app/components/filters-dropdown/sarviews-filters/index.ts b/src/app/components/filters-dropdown/sarviews-filters/index.ts index 3f79c21f7..54b3b5da6 100644 --- a/src/app/components/filters-dropdown/sarviews-filters/index.ts +++ b/src/app/components/filters-dropdown/sarviews-filters/index.ts @@ -1,2 +1 @@ export { SarviewsFiltersComponent } from './sarviews-filters.component'; -export { SarviewsFiltersModule } from './sarviews-filters.module'; diff --git a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.html b/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.html index 3f3fe7ded..cfb72e0ec 100644 --- a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.html +++ b/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.html @@ -1,113 +1,109 @@ - - - - - {{ panels.SEARCH }} - - - -
- - -
-
- - - - - {{ 'EVENT_FILTERS' | translate }} - + @if (breakpoint === breakpoints.MOBILE) { + + - - - - -
- -
-
- -
-
- -
-
- -
-
- - - + {{ panels.SEARCH }} + + +
+ + +
+
+ } + - - {{ 'DATE_FILTERS' | translate }} - - - - - -
- -
-
- - - + + {{ 'EVENT_FILTERS' | translate }} + + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ - - {{ 'PRODUCT_FILTERS' | translate }} - - - - - - -
- -
-
- -
-
-
+ + + {{ 'DATE_FILTERS' | translate }} + + + + +
+ +
+ + + + + {{ 'PRODUCT_FILTERS' | translate }} + + + + + +
+ +
+
+ +
+
+ +} diff --git a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.ts b/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.ts index a7ac673ab..06362a9e3 100644 --- a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.ts +++ b/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.component.ts @@ -7,6 +7,23 @@ import * as models from '@models'; import * as scenesStore from '@store/scenes'; import { SubSink } from 'subsink'; +import { AsyncPipe } from '@angular/common'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { SarviewsEventActiveSelectorComponent } from '@components/shared/selectors/sarviews-event-active-selector/sarviews-event-active-selector.component'; +import { SarviewsEventSearchSelectorComponent } from '@components/shared/selectors/sarviews-event-search-selector/sarviews-event-search-selector.component'; +import { SarviewsEventTypeSelectorComponent } from '@components/shared/selectors/sarviews-event-type-selector/sarviews-event-type-selector.component'; +import { SarviewsEventMagnitudeSelectorComponent } from '@components/shared/selectors/sarviews-event-magnitude-selector/sarviews-event-magnitude-selector.component'; +import { DateSelectorComponent } from '@components/shared/selectors/date-selector/date-selector.component'; +import { PathSelectorComponent } from '@components/shared/selectors/path-selector/path-selector.component'; +import { Hyp3JobTypeSelectorComponent } from '@components/shared/selectors/hyp3-job-type-selector/hyp3-job-type-selector.component'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { SEARCH = 'Search Options', @@ -19,7 +36,23 @@ enum FilterPanel { selector: 'app-sarviews-filters', templateUrl: './sarviews-filters.component.html', styleUrls: ['./sarviews-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + DocsModalComponent, + SarviewsEventActiveSelectorComponent, + SarviewsEventSearchSelectorComponent, + SarviewsEventTypeSelectorComponent, + SarviewsEventMagnitudeSelectorComponent, + DateSelectorComponent, + PathSelectorComponent, + Hyp3JobTypeSelectorComponent, + AsyncPipe, + TranslateModule, + ], }) export class SarviewsFiltersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.module.ts b/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.module.ts deleted file mode 100644 index 426b733fe..000000000 --- a/src/app/components/filters-dropdown/sarviews-filters/sarviews-filters.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { SarviewsFiltersComponent } from './sarviews-filters.component'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { SarviewsEventSearchSelectorModule } from '@components/shared/selectors/sarviews-event-search-selector'; -import { SarviewsEventTypeSelectorModule } from '@components/shared/selectors/sarviews-event-type-selector'; -import { SarviewsEventActiveSelectorModule } from '@components/shared/selectors/sarviews-event-active-selector'; -import { SarviewsEventMagnitudeSelectorModule } from '@components/shared/selectors/sarviews-event-magnitude-selector'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { MatIconModule } from '@angular/material/icon'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; -import { PathSelectorModule } from '@components/shared/selectors/path-selector'; -import { Hyp3JobTypeSelectorModule } from '@components/shared/selectors/hyp3-job-type-selector'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { SharedModule } from '@shared'; - -@NgModule({ - declarations: [SarviewsFiltersComponent], - imports: [ - CommonModule, - MatExpansionModule, - SarviewsEventSearchSelectorModule, - SarviewsEventTypeSelectorModule, - SarviewsEventActiveSelectorModule, - SarviewsEventMagnitudeSelectorModule, - DateSelectorModule, - MatIconModule, - SearchTypeSelectorModule, - PathSelectorModule, - Hyp3JobTypeSelectorModule, - DocsModalModule, - SharedModule, - ], - exports: [SarviewsFiltersComponent], -}) -export class SarviewsFiltersModule {} diff --git a/src/app/components/filters-dropdown/sbas-filters/index.ts b/src/app/components/filters-dropdown/sbas-filters/index.ts index d1b2606cd..71c80d126 100644 --- a/src/app/components/filters-dropdown/sbas-filters/index.ts +++ b/src/app/components/filters-dropdown/sbas-filters/index.ts @@ -1,2 +1 @@ -export * from './sbas-filters.module'; export * from './sbas-filters.component'; diff --git a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.html b/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.html index b3cde0cdb..77e230e86 100644 --- a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.html +++ b/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.html @@ -1,107 +1,107 @@ - - - - {{ 'SEARCH_OPTIONS' | translate }} - - - -
- - -
-
- - - - - {{ panels.MASTER | uppercase | translate }} - - + + + {{ 'SEARCH_OPTIONS' | translate }} + + +
+ + +
+
+ } - - @if (shouldUseFramesForReference) { - - } -
- -
-
- {{ 'EXAMPLE' | translate }}: - S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C - - -
-
- + {{ panels.MASTER | uppercase | translate }} + + + - - - - - - {{ 'DATE_FILTERS' | translate }} + +
+ @if (shouldUseFramesForReference) { + + } +
+ +
+
+ {{ 'EXAMPLE' | translate }}: + S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C + + +
+
- - +
+ + } -
- - -
- + @if (areResultsLoaded) { + + + + {{ 'DATE_FILTERS' | translate }} + + + + +
+ + +
+
+ } @@ -118,28 +118,29 @@ - - - - {{ 'LATITUDINAL_OVERLAP_FILTER' | translate }} - - - - -
- -
-
+ + + {{ 'LATITUDINAL_OVERLAP_FILTER' | translate }} + + + + +
+ +
+ + }
diff --git a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.ts b/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.ts index 3e42f4596..fe07edd56 100644 --- a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.ts +++ b/src/app/components/filters-dropdown/sbas-filters/sbas-filters.component.ts @@ -8,6 +8,23 @@ import * as filtersStore from '@store/filters'; import { SubSink } from 'subsink'; import * as models from '@models'; import { ScreenSizeService } from '@services'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { AsyncPipe, UpperCasePipe } from '@angular/common'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { BaselineFrameReferenceToggleComponent } from '@components/shared/selectors/baseline-frame-reference-toggle/baseline-frame-reference-toggle.component'; +import { DatasetSelectorComponent } from '@components/shared/selectors/dataset-selector/dataset-selector.component'; +import { MasterSceneSelectorComponent } from '@components/shared/selectors/master-scene-selector/master-scene-selector.component'; +import { CopyToClipboardComponent } from '@components/shared/copy-to-clipboard/copy-to-clipboard.component'; +import { DocsModalComponent } from '@components/shared/docs-modal/docs-modal.component'; +import { DateSelectorComponent } from '@components/shared/selectors/date-selector/date-selector.component'; +import { SeasonSelectorComponent } from '@components/shared/selectors/season-selector/season-selector.component'; +import { SbasOverlapSelectorComponent } from '@components/shared/selectors/sbas-overlap-selector/sbas-overlap-selector.component'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { SEARCH = 'Search Options', @@ -23,7 +40,25 @@ enum FilterPanel { selector: 'app-sbas-filters', templateUrl: './sbas-filters.component.html', styleUrls: ['./sbas-filters.component.scss'], - standalone: false, + imports: [ + MatAccordion, + + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + BaselineFrameReferenceToggleComponent, + DatasetSelectorComponent, + MasterSceneSelectorComponent, + CopyToClipboardComponent, + DocsModalComponent, + DateSelectorComponent, + SeasonSelectorComponent, + SbasOverlapSelectorComponent, + AsyncPipe, + UpperCasePipe, + TranslateModule, + ], }) export class SbasFiltersComponent implements OnInit, OnDestroy { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.module.ts b/src/app/components/filters-dropdown/sbas-filters/sbas-filters.module.ts deleted file mode 100644 index fd637efc2..000000000 --- a/src/app/components/filters-dropdown/sbas-filters/sbas-filters.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatExpansionModule } from '@angular/material/expansion'; - -import { MatSharedModule } from '@shared'; -import { SeasonSelectorModule } from '@components/shared/selectors/season-selector'; -import { SbasOverlapSelectorModule } from '@components/shared/selectors/sbas-overlap-selector'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { SbasFiltersComponent } from './sbas-filters.component'; -import { MasterSceneSelectorModule } from '@components/shared/selectors/master-scene-selector'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; -import { ResultsMenuModule } from '@components/results-menu'; -import { CopyToClipboardModule } from '@components/shared/copy-to-clipboard'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { SharedModule } from '@shared'; -import { BaselineFrameReferenceToggleComponent } from '@components/shared/selectors/baseline-frame-reference-toggle'; -import { DatasetSelectorModule } from '@components/shared/selectors/dataset-selector'; - -@NgModule({ - declarations: [SbasFiltersComponent], - imports: [ - CommonModule, - MatExpansionModule, - MatSharedModule, - SeasonSelectorModule, - SbasOverlapSelectorModule, - DateSelectorModule, - MasterSceneSelectorModule, - SearchTypeSelectorModule, - ResultsMenuModule, - CopyToClipboardModule, - DocsModalModule, - SharedModule, - DatasetSelectorModule, - BaselineFrameReferenceToggleComponent, - ], - exports: [SbasFiltersComponent], -}) -export class SbasFiltersModule {} diff --git a/src/app/components/filters-dropdown/timeseries-filters/index.ts b/src/app/components/filters-dropdown/timeseries-filters/index.ts index 04cb5dc2d..3377ef63f 100644 --- a/src/app/components/filters-dropdown/timeseries-filters/index.ts +++ b/src/app/components/filters-dropdown/timeseries-filters/index.ts @@ -1,2 +1 @@ -export * from './timeseries-filters.module'; export * from './timeseries-filters.component'; diff --git a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.html b/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.html index a18b93ed7..9cc0ce01b 100644 --- a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.html +++ b/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.html @@ -1,23 +1,23 @@ - - - - {{ 'SEARCH_OPTIONS' | translate }} - - - -
- - -
-
+ + + {{ 'SEARCH_OPTIONS' | translate }} + + +
+ + +
+ + }
diff --git a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.ts b/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.ts index 57cd22a4d..60a6fae96 100644 --- a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.ts +++ b/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.component.ts @@ -7,6 +7,15 @@ import * as scenesStore from '@store/scenes'; import { SubSink } from 'subsink'; import * as models from '@models'; import { ScreenSizeService } from '@services'; +import { + MatAccordion, + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, +} from '@angular/material/expansion'; +import { AsyncPipe } from '@angular/common'; +import { SearchTypeSelectorComponent } from '@components/shared/selectors/search-type-selector/search-type-selector.component'; +import { TranslateModule } from '@ngx-translate/core'; enum FilterPanel { SEARCH = 'Search Options', @@ -21,7 +30,16 @@ enum FilterPanel { selector: 'app-timeseries-filters', templateUrl: './timeseries-filters.component.html', styleUrl: './timeseries-filters.component.scss', - standalone: false, + imports: [ + MatAccordion, + + MatExpansionPanel, + MatExpansionPanelHeader, + MatExpansionPanelTitle, + SearchTypeSelectorComponent, + AsyncPipe, + TranslateModule, + ], }) export class TimeseriesFiltersComponent implements OnDestroy, OnInit { private store$ = inject>(Store); diff --git a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.module.ts b/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.module.ts deleted file mode 100644 index 6c3c8e1d9..000000000 --- a/src/app/components/filters-dropdown/timeseries-filters/timeseries-filters.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatExpansionModule } from '@angular/material/expansion'; - -import { MatSharedModule } from '@shared'; -import { SeasonSelectorModule } from '@components/shared/selectors/season-selector'; -import { SbasOverlapSelectorModule } from '@components/shared/selectors/sbas-overlap-selector'; -import { DateSelectorModule } from '@components/shared/selectors/date-selector'; -import { MasterSceneSelectorModule } from '@components/shared/selectors/master-scene-selector'; -import { SearchTypeSelectorModule } from '@components/shared/selectors/search-type-selector'; -import { ResultsMenuModule } from '@components/results-menu'; -import { CopyToClipboardModule } from '@components/shared/copy-to-clipboard'; -import { DocsModalModule } from '@components/shared/docs-modal'; -import { SharedModule } from '@shared'; -import { TimeseriesFiltersComponent } from './timeseries-filters.component'; - -@NgModule({ - declarations: [TimeseriesFiltersComponent], - imports: [ - CommonModule, - MatExpansionModule, - MatSharedModule, - SeasonSelectorModule, - SbasOverlapSelectorModule, - DateSelectorModule, - MasterSceneSelectorModule, - SearchTypeSelectorModule, - ResultsMenuModule, - CopyToClipboardModule, - DocsModalModule, - SharedModule, - ], - exports: [TimeseriesFiltersComponent], -}) -export class TimeseriesFiltersModule {} diff --git a/src/app/components/header/baseline-header/baseline-header.component.html b/src/app/components/header/baseline-header/baseline-header.component.html index 9a452ed16..d79d5263d 100644 --- a/src/app/components/header/baseline-header/baseline-header.component.html +++ b/src/app/components/header/baseline-header/baseline-header.component.html @@ -1,71 +1,76 @@ - - -