Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
f277813
feat(services): add DisplacementDisclaimerService for shared dialog a…
artisticlight Jan 7, 2026
3401a35
feat(map): add OPERA disclaimer logo to map template
artisticlight Jan 7, 2026
65dac42
style(map): add OPERA logo positioning and hover effects
artisticlight Jan 7, 2026
747d3b6
feat(map): wire up OPERA logo click to open disclaimer dialog
artisticlight Jan 7, 2026
4888f09
refactor(info-bar): remove displacement disclaimer text link
artisticlight Jan 7, 2026
4e51f98
refactor(info-bar): remove unused disclaimer dialog code
artisticlight Jan 7, 2026
6111139
style: fix prettier formatting in map template
artisticlight Jan 7, 2026
890167c
feat(search-type-selector): add disclaimer link for Displacement search
artisticlight Jan 7, 2026
d120193
fix(search-type-selector): adjust disclaimer link size and fix click
artisticlight Jan 7, 2026
cba3a7f
fix(search-type-selector): update disclaimer styling and fix click
artisticlight Jan 7, 2026
e7daff1
style(search-type-selector): move disclaimer down 2px
artisticlight Jan 7, 2026
d1b7f51
refactor(search-type-selector): use translation key for disclaimer
artisticlight Jan 7, 2026
cdbe5df
feat(timeseries-results-menu): add disclaimer link to data credits
artisticlight Jan 7, 2026
df0b218
Merge remote-tracking branch 'Discovery-SearchUI/test' into andy/DS-6…
artisticlight Jan 8, 2026
de74d57
Merge remote-tracking branch 'Discovery-SearchUI/test' into andy/DS-6…
artisticlight Jan 8, 2026
2d334de
npm run lint -- --fix
artisticlight Jan 8, 2026
915e6df
Merge remote-tracking branch 'Discovery-SearchUI/test' into andy/DS-6…
artisticlight Jan 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions src/app/components/header/info-bar/info-bar.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,6 @@
<b>{{ 'PRODUCT_TYPES' | translate }}:</b> {{ eventProductTypes }}
</span>
}
@if ((searchType$ | async) === searchTypes.DISPLACEMENT) {
<span>
<button mat-button (click)="onOpenDispDataDisclaimer()">
<em>{{ 'DISPLACEMENT_DATA_DISCLAIMER' | translate }}</em
><mat-icon>info-icon</mat-icon>
</button>
</span>
}
@if (breakpoint > breakpoints.SMALL && !!startDate) {
<span>
<b>{{ 'START' | translate }}:</b> {{ startDate | shortDate }}
Expand Down
14 changes: 0 additions & 14 deletions src/app/components/header/info-bar/info-bar.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ import { CiSearchComponent } from './ci-search/ci-search.component';
import { ShortDatePipe } from '@pipes/short-date.pipe';
import { JoinPipe } from '@pipes/join.pipe';
import { TranslateModule } from '@ngx-translate/core';
import { DispDataDisclaimerComponent } from '@components/results-menu/timeseries-results-menu/timeseries-displacement-disclaimer-dialog.component';
import { MatDialog } from '@angular/material/dialog';
import { MatIcon } from '@angular/material/icon';

// Declare GTM dataLayer array.
declare global {
Expand All @@ -40,14 +37,12 @@ declare global {
ShortDatePipe,
JoinPipe,
TranslateModule,
MatIcon,
],
})
export class InfoBarComponent implements OnInit, OnDestroy {
private store$ = inject<Store<AppState>>(Store);
private screenSize = inject(services.ScreenSizeService);
private hyp3 = inject(services.Hyp3ApiService);
private dialog = inject(MatDialog);
public searchType: models.SearchType = models.SearchType.DATASET;
public searchTypes = models.SearchType;
public searchType$ = this.store$.select(searchStore.getSearchType);
Expand Down Expand Up @@ -303,15 +298,6 @@ export class InfoBarComponent implements OnInit, OnDestroy {
);
}

public onOpenDispDataDisclaimer() {
this.dialog.open(DispDataDisclaimerComponent, {
width: '550px',
height: '325px',
maxWidth: '550px',
maxHeight: '500px',
});
}

ngOnDestroy() {
this.subs.unsubscribe();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
@if (selectedJobType.id === jobType.id) {
@if (jobType.options.length === 0) {
<div class="no-processing-options">
<h3>{{ 'NO_PROCESSING_OPTIONS_FOR' | translate }} {{ jobType.name }}</h3>
<h3>
{{ 'NO_PROCESSING_OPTIONS_FOR' | translate }} {{ jobType.name }}
</h3>
</div>
} @else {
<div class="flex-row flex-start">
Expand Down
13 changes: 13 additions & 0 deletions src/app/components/map/map.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,19 @@
<img src="/assets/NASA_logo.svg" class="meatball" />
}

@if (
breakpoint > breakpoints.MOBILE && searchType === searchTypes.DISPLACEMENT
) {
<img
src="/assets/opera-disp-logo.png"
class="opera-logo"
(click)="onOpenDispDisclaimer()"
[matTooltip]="'DISPLACEMENT_DATA_DISCLAIMER' | translate"
matTooltipPosition="above"
alt="OPERA Displacement Data Disclaimer"
/>
}

<app-filters-dropdown></app-filters-dropdown>

@if (searchType === searchTypes.DATASET) {
Expand Down
17 changes: 17 additions & 0 deletions src/app/components/map/map.component.scss
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,23 @@ button {
right: 10px;
}

.opera-logo {
position: fixed;
bottom: 30px;
left: 10px;
width: 110px;
height: auto;
cursor: pointer;
pointer-events: auto;
opacity: 0.85;
transition: opacity 0.2s ease;
z-index: 999;

&:hover {
opacity: 1;
}
}

.mobile-map-controls {
pointer-events: auto;
position: fixed;
Expand Down
8 changes: 8 additions & 0 deletions src/app/components/map/map.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import * as sceneStore from '@store/scenes';
import * as models from '@models';
import { CMRProduct, SarviewsEvent } from '@models';
import {
DisplacementDisclaimerService,
MapService,
PointHistoryService,
SarviewsEventsService,
Expand All @@ -43,6 +44,7 @@ import { StyleLike } from 'ol/style/Style';
import { Feature } from 'ol';
import Geometry from 'ol/geom/Geometry';
import { MatDialog } from '@angular/material/dialog';
import { MatTooltipModule } from '@angular/material/tooltip';
import WKT from 'ol/format/WKT';
import { getTimeseriesChartStates } from '@store/charts';
import { MatButton, MatFabButton } from '@angular/material/button';
Expand Down Expand Up @@ -85,6 +87,7 @@ enum FullscreenControls {
AttributionsComponent,
AsyncPipe,
TranslateModule,
MatTooltipModule,
],
})
export class MapComponent implements OnInit, OnDestroy {
Expand All @@ -96,6 +99,7 @@ export class MapComponent implements OnInit, OnDestroy {
private eventMonitoringService = inject(SarviewsEventsService);
dialog = inject(MatDialog);
private pointHistoryService = inject(PointHistoryService);
private disclaimerService = inject(DisplacementDisclaimerService);

@Output() loadUrlState = new EventEmitter<void>();
@ViewChild('overlay', { static: true }) overlayRef: ElementRef;
Expand Down Expand Up @@ -802,6 +806,10 @@ export class MapComponent implements OnInit, OnDestroy {
this.fullscreenControl = FullscreenControls.NONE;
}

public onOpenDispDisclaimer(): void {
this.disclaimerService.open();
}

ngOnDestroy() {
this.subs.unsubscribe();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,8 @@
<div>
<button (click)="onBulkProjectNameUpdate()" mat-menu-item>
{{
'PROJECT_NAME_UPDATE_FOR_JOBS'| translate: { count: products.length }
'PROJECT_NAME_UPDATE_FOR_JOBS'
| translate: { count: products.length }
}}
</button>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,10 @@
>{{ 'DATA_COURTESY_OF' | translate }}&nbsp;OPERA</a
>
|
<a (click)="onOpenDisclaimer()"
>&nbsp;{{ 'DISCLAIMER' | translate }}</a
>
|
<a
href="https://creativecommons.org/publicdomain/zero/1.0/legalcode"
target="_blank"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import * as chartStore from '@store/charts';
import { getTimeseriesChartStates } from '@store/charts';

import {
DisplacementDisclaimerService,
DrawService,
NetcdfService,
PointHistoryService,
Expand Down Expand Up @@ -120,6 +121,7 @@ export class TimeseriesResultsMenuComponent implements OnInit, OnDestroy {
private netcdfService = inject(NetcdfService);
private wktService = inject(WktService);
private dialog = inject(MatDialog);
private disclaimerService = inject(DisplacementDisclaimerService);
snackBar = inject(MatSnackBar);
private document = inject<Document>(DOCUMENT);
private language = inject(AsfLanguageService);
Expand Down Expand Up @@ -459,6 +461,10 @@ export class TimeseriesResultsMenuComponent implements OnInit, OnDestroy {
});
}

public onOpenDisclaimer(): void {
this.disclaimerService.open();
}

public ngOnDestroy() {
this.subs.unsubscribe();
this.pointHistoryService.clearPoints();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@
<div class="hr-wrapper">
<hr class="text-underline" />
</div>
@if (searchType === searchTypes.DISPLACEMENT) {
<span
class="disclaimer-link"
(click)="onOpenDisclaimer(); $event.stopPropagation()"
>
*{{ 'DISCLAIMER' | translate }}
</span>
}
</div>
</div>
<div class="gtm-search-type-selector fx-nogrow">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,3 +242,20 @@
transform: translateY(0);
}
}

.disclaimer-link {
display: inline-block;
font-size: 12px;
font-style: italic;
color: grey;
cursor: pointer;
pointer-events: auto;
margin-left: 10px;
position: relative;
top: 2px;
z-index: 10;

&:hover {
text-decoration: underline;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ import * as userStore from '@store/user';

import * as models from '@models';

import { EnvironmentService, ScreenSizeService } from '@services';
import {
DisplacementDisclaimerService,
EnvironmentService,
ScreenSizeService,
} from '@services';
import { AnalyticsEvent, Breakpoints, derivedDatasets } from '@models';
import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { NgClass, AsyncPipe } from '@angular/common';
Expand Down Expand Up @@ -59,6 +63,7 @@ export class SearchTypeSelectorComponent implements OnInit, OnDestroy {
translate = inject(TranslateService);
private store$ = inject<Store<AppState>>(Store);
private screenSize = inject(ScreenSizeService);
private disclaimerService = inject(DisplacementDisclaimerService);
env = inject(EnvironmentService);

@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
Expand Down Expand Up @@ -241,6 +246,10 @@ export class SearchTypeSelectorComponent implements OnInit, OnDestroy {
event.stopPropagation();
}

public onOpenDisclaimer(): void {
this.disclaimerService.open();
}

ngOnDestroy() {
this.subs.unsubscribe();
}
Expand Down
20 changes: 20 additions & 0 deletions src/app/services/displacement-disclaimer.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { inject, Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs';
import { DispDataDisclaimerComponent } from '@components/results-menu/timeseries-results-menu/timeseries-displacement-disclaimer-dialog.component';

@Injectable({ providedIn: 'root' })
export class DisplacementDisclaimerService {
private dialog = inject(MatDialog);

open(): Observable<void> {
return this.dialog
.open(DispDataDisclaimerComponent, {
width: '550px',
height: '325px',
maxWidth: '550px',
maxHeight: '500px',
})
.afterClosed();
}
}
1 change: 1 addition & 0 deletions src/app/services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,4 @@ export { ExportService } from './export.service';
export { NetcdfService } from './netcdf-service.service';
export { PointHistoryService } from './point-history.service';
export { FrameMapService } from './frame-map.service';
export { DisplacementDisclaimerService } from './displacement-disclaimer.service';
Binary file added src/assets/opera-disp-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.