From d1ab8b6753d06dce0995c2b5a736b032ee1779b9 Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 28 Feb 2024 09:22:55 -0900 Subject: [PATCH 01/88] adds wip nisar dataset entry --- src/app/models/dataset.model.ts | 2 ++ src/app/models/datasets/index.ts | 1 + src/app/models/datasets/nisar.ts | 53 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/app/models/datasets/nisar.ts diff --git a/src/app/models/dataset.model.ts b/src/app/models/dataset.model.ts index 6f0c650c2..9a99b4001 100644 --- a/src/app/models/dataset.model.ts +++ b/src/app/models/dataset.model.ts @@ -67,6 +67,7 @@ export const ers = fromDatasets.ers; export const jers_1 = fromDatasets.jers_1; export const airsar = fromDatasets.airsar; export const seasat = fromDatasets.seasat; +export const nisar = fromDatasets.nisar; export const datasetList: Dataset[] = [ fromDatasets.sentinel_1, @@ -83,6 +84,7 @@ export const datasetList: Dataset[] = [ fromDatasets.jers_1, fromDatasets.airsar, fromDatasets.seasat, + fromDatasets.nisar ]; export const datasetIds = datasetList.map(dataset => dataset.id); diff --git a/src/app/models/datasets/index.ts b/src/app/models/datasets/index.ts index 2fca65ae8..b514e2b3e 100644 --- a/src/app/models/datasets/index.ts +++ b/src/app/models/datasets/index.ts @@ -12,3 +12,4 @@ export * from './sirc'; export * from './avnir'; export * from './sentinel-1-burst'; export * from './opera_s1'; +export * from './nisar'; diff --git a/src/app/models/datasets/nisar.ts b/src/app/models/datasets/nisar.ts new file mode 100644 index 000000000..b1d63fc0a --- /dev/null +++ b/src/app/models/datasets/nisar.ts @@ -0,0 +1,53 @@ +import { Props } from '../filters.model'; + +export const nisar = { + id: 'NISAR', + name: 'NISAR', + subName: '', + beta: true, + properties: [ + Props.DATE, + // Props.BEAM_MODE, + // Props.FLIGHT_DIRECTION, + // Props.POLARIZATION, + // Props.ABSOLUTE_ORBIT, + // Props.BASELINE_TOOL, + // Props.SUBTYPE, + // Props.PATH, + ], + apiValue: { dataset: 'NISAR' }, + date: { start: new Date('2024/01/01 03:44:43 UTC') }, + infoUrl: 'https://nisar.jpl.nasa.gov', + citationUrl: 'https://asf.alaska.edu/nisar/', + frequency: 'L-Band', + source: { + name: 'JPL', + url: 'https://nisar.jpl.nasa.gov' + }, + productTypes: [ + // { + // apiValue: 'BURST', + // displayName: 'SLC Burst (BURST)' + // } + ], + beamModes: [ + // 'IW', 'EW' + ], + polarizations: [ + // 'VV', + // 'HH', + // 'HV', + // 'VH' + ], + subtypes: [ +// { +// displayName: 'Sentinel-1A', +// apiValue: 'SA', +// }, { +// displayName: 'Sentinel-1B', +// apiValue: 'SB', +// } +], + platformDesc: 'NISAR_DESC', + platformIcon: '/assets/icons/satellite_alt_black_48dp.svg', +}; From 7b965a12cb002984290498e760cada792c2d8c28 Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 20 Mar 2024 16:26:34 -0800 Subject: [PATCH 02/88] makes search count update whenever changing/setting maturity --- src/app/services/environment.service.ts | 8 +- src/app/store/search/search.effect.ts | 155 +++++++++++++++--------- 2 files changed, 104 insertions(+), 59 deletions(-) diff --git a/src/app/services/environment.service.ts b/src/app/services/environment.service.ts index 49a4d0397..503cd426c 100644 --- a/src/app/services/environment.service.ts +++ b/src/app/services/environment.service.ts @@ -1,5 +1,8 @@ import { Injectable } from '@angular/core'; import { env } from './env'; +import { Store } from '@ngrx/store'; +import { AppState } from '@store'; +import { SetSearchOutOfDate } from '@store/search'; export interface Environments { prod: Environment; @@ -34,7 +37,7 @@ export class EnvironmentService { public maturity: string; public isProd: boolean; - constructor() { + constructor(private $store: Store) { this.isProd = env.defaultEnv === 'prod'; this.envs = this.loadEnvs(); @@ -65,10 +68,12 @@ export class EnvironmentService { public setMaturity(maturity: string): void { this.maturity = maturity; localStorage.setItem(this.maturityKey, this.maturity); + this.$store.dispatch(new SetSearchOutOfDate(true)); } public setEnvs(envs: any): void { this.envs = envs; + this.$store.dispatch(new SetSearchOutOfDate(true)); } private loadWithCustom(): Environments { @@ -91,5 +96,6 @@ export class EnvironmentService { public resetToDefault(): void { this.envs = this.loadFromEnvFile(); + this.$store.dispatch(new SetSearchOutOfDate(true)); } } diff --git a/src/app/store/search/search.effect.ts b/src/app/store/search/search.effect.ts index d3180d62f..f4325f05b 100644 --- a/src/app/store/search/search.effect.ts +++ b/src/app/store/search/search.effect.ts @@ -36,6 +36,7 @@ import { Feature } from 'ol'; import Geometry from 'ol/geom/Geometry'; import { FiltersActionType } from '@store/filters'; import { getIsFiltersMenuOpen, getIsResultsMenuOpen } from '@store/ui'; +import * as searchStore from '@store/search'; @Injectable() export class SearchEffects { private vectorSource = new VectorSource({ @@ -78,11 +79,49 @@ export class SearchEffects { ) )); + public onUpdateMaturity = createEffect(() => this.actions$.pipe( + ofType(SearchActionType.SET_SEARCH_OUT_OF_DATE), + withLatestFrom(this.searchParams$.getlatestParams), + map(([_, y]) => y), + debounceTime(200), + withLatestFrom(this.store$.select(getSearchType)), + filter(([_, searchType]) => searchType !== SearchType.SARVIEWS_EVENTS + && searchType !== SearchType.CUSTOM_PRODUCTS + && searchType !== SearchType.BASELINE + && searchType !== SearchType.SBAS), + map(([params, _]) => ({ ...params, output: 'COUNT' })), + tap(_ => + this.store$.dispatch(new searchStore.SearchAmountLoading()) + ), + switchMap(params => { + return this.asfApiService.query(params).pipe( + catchError(resp => { + const { error } = resp; + if (!resp.ok || error && error.includes('VALIDATION_ERROR')) { + return of(0); + } + + return of(-1); + }) + ); + } + ), + map(searchAmount => { + const amount = +searchAmount; + + // if (amount < 0) { + // this.setErrorBanner(); + // } + + this.store$.dispatch(new searchStore.SetSearchAmount(amount)); + }) + ), {dispatch: false}); + public setEventSearchProductsOnClear = createEffect(() => this.actions$.pipe( ofType(ScenesActionType.CLEAR), withLatestFrom(this.store$.select(getSearchType)), switchMap(([_, searchType]) => { - if(searchType === SearchType.SARVIEWS_EVENTS) { + if (searchType === SearchType.SARVIEWS_EVENTS) { return this.sarviewsService.getSarviewsEvents$ } else { return of([]) @@ -141,13 +180,13 @@ export class SearchEffects { public searchResponse = createEffect(() => this.actions$.pipe( ofType(SearchActionType.SEARCH_RESPONSE), switchMap(action => { - let output : any[] = [ + let output: any[] = [ new scenesStore.SetScenes({ products: action.payload.files, searchType: action.payload.searchType }) ]; - if(action.payload.totalCount) { + if (action.payload.totalCount) { output.push(new SetSearchAmount(action.payload.totalCount)) } return output @@ -183,7 +222,7 @@ export class SearchEffects { } }, []); - const params = {'granule_list': (granuleNames).join(',')}; + const params = { 'granule_list': (granuleNames).join(',') }; return this.asfApiService.query(params); }), @@ -272,8 +311,8 @@ export class SearchEffects { withLatestFrom(this.store$.select(getAreResultsLoaded)), filter(([[[_, searchtype], outOfdate], loaded]) => !outOfdate && searchtype === models.SearchType.DATASET && loaded), ).pipe( - map(_ => new SetSearchOutOfDate(true)) - )); + map(_ => new SetSearchOutOfDate(true)) + )); public setSearchUpToDate = createEffect(() => this.actions$.pipe( ofType(SearchActionType.MAKE_SEARCH, @@ -295,27 +334,27 @@ export class SearchEffects { ([params]) => forkJoin( this.asfApiService.query(params) ).pipe( - withLatestFrom(combineLatest([ - this.store$.select(getSearchType), - this.store$.select(getIsCanceled)] - )), - map(([[response], [searchType, isCanceled]]) => - !isCanceled ? - new SearchResponse({ - files: this.productService.fromResponse(response), - searchType - }) : - new SearchCanceled() - ), - catchError( - (err: HttpErrorResponse) => { - if (err.status !== 400) { - return of(new SearchError(`Unknown Error`)); - } - return EMPTY; + withLatestFrom(combineLatest([ + this.store$.select(getSearchType), + this.store$.select(getIsCanceled)] + )), + map(([[response], [searchType, isCanceled]]) => + !isCanceled ? + new SearchResponse({ + files: this.productService.fromResponse(response), + searchType + }) : + new SearchCanceled() + ), + catchError( + (err: HttpErrorResponse) => { + if (err.status !== 400) { + return of(new SearchError(`Unknown Error`)); } - ), - )) + return EMPTY; + } + ), + )) ); public asfApiBaselineQuery$(): Observable { @@ -458,39 +497,39 @@ export class SearchEffects { private hyp3JobToProducts(jobs, products) { const virtualProducts = jobs - .filter(job => products[job.job_parameters.granules[0]]) - .map(job => { - const product = products[job.job_parameters.granules[0]]; - const jobFile = !!job.files ? - job.files[0] : - { size: -1, url: '', filename: product.name }; - - const scene_keys = job.job_parameters.granules; - job.job_parameters.scenes = []; - for (const scene_key of scene_keys) { - job.job_parameters.scenes.push(products[scene_key]); - } - - const jobProduct = { - ...product, - browses: job.browse_images ? job.browse_images : ['assets/no-browse.png'], - thumbnail: job.thumbnail_images ? job.thumbnail_images[0] : 'assets/no-thumb.png', - productTypeDisplay: `${job.job_type}, ${product.metadata.productType} `, - downloadUrl: jobFile.url, - bytes: jobFile.size, - groupId: job.job_id, - id: job.job_id, - isDummyProduct: true, - metadata: { - ...product.metadata, - fileName: jobFile.filename || '', - productType: job.job_type, - job - }, - }; + .filter(job => products[job.job_parameters.granules[0]]) + .map(job => { + const product = products[job.job_parameters.granules[0]]; + const jobFile = !!job.files ? + job.files[0] : + { size: -1, url: '', filename: product.name }; + + const scene_keys = job.job_parameters.granules; + job.job_parameters.scenes = []; + for (const scene_key of scene_keys) { + job.job_parameters.scenes.push(products[scene_key]); + } - return jobProduct - }); + const jobProduct = { + ...product, + browses: job.browse_images ? job.browse_images : ['assets/no-browse.png'], + thumbnail: job.thumbnail_images ? job.thumbnail_images[0] : 'assets/no-thumb.png', + productTypeDisplay: `${job.job_type}, ${product.metadata.productType} `, + downloadUrl: jobFile.url, + bytes: jobFile.size, + groupId: job.job_id, + id: job.job_id, + isDummyProduct: true, + metadata: { + ...product.metadata, + fileName: jobFile.filename || '', + productType: job.job_type, + job + }, + }; + + return jobProduct + }); return virtualProducts; } From e8d59f24325ac88c05ccc4c0dc55dfa6fe62a394 Mon Sep 17 00:00:00 2001 From: kim Date: Thu, 21 Mar 2024 09:55:25 -0800 Subject: [PATCH 03/88] removes commented if block from searchEffect block --- src/app/store/search/search.effect.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/app/store/search/search.effect.ts b/src/app/store/search/search.effect.ts index f4325f05b..499813bd9 100644 --- a/src/app/store/search/search.effect.ts +++ b/src/app/store/search/search.effect.ts @@ -109,13 +109,9 @@ export class SearchEffects { map(searchAmount => { const amount = +searchAmount; - // if (amount < 0) { - // this.setErrorBanner(); - // } - - this.store$.dispatch(new searchStore.SetSearchAmount(amount)); + this.store$.dispatch(new searchStore.SetSearchAmount(amount)); }) - ), {dispatch: false}); + ), { dispatch: false }); public setEventSearchProductsOnClear = createEffect(() => this.actions$.pipe( ofType(ScenesActionType.CLEAR), From 39e46ff5ed4d4a13a81b815f120fa564217fc16f Mon Sep 17 00:00:00 2001 From: kim Date: Thu, 21 Mar 2024 12:38:32 -0800 Subject: [PATCH 04/88] makes nisar products downloadable --- src/app/services/product.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/services/product.service.ts b/src/app/services/product.service.ts index 7bc95f315..d9ba69038 100644 --- a/src/app/services/product.service.ts +++ b/src/app/services/product.service.ts @@ -40,7 +40,7 @@ export class ProductService { productTypeDisplay: g.ptd || g.gn, file: filename, id: g.pid.replace('{gn}', g.gn), - downloadUrl: g.du.replace('{gn}', g.gn), + downloadUrl: g.du.replaceAll('{gn}', g.gn), bytes: g.s * 1000000, dataset: (g.d === 'STS-59' || g.d === 'STS-68') ? 'SIR-C' : g.d, browses, From 0f3451ab04a850b1acb6214c5500ba7d12c3c77b Mon Sep 17 00:00:00 2001 From: kim Date: Thu, 21 Mar 2024 17:20:19 -0800 Subject: [PATCH 05/88] downloading nisar data now possible. Adds shortname filter, temp nisar description --- .../cart-toggle/cart-toggle.component.html | 1 + .../cart-toggle/cart-toggle.component.scss | 8 + .../other-selector.component.html | 7 + .../other-selector.component.scss | 4 + .../other-selector.component.ts | 4 + .../other-selector/other-selector.module.ts | 3 + .../path-selector.component.html | 5 + .../path-selector/path-selector.component.ts | 10 +- .../selectors/short-name-selector/index.ts | 2 + .../short-name-selector.component.html | 24 ++ .../short-name-selector.component.scss | 7 + .../short-name-selector.component.ts | 60 +++++ .../short-name-selector.module.ts | 27 +++ src/app/models/dataset.model.ts | 9 +- src/app/models/datasets/nisar.ts | 206 +++++++++++++++++- src/app/services/search-params.service.ts | 10 + src/app/services/url-state.service.ts | 22 ++ src/app/store/filters/filters.action.ts | 9 +- src/app/store/filters/filters.reducer.ts | 21 +- src/assets/i18n/en.json | 4 + src/styles.scss | 4 + 21 files changed, 430 insertions(+), 17 deletions(-) create mode 100644 src/app/components/shared/selectors/short-name-selector/index.ts create mode 100644 src/app/components/shared/selectors/short-name-selector/short-name-selector.component.html create mode 100644 src/app/components/shared/selectors/short-name-selector/short-name-selector.component.scss create mode 100644 src/app/components/shared/selectors/short-name-selector/short-name-selector.component.ts create mode 100644 src/app/components/shared/selectors/short-name-selector/short-name-selector.module.ts diff --git a/src/app/components/shared/cart-toggle/cart-toggle.component.html b/src/app/components/shared/cart-toggle/cart-toggle.component.html index 46982a3cd..6c3667e07 100644 --- a/src/app/components/shared/cart-toggle/cart-toggle.component.html +++ b/src/app/components/shared/cart-toggle/cart-toggle.component.html @@ -1,4 +1,5 @@ add_shopping_cart diff --git a/src/app/components/shared/cart-toggle/cart-toggle.component.scss b/src/app/components/shared/cart-toggle/cart-toggle.component.scss index e69de29bb..72d885c96 100644 --- a/src/app/components/shared/cart-toggle/cart-toggle.component.scss +++ b/src/app/components/shared/cart-toggle/cart-toggle.component.scss @@ -0,0 +1,8 @@ +@import "asf-theme"; + +.cart-toggle-button { + text-decoration: none; + @include themify($themes) { + color: themed('dark-primary-text'); + } +} \ No newline at end of file diff --git a/src/app/components/shared/selectors/other-selector/other-selector.component.html b/src/app/components/shared/selectors/other-selector/other-selector.component.html index 89a8d5fed..f8c2b9b9e 100644 --- a/src/app/components/shared/selectors/other-selector/other-selector.component.html +++ b/src/app/components/shared/selectors/other-selector/other-selector.component.html @@ -5,6 +5,7 @@ *ngIf="dataset.id !== 'SENTINEL-1 BURSTS'"> + + + + diff --git a/src/app/components/shared/selectors/other-selector/other-selector.component.scss b/src/app/components/shared/selectors/other-selector/other-selector.component.scss index d4276533d..f41aad7d8 100644 --- a/src/app/components/shared/selectors/other-selector/other-selector.component.scss +++ b/src/app/components/shared/selectors/other-selector/other-selector.component.scss @@ -2,3 +2,7 @@ mat-form-field { margin-right: 10px; margin-bottom: 10px; } + +.short-name-selector { + width: 100%; +} \ No newline at end of file diff --git a/src/app/components/shared/selectors/other-selector/other-selector.component.ts b/src/app/components/shared/selectors/other-selector/other-selector.component.ts index 561c33bcd..96e4b436f 100644 --- a/src/app/components/shared/selectors/other-selector/other-selector.component.ts +++ b/src/app/components/shared/selectors/other-selector/other-selector.component.ts @@ -85,6 +85,10 @@ export class OtherSelectorComponent implements OnInit, OnDestroy { this.store$.dispatch(new filtersStore.SetProductTypes(productTypes)); } + public onNewShortNames(shortNames: models.DatasetShortName): void { + this.store$.dispatch(new filtersStore.setShortNames(shortNames)); + } + public onNewMaxResults(maxResults): void { this.store$.dispatch(new filtersStore.SetMaxResults(maxResults)); } diff --git a/src/app/components/shared/selectors/other-selector/other-selector.module.ts b/src/app/components/shared/selectors/other-selector/other-selector.module.ts index 4df09e387..e9b595310 100644 --- a/src/app/components/shared/selectors/other-selector/other-selector.module.ts +++ b/src/app/components/shared/selectors/other-selector/other-selector.module.ts @@ -7,6 +7,8 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { MatSharedModule } from '@shared'; import { ProductTypeSelectorModule } from '@components/shared/selectors/product-type-selector'; +import { ShortNameSelectorModule } from '@components/shared/selectors/short-name-selector'; + import { OtherSelectorComponent } from './other-selector.component'; import { BurstSelectorModule } from '../burst-selector'; import { SharedModule } from "@shared"; @@ -22,6 +24,7 @@ import { OperaCalibrationDataSelectorModule } from '../opera-calibration-data-se MatButtonToggleModule, MatSharedModule, ProductTypeSelectorModule, + ShortNameSelectorModule, BurstSelectorModule, SharedModule, MatInputModule, diff --git a/src/app/components/shared/selectors/path-selector/path-selector.component.html b/src/app/components/shared/selectors/path-selector/path-selector.component.html index 79844dfa2..bf2ec390e 100644 --- a/src/app/components/shared/selectors/path-selector/path-selector.component.html +++ b/src/app/components/shared/selectors/path-selector/path-selector.component.html @@ -6,6 +6,7 @@ class="date-item" [class.invalid-input-animation]="typeHasError(inputTypes.PATH_START)"> - + + + + + + {{limitedExportString()}} diff --git a/src/app/components/header/queue/queue.component.ts b/src/app/components/header/queue/queue.component.ts index 713a59377..272ff0111 100644 --- a/src/app/components/header/queue/queue.component.ts +++ b/src/app/components/header/queue/queue.component.ts @@ -48,6 +48,7 @@ export class QueueComponent implements OnInit, OnDestroy { public previousQueue: any[] | null = null; public areAnyProducts = false; + public areAnyS3Products = false; public style: object = {}; public dlWidth = 1000; @@ -87,6 +88,9 @@ export class QueueComponent implements OnInit, OnDestroy { 0 )) ); + public numberOfS3Products$ = this.products$.pipe( + map(products => products.filter(product => !!product.metadata.s3URI).length) + ) private subs = new SubSink(); @@ -181,10 +185,11 @@ export class QueueComponent implements OnInit, OnDestroy { } - public onCopyQueueURLs(products: CMRProduct[]): void { + public onCopyQueueURLs(products: CMRProduct[], useS3Urls: boolean = false): void { const productListStr = products .filter(product => !product.isUnzippedFile) - .map(product => product.downloadUrl) + .map(product => useS3Urls ? product.metadata?.s3URI ?? null : product.downloadUrl) + .filter(url => !!url) .join('\n'); this.clipboardService.copyFromContent(productListStr); const lines = this.lineCount(productListStr); diff --git a/src/app/components/results-menu/scene-detail/scene-detail.component.ts b/src/app/components/results-menu/scene-detail/scene-detail.component.ts index a4d914b44..11ddf81cb 100644 --- a/src/app/components/results-menu/scene-detail/scene-detail.component.ts +++ b/src/app/components/results-menu/scene-detail/scene-detail.component.ts @@ -66,7 +66,8 @@ export class SceneDetailComponent implements OnInit, OnDestroy { public isBrowseOverlayEnabled$: Observable = this.browseOverlayService.isBrowseOverlayEnabled$; public isBrowseOverlayEnabled = false; - + public copyIcons = models.CopyIcons; + private selectedSarviewsProductIndex$ = this.store$.select(scenesStore.getSelectedSarviewsProduct).pipe( filter(product => !!product), withLatestFrom(this.selectedSarviewsEventProducts$), diff --git a/src/app/components/results-menu/scene-files/scene-file/scene-file.component.html b/src/app/components/results-menu/scene-files/scene-file/scene-file.component.html index 6a1acdf31..72b59041e 100644 --- a/src/app/components/results-menu/scene-files/scene-file/scene-file.component.html +++ b/src/app/components/results-menu/scene-files/scene-file/scene-file.component.html @@ -47,11 +47,25 @@ - + + )" prompt="{{ 'COPY_FILE_ID' | translate }}" + > + + + \ No newline at end of file diff --git a/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.component.ts b/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.component.ts index 2e568d6be..a050a8c71 100644 --- a/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.component.ts +++ b/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.component.ts @@ -4,9 +4,10 @@ import { SubSink } from 'subsink'; import { of } from 'rxjs'; import { tap, delay } from 'rxjs/operators'; -import { faCopy } from '@fortawesome/free-solid-svg-icons'; +import { IconDefinition } from '@fortawesome/free-solid-svg-icons'; import { ClipboardService } from 'ngx-clipboard'; import { NotificationService } from '@services/notification.service'; +import { CopyIcons } from '@models'; @Component({ selector: 'app-copy-to-clipboard', @@ -15,13 +16,13 @@ import { NotificationService } from '@services/notification.service'; }) export class CopyToClipboardComponent implements OnDestroy { @Input() value: string; + @Input({required: false}) submenu: [string, string][] = []; @Input() prompt = 'Copy to clipboard'; @Input() notification = 'Copied'; @Input() toast = true; - + @Input({required: false}) copyIcon: IconDefinition = CopyIcons.COPY; @ViewChild('copyTooltip', { static: true }) copyTooltip: ElementRef; - public copyIcon = faCopy; private subs = new SubSink(); constructor( @@ -47,6 +48,22 @@ export class CopyToClipboardComponent implements OnDestroy { e.stopPropagation(); } + public onCopyFromMenu(prompt: string, value: string) { + this.clipboardService.copyFromContent(value); + if (this.toast) { + this.notificationService.linkCopyIcon(prompt, value.split(',').length); + } + + this.subs.add( + of((' ' + prompt).slice(1)).pipe( + tap(() => prompt = this.notification), + delay(2200) + ).subscribe( + msg => prompt = msg + ) + ); + } + ngOnDestroy() { this.subs.unsubscribe(); } diff --git a/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.module.ts b/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.module.ts index 61534d1e0..be1cda1bc 100644 --- a/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.module.ts +++ b/src/app/components/shared/copy-to-clipboard/copy-to-clipboard.module.ts @@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common'; import { CopyToClipboardComponent } from './copy-to-clipboard.component'; import { MatSharedModule } from '@shared'; - +import { MatMenuModule } from '@angular/material/menu'; import { ClipboardModule } from 'ngx-clipboard'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @@ -14,6 +14,7 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; FontAwesomeModule, ClipboardModule, MatSharedModule, + MatMenuModule ], exports: [CopyToClipboardComponent] }) diff --git a/src/app/models/cmr-product.model.ts b/src/app/models/cmr-product.model.ts index 5c673ec51..4b21a2d98 100644 --- a/src/app/models/cmr-product.model.ts +++ b/src/app/models/cmr-product.model.ts @@ -60,6 +60,7 @@ export interface CMRProductMetadata { // OPERA-S1 opera: OperaS1Metadata | null; + nisar: NISARMetadata | null; fileName: string | null; job: Hyp3Job | null; @@ -67,8 +68,9 @@ export interface CMRProductMetadata { // versioning pgeVersion: number | null; - // BURST XML, OPERA-S1 + // BURST XML, OPERA-S1, NISAR subproducts: any[]; + s3URI?: string; parentID: string; } @@ -89,6 +91,11 @@ export interface OperaS1Metadata { validityStartDate?: moment.Moment | null; } +export interface NISARMetadata { + additionalUrls: string[]; + s3Urls: string[]; +} + export enum FlightDirection { ASCENDING = 'ASCENDING', DESCENDING = 'DESCENDING', diff --git a/src/app/models/copy-icon.model.ts b/src/app/models/copy-icon.model.ts new file mode 100644 index 000000000..6a403a45b --- /dev/null +++ b/src/app/models/copy-icon.model.ts @@ -0,0 +1,6 @@ +import { faCopy, faLink } from '@fortawesome/free-solid-svg-icons'; + +export const CopyIcons = { + COPY: faCopy, + LINK: faLink, +} \ No newline at end of file diff --git a/src/app/models/index.ts b/src/app/models/index.ts index 5dbf6da79..17ed7f6ab 100644 --- a/src/app/models/index.ts +++ b/src/app/models/index.ts @@ -28,3 +28,4 @@ export * from './download.model'; export * from './event-product-sort.model'; export * from './asf-website.model'; export * from './mapbox.model'; +export * from './copy-icon.model'; diff --git a/src/app/services/notification.service.ts b/src/app/services/notification.service.ts index 4c37c748c..3379ddc8f 100644 --- a/src/app/services/notification.service.ts +++ b/src/app/services/notification.service.ts @@ -103,6 +103,24 @@ export class NotificationService { } } + public linkCopyIcon(prompt: string, count: number) { + let contentType = prompt.includes('S3') ? 'S3 Url' : 'Download Url'; + + let headerText: string; + let infoText: string; + + if (count > 1) { + headerText = `${contentType}s Copied`; + infoText = `${count} ${contentType}s copied`; + + this.info(infoText, headerText); + } else { + infoText = `${contentType} Copied`; + + this.info(infoText); + } + } + public closeFiltersPanel() { this.info('Filters dismissed and not applied'); } diff --git a/src/app/services/product.service.ts b/src/app/services/product.service.ts index d9ba69038..d7ad31e40 100644 --- a/src/app/services/product.service.ts +++ b/src/app/services/product.service.ts @@ -9,61 +9,61 @@ import * as models from '@models'; export class ProductService { public fromResponse = (resp: any): models.CMRProduct[] => { const products = (resp.results || []) - .map( - (g: any): models.CMRProduct => { - let browses: string[] = []; - - if (Array.isArray(g.b)) { - if (g.b.length > 0) { - browses = g.b.map( - (b: any): string => { - return (b.replace('{gn}', g.gn)); - }); + .map( + (g: any): models.CMRProduct => { + let browses: string[] = []; + + if (Array.isArray(g.b)) { + if (g.b.length > 0) { + browses = g.b.map( + (b: any): string => { + return (b.replace('{gn}', g.gn)); + }); + } else { + browses = ['/assets/no-browse.png']; + } } else { - browses = ['/assets/no-browse.png']; + if (g.b) { + browses = [g.b]; + } else { + browses = ['/assets/no-browse.png']; + } } - } else { - if (g.b) { - browses = [g.b]; - } else { - browses = ['/assets/no-browse.png']; + + const thumbnail = (g.t ? g.t.replace('{gn}', g.gn) : g.t) || (!browses[0].includes('no-browse') ? browses[0].replace('{gn}', g.gn) : '/assets/no-thumb.png'); + let filename = g.fn.replace('{gn}', g.gn); + if (!filename.includes(g.gn)) { + filename = `${g.gn}-${filename}`; } - } + let product = { + name: g.gn, + productTypeDisplay: g.ptd || g.gn, + file: filename, + id: g.pid.replace('{gn}', g.gn), + downloadUrl: g.du.replaceAll('{gn}', g.gn), + bytes: g.s * 1000000, + dataset: (g.d === 'STS-59' || g.d === 'STS-68') ? 'SIR-C' : g.d, + browses, + thumbnail, + groupId: g.gid.replace('{gn}', g.gn), + isUnzippedFile: false, + isDummyProduct: false, + metadata: this.getMetadataFrom(g) + }; - const thumbnail = (g.t ? g.t.replace('{gn}', g.gn) : g.t) || (!browses[0].includes('no-browse') ? browses[0].replace('{gn}', g.gn) : '/assets/no-thumb.png'); - let filename = g.fn.replace('{gn}', g.gn); - if ( !filename.includes(g.gn)) { - filename = `${g.gn}-${filename}`; + product.metadata.subproducts = this.getSubproducts(product) + + return product; } - let product = { - name: g.gn, - productTypeDisplay: g.ptd || g.gn, - file: filename, - id: g.pid.replace('{gn}', g.gn), - downloadUrl: g.du.replaceAll('{gn}', g.gn), - bytes: g.s * 1000000, - dataset: (g.d === 'STS-59' || g.d === 'STS-68') ? 'SIR-C' : g.d, - browses, - thumbnail, - groupId: g.gid.replace('{gn}', g.gn), - isUnzippedFile: false, - isDummyProduct: false, - metadata: this.getMetadataFrom(g) - }; - - product.metadata.subproducts = this.getSubproducts(product) - - return product; - } - ); + ); return products; } private getMetadataFrom = (g: any): models.CMRProductMetadata => ({ - date: this.fromCMRDate(g.st), - stopDate: this.fromCMRDate(g.stp), + date: this.fromCMRDate(g.st), + stopDate: this.fromCMRDate(g.stp), polygon: g.wu, productType: g.pt, @@ -72,7 +72,7 @@ export class ProductService { flightDirection: g.fd, path: +g.p, - frame: +g.f, + frame: +g.f, absoluteOrbit: Array.isArray(g.o) ? g.o.map(val => +val) : [+g.o], faradayRotation: +g.fr, @@ -92,9 +92,11 @@ export class ProductService { fileName: null, burst: g.s1b ? g.s1b : null, opera: g.s1o ? g.s1o : null, + nisar: g.nsr ? g.nsr : null, pgeVersion: g.pge !== null ? parseFloat(g.pge) : null, subproducts: [], - parentID: null + parentID: null, + s3URI: null }) private isNumber = n => !isNaN(n) && isFinite(n); @@ -103,104 +105,198 @@ export class ProductService { return moment.utc(dateString); } - private getSubproducts(product: models.CMRProduct): models.CMRProduct[] { - if (product.metadata.productType === 'BURST') { - return [this.burstXMLFromScene(product)] - } - if (!!product.metadata.opera) { - return this.operaSubproductsFromScene(product) - } - return [] + private getSubproducts(product: models.CMRProduct): models.CMRProduct[] { + if (product.metadata.productType === 'BURST') { + return [this.burstXMLFromScene(product)] + } + if (!!product.metadata.opera) { + return this.operaSubproductsFromScene(product); } + if (product.dataset === 'NISAR') { + return this.nisarSubproductsFromScene(product); + } + return [] + } - private burstXMLFromScene(product: models.CMRProduct) { - let p = { + private burstXMLFromScene(product: models.CMRProduct) { + let p = { + ...product, + downloadUrl: product.downloadUrl.replace('tiff', 'xml'), + productTypeDisplay: 'XML Metadata (BURST)', + file: product.file.replace('tiff', 'xml'), + id: product.id + '-XML', + bytes: 0, + metadata: { + ...product.metadata, + productType: product.metadata.productType + '_XML', + subproducts: [], + parentID: product.id, + }, + } as models.CMRProduct; + + return p; + } + + private operaProductTypeDisplays = { + hh: 'HH GeoTIFF', + hv: 'HV GeoTIFF', + vv: 'VV GeoTIFF', + vh: 'VH GeoTIFF', + mask: 'Mask GeoTIFF', + h5: 'HDF5', + xml: 'Metadata XML', + rtc_anf_gamma0_to_sigma0: 'RTC Gamma to Sigma GeoTIFF', + number_of_looks: '# of Looks GeoTIFF', + incidence_angle: 'Incidence Angle GeoTIFF', + rtc_anf_gamma0_to_beta0: 'RTC Gamm to Beta GeoTIFF', + local_incidence_angle: 'Local Incidence Angle GeoTIFF' + } + + private operaSubproductsFromScene(product: models.CMRProduct) { + if (!!product.metadata.opera?.validityStartDate) { + product.metadata.opera.validityStartDate = this.fromCMRDate( + (product.metadata.opera?.validityStartDate as unknown) as string) + } + let products = [] + + let reg = product.downloadUrl.split(/(_v[0-9]\.[0-9]){1}(\.(\w*)|(_(\w*(_*))*.))*/); + let file_suffix = !!reg[3] ? reg[3] : reg[5] + product.productTypeDisplay = this.operaProductTypeDisplays[file_suffix.toLowerCase()] + + const thumbnail_index = product.browses.findIndex(url => url.toLowerCase().includes('thumbnail')) + if (thumbnail_index !== -1) { + product.thumbnail = product.browses.splice(thumbnail_index, 1)[0]; + } + product.browses = product.browses.filter(url => !url.includes('low-res')); + + + for (const p of product.metadata.opera.additionalUrls.filter(url => url !== product.downloadUrl)) { + reg = p.split(/(_v[0-9]\.[0-9]){1}(\.(\w*)|(_(\w*(_*))*.))*/); + file_suffix = !!reg[3] ? reg[3] : reg[5] + const productTypeDisplay = this.operaProductTypeDisplays[file_suffix.toLowerCase()]; + + const fileID = p.split('/').slice(-1)[0] + + let subproduct = { ...product, - downloadUrl: product.downloadUrl.replace('tiff', 'xml'), - productTypeDisplay: 'XML Metadata (BURST)', - file: product.file.replace('tiff', 'xml'), - id: product.id + '-XML', + downloadUrl: p, + productTypeDisplay: productTypeDisplay || p, + file: fileID, + id: product.id + '-' + file_suffix, bytes: 0, + browses: [], + thumbnail: null, metadata: { ...product.metadata, - productType: product.metadata.productType + '_XML', - subproducts: [], + productType: product.metadata.productType, parentID: product.id, + subproducts: [] }, } as models.CMRProduct; - return p; + products.push(subproduct) + } + + return products.sort((a, b) => { + if (['hh', 'vv', 'vh', 'hv'].includes(a.productTypeDisplay.slice(0, 2).toLowerCase())) { + return -1; + } else if (['hh', 'vv', 'vh', 'hv'].includes(b.productTypeDisplay.slice(0, 2).toLowerCase())) + return 1; + + return a.productTypeDisplay < b.productTypeDisplay ? -1 : 1 } + ) + } + + private nisarProductTypeDisplays = { + vc06: 'VC06', + yaml: 'YAML', + kml: 'KML', + png: 'Browse PNG', + csv: 'Metadata CSV', + // hv: 'HV GeoTIFF', + // vv: 'VV GeoTIFF', + // vh: 'VH GeoTIFF', + // mask: 'Mask GeoTIFF', + h5: 'HDF5', + xml: 'Metadata XML', + json: 'Metadata JSON', + pdf: 'PDF Report', + // rtc_anf_gamma0_to_sigma0: 'RTC Gamma to Sigma GeoTIFF', + // number_of_looks: '# of Looks GeoTIFF', + // incidence_angle: 'Incidence Angle GeoTIFF', + // rtc_anf_gamma0_to_beta0: 'RTC Gamm to Beta GeoTIFF', + // local_incidence_angle: 'Local Incidence Angle GeoTIFF' + } + + private nisarSubproductsFromScene(product: models.CMRProduct) { + let products = [] + let temp = product.downloadUrl.split('.') + let file_extension = temp[temp.length - 1] + // let reg = product.downloadUrl.split(/(_v[0-9]\.[0-9]){1}(\.(\w*)|(_(\w*(_*))*.))*/); + // let file_suffix = !!reg[3] ? reg[3] : reg[5] + product.productTypeDisplay = this.nisarProductTypeDisplays[file_extension.toLowerCase()] ? this.nisarProductTypeDisplays[file_extension.toLowerCase()] : 'Missing Display' - private operaProductTypeDisplays = { - hh: 'HH GeoTIFF', - hv: 'HV GeoTIFF', - vv: 'VV GeoTIFF', - vh: 'VH GeoTIFF', - mask: 'Mask GeoTIFF', - h5: 'HDF5', - xml: 'Metadata XML', - rtc_anf_gamma0_to_sigma0: 'RTC Gamma to Sigma GeoTIFF', - number_of_looks: '# of Looks GeoTIFF', - incidence_angle: 'Incidence Angle GeoTIFF', - rtc_anf_gamma0_to_beta0: 'RTC Gamm to Beta GeoTIFF', - local_incidence_angle: 'Local Incidence Angle GeoTIFF' + const thumbnail_index = product.browses.findIndex(url => url.toLowerCase().includes('thumbnail')) + if (thumbnail_index !== -1) { + product.thumbnail = product.browses.splice(thumbnail_index, 1)[0]; } + product.browses = product.browses.filter(url => !url.includes('low-res')); - private operaSubproductsFromScene(product: models.CMRProduct) { - if (!!product.metadata.opera?.validityStartDate) { - product.metadata.opera.validityStartDate = this.fromCMRDate( - (product.metadata.opera?.validityStartDate as unknown) as string) - } - let products = [] - let reg = product.downloadUrl.split(/(_v[0-9]\.[0-9]){1}(\.(\w*)|(_(\w*(_*))*.))*/); - let file_suffix = !!reg[3] ? reg[3] : reg[5] - product.productTypeDisplay = this.operaProductTypeDisplays[file_suffix.toLowerCase()] + const s3UrlsByProductID = product.metadata.nisar.s3Urls.reduce((prev, curr) => { + const subproductFileID = curr.split('/').at(-1); - const thumbnail_index = product.browses.findIndex(url => url.toLowerCase().includes('thumbnail')) - if (thumbnail_index !== -1) { - product.thumbnail = product.browses.splice(thumbnail_index, 1)[0]; - } - product.browses = product.browses.filter(url => !url.includes('low-res')); - - - for (const p of product.metadata.opera.additionalUrls.filter(url => url !== product.downloadUrl)) { - reg = p.split(/(_v[0-9]\.[0-9]){1}(\.(\w*)|(_(\w*(_*))*.))*/); - file_suffix = !!reg[3] ? reg[3] : reg[5] - const productTypeDisplay = this.operaProductTypeDisplays[file_suffix.toLowerCase()]; - - const fileID = p.split('/').slice(-1)[0] - - let subproduct = { - ...product, - downloadUrl: p, - productTypeDisplay: productTypeDisplay || p, - file: fileID, - id: product.id + '-' + file_suffix, - bytes: 0, - browses: [], - thumbnail: null, - metadata: { - ...product.metadata, - productType: product.metadata.productType, - parentID: product.id, - subproducts: [] - }, - } as models.CMRProduct; - - products.push(subproduct) + prev[subproductFileID] = curr; + + return prev; + }, {}) + + + product.metadata.s3URI = s3UrlsByProductID[product.file] ?? null; + + for (const p of product.metadata.nisar.additionalUrls.filter(url => url !== product.downloadUrl)) { + temp = p.split('.') + file_extension = temp[temp.length - 1] + let productTypeDisplay = this.nisarProductTypeDisplays[file_extension.toLowerCase()]; + if (p.includes('QA_')) { + productTypeDisplay += (' (QA)') } - return products.sort((a, b) => { - if(['hh', 'vv', 'vh', 'hv'].includes(a.productTypeDisplay.slice(0, 2).toLowerCase())) { - return -1; - } else if(['hh', 'vv', 'vh', 'hv'].includes(b.productTypeDisplay.slice(0, 2).toLowerCase())) - return 1; + const fileID = p.split('/').slice(-1)[0] + const s3Url = s3UrlsByProductID[fileID] ?? null + let subproduct = { + ...product, + downloadUrl: p, + productTypeDisplay: productTypeDisplay || p, + file: fileID, + id: product.id + '-' + file_extension, + bytes: 0, + browses: [], + thumbnail: null, + metadata: { + ...product.metadata, + productType: product.metadata.productType, + parentID: product.id, + subproducts: [], + s3URI: s3Url + }, + + } as models.CMRProduct; + + products.push(subproduct) + } - return a.productTypeDisplay < b.productTypeDisplay ? -1 : 1 + return products.sort((a, b) => { + if (a.productTypeDisplay.includes('Metadata') || a.productTypeDisplay.includes('QA')) { + return 1; + } else if (b.productTypeDisplay.includes('Metadata') || b.productTypeDisplay.includes('QA')) { + return -1; } - ) + + return a.productTypeDisplay < b.productTypeDisplay ? -1 : 1 } -} + ) + } +} \ No newline at end of file diff --git a/src/app/store/scenes/scenes.reducer.ts b/src/app/store/scenes/scenes.reducer.ts index 8926b8726..44c09afe8 100644 --- a/src/app/store/scenes/scenes.reducer.ts +++ b/src/app/store/scenes/scenes.reducer.ts @@ -104,7 +104,7 @@ export function scenesReducer(state = initState, action: ScenesActions): ScenesS if (product.metadata.subproducts.length > 0) { groupCriteria = product.id; - } else if(ungrouped_product_types.includes(product.metadata.productType)) { + } else if(ungrouped_product_types.includes(product.metadata.productType) || product.dataset === 'NISAR') { if(isSubProduct(product)) { groupCriteria = product.metadata.parentID; } else { @@ -551,7 +551,7 @@ const productsForScene = (selected, state) => { const ungrouped_product_types = [...opera_s1.productTypes, {apiValue: 'BURST'}, {apiValue: 'BURST_XML'}].map(m => m.apiValue) // if (Object.keys(productTypes).length <= 2 && Object.keys(productTypes)[0] === 'BURST') { // products = state.scenes[selected.name] || []; - if(ungrouped_product_types.includes(selected.metadata.productType)) { + if(ungrouped_product_types.includes(selected.metadata.productType) || selected.dataset === 'NISAR') { products = state.scenes[selected.metadata.parentID ?? selected.id] || []; } else { From 6a51156a654cac0473221316da82372c603e807c Mon Sep 17 00:00:00 2001 From: kim Date: Mon, 1 Apr 2024 14:03:34 -0800 Subject: [PATCH 10/88] adds selective bulk download queue support for nisar --- .../scenes-list-header/scenes-list-header.component.html | 2 +- src/app/services/product.service.ts | 9 ++++++++- src/assets/i18n/en.json | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/components/results-menu/scenes-list-header/scenes-list-header.component.html b/src/app/components/results-menu/scenes-list-header/scenes-list-header.component.html index f7834374c..769a74130 100644 --- a/src/app/components/results-menu/scenes-list-header/scenes-list-header.component.html +++ b/src/app/components/results-menu/scenes-list-header/scenes-list-header.component.html @@ -304,7 +304,7 @@ From bfd573382e541d5bfc4b1aaf11e8ef9bf3e6f61f Mon Sep 17 00:00:00 2001 From: Yoreley Date: Mon, 19 May 2025 15:45:58 -0700 Subject: [PATCH 62/88] Align Range Bandwidth filter --- .../observation-panel-selector.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss index f1a6cfbf0..a89b83ed9 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss @@ -23,6 +23,7 @@ mat-form-field { .extra-wide { flex-basis: 30%; + margin-left: 12px; } .flight-direction-field { From c579b51e81ee3a21da81b52ead489b1edd18d6d1 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Wed, 21 May 2025 11:03:54 -0700 Subject: [PATCH 63/88] Descending Order for Science Products in NISAR Filters --- package-lock.json | 359 +++++------------- .../product-science-selector.component.ts | 31 +- 2 files changed, 120 insertions(+), 270 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2ce1b131..c6208e56b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -689,30 +689,6 @@ "node": ">=18" } }, - "node_modules/@angular-devkit/build-angular/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -816,18 +792,6 @@ "node": ">=4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -952,30 +916,6 @@ "node": ">=4" } }, - "node_modules/@angular-devkit/build-angular/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -1796,30 +1736,6 @@ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" } }, - "node_modules/@angular/build/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/@angular/build/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1865,48 +1781,12 @@ "@esbuild/win32-x64": "0.23.0" } }, - "node_modules/@angular/build/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@angular/build/node_modules/immutable": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", "license": "MIT" }, - "node_modules/@angular/build/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@angular/build/node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@angular/build/node_modules/sass": { "version": "1.77.6", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", @@ -2548,6 +2428,32 @@ "semver": "bin/semver.js" } }, + "node_modules/@angular/compiler-cli/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular/compiler-cli/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular/core": { "version": "18.2.13", "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.13.tgz", @@ -8627,6 +8533,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true, "license": "MIT" }, "node_modules/arg": { @@ -9561,18 +9468,37 @@ "license": "MIT" }, "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { - "readdirp": "^4.0.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 8.10.0" }, "funding": { "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/chownr": { @@ -9597,6 +9523,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -12554,6 +12481,7 @@ "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4.9.1" @@ -14551,6 +14479,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, "license": "MIT" }, "node_modules/is-unicode-supported": { @@ -15192,31 +15121,6 @@ "source-map-support": "^0.5.5" } }, - "node_modules/karma/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/karma/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -15224,19 +15128,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/karma/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/karma/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -15247,32 +15138,6 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/karma/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/karma/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -20674,6 +20539,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -22135,16 +22001,25 @@ } }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">= 14.18.0" + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/redent": { @@ -22806,6 +22681,20 @@ "@parcel/watcher-win32-x64": "2.5.1" } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sass/node_modules/detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -22826,6 +22715,18 @@ "license": "MIT", "optional": true }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -24645,6 +24546,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, "license": "MIT" }, "node_modules/thingies": { @@ -25001,6 +24903,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" @@ -25569,30 +25472,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/webpack-dev-server/node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -25629,18 +25508,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -25692,30 +25559,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack-dev-server/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/webpack-dev-server/node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -26071,6 +25914,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -26083,6 +25927,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, "license": "ISC" }, "node_modules/ws": { diff --git a/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts b/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts index 5561e9691..d46100f49 100644 --- a/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts +++ b/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts @@ -30,22 +30,15 @@ interface sciProdGroup { export class ProductScienceSelectorComponent implements OnInit, OnDestroy { sciProdControl: FormControl = new FormControl([]); sciProdGroups: sciProdGroup[] = [ + { - name: 'Level-0', - sciProd: [ - {value: 'LEVEL-0-L0B', viewValue: 'L0B (Radar Raw Signal Data)'}, - ], - }, - { - name: 'Level-1', + name: 'Level-3', disabled: false, sciProd: [ - {value: 'LEVEL-1-RSLC', viewValue: 'RSLC (Range-Doppler Single Look Complex)'}, - {value: 'LEVEL-1-RIFG', viewValue: 'RIFG (Range-Doppler Wrapped Interferogram)'}, - {value: 'LEVEL-1-RUNW', viewValue: 'RUNW (Range-Doppler Unwrapped Interferogram)'}, - {value: 'LEVEL-1-ROFF', viewValue: 'ROFF (Range-Doppler Pixel Offsets)'}, + {value: 'LEVEL-3-SME2', viewValue: 'SME2 (Soil Moisture EASE-Grid 2.0)'}, ], }, + { name: 'Level-2', disabled: false, @@ -56,13 +49,25 @@ export class ProductScienceSelectorComponent implements OnInit, OnDestroy { {value: 'LEVEL-2-GOFF', viewValue: 'GOFF (Geocoded Pixel Offsets)'}, ], }, + { - name: 'Level-3', + name: 'Level-1', disabled: false, sciProd: [ - {value: 'LEVEL-3-SME2', viewValue: 'SME2 (Soil Moisture EASE-Grid 2.0)'}, + {value: 'LEVEL-1-RSLC', viewValue: 'RSLC (Range-Doppler Single Look Complex)'}, + {value: 'LEVEL-1-RIFG', viewValue: 'RIFG (Range-Doppler Wrapped Interferogram)'}, + {value: 'LEVEL-1-RUNW', viewValue: 'RUNW (Range-Doppler Unwrapped Interferogram)'}, + {value: 'LEVEL-1-ROFF', viewValue: 'ROFF (Range-Doppler Pixel Offsets)'}, ], }, + + { + name: 'Level-0', + sciProd: [ + {value: 'LEVEL-0-L0B', viewValue: 'L0B (Radar Raw Signal Data)'}, + ], + }, + ]; private subs: SubSink = new SubSink(); From 9a442d284a6e3aa6cf991bb85bf3d522568a204a Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Wed, 21 May 2025 12:10:25 -0700 Subject: [PATCH 64/88] Phrase Updates --- src/assets/i18n/en.json | 11 +++++++++-- src/assets/i18n/es.json | 32 ++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index fc0f3ef10..46914ce4c 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -23,7 +23,7 @@ "ADD_JOB": "Add job", "ADD_MAIN_POLARIZATION_TO_SEARCH": "Add main polarization to search", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Add pair to On Demand queue", - "ADD_POINTS": "Add", + "ADD_POINTS": "Add points", "ADD_POLARIZATION_TO_SEARCH": "Add polarization to search", "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Add range bandwidth to search", "ADD_SCENE_FILES_TO_DOWNLOADS": "Add scene files to downloads", @@ -543,6 +543,7 @@ "NO_SUITABLE_PRODUCTS_FOR_THIS_TOOL": "No suitable products for this tool", "NO_VALID_DATA_FOR_POINT": "No valid data for point.", "NON_DISCRIMINATION": "Non-Discrimination", + "NONE": "None", "NOT_ABLE_TO_SELECT_SIMILAR_SCENES_FROM_THIS_SOURCE": "Not able to select similar scenes from this source", "NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Not all filters will be available for", "NOTE_IN_VERTEX_A_SCENE_IS_CONSIDERED_TO_BE_A_PACKAGE_CONTAINING_ALL_FILES_OR_PRODUCTS": "Note: In Vertex, a scene is considered to be a package containing all files, or products,", @@ -641,6 +642,8 @@ "PRODUCT_TYPE": "Product Type", "PRODUCT_TYPES": "Product Types", "PRODUCTION": "Production", + "PRODUCTION_CONFIGURATION": "Production Configuration", + "PRODUCTION_CONFIGURATION_FILTER": "Production Configuration Filter", "PRODUCTS_IN_YOUR_QUEUE_MAY_REQUIRE_A_RESTRICTED_DATASET_AGREEMENT": "Products in your queue may require a restricted dataset agreement.", "PRODUCTS_TO_DOWNLOADS_FROM_SELECTED_EVENT": "products to downloads from selected event", "PROFILE": "Profile", @@ -733,6 +736,8 @@ "SCENE_START_TIME": "Scene Start Time", "SCENES": "Scenes", "SCENES_THE_LEFT_COLUMN": "Scenes - the left column", + "SCIENCE_ON_DEMAND": "Science On-Demand", + "SCIENCE_PRODUCT": "Science Product", "SCRIPTS_FOR_ACCESSING_SAR_DATA": "scripts for accessing SAR data.", "SCROLL_THROUGH_THE_LIST_OF_RESULTS_AND_YOU_SEE_SOME_FILES_HAVE_AN_ICON_OF_THREE_GRAY_SQUARES_NEXT": "Scroll through the list of results and you see some files have an icon of three gray squares next", "SDK_PYTHON_CODE_EXPORT": "Export SDK Python Code", @@ -912,6 +917,7 @@ "UPLOAD_AOI_VIA_FILE": "Upload AOI via file", "UPLOAD_GEOSPATIAL_FILE": "Upload Geospatial File", "UR_LS": "URLs", + "URGENT_RESPONSE": "Urgent Response", "USE_AN_ASF_SEARCH_API_QUERY_TO_DOWNLOAD_MORE_RESULTS_MANUALLY": "Use an ASF Search API query to download more results manually.", "USE_THE_AREA_OF_INTEREST_BUTTONS_TO_TOGGLE_DRAWING_ON_THE_MAP_ON_AND_OFF_TO_EDIT_THE_SHAPE": "Use the 'Area of Interest' buttons to toggle drawing on the map on and off, to edit the shape", "USE_THE_MAP_PROJECTION_BUTTONS_IN_THE_MAP_TOOLBAR_TO_TOGGLE_BETWEEN_THE_ARCTIC_EQUATORIAL": "Use the 'Map Projection' buttons in the map toolbar to toggle between the Arctic, Equatorial,", @@ -989,6 +995,7 @@ "YOUR_DOWNLOAD_QUEUE_IS_EMPTY": "Your download queue is empty.", "YOUR_JOBS_QUEUE_IS_EMPTY": "Your jobs queue is empty.", "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS": "your search and reduce the number of results.", + "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS_NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Your search and reduce the number of results. Not all filters will be available for", "YOUR_SELECTION_TO_A_VALID_RANGE_FOR_THE_SELECTED_DATASET": "your selection to a valid range for the selected dataset.", "ZIPPED_FILES_WILL_BE_DENOTED_BY_A_RIGHT_POINTING_CARET_TO_THE_LEFT_OF_THE_FILENAME_CLICKING_THE_CARET": "Zipped files will be denoted by a right-pointing caret to the left of the filename. Clicking the caret", "ZOOM": "Zoom", @@ -999,4 +1006,4 @@ "ZOOM_TO_FIT": "Zoom To Fit", "ZOOM_TO_RESULTS": "Zoom to results", "ZOOM_TO_SCENE": "Zoom to scene" -} +} \ No newline at end of file diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 312010ccb..6d7b6b56a 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -23,7 +23,7 @@ "ADD_JOB": "Agregar trabajo", "ADD_MAIN_POLARIZATION_TO_SEARCH": "Agregar polarización principal a la búsqueda", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Agregar par a la lista On Demand", - "ADD_POINTS": "Agregar", + "ADD_POINTS": "Agregar puntos", "ADD_POLARIZATION_TO_SEARCH": "Agregar polarización a la búsqueda", "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Agregar ancho de banda de rango a la búsqueda", "ADD_SCENE_FILES_TO_DOWNLOADS": "Agregar archivos de escena a las descargas", @@ -74,7 +74,7 @@ "ARROW_FORWARD": "flecha_adelante", "ASCENDING": "Ascendente", "ASF_DATA_SEARCH": "Búsqueda de datos ASF", - "ASF_DATA_SEARCH_TITLE": "Búsqueda de datos ASF", + "ASF_DATA_SEARCH_TITLE": "Título de búsqueda de datos ASF", "ASF_SEARCH_API": "API de búsqueda ASF", "ASF_SEARCH_PYTHON_EXPORT": "Exportación de Python de búsqueda ASF", "ASF_WEBSITE": "Sitio web de la ASF", @@ -105,7 +105,7 @@ "BROWSE_IMAGE_OPACITY": "Browse Image Opacity", "BUILD_COMMIT": "Confirmación de compilación", "BURST_ID_ABSOLUTE": "ID de Burst Absoluta", - "BURST_ID_FULL": "ID de Burst Completa", + "BURST_ID_FULL": "ID de ráfaga completa", "BURST_ID_RELATIVE": "ID de Burst Relativa", "BURST_INDEX": "Índice de Burst", "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_BASELINE_TOOL_BUTTON_TO_PERFORM_A_BASELINE_SEARCH": "Botones: 'Herramienta de Línea Base' y 'Herramienta SBAS'. Haga clic en el botón 'Herramienta de Línea Base' para realizar una búsqueda de Línea Base.", @@ -189,7 +189,7 @@ "DATA_COURTESY_OF": "Datos Cortesía de", "DATA_DOWNLOAD": "Descarga de Datos", "DATA_DOWNLOAD_IS_USED_TO_DOWNLOAD_MULTIPLE_PRODUCTS_WITH_EITHER_THE": "Descarga de datos se utiliza para descargar varios productos, ya sea con el", - "DATA_FILTERS": "Filtros de Fecha", + "DATA_FILTERS": "Filtros de Datos", "DATA_TYPE": "Tipo de Dato", "DATASET": "Conjunto de Datos", "DATASET_INFO": "Información del conjunto de datos", @@ -343,7 +343,7 @@ "FRAME_START": "Inicio del Marco", "FREQUENCY": "Frecuencia", "FULL": "Completo", - "FULL_BURST_ID": "ID de Burst Completa", + "FULL_BURST_ID": "ID de ráfaga completa", "GAMMA0": "gamma0", "GAPS_DETECTED": "Brechas Detectadas", "GEO_SEARCH": "Búsqueda Geográfica", @@ -470,8 +470,10 @@ "LOADING": "Cargando...", "LOADING_FILES": "Cargando archivos...", "LOGIN": "Iniciar sesión", - "LOGIN_TO_VIEW_NUMBER_OF_CREDITS_LEFT_THIS_MONTH": "inicie sesión para ver el número de créditos que quedan este mes", - "LOGIN_TO_VIEW_NUMBER_OF_JOBS_LEFT_THIS_MONTH": "inicie sesión para ver la cantidad de trabajos que restan este mes", + "LOGIN_TO_VIEW": "inicie sesión para ver", + "LOGIN_TO_VIEW_NUMBER_OF_CREDITS_LEFT_THIS_MONTH": "inicie sesión para ver el número de créditos que restan este mes", + "LOGIN_TO_VIEW_NUMBER_OF_JOBS_LEFT_THIS_MONTH": "inicie sesión para ver la cantidad de trabajos que restan este mes", + "LOOKING_FOR_DEMS": "Buscando DEMs", "LOOKS TWO": "parece_dos", "LOOKS_MANY": "parece_uno", "LOOKS_OTHER": "parece_uno", @@ -509,7 +511,6 @@ "MORE_LIKE_THIS_BUTTON_IF_THE_SCENE_IS_SUITABLE_FOR_INTERFEROMETRY_THERE_WILL_BE_TWO_ADDITIONAL": "Botón 'Más como esto'. Si la escena es adecuada para interferometría, habrá dos adicionales\n\n\n\n\n\n\n\n", "MORE_OPTIONS": "Más opciones", "MUST_BE_LOGGED_IN": "Debe iniciar sesión", - "N_A_LOGIN_TO_VIEW": "N/A - inicie sesión para ver", "NAME": "Nombre", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST": "Navegue a su área de interés", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST_BY_DRAGGING_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON": "Navegue hasta su área de interés arrastrando el mapa mientras mantiene presionado el botón izquierdo del mouse.", @@ -543,7 +544,9 @@ "NO_SUITABLE_PRODUCTS_FOR_THIS_TOOL": "No hay productos adecuados para esta herramienta", "NO_VALID_DATA_FOR_POINT": "No hay datos válidos para el punto.", "NON_DISCRIMINATION": "No Discriminación", + "NONE": "Ninguno", "NOT_ABLE_TO_SELECT_SIMILAR_SCENES_FROM_THIS_SOURCE": "No es posible seleccionar escenas similares de esta fuente", + "NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "No todos los filtros estarán disponibles para", "NOTE_IN_VERTEX_A_SCENE_IS_CONSIDERED_TO_BE_A_PACKAGE_CONTAINING_ALL_FILES_OR_PRODUCTS": "Nota: En Vertex, una escena se considera un paquete que contiene todos los archivos o productos", "NOTE_THE_NUMBER_OF_FILES_THAT_ARE_PREDICTED_TO_MATCH_THE_CURRENT_SEARCH_PARAMETERS_IS_DISPLAYED_UNDER_THE_SEARCH_BUTTON_IF_THERE_ARE_NO_PREDICTED_MATCHES_THE_SEARCH_BUTTON_WILL_BE_GREYED_OUT_AND_DISPLAY_NO_RESULTS": "Nota: El número de archivos que se predice coincidan con los parámetros de búsqueda actuales se muestra debajo del botón de BÚSQUEDA. Si no hay coincidencias predichas, el botón de búsqueda se desactivará y mostrará SIN RESULTADOS.", "OBSERVATIONAL_FILTERS": "Filtros Observacionales", @@ -640,6 +643,8 @@ "PRODUCT_TYPE": "Tipo de Producto", "PRODUCT_TYPES": "Tipos de productos", "PRODUCTION": "Producción", + "PRODUCTION_CONFIGURATION": "Configuración de producción", + "PRODUCTION_CONFIGURATION_FILTER": "Filtro de Configuración de Producción", "PRODUCTS_IN_YOUR_QUEUE_MAY_REQUIRE_A_RESTRICTED_DATASET_AGREEMENT": "Los productos en su lista pueden requerir un acuerdo de conjunto de datos restringido.", "PRODUCTS_TO_DOWNLOADS_FROM_SELECTED_EVENT": "los productos a las descargas del evento seleccionado", "PROFILE": "Perfil", @@ -669,6 +674,7 @@ "REMOVE": "Eliminar", "REMOVE_CUSTOM_PAIR": "Eliminar par personalizado", "REMOVE_FILE": "Remover archivo", + "REMOVE_FILE_FROM_DOWNLOADS": "Eliminar archivo de las descargas", "REMOVE_FILE_FROM_QUEUE": "Eliminar archivo de la lista", "REMOVE_JOB": "Quitar trabajo", "REMOVE_RED_EYE": "quitar_ojo_rojo", @@ -714,6 +720,7 @@ "SAVED_SEARCHES_AND_SEARCH_HISTORY": "Búsquedas guardadas e historial de búsqueda", "SBAS": "SBAS", "SBAS_CHART": "Gráfico SBAS", + "SBAS_COUNT_TOOLTIP": "Los filtros aplicados pueden reducir el número de pares que se enumeran a continuación", "SBAS_FILTERS": "Filtros SBAS", "SBAS_SEARCH": "Búsqueda de SBAS", "SBAS_SEARCH_PROVIDES_PERPENDICULAR_AND_TEMPORAL_BASELINE_DATA_AS_WELL_AS_SCENE_PAIRS_FOR_A_CHOSEN": "La búsqueda SBAS proporciona datos de referencia perpendiculares y temporales, así como pares de escenas, para una determinada", @@ -730,6 +737,8 @@ "SCENE_START_TIME": "Hora de inicio de la escena", "SCENES": "Escenas", "SCENES_THE_LEFT_COLUMN": "Escenas: la columna izquierda", + "SCIENCE_ON_DEMAND": "Ciencia On-Demand", + "SCIENCE_PRODUCT": "Producto Científico", "SCRIPTS_FOR_ACCESSING_SAR_DATA": "scripts para acceder a los datos SAR.", "SCROLL_THROUGH_THE_LIST_OF_RESULTS_AND_YOU_SEE_SOME_FILES_HAVE_AN_ICON_OF_THREE_GRAY_SQUARES_NEXT": "Desplácese por la lista de resultados y verá que algunos archivos tienen un icono de tres cuadrados grises junto a ellos.", "SDK_PYTHON_CODE_EXPORT": "Exportar código Python del SDK", @@ -909,6 +918,7 @@ "UPLOAD_AOI_VIA_FILE": "Subir AOI a través de un archivo", "UPLOAD_GEOSPATIAL_FILE": "Subir archivo geoespacial", "UR_LS": "URL", + "URGENT_RESPONSE": "Respuesta Urgente", "USE_AN_ASF_SEARCH_API_QUERY_TO_DOWNLOAD_MORE_RESULTS_MANUALLY": "Utilice una consulta de la API de búsqueda de ASF para descargar más resultados manualmente.", "USE_THE_AREA_OF_INTEREST_BUTTONS_TO_TOGGLE_DRAWING_ON_THE_MAP_ON_AND_OFF_TO_EDIT_THE_SHAPE": "Use los botones 'Área de interés' para activar y desactivar el dibujo en el mapa, para editar la forma", "USE_THE_MAP_PROJECTION_BUTTONS_IN_THE_MAP_TOOLBAR_TO_TOGGLE_BETWEEN_THE_ARCTIC_EQUATORIAL": "Use los botones de 'Proyección de mapa' en la barra de herramientas del mapa para alternar entre el Ártico, Ecuatorial,", @@ -961,6 +971,7 @@ "WHEN_YOU_SUBMIT_THE_JOB_S_YOU_CAN_ENTER_A_PROJECT_NAME_FOR_EASY_REFERENCE_WHEN_THE_PROCESSING_IS": "Cuando envíe el(los) trabajo(s), puede ingresar un nombre de proyecto para una fácil referencia cuando finalice el procesamiento.", "WILL_BE": "será", "WILL_CLEAR_ALL_FILES_FROM_THE_QUEUE_THE_OPTION": "borrará todos los archivos de la lista. La opción", + "WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "copiará los nombres de todos los archivos de la cola para utilizarlos en otro lugar.", "WILL_DISPLAY_THE_CONTENTS_OF_YOUR_CURRENT_DOWNLOAD_QUEUE": "mostrará el contenido de su lista de descarga actual.", "WILL_EXPAND_THE_LIST_TO_SHOW_ALL_OF_THE_INDIVIDUAL_COMPONENTS_WITHIN_THE_ZIP_ARCHIVE_YOU_CAN": "expandirá la lista para mostrar todos los componentes individuales dentro del archivo zip. ", "WINDOW": "Ventana.", @@ -984,7 +995,8 @@ "YOU_TO_SEARCH_FOR_DATA_FROM_A_COMMAND_LINE_INTERFACE_SO_YOU_CAN_WRITE_YOUR_OWN": "que busque datos desde una interfaz de línea de comandos para que pueda escribir su propia", "YOUR_DOWNLOAD_QUEUE_IS_EMPTY": "Su lista de descarga está vacía.", "YOUR_JOBS_QUEUE_IS_EMPTY": "Su lista de trabajos está vacía.", - "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS_NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "su búsqueda y reducir el número de resultados. ", + "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS": "su búsqueda y reducir el número de resultados.", + "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS_NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Su búsqueda y reducir el número de resultados. No todos los filtros estarán disponibles para", "YOUR_SELECTION_TO_A_VALID_RANGE_FOR_THE_SELECTED_DATASET": "su selección a un rango válido para el conjunto de datos seleccionado.", "ZIPPED_FILES_WILL_BE_DENOTED_BY_A_RIGHT_POINTING_CARET_TO_THE_LEFT_OF_THE_FILENAME_CLICKING_THE_CARET": "Los archivos comprimidos se indicarán con un signo de intercalación que apunta hacia la derecha a la izquierda del nombre del archivo. ", "ZOOM": "Acercar", @@ -995,4 +1007,4 @@ "ZOOM_TO_FIT": "Acercar para ajustar", "ZOOM_TO_RESULTS": "Acercar a los resultados", "ZOOM_TO_SCENE": "Acercar a la escena" -} +} \ No newline at end of file From 28c6b5ae4af589abb513cda79e16746e398cd0a0 Mon Sep 17 00:00:00 2001 From: tylercchase Date: Tue, 27 May 2025 11:36:56 -0400 Subject: [PATCH 65/88] fix: only use auto-generated cmr token for prod maturity --- src/app/services/asf-api.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/services/asf-api.service.ts b/src/app/services/asf-api.service.ts index c3d207413..b04a187b9 100644 --- a/src/app/services/asf-api.service.ts +++ b/src/app/services/asf-api.service.ts @@ -62,9 +62,10 @@ export class AsfApiService { if (this.env.currentEnv.cmr_token) { stateParamsObj['cmr_token'] = this.env.currentEnv.cmr_token; + } else if (this.env.currentEnv.api_maturity !== 'prod') { + delete stateParamsObj['cmr_token']; } } - const params = this.queryParamsFrom(stateParamsObj); const queryParamsStr = params.toString() From dd86d86bc3e3a3fdfcb30fd1f8c11dbcb533cc81 Mon Sep 17 00:00:00 2001 From: tylercchase Date: Tue, 27 May 2025 11:49:48 -0400 Subject: [PATCH 66/88] feat: hide nisar log files --- src/app/services/product.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app/services/product.service.ts b/src/app/services/product.service.ts index 24483dfff..f3220b1ec 100644 --- a/src/app/services/product.service.ts +++ b/src/app/services/product.service.ts @@ -282,6 +282,9 @@ export class ProductService { if (p.includes('QA_')) { productTypeDisplay += (' (QA)') } + if(productTypeDisplay === 'Log File') { + continue; + } From 4f00b9b3bca4ad139fb4e7a07c72fa93de7dc9c5 Mon Sep 17 00:00:00 2001 From: tcchase Date: Fri, 30 May 2025 13:48:59 -0400 Subject: [PATCH 67/88] fix: polarizations string replace not covering entire string --- src/app/services/property.service.ts | 2 +- src/app/services/search-params.service.ts | 4 ++-- src/app/services/url-state.service.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/services/property.service.ts b/src/app/services/property.service.ts index 1ab2051bf..ca4bff738 100644 --- a/src/app/services/property.service.ts +++ b/src/app/services/property.service.ts @@ -38,7 +38,7 @@ export class PropertyService { let possibleTypes = []; if(datasetPropertyKey.includes('polarization')) { - possibleTypes = (possibleValuesStr || '').split(',').map(x => x.replace('-',',')); + possibleTypes = (possibleValuesStr || '').split(',').map(x => x.replaceAll('-',',')); } else { possibleTypes = (possibleValuesStr || '').split(','); diff --git a/src/app/services/search-params.service.ts b/src/app/services/search-params.service.ts index 7e2847892..d235fad51 100644 --- a/src/app/services/search-params.service.ts +++ b/src/app/services/search-params.service.ts @@ -197,7 +197,7 @@ export class SearchParamsService { private polarizations$ = this.store$.select(filterStore.getPolarizations).pipe( map( polarizations => Array.from(new Set(polarizations)) - .map(x => x.replace(',','+')) + .map(x => x.replaceAll(',','+')) .join(',') ), withLatestFrom(this.store$.select(filterStore.getSelectedDataset)), @@ -208,7 +208,7 @@ export class SearchParamsService { private sidePolarizations$ = this.store$.select(filterStore.getSidePolarizations).pipe( map( polarizations => Array.from(new Set(polarizations)) - .map(x => x.replace(',','+')) + .map(x => x.replaceAll(',','+')) .join(',') ), map(sidePolarization => ({ sidebandpolarization: sidePolarization })), diff --git a/src/app/services/url-state.service.ts b/src/app/services/url-state.service.ts index 2bf3fd0b1..2fabaf061 100644 --- a/src/app/services/url-state.service.ts +++ b/src/app/services/url-state.service.ts @@ -579,7 +579,7 @@ export class UrlStateService { map( pols => { - const param = pols.map(x=> x.replace(',', '-')).join(','); + const param = pols.map(x=> x.replaceAll(',', '-')).join(','); return { 'polarizations': param }; } ) @@ -605,7 +605,7 @@ export class UrlStateService { source: this.store$.select(filterStore.getSidePolarizations).pipe( map( pols => { - const param = pols.map(x => x.replace(',','-')).join(','); + const param = pols.map(x => x.replaceAll(',','-')).join(','); return { 'sidePolarizations': param }; } ) From e05a84c87898fc72cb78b958bfca5d190b0a2ed7 Mon Sep 17 00:00:00 2001 From: tcchase Date: Fri, 30 May 2025 13:56:53 -0400 Subject: [PATCH 68/88] fix: readd sideband filter logic --- .../observation-panel-selector.component.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html index 6ba46dad4..ed78b7ffc 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html @@ -24,9 +24,13 @@ - + : (('POLARIZATION' | translate) + ' ' + ('SIDE' | translate))" + multiple > {{pol}}   {{pol | polarizationCount}} From 6cbe737e114b0993f5e6c53e710dfe4e31e4c4b1 Mon Sep 17 00:00:00 2001 From: tcchase Date: Fri, 30 May 2025 14:05:09 -0400 Subject: [PATCH 69/88] fix: only show product filters for nisar --- .../dataset-filters.component.html | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) 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 23cf7f09f..4e13ae0fb 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 @@ -64,27 +64,28 @@ - - - - - - {{ 'PRODUCT_FILTERS' | translate }} - - - - - - -
- - -
-
+ @if(selectedDataset === 'NISAR') { + + + + + {{ 'PRODUCT_FILTERS' | translate }} + + + + + + +
+ + +
+
+ } Date: Fri, 30 May 2025 10:12:48 -0800 Subject: [PATCH 70/88] fix: change quad polarizations for nisar --- src/app/models/datasets/nisar.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/models/datasets/nisar.ts b/src/app/models/datasets/nisar.ts index 8fa6c89f5..d66930452 100644 --- a/src/app/models/datasets/nisar.ts +++ b/src/app/models/datasets/nisar.ts @@ -43,7 +43,7 @@ export const nisar = { "HH", "HH,HV", "HH,VV", - "HH,HV,VV,VH", + "HH,HV,VH,VV", "VV", "VV,VH", "RH,RV", @@ -52,7 +52,8 @@ export const nisar = { sidepolarizations: [ "HH", "HH,HV", - "HH,HV,VV,VH", + "HH,HV,VH,VV", + // "HH,HV,VV,VH", "VV", "VV,VH", "RH,RV", From feddcce078eaf93323101eff7bdca66262c16515 Mon Sep 17 00:00:00 2001 From: SpicyGarlicAlbacoreRoll Date: Fri, 30 May 2025 13:03:40 -0800 Subject: [PATCH 71/88] feat: enable production config --- .../production-config-selector.component.ts | 6 +++--- src/app/services/search-params.service.ts | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts index dfe6df3c4..3e56f64be 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts @@ -26,9 +26,9 @@ export class ProductionConfigSelectorComponent { prodConfigControl = new FormControl(''); prodConfigs: prodConfig[] = [ - {value: 'Production', viewValue: 'Production'}, - {value: 'Urgent Response', viewValue: 'Urgent Response'}, - {value: 'Science On-Demand', viewValue: 'Science On-Demand'}, + {value: 'PR', viewValue: 'Production'}, + {value: 'UR', viewValue: 'Urgent Response'}, + {value: 'OD', viewValue: 'Science On-Demand'}, ]; private subs: SubSink = new SubSink(); diff --git a/src/app/services/search-params.service.ts b/src/app/services/search-params.service.ts index d235fad51..809b189ba 100644 --- a/src/app/services/search-params.service.ts +++ b/src/app/services/search-params.service.ts @@ -205,6 +205,11 @@ export class SearchParamsService { ({ mainbandpolarization: polarizations }) : ({ polarization: polarizations })), ); + private productionConfig$ = this.store$.select(filterStore.getProductionConfig).pipe( + map((config) => ({ productionconfiguration: config }) + ) + ); + private sidePolarizations$ = this.store$.select(filterStore.getSidePolarizations).pipe( map( polarizations => Array.from(new Set(polarizations)) @@ -274,6 +279,7 @@ export class SearchParamsService { this.beamModes$, this.polarizations$, this.sidePolarizations$, + this.productionConfig$, this.frameCoverage$, this.jointObservation$, this.rangeBandwidth$, From 08c0853c51d26eb4789507262ff02044d8252159 Mon Sep 17 00:00:00 2001 From: tcchase Date: Wed, 4 Jun 2025 11:20:52 -0400 Subject: [PATCH 72/88] fix: clear nisar product filters --- src/app/store/filters/filters.reducer.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/store/filters/filters.reducer.ts b/src/app/store/filters/filters.reducer.ts index cb50a2133..3ba1774c7 100644 --- a/src/app/store/filters/filters.reducer.ts +++ b/src/app/store/filters/filters.reducer.ts @@ -441,7 +441,9 @@ export function filtersReducer(state = initState, action: FiltersActions): Filte sidePolarizations: [], jointObservation: false, instrument: [], - rangeBandwidth: [] + rangeBandwidth: [], + scienceProduct: [], + productionConfig: null, }; } From baa51e46f319d3701a159be6f972553d9b0a970d Mon Sep 17 00:00:00 2001 From: Yoreley Date: Thu, 5 Jun 2025 13:51:01 -0700 Subject: [PATCH 73/88] NISAR translation keys for Production Configuration --- src/app/components/header/info-bar/info-bar.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/components/header/info-bar/info-bar.component.html b/src/app/components/header/info-bar/info-bar.component.html index c1e920139..6561d7ff8 100644 --- a/src/app/components/header/info-bar/info-bar.component.html +++ b/src/app/components/header/info-bar/info-bar.component.html @@ -65,7 +65,7 @@ {{'SCIENCE_PRODUCT' | translate }}: {{scienceProducts | join : ', '}} - {{'PRODUCTION_CONFIG' | translate }}: {{productionConfig}} + {{'PRODUCTION_CONFIGURATION' | translate }}: {{productionConfig}} {{'FLIGHT_DIR' | translate }}: {{flightDirections}} From bd0241af4f2004c2171f795b1c8c348d60e69f71 Mon Sep 17 00:00:00 2001 From: Yoreley Date: Thu, 5 Jun 2025 16:17:09 -0700 Subject: [PATCH 74/88] NISAR translation keys for Production Configuration Vol.2 --- .../production-config-selector.component.html | 2 +- .../production-config-selector.component.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html index a8462356a..84b32c416 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html @@ -4,7 +4,7 @@ -- None -- @for (prodConfig of prodConfigs; track prodConfig) { - {{prodConfig.viewValue}} + {{prodConfig.viewValue | translate }} } {{ prodConfigControl.value }} diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts index 3e56f64be..fb8e2aacc 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts @@ -26,9 +26,9 @@ export class ProductionConfigSelectorComponent { prodConfigControl = new FormControl(''); prodConfigs: prodConfig[] = [ - {value: 'PR', viewValue: 'Production'}, - {value: 'UR', viewValue: 'Urgent Response'}, - {value: 'OD', viewValue: 'Science On-Demand'}, + {value: 'PR', viewValue: 'PRODUCTION'}, + {value: 'UR', viewValue: 'URGENT_RESPONSE'}, + {value: 'OD', viewValue: 'CUSTOM_VALIDATION'}, ]; private subs: SubSink = new SubSink(); From 7769afa5d66b8971909cafc5c328349b9d791cdf Mon Sep 17 00:00:00 2001 From: SpicyGarlicAlbacoreRoll Date: Fri, 6 Jun 2025 09:59:16 -0800 Subject: [PATCH 75/88] fix: first nisar product url now properly parsed from api response --- src/app/services/product.service.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/services/product.service.ts b/src/app/services/product.service.ts index f3220b1ec..3b428cdb6 100644 --- a/src/app/services/product.service.ts +++ b/src/app/services/product.service.ts @@ -17,7 +17,7 @@ export class ProductService { if (g.b.length > 0) { browses = g.b.map( (b: any): string => { - return (b.replace('{gn}', g.gn)); + return (b.replaceAll('{gn}', g.gn)); }); } else { browses = ['/assets/no-browse.png']; @@ -34,8 +34,8 @@ export class ProductService { browses = [browses[0]]; // only show the first browse for displacement for now } - const thumbnail = (g.t ? g.t.replace('{gn}', g.gn) : g.t) || (!browses[0].includes('no-browse') ? browses[0].replace('{gn}', g.gn) : '/assets/no-thumb.png'); - let filename = g.fn.replace('{gn}', g.gn); + const thumbnail = (g.t ? g.t.replaceAll('{gn}', g.gn) : g.t) || (!browses[0].includes('no-browse') ? browses[0].replaceAll('{gn}', g.gn) : '/assets/no-thumb.png'); + let filename = g.fn.replaceAll('{gn}', g.gn); if ( !filename.includes(g.gn)) { filename = `${g.gn}-${filename}`; } @@ -43,13 +43,13 @@ export class ProductService { name: g.gn, productTypeDisplay: g.ptd || g.gn, file: filename, - id: g.pid.replace('{gn}', g.gn), - downloadUrl: g.du.replace('{gn}', g.gn), + id: g.pid.replaceAll('{gn}', g.gn), + downloadUrl: g.du.replaceAll('{gn}', g.gn), bytes: g.s * 1000000, dataset: (g.d === 'STS-59' || g.d === 'STS-68') ? 'SIR-C' : g.d, browses, thumbnail, - groupId: g.gid.replace('{gn}', g.gn), + groupId: g.gid.replaceAll('{gn}', g.gn), isUnzippedFile: false, isDummyProduct: false, metadata: this.getMetadataFrom(g) From 1b4e1d98d500da69da5ff58a03f6f42e46f81bfa Mon Sep 17 00:00:00 2001 From: tcchase Date: Mon, 9 Jun 2025 15:16:37 -0400 Subject: [PATCH 76/88] feat: science products use searchAPI --- .../product-science-selector.component.ts | 20 +++++++++---------- src/app/services/search-params.service.ts | 6 ++++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts b/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts index d46100f49..f5b9e7c93 100644 --- a/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts +++ b/src/app/components/shared/selectors/product-science-selector/product-science-selector.component.ts @@ -35,7 +35,7 @@ export class ProductScienceSelectorComponent implements OnInit, OnDestroy { name: 'Level-3', disabled: false, sciProd: [ - {value: 'LEVEL-3-SME2', viewValue: 'SME2 (Soil Moisture EASE-Grid 2.0)'}, + {value: 'SME2', viewValue: 'SME2 (Soil Moisture EASE-Grid 2.0)'}, ], }, @@ -43,10 +43,10 @@ export class ProductScienceSelectorComponent implements OnInit, OnDestroy { name: 'Level-2', disabled: false, sciProd: [ - {value: 'LEVEL-2-GSLC', viewValue: 'GSLC (Geocoded Single Look Complex)'}, - {value: 'LEVEL-2-GCOV', viewValue: 'GCOV (Geocoded Polarimetric Covariance)'}, - {value: 'LEVEL-2-GUNW', viewValue: 'GUNW (Geocoded Unwrapped Interferogram)'}, - {value: 'LEVEL-2-GOFF', viewValue: 'GOFF (Geocoded Pixel Offsets)'}, + {value: 'GSLC', viewValue: 'GSLC (Geocoded Single Look Complex)'}, + {value: 'GCOV', viewValue: 'GCOV (Geocoded Polarimetric Covariance)'}, + {value: 'GUNW', viewValue: 'GUNW (Geocoded Unwrapped Interferogram)'}, + {value: 'GOFF', viewValue: 'GOFF (Geocoded Pixel Offsets)'}, ], }, @@ -54,17 +54,17 @@ export class ProductScienceSelectorComponent implements OnInit, OnDestroy { name: 'Level-1', disabled: false, sciProd: [ - {value: 'LEVEL-1-RSLC', viewValue: 'RSLC (Range-Doppler Single Look Complex)'}, - {value: 'LEVEL-1-RIFG', viewValue: 'RIFG (Range-Doppler Wrapped Interferogram)'}, - {value: 'LEVEL-1-RUNW', viewValue: 'RUNW (Range-Doppler Unwrapped Interferogram)'}, - {value: 'LEVEL-1-ROFF', viewValue: 'ROFF (Range-Doppler Pixel Offsets)'}, + {value: 'RSLC', viewValue: 'RSLC (Range-Doppler Single Look Complex)'}, + {value: 'RIFG', viewValue: 'RIFG (Range-Doppler Wrapped Interferogram)'}, + {value: 'RUNW', viewValue: 'RUNW (Range-Doppler Unwrapped Interferogram)'}, + {value: 'ROFF', viewValue: 'ROFF (Range-Doppler Pixel Offsets)'}, ], }, { name: 'Level-0', sciProd: [ - {value: 'LEVEL-0-L0B', viewValue: 'L0B (Radar Raw Signal Data)'}, + {value: 'L0B', viewValue: 'L0B (Radar Raw Signal Data)'}, ], }, diff --git a/src/app/services/search-params.service.ts b/src/app/services/search-params.service.ts index 809b189ba..3920b4300 100644 --- a/src/app/services/search-params.service.ts +++ b/src/app/services/search-params.service.ts @@ -266,6 +266,11 @@ export class SearchParamsService { private maxResults$ = this.store$.select(filterStore.getMaxSearchResults).pipe( map(maxResults => ({ maxResults })) ); + + private sciProducts$ = this.store$.select(filterStore.getScienceProduct).pipe( + map(sciProducts => ({processingLevel: sciProducts.join(',')})) + ) + private filterSearchParams$ = combineLatest([ this.searchPolygon$, this.selectedDataset$, @@ -289,6 +294,7 @@ export class SearchParamsService { this.burstParams$, this.operaBurstParams$, // this.operaCalibrationParam$, + this.sciProducts$, this.groupID$] ).pipe( map((params: any[]) => params From 9e9c45a6718e90f891399e31704bc5b232f0bba3 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Mon, 9 Jun 2025 17:57:55 -0700 Subject: [PATCH 77/88] WIP --- .../production-config-selector.component.html | 14 +++++++++----- .../production-config-selector.component.ts | 11 +++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html index 84b32c416..19e1f7245 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.html @@ -1,11 +1,15 @@ - - + {{ 'PRODUCTION_CONFIGURATION' | translate }} - - -- None -- + @for (prodConfig of prodConfigs; track prodConfig) { {{prodConfig.viewValue | translate }} } - + {{ prodConfigControl.value }} + + + diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts index fb8e2aacc..393367d15 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts @@ -1,4 +1,4 @@ -import {Component} from '@angular/core'; +import {Component, OnDestroy, OnInit} from '@angular/core'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {MatInputModule} from '@angular/material/input'; import {MatSelectModule} from '@angular/material/select'; @@ -22,26 +22,33 @@ interface prodConfig { imports: [MatFormFieldModule, MatSelectModule, FormsModule, ReactiveFormsModule, MatInputModule, SharedModule], }) -export class ProductionConfigSelectorComponent { +export class ProductionConfigSelectorComponent implements OnInit, OnDestroy { prodConfigControl = new FormControl(''); + public selectedConfig: string[] = ['PR']; // Default selected config prodConfigs: prodConfig[] = [ {value: 'PR', viewValue: 'PRODUCTION'}, {value: 'UR', viewValue: 'URGENT_RESPONSE'}, {value: 'OD', viewValue: 'CUSTOM_VALIDATION'}, ]; + + private subs: SubSink = new SubSink(); public constructor(private store$: Store) {} public ngOnInit(): void { + this.onProductionConfigSelect(this.selectedConfig); + this.subs.add(this.store$.select(filtersStore.getProductionConfig).subscribe(value => { this.prodConfigControl.setValue(value); })) } + public onProductionConfigSelect(value) { this.store$.dispatch(new filtersStore.setProductionConfig(value)); } + public ngOnDestroy(): void { this.subs.unsubscribe() } From 5469f581e2bf5c7d43116b8577364db9ef6f6cc1 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Tue, 10 Jun 2025 16:02:12 -0700 Subject: [PATCH 78/88] WIP --- .../header/info-bar/info-bar.component.html | 14 ++++++++------ .../header/info-bar/info-bar.component.ts | 2 +- .../production-config-selector.component.ts | 2 +- src/app/services/url-state.service.ts | 7 ++++--- src/app/store/filters/filters.action.ts | 8 ++++---- src/app/store/filters/filters.reducer.ts | 8 ++++---- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/app/components/header/info-bar/info-bar.component.html b/src/app/components/header/info-bar/info-bar.component.html index 6561d7ff8..4a120a8d4 100644 --- a/src/app/components/header/info-bar/info-bar.component.html +++ b/src/app/components/header/info-bar/info-bar.component.html @@ -61,12 +61,14 @@ {{'DATA_TYPE' | translate }}: {{'JOINT_OBSERVATION_ONLY' | translate }} - - {{'SCIENCE_PRODUCT' | translate }}: {{scienceProducts | join : ', '}} - - - {{'PRODUCTION_CONFIGURATION' | translate }}: {{productionConfig}} - + @if(dataset == 'NISAR') { + + {{'SCIENCE_PRODUCT' | translate }}: {{scienceProducts | join : ', '}} + + + {{'PRODUCTION_CONFIGURATION' | translate }}: {{productionConfig}} + + } {{'FLIGHT_DIR' | translate }}: {{flightDirections}} diff --git a/src/app/components/header/info-bar/info-bar.component.ts b/src/app/components/header/info-bar/info-bar.component.ts index 084f4640b..3efa2c3f7 100644 --- a/src/app/components/header/info-bar/info-bar.component.ts +++ b/src/app/components/header/info-bar/info-bar.component.ts @@ -58,7 +58,7 @@ export class InfoBarComponent implements OnInit, OnDestroy { public frameCoverage: string[]; public jointObservation: boolean; public scienceProducts: string[]; - public productionConfig: string; + public productionConfig: string[]; private subs = new SubSink(); public hyp3Default = this.hyp3.isDefaultApi(); diff --git a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts index 393367d15..97bd460de 100644 --- a/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts +++ b/src/app/components/shared/selectors/production-config-selector/production-config-selector.component.ts @@ -23,7 +23,7 @@ interface prodConfig { }) export class ProductionConfigSelectorComponent implements OnInit, OnDestroy { - prodConfigControl = new FormControl(''); + prodConfigControl = new FormControl(['']); public selectedConfig: string[] = ['PR']; // Default selected config prodConfigs: prodConfig[] = [ diff --git a/src/app/services/url-state.service.ts b/src/app/services/url-state.service.ts index 2fabaf061..2657bf2d2 100644 --- a/src/app/services/url-state.service.ts +++ b/src/app/services/url-state.service.ts @@ -267,7 +267,6 @@ export class UrlStateService { ]; } - private eventMonitorParameters(): models.UrlParameter[] { return [{ name: 'eventID', @@ -654,6 +653,7 @@ export class UrlStateService { { name: 'prodConfig', source: this.store$.select(filterStore.getProductionConfig).pipe( + map(configs => configs.join(',')), map(prodConfig => ({ prodConfig })) ), loader: this.loadProduction @@ -1118,8 +1118,9 @@ export class UrlStateService { return new filterStore.setScienceProduct(sciProducts); }; private loadProduction = (productionStr: string): Action => { - - return new filterStore.setProductionConfig(productionStr); + const loadProducts = productionStr + .split(',') + return new filterStore.setProductionConfig(loadProducts); }; private loadJointObservation = (observationStr: string): Action => { return new filterStore.setJointObservation(observationStr === 'true'); diff --git a/src/app/store/filters/filters.action.ts b/src/app/store/filters/filters.action.ts index 9d46b6482..03ded0b1e 100644 --- a/src/app/store/filters/filters.action.ts +++ b/src/app/store/filters/filters.action.ts @@ -94,7 +94,7 @@ export enum FiltersActionType { SET_GEOCODE = '[Filters] Set geocode area name', SET_FULL_BURST = '[Filters] Set Full Burst IDs', - + SET_OPERA_BURST_ID = '[Filters] Set Full OPERA S1 Burst IDs', SET_INCLUDE_CALIBRATION_DATA = '[Filters] Set use calbiration data in OPERA-S1 search', SET_GROUP_ID = '[Filters] Set Sentinel-1 Group ID', @@ -107,7 +107,7 @@ export enum FiltersActionType { SET_INSTRUMENT = '[Filters] Set Instrument', SET_SCIENCE_PRODUCT = '[Filters] Set Science Product', SET_PRODUCTION_CONFIG = '[Filters] Set Production Config', - + } export class SetSelectedDataset implements Action { @@ -481,7 +481,7 @@ export class setUseCalibrationData implements Action { export class setGroupID implements Action { public readonly type = FiltersActionType.SET_GROUP_ID; - constructor(public payload: string) {} + constructor(public payload: string) {} } export class setFrameCoverage implements Action { public readonly type = FiltersActionType.SET_FRAME_COVERAGE; @@ -518,7 +518,7 @@ export class setScienceProduct implements Action { export class setProductionConfig implements Action { public readonly type = FiltersActionType.SET_PRODUCTION_CONFIG; - constructor(public payload: string) {} + constructor(public payload: string[]) {} } diff --git a/src/app/store/filters/filters.reducer.ts b/src/app/store/filters/filters.reducer.ts index 3ba1774c7..55403efa7 100644 --- a/src/app/store/filters/filters.reducer.ts +++ b/src/app/store/filters/filters.reducer.ts @@ -58,7 +58,7 @@ export interface FiltersState { rangeBandwidth: string[]; instrument: string[]; scienceProduct: string[]; - productionConfig: string; + productionConfig: string[]; operaBurstIDs: null | string[]; useCalibrationData: boolean; // used to toggle OPERA-S1 Calval (calibration) datasets @@ -146,7 +146,7 @@ export const initState: FiltersState = { rangeBandwidth: [], instrument: [], scienceProduct: [], - productionConfig: null, + productionConfig: [], groupID: null, shortNames: [] @@ -443,7 +443,7 @@ export function filtersReducer(state = initState, action: FiltersActions): Filte instrument: [], rangeBandwidth: [], scienceProduct: [], - productionConfig: null, + productionConfig: [], }; } @@ -493,7 +493,7 @@ export function filtersReducer(state = initState, action: FiltersActions): Filte shortNames: [ ...action.payload ] }; } - + case FiltersActionType.ADD_BEAM_MODE: { return { ...state, From e46a4f6f797732009afe1f42ee9fcbc090f0ea8c Mon Sep 17 00:00:00 2001 From: SpicyGarlicAlbacoreRoll Date: Fri, 13 Jun 2025 11:10:26 -0800 Subject: [PATCH 79/88] wip: nisar browse alignment method getKMLLayer() --- src/app/services/browse-overlay.service.ts | 154 ++++++++++++++++++++- src/app/services/map/map.service.ts | 9 +- 2 files changed, 157 insertions(+), 6 deletions(-) diff --git a/src/app/services/browse-overlay.service.ts b/src/app/services/browse-overlay.service.ts index e5cff5d2e..ce9fb03dc 100644 --- a/src/app/services/browse-overlay.service.ts +++ b/src/app/services/browse-overlay.service.ts @@ -1,12 +1,13 @@ import { Injectable } from '@angular/core'; import { WktService } from '@services'; -import { Extent } from 'ol/extent'; +import { applyTransform, Extent } from 'ol/extent'; import Feature from 'ol/Feature'; +import KML from 'ol/format/KML'; import Geometry from 'ol/geom/Geometry'; import Polygon from 'ol/geom/Polygon'; import ImageLayer from 'ol/layer/Image'; import Static from 'ol/source/ImageStatic'; - +// import * as olExtent from 'ol/extent'; import { Coordinate } from 'ol/coordinate'; import MultiPolygon from 'ol/geom/MultiPolygon'; import { PinnedProduct } from './browse-map.service'; @@ -23,7 +24,15 @@ import { AppState } from '@store'; import GeoTIFFSource from 'ol/source/GeoTIFF'; import TileLayer from 'ol/layer/WebGLTile.js'; import ImageSource from 'ol/source/Image'; +import VectorLayer from 'ol/layer/Vector'; +import VectorSource from 'ol/source/Vector'; +// import { Overlay } from 'ol'; +import { Icon, Style } from 'ol/style'; +import { ImageStatic } from 'ol/source'; +import { getTransform, Projection } from 'ol/proj'; +// import { HttpClient } from '@angular/common/http'; +// import { CustomProjection } from './map/views'; @Injectable({ providedIn: 'root' }) @@ -66,8 +75,11 @@ export class BrowseOverlayService { }), ); - constructor(private wktService: WktService, - private store$: Store) { } + constructor( + private wktService: WktService, + private store$: Store, + // private http: HttpClient, +) { } private createImageSource(url: string, extent: Extent) { return new Static({ @@ -185,6 +197,140 @@ export class BrowseOverlayService { } } + public getKMLLayer(product: models.CMRProduct, png_url: string, wkt: string, className: string = 'ol-layer', _layer_id: string = '') { + function _substitute_url(url: string) { + console.log(url) + // https://openlayers.org/en/v7.5.2/apidoc/module-ol_format_KML-KML.html + // For `iconUrlFunction`, kmls are formatted without url of image + return png_url + // return null + + } + + + const feature = this.wktService.wktToFeature(wkt, 'EPSG:4326'); + const feature2 = this.wktService.wktToFeature(wkt, 'EPSG:3857'); + + const polygon = this.getPolygonFromFeature(feature, wkt); + const polygon2 = this.getPolygonFromFeature(feature2, wkt); + +// let proj = new CustomProjection( +// 'EPSG:27700', +// '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 ' + +// '+x_0=400000 +y_0=-100000 +ellps=airy ' + +// '+towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 ' + +// '+units=m +no_defs', +// polygon.getExtent() +// ) + // return Imagelayer; + let proj = new Projection({code: 'EPSG:4326', 'metersPerUnit': 5, "axisOrientation": 'nwu', }) + + // let l = polygon.getArea() + // left + // bottom + // right + // top + + let fromLonLat = getTransform(proj, 'EPSG:3857'); + let extent = polygon.getExtent() + // olExtent.getlef + // let flatcoords = polygon.getCoordinates()[0] + + console.log(extent) + console.log(polygon.getCoordinates()) + // let simped = polygon.getSimplifiedGeometry(0.01).getCoordinates()[0] + // simped.pop() + // extent[2] = extent[2] - 5/2 + + let img = new ImageLayer({ + // source: static_image_source, + extent: polygon2.getExtent(), + + }) + + let coords = polygon.getCoordinates()[0] + let ext = applyTransform([...coords[1], ...coords[3]], fromLonLat, undefined ) + let static_image_source = new ImageStatic({ + url: png_url, + projection: 'EPSG: 4326', + // imageExtent: img.getExtent(), + imageExtent: ext + // imageExtent: extent.map(f => f), + // imageExtent: olExtent.boundingExtent( + // polygon.getCoordinates()[0].reverse() + // ), + // imageSize: [2018, 1845] + }) + + + + img.setSource(static_image_source) + return img; + const iconStyle = new Style({ + image: new Icon({ + // anchor: [0.5, 46], + anchorXUnits: 'pixels', + anchorYUnits: 'pixels', + src: png_url, + scale: 200 + }), + + }); + + feature.setStyle(iconStyle) + let source = new VectorSource({ + wrapX: models.mapOptions.wrapX, + features: [feature] + }); + const vecLayer = new VectorLayer({ + "extent": polygon.getExtent(), + source, + "zIndex": 0, + opacity: 1.0, + className, + // style: iconStyle + }) + // vecLayer.setStyle(iconStyle) + return vecLayer + // function loader_function(extent, resolution, projection, success, failure) { + // const proj = projection.getCode(); + + // const url = 'https://ahocevar.com/geoserver/wfs?service=WFS&' + + // 'version=1.1.0&request=GetFeature&typename=osm:water_areas&' + + // 'outputFormat=application/json&srsname=' + proj + '&' + + // 'bbox=' + extent.join(',') + ',' + proj; + + // const xhr = new XMLHttpRequest(); + // xhr.open('GET', url); + // const onError = function() { + // vectorSource.removeLoadedExtent(extent); + // failure(); + // } + // xhr.onerror = onError; + // xhr.onload = function() { + // if (xhr.status == 200) { + // const features = vectorSource.getFormat().readFeatures(xhr.responseText); + // vectorSource.addFeatures(features); + // success(features); + // } else { + // onError(); + // } + // } + // xhr.send(); + // } + let kml = product.metadata.nisar.additionalUrls.find(https_url => https_url.endsWith('.kml')) + + let vector = new VectorLayer({ + source: new VectorSource({ + url: kml, + // loader: loader_function, + format: new KML({iconUrlFunction: _substitute_url}), + }), + }); + return vector; + } + + public setPinnedProducts(pinnedProducts: {[product_id in string]: PinnedProduct}, productLayerGroup: LayerGroup) { const pinnedProductIds = Object.keys(pinnedProducts); diff --git a/src/app/services/map/map.service.ts b/src/app/services/map/map.service.ts index a864bf87d..8fc2dd862 100644 --- a/src/app/services/map/map.service.ts +++ b/src/app/services/map/map.service.ts @@ -744,7 +744,7 @@ export class MapService implements OnDestroy { } - public setSelectedBrowse(url: string, wkt: string) { + public setSelectedBrowse(url: string, wkt: string, _scene: models.CMRProduct = null) { if (!!this.browseImageLayer) { this.map.removeLayer(this.browseImageLayer); } @@ -759,7 +759,12 @@ export class MapService implements OnDestroy { this.browseImageLayer = this.browseOverlayService.createImageLayer(url, wkt, 'ol-layer', 'current-overlay'); this.map.addLayer(this.browseImageLayer); }) - } else { + } + // else if(url.toLowerCase().includes('nisar')) { + // this.browseImageLayer = this.browseOverlayService.getKMLLayer(scene, url, wkt, 'ol-layer', 'current-overlay'); + // this.map.addLayer(this.browseImageLayer); + // } + else { this.browseImageLayer = this.browseOverlayService.createNormalImageLayer(url, wkt, 'ol-layer', 'current-overlay'); this.map.addLayer(this.browseImageLayer); } From 6499a6d0d170d1a8b1267999517f26670bf8dec6 Mon Sep 17 00:00:00 2001 From: SpicyGarlicAlbacoreRoll Date: Mon, 16 Jun 2025 09:42:37 -0800 Subject: [PATCH 80/88] fix search param production config filter breaking on empty list --- src/app/services/search-params.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/services/search-params.service.ts b/src/app/services/search-params.service.ts index 3920b4300..c23706739 100644 --- a/src/app/services/search-params.service.ts +++ b/src/app/services/search-params.service.ts @@ -206,7 +206,7 @@ export class SearchParamsService { ); private productionConfig$ = this.store$.select(filterStore.getProductionConfig).pipe( - map((config) => ({ productionconfiguration: config }) + map((config) => ({ productionconfiguration: config.join(',') }) ) ); From 4d041676ef7dbd5910e13a4305d25497805f3f2c Mon Sep 17 00:00:00 2001 From: Yoreley Date: Tue, 17 Jun 2025 14:58:30 -0700 Subject: [PATCH 81/88] New files en, es --- src/assets/i18n/en.json | 139 ++------------- src/assets/i18n/es.json | 378 ++++++++++++++-------------------------- 2 files changed, 152 insertions(+), 365 deletions(-) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 46914ce4c..7e951ea1f 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -16,18 +16,13 @@ "ADD_ALL_RESULTS_TO_DOWNLOADS": "Add all results to downloads", "ADD_ALL_RESULTS_TO_ON_DEMAND_QUEUE": "Add all results to On Demand queue", "ADD_BEAM_MODE_TO_SEARCH": "Add beam mode to search", - "ADD_BY_FILE_TYPE": "Add by file type", - "ADD_BY_PRODUCT_TYPE": "Add by product type", "ADD_FILE_TO_DOWNLOADS": "Add file to downloads", "ADD_FILE_TO_QUEUE": "Add file to queue", "ADD_JOB": "Add job", - "ADD_MAIN_POLARIZATION_TO_SEARCH": "Add main polarization to search", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Add pair to On Demand queue", - "ADD_POINTS": "Add points", "ADD_POLARIZATION_TO_SEARCH": "Add polarization to search", - "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Add range bandwidth to search", "ADD_SCENE_FILES_TO_DOWNLOADS": "Add scene files to downloads", - "ADD_SIDE_POLARIZATION_TO_SEARCH": "Add side polarization to search", + "ADD_SHOPPING_CART": "add_shopping_cart", "ADD_TO_ON_DEMAND_QUEUE": "Add to On Demand queue", "ADDITIONAL_DRAWING_TOOL_OPTIONS_ARE_AVAILABLE_IN_THE_TOOLBAR_INCLUDING_POINT_LINESTRING_AND_POLYGON_OPTIONS": "Additional drawing tool options are available in the toolbar, including point, linestring, and polygon options.", "ADDITIONAL_FILTERS": "Additional Filters", @@ -36,14 +31,12 @@ "ADVANCED_FEATURES": "Advanced Features", "AIRSAR_DESC": "AIRSAR was an all-weather imaging tool able to penetrate through clouds and collect data at night. The longer wavelengths could also penetrate into the forest canopy and...", "ALL": "all", - "ALL_AOIS": "All AOIs", "ALL_DATASETS_AND_THIS_LIST_CAN_CHANGE": "all datasets, and this list can change.", "ALL_HELP_AND_TUTORIALS": "All Help & Tutorials", "ALL_OF_THE_OTHER_SEARCH_FILTERS_OF_INTEREST_TO_YOU_TO_CREATE_THE_SEARCH_EXACTLY_AS_YOU_LIKE_IT": "all of the other search filters of interest to you to create the search exactly as you like it.", "ALL_TUTORIALS": "All Tutorials", "ALLOWS_CONSTRAINING_THE_SEARCH_TO_CERTAIN_ANNUAL": " allows constraining the search to certain annual", "ALLOWS_FOR_ADDITIONAL_PARAMETERS_TO_BE_APPLIED_TO_NARROW": " allows for additional parameters to be applied to narrow", - "ALOS_2_DESC": "ALOS-2 PALSAR-2 ScanSAR uses an L-Band instrument to acquire wide-beam level 1.1 (SLC) products with coverage areas revisited every 14 days.", "AMOUNT": "Amount", "AMPLITUDE": "amplitude", "AN_EASY_WAY_TO_REGISTER_FOR_AN_EARTHDATA_ACCOUNT_IS_TO_CLICK_THE_SIGN_IN_ICON": "An easy way to register for an Earthdata account is to click the \"Sign in\" icon", @@ -69,7 +62,6 @@ "AREA_OF_INTEREST": "Area Of Interest", "AREA_OF_INTEREST_OPTIONS": "Area of Interest Options", "AREA_OF_INTEREST_WKT": "Area of Interest • WKT", - "ARIA_VERSION": "ARIA Version", "ARROW_BACKWARD": "arrow_backward", "ARROW_FORWARD": "arrow_forward", "ASCENDING": "Ascending", @@ -82,7 +74,6 @@ "AT_THE_BOTTOM_OF_THE_LIST_OF_FILES_IS_A_FOOTER_BAR_THAT_SHOWS_SEVERAL_BUTTONS": "At the bottom of the list of files is a footer bar that shows several buttons.", "AUTO_RIFT_PAIR": "AutoRIFT pair", "AUTORIFT_DESC": "autoRIFT is a highly accurate and efficient algorithm for finding the pixel displacement between two radar images. ", - "AZIMUTH_ANGLE": "Azimuth Angle", "AZIMUTH_ANX_TIME": "Azimuth Anx Time", "AZIMUTH_TIME": "Azimuth Time", "BACK": "Back", @@ -99,10 +90,8 @@ "BEAM_MODES": "Beam Modes", "BEAM_MODES_SELECTED": "beam modes selected", "BETA": "(beta)", - "BOX": "Box", "BOX_DRAW": "Box Draw", "BROWSE_IMAGE_NOT_ALL_SCENES_WILL_HAVE_ALL_EXTRA_INFORMATION": "browse image. Not all scenes will have all extra information.", - "BROWSE_IMAGE_OPACITY": "Browse Image Opacity", "BUILD_COMMIT": "Build Commit", "BURST_ID_ABSOLUTE": "Absolute Burst ID", "BURST_ID_FULL": "Full Burst ID", @@ -113,17 +102,15 @@ "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX": "By default, the map-drawing tool is a bounding box.", "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "By default, the map-drawing tool is a bounding box. Click on the map once to specify the", "CALIBRATION": "CalVal", - "CALIBRATION_PRODUCTS_OPTION": "CalVal Products", + "CALIBRATION_PRODUCTS_OPTION": "Calibration & Validation Reference Products", "CAMPAIGN": "Campaign", "CAMPAIGN_NAME": "Campaign Name", "CAMPAIGN_SELECTOR": "Campaign Selector", "CANADAS_OPEN_LICENSE": "Canada's Open Government License", "CANCEL": "Cancel", "CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(center column) and Files column (right) will populate.", - "CHARACTERS": "characters", "CHART": "Chart", "CHEVRON_RIGHT": "chevron_right", - "CIRCLE": "Circle", "CIRCLE DRAW": "Circle Draw", "CIRCLE_DRAW": "Circle Draw", "CITATION": "Citation", @@ -150,12 +137,10 @@ "COPIED_EVENT_ID": "Copied Event ID", "COPY": "Copy", "COPY_FILE_I_DS": "Copy File IDs", - "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copy file IDs will copy the file names of all files in the queue for use elsewhere.", "COPY_FILE_ID": "Copy File ID", "COPY_FILE_ID_TO_CLIPBOARD": "Copy File IDs to clipboard", "COPY_FILE_IDS": "Copy File IDs", "COPY_FILE_URLS_TO_CLIPBOARD": " Copy File URLs to clipboard", - "COPY_JOB_ID": "Copy Job ID", "COPY_NAME": "Copy Name", "COPY_REFERENCE_SCENE_NAMES_TO_CLIPBOARD": "Copy reference scene names to clipboard", "COPY_SCENE_NAME": "Copy scene name", @@ -170,29 +155,20 @@ "COREGISTERS_SAR_DATA_TO_THE_DEM_RATHER_THAN_USING_DEAD_RECKONING_BASED_ON_ORBIT_FILES": "Coregisters SAR data to the DEM, rather than using dead reckoning based on orbit files.", "CORPORATE_FARE_ASF": "corporate_fareASF", "CREATE_SUBSCRIPTION": "Create Subscription...", - "CREDIT": "credit", - "CREDIT_COST": "Credit Cost", - "CREDIT_MAX": "credit max", - "CREDITS": "credits", - "CREDITS_LEFT": "credits left", - "CREDITS_LEFT_THIS_MONTH": "credits left this month", "CRITICAL_BASELINE": "Critical Baseline", "CRITICAL_BASELINE_ABBR": "Critical Baseline", "CSV": "csv", - "CUMULATIVE_LAYER": "Cumulative Layer", "CURRENT_SARVIEWS_PRODUCT_FILES_PRODUCT_SIZE_TO_STRING": "currentSarviewsProduct.files.product_size.toString()", "CUSTOM_PAIR": "Custom Pair", "CUSTOMIZE_ENVIRONMENTS": "Customize Environments", "DARK": "Dark", "DATA": "Data", - "DATA_COURTESY": "Data courtesy of OPERA", "DATA_COURTESY_OF": "Data courtesy of", "DATA_DOWNLOAD": "Data Download", "DATA_DOWNLOAD_IS_USED_TO_DOWNLOAD_MULTIPLE_PRODUCTS_WITH_EITHER_THE": "Data Download is used to download multiple products, with either the", "DATA_FILTERS": "Date Filters", "DATA_TYPE": "Data Type", "DATASET": "Dataset", - "DATASET_INFO": "Dataset Info", "DATASET_LINKED": "dataset_linked", "DATASET_OPTIONS": "Dataset Options", "DATASET_SUBTYPES": "Dataset Subtypes", @@ -214,9 +190,6 @@ "DEFAULT_THEME": "Theme", "DEFINE_A_SEARCH_YOU_WOULD_LIKE_TO_SAVE_ENTER_THE_SEARCH_TYPE_DATASET_AREA_OF_INTEREST_AND": "Define a search you would like to save. Enter the search type, dataset, area of interest and", "DEFINING_DATA_SEARCHES": "Defining Data Searches", - "DEFORMATION": "Deformation", - "DELETE": "Delete", - "DELETE_ALL_SERIES": "Delete all series", "DELETE_FOREVER": "delete_forever", "DEM": "DEM", "DEM NAME": "DEM Name", @@ -225,7 +198,6 @@ "DEPENDING_ON_THE_WIDTH_OF_YOUR_INTERNET_BROWSER_NONE_OR_SOME_OF_THE_FILTERS_WILL_BE": "Depending on the width of your internet browser, none or some of the filters will be", "DEPTH": "Depth", "DERIVED_DATASETS": "Derived Datasets", - "DERIVED_DATASETS_1": "Derived Datasets", "DERIVED_DATASETS_CONTAIN_A_COLLECTION_OF_DATASETS_AVAILABLE_TO_VIEW_AND_DOWNLOAD": "Derived datasets contain a collection of datasets available to view and download.", "DESCENDING": "Descending", "DESCRIP_GLOBAL_SEASONAL_SENTINEL": "This dataset is the first-of-its-kind spatial representation of multi-seasonal, global SAR repeat-pass interferometric coherence and backscatter signatures. Global coverage comprises all land masses and ice sheets from 82 degrees northern to 78 degrees southern latitude. The dataset is derived from high-resolution multi-temporal repeat-pass interferometric processing of about 205,000 Sentinel-1 Single-Look-Complex (SLC) data acquired in Interferometric Wide-Swath mode (Sentinel-1 IW mode) from 1-Dec-2019 to 30-Nov-2020.", @@ -236,14 +208,8 @@ "DEVELOPER": "Developer", "DIRECTION": "Direction", "DISABLE": "Disable", - "DISP_DOI": "DISP DOI", - "DISPLACEMENT": "Displacement", - "DISPLACEMENT_DESCRIPTION": "Displacement products provide information on anthropogenic and natural changes of Earth's surface, covering North America.", - "DISPLACEMENT_FILTERS": "Displacement Filters", - "DISPLACEMENT_SEARCH": "Displacement Search", "DISPLAYED_IF_YOU_WISH_TO_UNDO_THIS_ACTION": "displayed if you wish to undo this action.", "DISPLAYED_IN_THE_SEARCH_MENU_AT_THE_TOP_YOU_CAN_ACCESS_ALL_OF_THE_HIDDEN_FILTERS_BY": "displayed in the search menu at the top. You can access all of the hidden filters by", - "DO_YOU_WANT_TO_DELETE_ALL_SERIES": "Do you want to delete all series?", "DONE": "Done", "DOWNLOAD": "Download", "DOWNLOAD_ALL": "Download All", @@ -260,13 +226,12 @@ "DRAG_AND_DROP": "Drag and Drop", "DRAG_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON_TO_MOVE_TO_YOUR_AREA_OF_INTEREST": "Drag the map while holding down the left mouse button to move to your area of interest.", "DRAW": "draw", - "DRAW_A_BOX": "Draw a Box", - "DRAW_A_CIRCLE": "Draw a Circle", + "DRAW_A_BOX": "Draw a box", + "DRAW_A_CIRCLE": "Draw a circle", "DRAW_A_LINE": "Draw a Line", "DRAW_A_POLYGON": "Draw a Polygon", "DRAW_NEW_AREA_OF_INTEREST": "Draw new area of interest", "DRAW_ON_THE_MAP": "Draw On The Map", - "DRAW_TRENDLINE": "Draw Trendline", "E_PREVENT_DEFAULT": "e.preventDefault();", "EACH_WITH_THEIR_OWN_PROCESSING_OPTIONS_SELECT_THE_PROCESSINGOPTIONS_YOU_WISH": "each with their own processing options. Select the processingoptions you wish.", "EDIT": "Edit", @@ -291,6 +256,7 @@ "EVENT_TYPES": "Event Types", "EXAMPLE": "Example", "EXAMPLE_S1_B_IW_SLC_1_SDV_20210704_T135937_20210704_T140004_027645_034_CB_0_4_B2_C": "Example: S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C", + "EXAMPLE:": "Example", "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Expand your skills with our full list of Vertex Data Search tutorials.", "EXPERIMENTAL": "Experimental", "EXPIRED": "Expired", @@ -305,9 +271,9 @@ "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "fields are available for select datasets. You may enter", "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": " fields. The date picker will automatically constrain", "FILE": "File", + "FILE_COPY": "file_copy", "FILE_I_DS_NAMES_CAN_BE_COPIED": "File IDs (names) can be copied", "FILE_IDS": "File IDs.", - "FILE_IMPORT_SUPPORTED": "File Import Supported", "FILE_IMPORT_SUPPORTED ": "File Import Supported", "FILE_LIST_SEARCH": "File List Search", "FILE_OPTION": "file option.", @@ -315,6 +281,7 @@ "FILE_TYPE": "File Type", "FILE_TYPES": "File Types", "FILE_TYPES_SELECTED": "file types selected", + "FILE_UPLOAD": "file_upload", "FILES": "Files", "FILES_CAN_BE_INDIVIDUALLY_DOWNLOADED": "Files can be individually downloaded", "FILES_HERE": "Files Here", @@ -338,12 +305,11 @@ "FORMAT": "Format", "FORMAT_SHAPES": "format_shapes", "FRAME": "Frame", - "FRAME_COVERAGE": "Frame Coverage", "FRAME_END": "Frame End", "FRAME_START": "Frame Start", "FREQUENCY": "Frequency", - "FULL": "Full", "FULL_BURST_ID": "Full Burst ID", + "FUNCTION_W_D_S_L_I_W_L_W_L_W_L_PUSH_GTM_START": "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':", "GAMMA0": "gamma0", "GAPS_DETECTED": "Gaps Detected", "GEO_SEARCH": "Geo Search", @@ -367,7 +333,6 @@ "GLACIER_SPEED": "Glacier Speed", "GLOBAL_SEASONAL_SENTINEL": "Global Seasonal Sentinel-1 Interferometric Coherence & Backscatter Dataset", "GRATICULE_OVERLAY": "Graticule Overlay", - "GRAZING_ANGLE": "Grazing Angle", "GRIDLINES_OVERLAY": "Gridlines Overlay", "GROUP_ID": "Group ID", "GROUP_ID_INFO_BAR": "Group ID", @@ -384,10 +349,11 @@ "HOW_TO_BASIC_LIST_SEARCH": "How-To basic list Search", "HOW_TO_CITE_USING_THIS_DATA": "How to cite using this data", "HTTPS_URS_EARTHDATA_NASA_GOV_USERS_NEW": "https://urs.earthdata.nasa.gov/users/new", + "HTTPS_WWW_GOOGLETAGMANAGER_COM_GTM_JS_ID_I_DL_F_PARENT_NODE_INSERT_BEFORE_J_F": "'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);", "HY_P3_API_URL": "HyP3 API URL", "HY_P3_USER_GUIDE": "HyP3 User Guide", - "HYP3_JOB_IDS_INFO_BAR": "HYP3 Job IDs Info Bar", "I_DS": "IDs", + "IF_URL_VERTEX_BETA_ASF_ALASKA_EDU_URL_VERTEX_DAAC_ASF_ALASKA_EDU_URL_VERTEX_RETIRED_DAAC_ASF_ALASKA_EDU": "if (url === 'vertex-beta.asf.alaska.edu' || url === 'vertex.daac.asf.alaska.edu' || url === 'vertex-retired.daac.asf.alaska.edu') {", "IF_YOU_ARE_LOGGED_INTO_VERTEX_CLICKING_ON_THE_CART_ICON_IN_THE_HEADER_LABELED_DOWNLOADS": "If you are logged into Vertex, Clicking on the cart icon in the header, labeled Downloads,", "IF_YOU_DO_NOT_ALREADY_HAVE_ONE_REGISTER_FOR_A_FREE_EARTHDATA_LOGIN_ACCOUNT": "If you do not already have one, register for a free Earthdata Login account.", "IF_YOU_NEED_MORE_INFORMATION_ABOUT_A_PARTICULAR_DATASET_CLICK_ON_THE_HELP_ICON_IN_THE_DATASET_SELECTOR": "If you need more information about a particular dataset, click on the help icon in the Dataset selector.", @@ -399,17 +365,16 @@ "IN_SAR_PAIR": "InSAR pair", "IN_THE_LEFT_COLUMN_AS_YOU_CLICK_ON_THE_DIFFERENT_SCENES_YOU_WILL_SEE_THE_CENTER_COLUMN_REFLECT_THE": "in the left column. As you click on the different scenes, you will see the center column reflect the", "IN_THE_UPPER_RIGHT_CORNER_OF_VERTEX_THEN_SELECT_THE_REGISTER_BUTTON_AND_FILL_IN": "in the upper-right corner of Vertex, then select the \"REGISTER\" button and fill-in", - "INCIDENCE_ANGLE": "Incidence Angle", "INCIDENCE_ANGLE_MAP": "Incidence Angle Map", "INCLUDE": "Include", "INCLUDE_A_FALSE_COLOR_RGB": "Include a false-color RGB decomposition in the product package for dual-pol granules (ignored for single-pol granules).", "INCLUDE_THE_LOCAL_INCIDENCE_ANGLE_MAP_IN_THE_PRODUCT_PACKAGE": "Include the local incidence angle map in the product package.", "INDETERMINATE": "indeterminate", - "INFO": "Info", "INFO_BACKSCATTER_COEFFICIENT": "Backscatter coefficient normalization, either by ground area (sigma0) or illuminated area projected into the look direction (gamma0).", "INFO_GISMO": "The Global Ice-Sheet Mapping Observatory (GISMO) project mapped flight lines over the Greenland ice sheet.", "INFO_GLACIER_SPEED": "This dataset reveals complex patterns of glacier flow throughout Alaska.", "INFO_GLOBAL_SEASONAL_SENTINEL": "This dataset provides spatial representation of multi-seasonal, global interferometric coherence and backscatter signatures.", + "INFO_INTERNATIONAL_POLAR_YEAR": "International Polar Year (IPY) is a collaborative research event focused on the Arctic and Antarctic.", "INFO_NAME_OF_THE_DEM": "Name of the DEM to use for processing. copernicus will use the Copernicus GLO-30 Public DEM, while legacy will use the DEM with the best coverage from ASF's legacy SRTM/NED datasets.", "INFO_PRODUCT_PIXEL": "Product pixel spacing in meters", "INFO_PRODUCT_PIXEL ": "Product pixel spacing in meters.", @@ -418,9 +383,7 @@ "INFO_SEA_ICE_MEASURES": "This dataset includes radar snapshots of Arctic and Southern Ocean sea ice.", "INFO_WETLANDS_MEASURES": "This dataset includes regional and continental-scale maps covering crucial wetlands systems.", "INSAR_DESC": "Interferometric Synthetic Aperture Radar (InSAR) processing uses two SAR images collected over the same area to determine geometric properties of the surface. The phase measurements of the two images acquired at different times are differenced to detect and quantify surface changes.", - "INSTRUMENT": "Instrument", - "INSTRUMENTS": "Instruments", - "INSTRUMENTS_SELECTED": "instruments selected", + "INTERNATIONAL_POLAR_YEAR": "International Polar Year", "INVALID_BASELINE": "Invalid Baseline", "INVALID_END_DAY": "Invalid End Day", "INVALID_START_DAY": "Invalid Start Day", @@ -435,7 +398,6 @@ "JERS_DESC": "The JERS-1 (Japanese Earth Resources Satellite) SAR is a high-resolution, all-weather imaging radar. Data uses: land surveys, agriculture, forestry, fisheries, environmental...", "JOB": "job", "JOB_FILTERS": "Job Filters", - "JOB_IDS_SELECTOR": "Job IDs Selector", "JOB_MAX": "job max", "JOB_STATUS": "Job Status", "JOB_SUBMITTED": "Job Submitted", @@ -444,7 +406,6 @@ "JOBS_LEFT_THIS_MONTH": "jobs left this month", "JOBS_NOW": "jobs now", "JOBS_PER_MONTH": "jobs per month", - "JOINT_OBSERVATION_ONLY": "Joint Observation Only", "JUN_JUL_AUG": "Jun, Jul, Aug", "KML": "kml", "LANGUAGE": "Language", @@ -454,12 +415,9 @@ "LEARN_MORE_ABOUT_ASF_AND_SAR": "Learn More About ASF & SAR", "LEARN_THE_BASICS": "Learn the Basics", "LEFTMOST_COLUMN_OF_THE_RESULTS_PANEL": "leftmost column of the results panel.", - "LICENSE": "License", "LIGHT": "Light", - "LINE": "Line", "LINE_DRAW": "Line draw", "LINE_POLYGON_AND_BOUNDING_BOX": "line, polygon, and bounding box.", - "LINEAR_FIT_NOT_AVAILABLE": "Linear fit not available", "LINK": "link", "LIST": "List", "LIST_OF": "List of", @@ -470,21 +428,16 @@ "LOADING_FILES": "Loading files...", "LOGIN": "Login", "LOGIN_TO_VIEW": "login to view", - "LOGIN_TO_VIEW_NUMBER_OF_CREDITS_LEFT_THIS_MONTH": "login to view number of credits left this month", "LOGIN_TO_VIEW_NUMBER_OF_JOBS_LEFT_THIS_MONTH": "login to view number of jobs left this month", "LOOKING_FOR_DEMS": "Looking for DEMs", "LOOKS TWO": "looks_two", "LOOKS_MANY": "Looks Many", "LOOKS_OTHER": "Looks Other", "MAGNITUDE": "Magnitude", - "MAIN": "Main", - "MAIN_BAND_FREQ_A_POLARIZATION": "Main Band (Freq. A) Polarization", - "MAIN_POLARIZATIONS": "Main Polarizations", "MAKE_SURE_YOU_ARE_LOGGED_INTO_VERTEX": "Make sure you are logged into Vertex.", "MAKE_SURE_YOU_ARE_LOGGED_INTO_VERTEX_SEARCHES_CANNOT_BE_SAVED_AND_SEARCH_HISTORY_CANNOT_BE": "Make sure you are logged into Vertex. Searches cannot be saved and search history cannot be", "MAP": "map", "MAP_CONTROLS_IN_DEPTH": "Map Controls In-Depth", - "MAP_LAYERS": "Map Layers", "MAP_TILER": "© MapTiler", "MAP_VIEW": "Map View", "MAR_APR_MAY": "Mar, Apr, May", @@ -513,27 +466,21 @@ "NAME": "Name", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST": "Navigate To Your Area of Interest", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST_BY_DRAGGING_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON": "Navigate to your area of interest by dragging the map while holding down the left mouse button.", - "NEW": "New!", "NEW_DATE_GET_TIME_EVENT_GTM_JS_VAR_F_D_GET_ELEMENTS_BY_TAG_NAME_S": "new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],", - "NEW_END_DATE": "New End Date'\n", + "NEW_END_DATE": "New End Date", "NEXT": "Next", - "NISAR_DESC": "NISAR provides L- and S-band SAR data to measure Earth's changing ecosystems, dynamic surfaces, and ice masses with 12-day regularity on ascending and descending passes.", "NO OVERLAP THRESHOLD": "No Overlap Threshold", - "NO_AREA_ON_INTEREST_SPECIFIED": "No area of interest specified.", "NO_BEAM_MODES_TO_SELECT": "No beam modes to select", - "NO_CREDITS_LEFT_THIS_MONTH": "No credits left this month", "NO_FILE_TYPES_TO_SELECT": "No file types to select", "NO_FILTERS": "(No filters)", "NO_FLIGHT_DIRECTION_SELECTED": "No flight directions selected", "NO_FLIGHT_DIRECTIONS_TO_SELECT": "No flight directions to select", "NO_FRAME_INPUT": "No frame input", "NO_JOBS_LEFT_THIS_MONTH": "No jobs left this month", - "NO_MOBILE_DISPLACEMENT_SEARCH": "Displacement Searches are not available on small screens.", "NO_NAME": "No Name", "NO_ON_DEMAND_PRODUCTS": "No On Demand Products", "NO_PAIR_SELECTED": "No Pair Selected", "NO_PATH_INPUT": "No path input", - "NO_POINT_SELECTED": "No Point Selected", "NO_POLARIZATION_SELECTED": "No polarization selected", "NO_POLARIZATIONS_TO_SELECT": "No polarizations to select", "NO_PRODUCTS_AVAILABLE_FOR_THIS_EVENT": "No Products Available for this Event", @@ -541,14 +488,12 @@ "NO_SCENE_SELECTED": "No Scene Selected", "NO_SUBTYPES_TO_SELECT": "No subtypes to select", "NO_SUITABLE_PRODUCTS_FOR_THIS_TOOL": "No suitable products for this tool", - "NO_VALID_DATA_FOR_POINT": "No valid data for point.", "NON_DISCRIMINATION": "Non-Discrimination", - "NONE": "None", "NOT_ABLE_TO_SELECT_SIMILAR_SCENES_FROM_THIS_SOURCE": "Not able to select similar scenes from this source", "NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Not all filters will be available for", "NOTE_IN_VERTEX_A_SCENE_IS_CONSIDERED_TO_BE_A_PACKAGE_CONTAINING_ALL_FILES_OR_PRODUCTS": "Note: In Vertex, a scene is considered to be a package containing all files, or products,", "NOTE_THE_NUMBER_OF_FILES_THAT_ARE_PREDICTED_TO_MATCH_THE_CURRENT_SEARCH_PARAMETERS_IS_DISPLAYED_UNDER_THE_SEARCH_BUTTON_IF_THERE_ARE_NO_PREDICTED_MATCHES_THE_SEARCH_BUTTON_WILL_BE_GREYED_OUT_AND_DISPLAY_NO_RESULTS": "Note: The number of files that are predicted to match the current search parameters is displayed under the SEARCH button. If there are no predicted matches, the search button will be greyed out and display NO RESULTS.", - "OBSERVATIONAL_FILTERS": "Observational Filters", + "NUM_BASELINE_SCENES_ASYNC_1_S": "(numBaselineScenes$ | async) === 1 ? \"\" : \"s\"", "OF": "of", "OF_THE_BOUNDING_BOX_OR_TO_DELETE_THE_BOUNDING_BOX": "of the bounding box, or to delete the bounding box.", "OF_THESE_ZIPPED_FILES_TO_BE_EXAMINED_AND_INDIVIDUAL_FILES_WITHIN_THE_ZIP_ARCHIVE_TO_BE_ADDED_TO_THE_CART": "of these zipped files to be examined and individual files within the zip archive to be added to the cart", @@ -569,7 +514,7 @@ "ONLY_AVAILABLE_IN_CHROME": "Only available in Chrome", "ONLY_DISPLAY_SCENES_WITH_A_BROWSE_IMAGE": "Only display scenes with a browse image", "OPACITY": "Opacity", - "OPACITY_OF_COHERENCE_LAYER": "Coherence Layer Opacity", + "OPACITY_OF_BROWSE_IMAGES": "Opacity of Browse Images", "OPEN_IN_IMAGE_VIEWER": "Open in Image Viewer", "OPEN_LINK_TO_DOCUMENTATION": "Open link to documentation.", "OPEN_MANUAL": "Open Manual", @@ -591,7 +536,6 @@ "PAIR_OVERLAP_THRESHOLD": "Pair Overlap Threshold", "PAIRS": "Pairs", "PALSAR_DESC": "PALSAR was developed to contribute to the fields of mapping, precise regional land-coverage observation, disaster monitoring, and resource surveying.", - "PARTIAL": "Partial", "PATH": "Path", "PATH_AND_FRAME_FILTERS": "Path and Frame Filters", "PATH_END": "Path End", @@ -610,19 +554,12 @@ "PIXEL SPACING": "Pixel Spacing", "PLACE": "place", "PLACE_A_POINT": "Place a Point", - "PLEASE_BE_PATIENT": "Please be patient.", - "PLEASE_SELECT_A_POINT_ON_THE_MAP": "Please select a point on the map.", - "POINT": "Point ", "POINT_DRAW": "Point draw", "POINTING_ANGLE": "Pointing Angle ", - "POINTS": "Points", "POLARIZATION": "Polarization", - "POLARIZATION_MAIN": "Main Polarization", "POLARIZATION_SELECTED": "Polarization selected", - "POLARIZATION_SIDE": "Side Polarization", "POLARIZATIONS": "Polarizations", "POLARIZATIONS_SELECTED": "polarizations selected", - "POLYGON": "Polygon", "POLYGON_DRAW": "Polygon draw", "POWER": "power", "POWERED_BY_HY_P3": "Powered by HyP3", @@ -642,8 +579,6 @@ "PRODUCT_TYPE": "Product Type", "PRODUCT_TYPES": "Product Types", "PRODUCTION": "Production", - "PRODUCTION_CONFIGURATION": "Production Configuration", - "PRODUCTION_CONFIGURATION_FILTER": "Production Configuration Filter", "PRODUCTS_IN_YOUR_QUEUE_MAY_REQUIRE_A_RESTRICTED_DATASET_AGREEMENT": "Products in your queue may require a restricted dataset agreement.", "PRODUCTS_TO_DOWNLOADS_FROM_SELECTED_EVENT": "products to downloads from selected event", "PROFILE": "Profile", @@ -654,13 +589,11 @@ "QUEUE": "Queue", "QUEUE_YOU_CAN_ADD_AS_MANY_FILES_AS_YOU_WISH_BUT_THERE_IS_A_LIMIT_OF_TWO_HUNDRED_FILES_PER_MONTH_THAT": "queue. You can add as many files as you wish but there is a limit of two hundred files per month that", "QUICKLY_LEARN_THE_BASICS_OF_VERTEX_DATA_SEARCH_WITH_THIS_GETTING_STARTED_SERIES": "Quickly learn the basics of Vertex Data Search with this getting started series.", - "RADAR_LOOK_DIRECTION": "Radar Look Direction", "RADARSAT_1": "RADARSAT-1 Antarctic Mapping Project (RAMP)", "RADARSAT_1_DESC": "RADARSAT-1 synthetic aperture radar (SAR), was a powerful microwave instrument. It captured high quality SAR images of the Earth night and day and in all-weather conditions.", "RADARSAT_IS_AVAILABLE_THROUGH": "RADARSAT-1 is freely available through", "RADIO_BUTTON_UNCHECKED": "radio_button_unchecked", "RADIOMETRY": "Radiometry", - "RANGE_BANDWIDTH": "Range Bandwidth", "RAW": "Raw", "READ_OUR_ON_DEMAND_GUIDE": "Read Our On Demand Guide", "READ_OUR_USER_GUIDE": "Read Our User Guide", @@ -678,10 +611,7 @@ "REMOVE_JOB": "Remove job", "REMOVE_RED_EYE": "remove_red_eye", "REMOVE_SCENE_FILES_FROM_DOWNLOADS": "Remove scene files from downloads", - "REMOVE_SERIES": "Remove Series", - "REQUEUE_PROJECT": "Add Project to Queue", "RESAMPLED_DEM_SRTM_OR_NED_USED_FOR_RTC_PROCESSING": "Resampled DEM (SRTM or NED) used for RTC processing.", - "RESET_CHART_REFERENCE": "Reset chart reference", "RESET_TO_DEFAULT": "Reset to Default", "RESTORE": "Restore", "RESTORE_AREA": "Restore Area", @@ -694,8 +624,6 @@ "REVIEW_SEARCH_RESULTS": "Review search Results", "REVIEW_SUBMISSION": "Review Submission", "RGB_DECOMPOSITION": "RGB Decomposition", - "RIGHT_CLICK_SET_BASELINE": "Right-click to set baseline.", - "ROLLOUT": "Rollout", "RUNNING": "Running", "SAMPLES_PER_BURST": "Samples Per Burst", "SAR_FILE_SEARCHES": "SAR File Searches", @@ -736,12 +664,8 @@ "SCENE_START_TIME": "Scene Start Time", "SCENES": "Scenes", "SCENES_THE_LEFT_COLUMN": "Scenes - the left column", - "SCIENCE_ON_DEMAND": "Science On-Demand", - "SCIENCE_PRODUCT": "Science Product", "SCRIPTS_FOR_ACCESSING_SAR_DATA": "scripts for accessing SAR data.", "SCROLL_THROUGH_THE_LIST_OF_RESULTS_AND_YOU_SEE_SOME_FILES_HAVE_AN_ICON_OF_THREE_GRAY_SQUARES_NEXT": "Scroll through the list of results and you see some files have an icon of three gray squares next", - "SDK_PYTHON_CODE_EXPORT": "Export SDK Python Code", - "SDK_PYTHON_CODE_EXPORT_TOOLTIP": "SDK Python code export tooltip", "SEA_ICE_MEASURES": "Sea Ice MEaSUREs", "SEARCH": "Search", "SEARCH_AREA": "Search Area", @@ -778,10 +702,7 @@ "SENTINEL_1_INTERFEROGRAM_BETA_DESC": "Level 2 standardized Sentinel-1 Interferogram products generated by JPL’s Advanced Rapid Imaging and Analysis (ARIA) project.", "SENTINEL_DESC": "Sentinel-1 includes twin satellites that each carry C-band synthetic aperture radar (SAR), together providing all-weather, day-and-night imagery of Earth’s surface.", "SEP_OCT_NOV": "Sep, Oct, Nov", - "SERIES": "Series", - "SERIES_UNDEFINED": "Series undefined", "SET": "Set", - "SET_AS_BASELINE": "Set as Baseline", "SET_AS_BOTH": "Set as both", "SET_AS_END_DATE": "Set as End Date", "SET_AS_FRAME_END": "Set as frame end", @@ -791,27 +712,15 @@ "SET_AS_PATH_END": "Set as path end", "SET_AS_PATH_START": "Set as path start", "SET_AS_START_DATE": "Set as Start Date", - "SET_AS_TRACK_END": "Set as track end", - "SET_AS_TRACK_START": "Set as track start", "SET_CAMPAIGN_NAME": "Set campaign name", "SET_FLIGHT_DIRECTION": "Set flight direction", - "SET_FRAME_COVERAGE": "Set frame coverage", "SET_PROCESSING_OPTIONS_AND_A_PROJECT_NAME": "Set Processing Options And A Project Name", "SETTINGS": "settings", "SETTINGS_OVERSCAN": "settings_overscan", - "SHARE_SAVE": "Share/Save", - "SHARE_SAVE_INFORMATION": "Share this search with others and manage your searches", "SHARE_SEARCH": "Share Search", "SHARE_WITH_EMAIL": "Share With Email", - "SHIFT_TO_ZERO": "Shift to zero", - "SHORTWAVE_DISPLACEMENT": "Local Displacement", - "SHOW_LINEAR_FIT": "Show Linear Fit", - "SHOW_LINES": "Show Lines", "SHOW_PRODUCT_FILTERS_CRITERIA": "Show product filters criteria", "SHOW_RAW_DATA": "Show raw data", - "SIDE": "Side", - "SIDE_BAND_FREQ_B_POLARIZATION": "Side Band (Freq. B) Polarization", - "SIDE_POLARIZATIONS": "Side Polarizations", "SIGMA0": "sigma0", "SIGN_IN": "Sign In", "SIGN_IN_BY_CLICKING_THE_SIGN_IN_ICON_IN_THE_TOP_RIGHT_OF_THE_WINDOW_USE_YOUR_EARTHDATA_LOGIN_USERNAME_AND_PASSWORD": "Sign in by clicking the Sign in icon in the top right of the window. Use your Earthdata Login username and password.", @@ -845,7 +754,6 @@ "STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "starting corner, move the mouse, then click again to finish the box.", "STATISTICS_AND_GITHUB_REPOSITORY": "Statistics and Github Repository", "STOP_ADDING_CUSTOM_PAIR": "Stop adding custom pair", - "STOP_ADDING_POINTS": "Stop Adding", "STOP_DOWNLOAD": "Stop download", "STOP_DRAWING": "Stop drawing", "STOP_EDITING": "Stop editing", @@ -871,7 +779,6 @@ "TEMPORAL": "Temporal", "TEMPORAL_CRITERIA": "Temporal Criteria:", "TEST": "Test", - "TEST_1_1": "TEST 1.1", "THAT_ARE_RELATED_TO_A_SPECIFIC_LOCATION_AND_TIME": "that are related to a specific location and time.", "THE_BASELINE_TOOL_BUTTON_OPENS_THE_ASF_BASELINE_TOOL_WHICH_IS_USED_FOR_THE_CREATION_OF_IN_SAR_STACKS": "The 'Baseline Tool' button opens the ASF Baseline Tool, which is used for the creation of InSAR stacks.", "THE_CART_CHANGES_APPEARANCE_WHEN_THIS_IS_DONE": "The cart changes appearance when this is done.", @@ -901,12 +808,7 @@ "TO_VIEW_YOUR_SAVED_SEARCHES_FOLLOW_THESE_STEPS": "To view your saved searches follow these steps:", "TO_VIEW_YOUR_SEARCH_HISTORY_FOLLOW_THESE_STEPS": "To view your search history follow these steps:", "TOO_MANY_JOBS_IN_QUEUE": "Too many jobs in queue", - "TOOLS": "Tools", "TOOLTIP": "TOOLTIP", - "TRACK": "Track", - "TRACK_AND_FRAME_FILTERS": "Track and Frame Filters", - "TRACK_END": "Track End", - "TRACK_START": "Track Start", "TRAVEL_EXPLORE": "travel_explore", "TYPE": "Type", "UAVSAR_DESC": "Uninhabited Aerial Vehicle Synthetic Aperture Radar (UAVSAR) is specifically designed to acquire airborne repeat-track SAR data for differential interferometric measurements.", @@ -917,7 +819,6 @@ "UPLOAD_AOI_VIA_FILE": "Upload AOI via file", "UPLOAD_GEOSPATIAL_FILE": "Upload Geospatial File", "UR_LS": "URLs", - "URGENT_RESPONSE": "Urgent Response", "USE_AN_ASF_SEARCH_API_QUERY_TO_DOWNLOAD_MORE_RESULTS_MANUALLY": "Use an ASF Search API query to download more results manually.", "USE_THE_AREA_OF_INTEREST_BUTTONS_TO_TOGGLE_DRAWING_ON_THE_MAP_ON_AND_OFF_TO_EDIT_THE_SHAPE": "Use the 'Area of Interest' buttons to toggle drawing on the map on and off, to edit the shape", "USE_THE_MAP_PROJECTION_BUTTONS_IN_THE_MAP_TOOLBAR_TO_TOGGLE_BETWEEN_THE_ARCTIC_EQUATORIAL": "Use the 'Map Projection' buttons in the map toolbar to toggle between the Arctic, Equatorial,", @@ -937,9 +838,7 @@ "USING_ZIPPED_DATA": "Using Zipped Data", "USING_ZIPPED_PRODUCT_FILES": "Using Zipped Product Files", "VALIDATE_ONLY": "Validate Only", - "VALIDATED_PRODUCTS_OPTION": "Standard Products", - "VELOCITY": "Velocity", - "VELOCITY_OVERVIEW_OPACITY": "Velocity Overview Opacity", + "VALIDATED_PRODUCTS_OPTION": "Validated Products", "VERTEX_CODE_REPOSITORY": "Vertex Code Repository", "VERTEX_USER_GUIDE": "Vertex User Guide", "VIDEO_LIBRARY": "video_library", @@ -956,13 +855,10 @@ "VOLCANO": "volcano", "W_BROWSE_IMAGES": "w/Browse Images", "WATCH_OUR_TUTORIALS": "Watch Our Tutorials", - "WE_ARE_RETRIEVING_YOUR_INFORMATION": "We are retrieving your information.", "WE_HAVE_A_COLLECTION_OF_VIDEOS_TO_HELP_YOU_LEARN_AND_USE_VERTEX_TO_MAXIMUM_ADVANTAGE": "We have a collection of videos to help you learn and use Vertex to maximum advantage.", "WE_HAVE_A_LARGE_WEBSITE_FULL_OF_RICH_CONTENT_ABOUT_SAR_DATA_AND_HOW_TO_USE_IT": "We have a large website full of rich content about SAR data and how to use it.", "WEBSITE_LINKS": "Website Links", "WETLANDS_MEASURES": "Wetlands MEaSUREs", - "WHAT_ARE_CREDITS": "What are credits?", - "WHAT_ARE_THESE?": "What are these?", "WHAT_IS_BASELINE": "What is Baseline", "WHAT_IS_SBAS": "What is SBAS", "WHEN_YOU_PERFORM_A_SEARCH_AND_THE_RESULTS_ARE_RETURNED_YOU_CAN_BROWSE_THE_LIST_OF_RESULTING_SCENES": "When you perform a search and the results are returned, you can browse the list of resulting scenes", @@ -995,7 +891,6 @@ "YOUR_DOWNLOAD_QUEUE_IS_EMPTY": "Your download queue is empty.", "YOUR_JOBS_QUEUE_IS_EMPTY": "Your jobs queue is empty.", "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS": "your search and reduce the number of results.", - "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS_NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Your search and reduce the number of results. Not all filters will be available for", "YOUR_SELECTION_TO_A_VALID_RANGE_FOR_THE_SELECTED_DATASET": "your selection to a valid range for the selected dataset.", "ZIPPED_FILES_WILL_BE_DENOTED_BY_A_RIGHT_POINTING_CARET_TO_THE_LEFT_OF_THE_FILENAME_CLICKING_THE_CARET": "Zipped files will be denoted by a right-pointing caret to the left of the filename. Clicking the caret", "ZOOM": "Zoom", @@ -1006,4 +901,4 @@ "ZOOM_TO_FIT": "Zoom To Fit", "ZOOM_TO_RESULTS": "Zoom to results", "ZOOM_TO_SCENE": "Zoom to scene" -} \ No newline at end of file +} diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 6d7b6b56a..faeb5b656 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -3,7 +3,7 @@ "20 METERS": "20 metros", "30 METERS": "30 metros", "50% OVERLAP THRESHOLD": "Umbral de Superposición del 50 %", - "A_LIST_OF_SCENE_NAMES_AND_ACQUISITION_TIMES_THAT_WERE_RETURNED_FROM_A_SEARCH_ARE_DISPLAYED_IN_THE": "Una lista de nombres de escenas y tiempos de adquisición que se retornaron de una búsqueda se muestran en la", + "A_LIST_OF_SCENE_NAMES_AND_ACQUISITION_TIMES_THAT_WERE_RETURNED_FROM_A_SEARCH_ARE_DISPLAYED_IN_THE": "Una lista de nombres de escenas y tiempos de adquisición que se devolvieron de una búsqueda se muestran en la", "A_LIST_TYPE_OF_SCENE_ALLOWS_SEARCHING_FOR_SPECIFIC_SCENE_NAMES_GRANULE_NAMES_AND_THE_RESULTS_WILL_INCLUDE_ANY_FILES_THAT_ARE_PART_OF_THOSE_SCENES": "Un tipo de lista de 'Escena' permite buscar nombres de escena específicos (nombres de gránulos), y los resultados incluirán cualquier archivo que forme parte de esas escenas.", "A_SINGLE_PATH_OR_FRAME_OR_A_RANGE_DUE_TO_INCONSISTENT_SENTINEL_1_FRAMING_WE_RECOMMEND": "una sola ruta o marco, o un rango. ", "A_SUBSET_OF_THE_PROCESSING_TYPES_AND_ENTERING_A_PROJECT_NAME_YOU_CAN_ASSOCIATE_DIFFERENT_PROJECT_NAMES_TO": "un subconjunto de los tipos de procesamiento e ingresando un nombre de proyecto, puede asociar diferentes nombres de proyecto a", @@ -16,34 +16,27 @@ "ADD_ALL_RESULTS_TO_DOWNLOADS": "Agregar todos los resultados a las descargas", "ADD_ALL_RESULTS_TO_ON_DEMAND_QUEUE": "Agregar todos los resultados a la lista de On Demand", "ADD_BEAM_MODE_TO_SEARCH": "Agregar modo de haz para buscar", - "ADD_BY_FILE_TYPE": "Agregar por tipo de archivo", - "ADD_BY_PRODUCT_TYPE": "Añadir por tipo de producto", "ADD_FILE_TO_DOWNLOADS": "Agregar archivo a las descargas", "ADD_FILE_TO_QUEUE": "Agregar archivo a la lista", "ADD_JOB": "Agregar trabajo", - "ADD_MAIN_POLARIZATION_TO_SEARCH": "Agregar polarización principal a la búsqueda", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Agregar par a la lista On Demand", - "ADD_POINTS": "Agregar puntos", "ADD_POLARIZATION_TO_SEARCH": "Agregar polarización a la búsqueda", - "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Agregar ancho de banda de rango a la búsqueda", "ADD_SCENE_FILES_TO_DOWNLOADS": "Agregar archivos de escena a las descargas", - "ADD_SIDE_POLARIZATION_TO_SEARCH": "Agregar polarización lateral a la búsqueda", + "ADD_SHOPPING_CART": "añadir_carrito_de_compras", "ADD_TO_ON_DEMAND_QUEUE": "Añadir a la lista On Demand", "ADDITIONAL_DRAWING_TOOL_OPTIONS_ARE_AVAILABLE_IN_THE_TOOLBAR_INCLUDING_POINT_LINESTRING_AND_POLYGON_OPTIONS": "Las opciones de herramientas de dibujo adicionales están disponibles en la barra de herramientas, incluidas las opciones de punto, cadena de líneas y polígono.", "ADDITIONAL_FILTERS": "Filtros Adicionales", "ADJUST_OVERLAY_OPACITY": "Ajustar opacidad de superposición", - "ADVANCED_DESC": "Las imágenes del radiómetro AVNIR-2 (Visible y de Infrarrojo Cercano Avanzado) han eliminado distorsiones causadas por el sensor y el terreno. Esto permite la superposición geoespacial...", - "ADVANCED_FEATURES": "Características Avanzadas", + "ADVANCED_DESC": "Las imágenes del Radiómetro Visible e Infrarrojo Cercano Avanzado (AVNIR)-2 han eliminado las distorsiones causadas por el sensor y el terreno. Esto permite la superposición de datos geoespaciales...", + "ADVANCED_FEATURES": "Características avanzadas", "AIRSAR_DESC": "AIRSAR era una herramienta de generación de imágenes para todo clima capaz de penetrar a través de las nubes y recopilar datos durante la noche. Las longitudes de onda más largas también podrían penetrar en el dosel del bosque y...", "ALL": "todos", - "ALL_AOIS": "Todas las áreas", "ALL_DATASETS_AND_THIS_LIST_CAN_CHANGE": "todos los conjuntos de datos, y esta lista puede cambiar.", - "ALL_HELP_AND_TUTORIALS": "Ayuda y Tutoriales", + "ALL_HELP_AND_TUTORIALS": "Ayuda Y Tutoriales", "ALL_OF_THE_OTHER_SEARCH_FILTERS_OF_INTEREST_TO_YOU_TO_CREATE_THE_SEARCH_EXACTLY_AS_YOU_LIKE_IT": "todos los demás filtros de búsqueda que le interesen para crear la búsqueda exactamente como le gusta.", "ALL_TUTORIALS": "Todos Los Tutoriales", "ALLOWS_CONSTRAINING_THE_SEARCH_TO_CERTAIN_ANNUAL": "La búsqueda estacional permite restringir la búsqueda a ciertos períodos anuales.", "ALLOWS_FOR_ADDITIONAL_PARAMETERS_TO_BE_APPLIED_TO_NARROW": "Filtros adicionales permite aplicar parámetros adicionales para reducir", - "ALOS_2_DESC": "ALOS-2 PALSAR-2 ScanSAR usa banda L para adquirir productos de nivel 1.1 (SLC) de haz amplio, con cobertura revisitada cada 14 días.", "AMOUNT": "Cantidad", "AMPLITUDE": "amplitud", "AN_EASY_WAY_TO_REGISTER_FOR_AN_EARTHDATA_ACCOUNT_IS_TO_CLICK_THE_SIGN_IN_ICON": "Una forma sencilla de registrarse para obtener una cuenta de Earthdata es hacer clic en el icono \"Iniciar sesión\"", @@ -57,7 +50,7 @@ "ANTARCTIC_MAP_VIEW": "Ver Mapa Antártico", "ANY OVERLAP THRESHOLD": "Cualquier Umbral de Superposición", "AOI_OPTIONS": "Opciones de AOI", - "API": "api", + "API": "API", "API_DOCS": "Documentos API", "API_URL": "URL de API", "API_URL_DOWNLOAD_SEARCH_RESULTS": "URL de API - Descargar Resultados de Búsqueda", @@ -69,20 +62,18 @@ "AREA_OF_INTEREST": "Área de Interés", "AREA_OF_INTEREST_OPTIONS": "Opciones de Área de Interés", "AREA_OF_INTEREST_WKT": "Área de Interés • WKT", - "ARIA_VERSION": "Versión ARIA", "ARROW_BACKWARD": "flecha_hacia atrás", "ARROW_FORWARD": "flecha_adelante", "ASCENDING": "Ascendente", "ASF_DATA_SEARCH": "Búsqueda de datos ASF", - "ASF_DATA_SEARCH_TITLE": "Título de búsqueda de datos ASF", + "ASF_DATA_SEARCH_TITLE": "Búsqueda de datos ASF", "ASF_SEARCH_API": "API de búsqueda ASF", "ASF_SEARCH_PYTHON_EXPORT": "Exportación de Python de búsqueda ASF", "ASF_WEBSITE": "Sitio web de la ASF", - "ASPECT_RATIO": "relación_de_aspecto", + "ASPECT_RATIO": "relación de aspecto", "AT_THE_BOTTOM_OF_THE_LIST_OF_FILES_IS_A_FOOTER_BAR_THAT_SHOWS_SEVERAL_BUTTONS": "En la parte inferior de la lista de archivos hay una barra de pie de página que muestra varios botones.", "AUTO_RIFT_PAIR": "Par AutoRIFT", "AUTORIFT_DESC": "autoRIFT es un algoritmo altamente preciso y eficiente para encontrar el desplazamiento de píxeles entre dos imágenes de radar.", - "AZIMUTH_ANGLE": "Ángulo de Acimut", "AZIMUTH_ANX_TIME": "Tiempo Acimut Anx", "AZIMUTH_TIME": "Tiempo de Acimut", "BACK": "Atrás", @@ -99,63 +90,59 @@ "BEAM_MODES": "Modos de Haz", "BEAM_MODES_SELECTED": "modos de haz seleccionados", "BETA": "(beta)", - "BOX": "Caja", "BOX_DRAW": "Dibujar Caja", "BROWSE_IMAGE_NOT_ALL_SCENES_WILL_HAVE_ALL_EXTRA_INFORMATION": "navegar por la imagen. ", - "BROWSE_IMAGE_OPACITY": "Browse Image Opacity", - "BUILD_COMMIT": "Confirmación de compilación", + "BUILD_COMMIT": "Compromiso de compilación", "BURST_ID_ABSOLUTE": "ID de Burst Absoluta", - "BURST_ID_FULL": "ID de ráfaga completa", + "BURST_ID_FULL": "ID de Burst Completa", "BURST_ID_RELATIVE": "ID de Burst Relativa", "BURST_INDEX": "Índice de Burst", - "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_BASELINE_TOOL_BUTTON_TO_PERFORM_A_BASELINE_SEARCH": "Botones: 'Herramienta de Línea Base' y 'Herramienta SBAS'. Haga clic en el botón 'Herramienta de Línea Base' para realizar una búsqueda de Línea Base.", - "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_SBAS_TOOL_BUTTON_TO_PERFORM_AN_SBAS_SEARCH": "Botones: 'Herramienta de Línea Base' y 'Herramienta SBAS'. Haga clic en el botón 'Herramienta SBAS' para realizar una búsqueda SBAS.", + "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_BASELINE_TOOL_BUTTON_TO_PERFORM_A_BASELINE_SEARCH": "botones: \"Herramienta de línea base\" y \"Herramienta SBAS\". ", + "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_SBAS_TOOL_BUTTON_TO_PERFORM_AN_SBAS_SEARCH": "botones: \"Herramienta de línea base\" y \"Herramienta SBAS\". ", "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX": "De forma predeterminada, la herramienta de dibujo de mapas es un cuadro delimitador.", - "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "De forma predeterminada, la herramienta de dibujo del mapa es un cuadro delimitador. Haga clic una vez en el mapa para especificar el", + "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "De forma predeterminada, la herramienta de dibujo de mapas es un cuadro delimitador. ", "CALIBRATION": "CalVal", - "CALIBRATION_PRODUCTS_OPTION": "Productos de Referencia para Calibración Y Validación", + "CALIBRATION_PRODUCTS_OPTION": "Productos de referencia de calibración y validación", "CAMPAIGN": "Campaña", "CAMPAIGN_NAME": "Nombre de la Campaña", "CAMPAIGN_SELECTOR": "Selector de Campaña", + "CAN_SEARCH_ASYNC_AND_AND_IS_MAX_RESULTS_LOADING_ASYNC": "(!(puedeBuscar$ | asíncrono)", "CANADAS_OPEN_LICENSE": "Licencia de Gobierno Abierto de Canadá", "CANCEL": "Cancelar", "CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(columna central) y la columna Archivos (derecha) se completarán.", - "CHARACTERS": "caracteres", - "CHART": "Gráfico", - "CHEVRON_RIGHT": "Flecha_derecha", - "CIRCLE": "Círculo", + "CHART": "Cuadro", + "CHEVRON_RIGHT": "chevron_right", "CIRCLE DRAW": "Dibujar Circulo", "CIRCLE_DRAW": "Dibujo Circular", "CITATION": "Citación", - "CLEAR": "Limpiar", - "CLEAR_ALL_PROCESSING_TYPES": "Eliminar todos los tipos de procesamiento", - "CLEAR_CURRENT_AREA_OF_INTEREST": "Eliminar área de interés actual", - "CLEAR_PRODUCT_NAME_FILTER": "Eliminar filtro de nombre de producto", - "CLEAR_SEARCH": "Eliminar Búsqueda", - "CLEAR_SEARCH_AREA": "Eliminar área de búsqueda", - "CLEAR_WILL_CLEAR_ALL_FILES_FROM_THE_QUEUE_THE_OPTION_RESTORE_WILL_BE": "Eliminar eliminará todos los archivos de la lista. La opción Restaurar será", + "CLEAR": "Borrar", + "CLEAR_ALL_PROCESSING_TYPES": "Borrar todos los tipos de procesamiento", + "CLEAR_CURRENT_AREA_OF_INTEREST": "Borrar área de interés actual", + "CLEAR_PRODUCT_NAME_FILTER": "Borrar filtro de nombre de producto", + "CLEAR_SEARCH": "Borrar Búsqueda", + "CLEAR_SEARCH_AREA": "Borrar área de búsqueda", + "CLEAR_WILL_CLEAR_ALL_FILES_FROM_THE_QUEUE_THE_OPTION_RESTORE_WILL_BE": "Borrar borrará todos los archivos de la lista. ", "CLICK_ON_THE_CART_ICON_NEXT_TO_A_SCENE_NAME_TO_ADD_ALL_THE_SCENE_S_FILES_TO_THE_DOWNLOAD_QUEUE": "Haga clic en el ícono del carrito junto al nombre de una escena para agregar todos los archivos de la escena a la lista de descarga.", - "CLICK_ON_THE_FILTERS_BUTTON_IN_THE_SEARCH_MENU_THE_FILTERS_YOU_CAN_SPECIFY_INCLUDE": "Haga clic en el botón 'Filtros ...' en el menú de búsqueda. Los filtros que puede especificar incluyen:", - "CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE_STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "Haga clic una vez en el mapa para especificar la esquina de inicio, mueva el mouse y luego haga clic nuevamente para completar el rectángulo.", + "CLICK_ON_THE_FILTERS_BUTTON_IN_THE_SEARCH_MENU_THE_FILTERS_YOU_CAN_SPECIFY_INCLUDE": "haga clic en el botón 'Filtros...' en el menú de búsqueda. ", + "CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE_STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "Haga clic en el mapa una vez para especificar la esquina de inicio, mueva el mouse y luego haga clic nuevamente para terminar el cuadro.", "CLICK_ON_THE_ZOOM_ICON_NEXT_TO_A_SCENE_NAME_TO_ZOOM_IN_TO_THE_SCENE_S_LOCATION_ON_THE_MAP": "Haga clic en el icono de zoom junto al nombre de una escena para acercar la ubicación de la escena en el mapa.", "CLICK_THE_ARROW_DOWN_ICON_ON_THE_SEARCH_BUTTON_TO_OPEN_THE_SEARCH_MENU": "Haga clic en el icono de flecha hacia abajo en el botón 'Buscar' para abrir el menú de búsqueda.", "CLICKING_EDIT_LIST_OPENS_THE_SCENE_LIST_SEARCH_WINDOW_SO_YOU_CAN_MAKE_CHANGES_TO_YOUR_LIST": "Al hacer clic en 'Editar lista', se abre la ventana de búsqueda de la lista de escenas para que pueda realizar cambios en su lista.", "CLICKING_THE_IMAGE_THUMBNAIL_WILL_OPEN_AN_IMAGE_BROWSER_SO_YOU_CAN_VIEW_THE_IMAGE_IN_MORE_DETAIL": "Al hacer clic en la miniatura de la imagen, se abrirá un explorador de imágenes para que pueda ver la imagen con más detalle.", - "CLOSE": "Cerrar", + "CLOSE": "Cerca", "COHERENCE_LAYER": "Capa de coherencia", - "COMPLETE_YOU_CAN_ALSO_SELECT_TO_ONLY_SUBMIT_CERTAIN_PROCESSING_TYPES_OR_ALL_PROCESSING_TYPES_BY_SELECTING": "Complete. También puede seleccionar enviar solo ciertos tipos de procesamiento o todos los tipos de procesamiento. Al seleccionar", - "CONST_REDIRECT_HTTPS_SEARCH_ASF_ALASKA_EDU_WINDOW_LOCATION_PATHNAME_WINDOW_LOCATION_HASH": "const redirect = `https://search.asf.alaska.edu${window.location.pathname}${window.location.hash}`;", + "COMPLETE_YOU_CAN_ALSO_SELECT_TO_ONLY_SUBMIT_CERTAIN_PROCESSING_TYPES_OR_ALL_PROCESSING_TYPES_BY_SELECTING": "completo. ", + "CONST_REDIRECT_HTTPS_SEARCH_ASF_ALASKA_EDU_WINDOW_LOCATION_PATHNAME_WINDOW_LOCATION_HASH": "const redirect = `https://search.asf.alaska.edu${ventana.ubicación.nombre de ruta}${ventana.ubicación.hash}`;", "CONST_URL_WINDOW_LOCATION_HOSTNAME_TO_LOWER_CASE": "const url = ventana.ubicación.nombre de host.toLowerCase();", "CONTACT": "Contacto", "COPIED_EVENT_ID": "ID del Evento Copiado", "COPY": "Copiar", "COPY_FILE_I_DS": "Copiar ID de Archivo", - "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copiar ID de archivo copiará los nombres de archivo de todos los archivos en la lista para usarlos en otro lugar.\n", + "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copiar ID de archivo copiará los nombres de archivo de todos los archivos en la lista para usarlos en otro lugar.", "COPY_FILE_ID": "Copiar ID de archivo", "COPY_FILE_ID_TO_CLIPBOARD": "Copiar ID de Archivo al portapapeles", "COPY_FILE_IDS": "Copiar ID de archivos", "COPY_FILE_URLS_TO_CLIPBOARD": " Copiar URL de Archivo al portapapeles", - "COPY_JOB_ID": "Copiar ID de tarea", "COPY_NAME": "Copiar Nombre", "COPY_REFERENCE_SCENE_NAMES_TO_CLIPBOARD": "Copie los nombres de las escenas de referencia en el portapapeles", "COPY_SCENE_NAME": "Copiar nombre de escena", @@ -170,33 +157,23 @@ "COREGISTERS_SAR_DATA_TO_THE_DEM_RATHER_THAN_USING_DEAD_RECKONING_BASED_ON_ORBIT_FILES": "Registra conjuntamente los datos SAR con el DEM, en lugar de usar la estimación a ciegas basada en archivos de órbita.", "CORPORATE_FARE_ASF": "tarifa_corporativaASF", "CREATE_SUBSCRIPTION": "Crear Suscripción", - "CREDIT": "crédito", - "CREDIT_COST": "Costo del crédito", - "CREDIT_MAX": "crédito máximo", - "CREDITS": "créditos", - "CREDITS_LEFT": "créditos restantes", - "CREDITS_LEFT_THIS_MONTH": "créditos restantes este mes", "CRITICAL_BASELINE": "Línea Base Crítica", "CRITICAL_BASELINE_ABBR": "Línea Crítica", "CSV": "CSV", - "CUMULATIVE_LAYER": "Capa Acumulativa", "CURRENT_SARVIEWS_PRODUCT_FILES_PRODUCT_SIZE_TO_STRING": "currentSarviewsProduct.files.product_size.toString()", "CUSTOM_PAIR": "Par personalizado", "CUSTOMIZE_ENVIRONMENTS": "Personalizar Entornos", "DARK": "Oscuro", "DATA": "Datos", - "DATA_COURTESY": "Datos cortesía de OPERA", "DATA_COURTESY_OF": "Datos Cortesía de", "DATA_DOWNLOAD": "Descarga de Datos", "DATA_DOWNLOAD_IS_USED_TO_DOWNLOAD_MULTIPLE_PRODUCTS_WITH_EITHER_THE": "Descarga de datos se utiliza para descargar varios productos, ya sea con el", - "DATA_FILTERS": "Filtros de Datos", - "DATA_TYPE": "Tipo de Dato", + "DATA_FILTERS": "Filtros de Fecha", "DATASET": "Conjunto de Datos", - "DATASET_INFO": "Información del conjunto de datos", - "DATASET_LINKED": "conjunto_de_datos_vinculado", + "DATASET_LINKED": "dataset_linked", "DATASET_OPTIONS": "Opciones de conjuntos de datos", "DATASET_SUBTYPES": "Subtipos de conjuntos de datos", - "DATASETS": "Conjuntos de datos", + "DATASETS": "conjuntos de datos", "DATE": "Fecha", "DATE ADDED": "Fecha Añadida", "DATE_FILTERS": "Filtros de Fecha", @@ -207,16 +184,13 @@ "DEFAULT_LANGUAGE": "Idioma", "DEFAULT_LANGUAGE_AND_THEME": "Idioma y Temas ", "DEFAULT_MAP_LAYER": "Capa de mapa ", - "DEFAULT_MAX_RESULT_AMOUNT": "Resultados Máximos", + "DEFAULT_MAX_RESULT_AMOUNT": "Importe de resultado máximo ", "DEFAULT_ON_DEMAND_PRESETS": "Ajustes On Demand", "DEFAULT_SEARCH_FILTERS_PRESETS": "Ajustes preestablecidos de filtros de búsqueda ", "DEFAULT_SEARCH_PRESETS": "Valores preestablecidos de búsqueda ", "DEFAULT_THEME": "Tema ", "DEFINE_A_SEARCH_YOU_WOULD_LIKE_TO_SAVE_ENTER_THE_SEARCH_TYPE_DATASET_AREA_OF_INTEREST_AND": "Defina una búsqueda que le gustaría guardar. ", "DEFINING_DATA_SEARCHES": "Definición de búsquedas de datos", - "DEFORMATION": "Deformación", - "DELETE": "Eliminar", - "DELETE_ALL_SERIES": "Eliminar todas las series", "DELETE_FOREVER": "borrar para siempre", "DEM": "DEM", "DEM NAME": "DEM Name", @@ -224,26 +198,20 @@ "DEM_MATCHING": "Coincidenciad DEM", "DEPENDING_ON_THE_WIDTH_OF_YOUR_INTERNET_BROWSER_NONE_OR_SOME_OF_THE_FILTERS_WILL_BE": "Dependiendo del ancho de su navegador de Internet, ninguno o algunos de los filtros serán", "DEPTH": "Profundidad", - "DERIVED_DATASETS": "Set de Datos Derivados", - "DERIVED_DATASETS_1": "Set de Datos Derivados", + "DERIVED_DATASETS": "Conjuntos de Datos Derivados", "DERIVED_DATASETS_CONTAIN_A_COLLECTION_OF_DATASETS_AVAILABLE_TO_VIEW_AND_DOWNLOAD": "Los conjuntos de datos derivados contienen una colección de conjuntos de datos disponibles para ver y descargar.", - "DESCENDING": "Descendente", + "DESC ": "PALSAR fue desarrollado para contribuir a los campos de mapeo, observación precisa de la cobertura terrestre regional, monitoreo de desastres y estudio de recursos.", + "DESCENDING": "Descendiendo", "DESCRIP_GLOBAL_SEASONAL_SENTINEL": "Este conjunto de datos es la primera representación espacial de este tipo de retrodispersión y coherencia interferométrica de paso repetido de SAR global y multiestacional. La cobertura mundial comprende todas las masas terrestres y capas de hielo desde los 82 grados de latitud norte hasta los 78 grados de latitud sur. El conjunto de datos se deriva del procesamiento interferométrico de paso repetido multitemporal de alta resolución de aproximadamente 205 000 datos Sentinel-1 Single-Look-Complex (SLC) adquiridos en el modo Interferometric Wide-Swath (modo Sentinel-1 IW) del 1 de diciembre al 2019 al 30-nov-2020.", "DESCRIPTION_RADIOMETRIC_TERRAIN_CORRECTION": "La Corrección Radiométrica del Terreno (RTC) elimina las distorsiones geométricas y radiométricas en los conjuntos de datos SAR y crea datos listos para el análisis adecuados para su uso en aplicaciones GIS.", - "DETAIL": "Detalle", + "DETAIL": "Detalles", "DETAILS": "detalles : \"\"", "DETERMINATE": "determinado", "DEVELOPER": "Desarrollador", "DIRECTION": "Dirección", "DISABLE": "Desactivar", - "DISP_DOI": "DOI de desplazamiento", - "DISPLACEMENT": "Desplazamiento", - "DISPLACEMENT_DESCRIPTION": "Los productos de desplazamiento proporcionan información sobre los cambios antropogénicos y naturales en la superficie de la Tierra, cubriendo América del Norte.", - "DISPLACEMENT_FILTERS": "Filtros de desplazamiento", - "DISPLACEMENT_SEARCH": "Búsqueda de Desplazamiento", "DISPLAYED_IF_YOU_WISH_TO_UNDO_THIS_ACTION": "aparecerá si desea deshacer esta acción.", "DISPLAYED_IN_THE_SEARCH_MENU_AT_THE_TOP_YOU_CAN_ACCESS_ALL_OF_THE_HIDDEN_FILTERS_BY": "que se muestra en el menú de búsqueda en la parte superior. ", - "DO_YOU_WANT_TO_DELETE_ALL_SERIES": "¿Quieres eliminar todas las series?", "DONE": "Hecho", "DOWNLOAD": "Descargar", "DOWNLOAD_ALL": "Descargar todo", @@ -260,13 +228,12 @@ "DRAG_AND_DROP": "Arrastre y Suelte", "DRAG_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON_TO_MOVE_TO_YOUR_AREA_OF_INTEREST": "Arrastra el mapa mientras mantienes presionado el botón izquierdo del mouse para moverte a tu área de interés.", "DRAW": "Dibujar", - "DRAW_A_BOX": "Dibujar un Rectángulo", - "DRAW_A_CIRCLE": "Dibujar un Círculo", + "DRAW_A_BOX": "Dibujar una caja", + "DRAW_A_CIRCLE": "Dibuja un circulo", "DRAW_A_LINE": "Dibuja una línea", - "DRAW_A_POLYGON": "Dibujar un Polígono", + "DRAW_A_POLYGON": "Dibujar un polígono", "DRAW_NEW_AREA_OF_INTEREST": "Dibujar nueva área de interés", "DRAW_ON_THE_MAP": "Dibujar en el mapa", - "DRAW_TRENDLINE": "Dibujar línea de tendencia", "E_PREVENT_DEFAULT": "e.preventDefault();", "EACH_WITH_THEIR_OWN_PROCESSING_OPTIONS_SELECT_THE_PROCESSINGOPTIONS_YOU_WISH": "cada uno con sus propias opciones de procesamiento. ", "EDIT": "Editar", @@ -277,7 +244,7 @@ "EMAIL": "correo electrónico", "END": "Fin", "END_DATE": "Fecha Final", - "ENTER_A_NAME_FOR_YOUR_SEARCH_IN_THE_SAVE_SEARCH_DIALOG": "Ingrese un nombre para su búsqueda en el cuadro de diálogo Guardar búsqueda.", + "ENTER_A_NAME_FOR_YOUR_SEARCH_IN_THE_SAVE_SEARCH_DIALOG": "Introduzca un nombre para su búsqueda en el cuadro de diálogo Guardar búsqueda.", "ENVIRONMENT_FILE": "Archivo de entorno", "EQUATORIAL_MAP_VIEW": "Ver Mapa Ecuatorial", "ERS_DESC": "Principalmente imágenes SAR dentro de las máscaras de la estación ASF y McMurdo, Antártida. Los datos son adecuados para la interferometría.", @@ -291,46 +258,49 @@ "EVENT_TYPES": "Tipos de Evento", "EXAMPLE": "Ejemplo", "EXAMPLE_S1_B_IW_SLC_1_SDV_20210704_T135937_20210704_T140004_027645_034_CB_0_4_B2_C": "Ejemplo: S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C", - "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Expanda sus habilidades con nuestra lista completa de tutoriales de búsqueda de datos de Vertex.", + "EXAMPLE:": "Ejemplo", + "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Amplíe sus habilidades con nuestra lista completa de tutoriales de búsqueda de datos de Vertex.", "EXPERIMENTAL": "Experimental", - "EXPIRED": "Ha expirado", + "EXPIRED": "Venció", "EXPORT": "Exportar", - "EXPORT_API": "Exportar API", + "EXPORT_API": "API de Exportación", "EXPORT_PYTHON": "Exportar Python", "FAILED": "Fallido", - "FALSE": "},falso);", + "FALSE": "},FALSO);", "FARADAY_ROTATION": "Rotación de Faraday", "FEEDBACK": "Comentarios", "FEEDBACK_INIT": "comentarios.init({", - "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "Los campos están disponibles para conjuntos de datos seleccionados. Puede ingresar", - "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": "campos. El selector de fecha restringirá automáticamente", + "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "Los campos Ruta y Marco están disponibles para conjuntos de datos seleccionados. ", + "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": "Campos de fecha de inicio y fecha de finalización. ", "FILE": "Archivo", + "FILE_COPY": "Copia de Archivo", "FILE_I_DS_NAMES_CAN_BE_COPIED": "Los ID de archivo (nombres) se pueden copiar", - "FILE_IDS": "IDs de archivo.", - "FILE_IMPORT_SUPPORTED": "Importación de Archivo Admitida", - "FILE_IMPORT_SUPPORTED ": "Importación de Archivo Admitida", + "FILE_IDS": "ID de archivo.", + "FILE_IMPORT_SUPPORTED": "Importación de Archivo Soportada", "FILE_LIST_SEARCH": "Búsqueda en la Lista de Archivos", "FILE_OPTION": "opción de archivo.", "FILE_THE": "archivo. El", "FILE_TYPE": "Tipo de archivo", "FILE_TYPES": "Tipos de archivo", "FILE_TYPES_SELECTED": "tipos de archivos seleccionados", + "FILE_UPLOAD": "Subir archivo", "FILES": "Archivos", "FILES_CAN_BE_INDIVIDUALLY_DOWNLOADED": "Los archivos se pueden descargar individualmente", "FILES_HERE": "Archivos Aquí", "FILES_OPC": "(shp, geojson, kml, zip)", - "FILES_PROVIDED_BY_THIS_FEATURE_ARE_COMPATIBLE_WITH_THE_GEOGRAPHIC_SEARCH_IMPORT_FEATURE": "Los archivos proporcionados por esta función son compatibles con la función de importación de Búsqueda Geográfica.", + "FILES_PROVIDED_BY_THIS_FEATURE_ARE_COMPATIBLE_WITH_THE_GEOGRAPHIC_SEARCH_IMPORT_FEATURE": "Los archivos proporcionados por esta función son compatibles con la función Importación de búsqueda geográfica.", "FILES_THE_RIGHT_COLUMN": "Archivos - la columna derecha", "FILTER_PRESET_NAME": "Nombre del Filtro Preestablecido", "FILTER_SEARCHES": "Filtrar búsquedas", "FILTERS": "Filtros", "FILTERS_ALLOW_YOU_TUNE_YOUR_SEARCH_TO_RETURN_EXACTLY_WHAT_INTERESTS_YOU": "Los filtros le permiten ajustar su búsqueda para devolver exactamente lo que le interesa.", + "FILTERS_MORE_HORIZ": "Filtros more_horiz", "FIND_A_SUITABLE_FILE": "Encuentre un archivo adecuado", "FIND_SAR_DATA_USING_ASF_API": "Encuentre datos SAR utilizando la API de ASF", "FLIGHT_DIR": "Dirección de vuelo", "FLIGHT_DIRECTION": "Dirección del Vuelo", - "FLIGHT_DIRECTION_SELECTED": "Dirección de vuelo elegido", - "FLIGHT_DIRECTIONS_SELECTED": "direcciones de vuelo elegidos", + "FLIGHT_DIRECTION_SELECTED": "Dirección de vuelo seleccionada", + "FLIGHT_DIRECTIONS_SELECTED": "direcciones de vuelo seleccionadas", "FLIGHT_LINE": "Línea de Vuelo", "FOR_EXAMPLE_THIS_LIST_COULD_THEN_BE_PASTED _INTO_THE ": "Por ejemplo, esta lista se podría pegar en el", "FOR_EXAMPLE_THIS_LIST_COULD_THEN_BE_PASTED_INTO_THE_SCENE_LIST_SEARCH_WINDOW": "Por ejemplo, esta lista se podría pegar en la ventana de búsqueda de la lista de escenas.", @@ -338,12 +308,11 @@ "FORMAT": "Formato", "FORMAT_SHAPES": "formato_formas", "FRAME": "Marco", - "FRAME_COVERAGE": "Cobertura del Marco", "FRAME_END": "Fin del Marco", - "FRAME_START": "Inicio del Marco", + "FRAME_START": "Inicio de Marco", "FREQUENCY": "Frecuencia", - "FULL": "Completo", - "FULL_BURST_ID": "ID de ráfaga completa", + "FULL_BURST_ID": "ID de Burst Completa", + "FUNCTION_W_D_S_L_I_W_L_W_L_W_L_PUSH_GTM_START": "(función(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':", "GAMMA0": "gamma0", "GAPS_DETECTED": "Brechas Detectadas", "GEO_SEARCH": "Búsqueda Geográfica", @@ -352,7 +321,7 @@ "Geographic Search": "Búsqueda Geográfica", "GEOGRAPHIC_SEARCH": "Búsqueda Geográfica", "GEOGRAPHIC_SEARCH_ALLOWS_YOU_TO_SEARCH_FOR_DATA_BASED_UPON_A_GEOGRAPHIC_LOCATION": "La búsqueda geográfica le permite buscar datos basados ​​en una ubicación geográfica.", - "GEOGRAPHIC_SEARCH_BASED_ON_BURST": "Búsqueda geográfica basada en el ID de ráfaga completa de este producto de ráfaga.\n\n\n\n\n\n\n\n", + "GEOGRAPHIC_SEARCH_BASED_ON_BURST": "Búsqueda geográfica basada en el ID de Burst Completa", "GEOGRAPHIC_SEARCH_BASED_ON_EVENT_POLYGON": "Búsqueda geográfica basada en el polígono del evento", "GEOGRAPHIC_SEARCH_BASED_ON_THIS_SCENE_S_PATH_FRAME": "Búsqueda geográfica basada en la ruta/marco de esta(s) escena(s)", "GEOGRAPHIC_SEARCH_POLYGON_SCALE": "Escala poligonal de búsqueda geográfica", @@ -367,100 +336,91 @@ "GLACIER_SPEED": "Velocidad del Glaciar", "GLOBAL_SEASONAL_SENTINEL": "Conjunto de Datos de Estacionales Globales de Retrodispersión y Coherencia Del Sentinel-1 ", "GRATICULE_OVERLAY": "Superposición de Retícula", - "GRAZING_ANGLE": "Ángulo Rasante", "GRIDLINES_OVERLAY": "Superposición de líneas de cuadrícula", - "GROUP_ID": "ID de grupo", + "GROUP_ID": "Grupo ID", "GROUP_ID_INFO_BAR": "ID de grupo", "HELP": "Ayuda", "HELP_AND_INFORMATION": "Ayuda e información", - "HELP_AND_TUTORIALS": "Ayuda y tutoriales", + "HELP_AND_TUTORIALS": "Ayuda", "HELP_EXPORT_OPTIONS_WORKS": "ayuda-exportar-opciones funciona!", "HELP_OUTLINE": "esquema_de_ayuda", - "HERE": "aquí", + "HERE": "aquí.", "HIDE_OPTIONS": "Ocultar opciones", "HIDE_RAW_DATA": "Ocultar datos sin procesar", "HISTORY": "Historial", - "HOW_TO_BASIC_GEOGRAPHIC_SEARCH": "Guía básica de búsqueda geográfica", - "HOW_TO_BASIC_LIST_SEARCH": "Guía básica de búsqueda", + "HOW_TO_BASIC_GEOGRAPHIC_SEARCH": "Búsqueda geográfica básica práctica", + "HOW_TO_BASIC_LIST_SEARCH": "Lista básica de procedimientos Buscar", "HOW_TO_CITE_USING_THIS_DATA": "Cómo citar utilizando estos datos", "HTTPS_URS_EARTHDATA_NASA_GOV_USERS_NEW": "https://urs.earthdata.nasa.gov/users/new", + "HTTPS_WWW_GOOGLETAGMANAGER_COM_GTM_JS_ID_I_DL_F_PARENT_NODE_INSERT_BEFORE_J_F": "!!!>>> Failed to fetch << Date: Tue, 17 Jun 2025 15:05:40 -0700 Subject: [PATCH 82/88] Update files en and es --- src/assets/i18n/en.json | 137 +++++++++++++-- src/assets/i18n/es.json | 378 ++++++++++++++++++++++++++-------------- 2 files changed, 364 insertions(+), 151 deletions(-) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 7e951ea1f..791015198 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -16,13 +16,18 @@ "ADD_ALL_RESULTS_TO_DOWNLOADS": "Add all results to downloads", "ADD_ALL_RESULTS_TO_ON_DEMAND_QUEUE": "Add all results to On Demand queue", "ADD_BEAM_MODE_TO_SEARCH": "Add beam mode to search", + "ADD_BY_FILE_TYPE": "Add by file type", + "ADD_BY_PRODUCT_TYPE": "Add by product type", "ADD_FILE_TO_DOWNLOADS": "Add file to downloads", "ADD_FILE_TO_QUEUE": "Add file to queue", "ADD_JOB": "Add job", + "ADD_MAIN_POLARIZATION_TO_SEARCH": "Add main polarization to search", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Add pair to On Demand queue", + "ADD_POINTS": "Add points", "ADD_POLARIZATION_TO_SEARCH": "Add polarization to search", + "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Add range bandwidth to search", "ADD_SCENE_FILES_TO_DOWNLOADS": "Add scene files to downloads", - "ADD_SHOPPING_CART": "add_shopping_cart", + "ADD_SIDE_POLARIZATION_TO_SEARCH": "Add side polarization to search", "ADD_TO_ON_DEMAND_QUEUE": "Add to On Demand queue", "ADDITIONAL_DRAWING_TOOL_OPTIONS_ARE_AVAILABLE_IN_THE_TOOLBAR_INCLUDING_POINT_LINESTRING_AND_POLYGON_OPTIONS": "Additional drawing tool options are available in the toolbar, including point, linestring, and polygon options.", "ADDITIONAL_FILTERS": "Additional Filters", @@ -31,12 +36,14 @@ "ADVANCED_FEATURES": "Advanced Features", "AIRSAR_DESC": "AIRSAR was an all-weather imaging tool able to penetrate through clouds and collect data at night. The longer wavelengths could also penetrate into the forest canopy and...", "ALL": "all", + "ALL_AOIS": "All AOIs", "ALL_DATASETS_AND_THIS_LIST_CAN_CHANGE": "all datasets, and this list can change.", "ALL_HELP_AND_TUTORIALS": "All Help & Tutorials", "ALL_OF_THE_OTHER_SEARCH_FILTERS_OF_INTEREST_TO_YOU_TO_CREATE_THE_SEARCH_EXACTLY_AS_YOU_LIKE_IT": "all of the other search filters of interest to you to create the search exactly as you like it.", "ALL_TUTORIALS": "All Tutorials", "ALLOWS_CONSTRAINING_THE_SEARCH_TO_CERTAIN_ANNUAL": " allows constraining the search to certain annual", "ALLOWS_FOR_ADDITIONAL_PARAMETERS_TO_BE_APPLIED_TO_NARROW": " allows for additional parameters to be applied to narrow", + "ALOS_2_DESC": "ALOS-2 PALSAR-2 ScanSAR uses an L-Band instrument to acquire wide-beam level 1.1 (SLC) products with coverage areas revisited every 14 days.", "AMOUNT": "Amount", "AMPLITUDE": "amplitude", "AN_EASY_WAY_TO_REGISTER_FOR_AN_EARTHDATA_ACCOUNT_IS_TO_CLICK_THE_SIGN_IN_ICON": "An easy way to register for an Earthdata account is to click the \"Sign in\" icon", @@ -62,6 +69,7 @@ "AREA_OF_INTEREST": "Area Of Interest", "AREA_OF_INTEREST_OPTIONS": "Area of Interest Options", "AREA_OF_INTEREST_WKT": "Area of Interest • WKT", + "ARIA_VERSION": "ARIA Version", "ARROW_BACKWARD": "arrow_backward", "ARROW_FORWARD": "arrow_forward", "ASCENDING": "Ascending", @@ -74,6 +82,7 @@ "AT_THE_BOTTOM_OF_THE_LIST_OF_FILES_IS_A_FOOTER_BAR_THAT_SHOWS_SEVERAL_BUTTONS": "At the bottom of the list of files is a footer bar that shows several buttons.", "AUTO_RIFT_PAIR": "AutoRIFT pair", "AUTORIFT_DESC": "autoRIFT is a highly accurate and efficient algorithm for finding the pixel displacement between two radar images. ", + "AZIMUTH_ANGLE": "Azimuth Angle", "AZIMUTH_ANX_TIME": "Azimuth Anx Time", "AZIMUTH_TIME": "Azimuth Time", "BACK": "Back", @@ -90,8 +99,10 @@ "BEAM_MODES": "Beam Modes", "BEAM_MODES_SELECTED": "beam modes selected", "BETA": "(beta)", + "BOX": "Box", "BOX_DRAW": "Box Draw", "BROWSE_IMAGE_NOT_ALL_SCENES_WILL_HAVE_ALL_EXTRA_INFORMATION": "browse image. Not all scenes will have all extra information.", + "BROWSE_IMAGE_OPACITY": "Browse Image Opacity", "BUILD_COMMIT": "Build Commit", "BURST_ID_ABSOLUTE": "Absolute Burst ID", "BURST_ID_FULL": "Full Burst ID", @@ -102,15 +113,17 @@ "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX": "By default, the map-drawing tool is a bounding box.", "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "By default, the map-drawing tool is a bounding box. Click on the map once to specify the", "CALIBRATION": "CalVal", - "CALIBRATION_PRODUCTS_OPTION": "Calibration & Validation Reference Products", + "CALIBRATION_PRODUCTS_OPTION": "CalVal Products", "CAMPAIGN": "Campaign", "CAMPAIGN_NAME": "Campaign Name", "CAMPAIGN_SELECTOR": "Campaign Selector", "CANADAS_OPEN_LICENSE": "Canada's Open Government License", "CANCEL": "Cancel", "CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(center column) and Files column (right) will populate.", + "CHARACTERS": "characters", "CHART": "Chart", "CHEVRON_RIGHT": "chevron_right", + "CIRCLE": "Circle", "CIRCLE DRAW": "Circle Draw", "CIRCLE_DRAW": "Circle Draw", "CITATION": "Citation", @@ -137,10 +150,12 @@ "COPIED_EVENT_ID": "Copied Event ID", "COPY": "Copy", "COPY_FILE_I_DS": "Copy File IDs", + "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copy file IDs will copy the file names of all files in the queue for use elsewhere.", "COPY_FILE_ID": "Copy File ID", "COPY_FILE_ID_TO_CLIPBOARD": "Copy File IDs to clipboard", "COPY_FILE_IDS": "Copy File IDs", "COPY_FILE_URLS_TO_CLIPBOARD": " Copy File URLs to clipboard", + "COPY_JOB_ID": "Copy Job ID", "COPY_NAME": "Copy Name", "COPY_REFERENCE_SCENE_NAMES_TO_CLIPBOARD": "Copy reference scene names to clipboard", "COPY_SCENE_NAME": "Copy scene name", @@ -155,20 +170,29 @@ "COREGISTERS_SAR_DATA_TO_THE_DEM_RATHER_THAN_USING_DEAD_RECKONING_BASED_ON_ORBIT_FILES": "Coregisters SAR data to the DEM, rather than using dead reckoning based on orbit files.", "CORPORATE_FARE_ASF": "corporate_fareASF", "CREATE_SUBSCRIPTION": "Create Subscription...", + "CREDIT": "credit", + "CREDIT_COST": "Credit Cost", + "CREDIT_MAX": "credit max", + "CREDITS": "credits", + "CREDITS_LEFT": "credits left", + "CREDITS_LEFT_THIS_MONTH": "credits left this month", "CRITICAL_BASELINE": "Critical Baseline", "CRITICAL_BASELINE_ABBR": "Critical Baseline", "CSV": "csv", + "CUMULATIVE_LAYER": "Cumulative Layer", "CURRENT_SARVIEWS_PRODUCT_FILES_PRODUCT_SIZE_TO_STRING": "currentSarviewsProduct.files.product_size.toString()", "CUSTOM_PAIR": "Custom Pair", "CUSTOMIZE_ENVIRONMENTS": "Customize Environments", "DARK": "Dark", "DATA": "Data", + "DATA_COURTESY": "Data courtesy of OPERA", "DATA_COURTESY_OF": "Data courtesy of", "DATA_DOWNLOAD": "Data Download", "DATA_DOWNLOAD_IS_USED_TO_DOWNLOAD_MULTIPLE_PRODUCTS_WITH_EITHER_THE": "Data Download is used to download multiple products, with either the", "DATA_FILTERS": "Date Filters", "DATA_TYPE": "Data Type", "DATASET": "Dataset", + "DATASET_INFO": "Dataset Info", "DATASET_LINKED": "dataset_linked", "DATASET_OPTIONS": "Dataset Options", "DATASET_SUBTYPES": "Dataset Subtypes", @@ -190,6 +214,9 @@ "DEFAULT_THEME": "Theme", "DEFINE_A_SEARCH_YOU_WOULD_LIKE_TO_SAVE_ENTER_THE_SEARCH_TYPE_DATASET_AREA_OF_INTEREST_AND": "Define a search you would like to save. Enter the search type, dataset, area of interest and", "DEFINING_DATA_SEARCHES": "Defining Data Searches", + "DEFORMATION": "Deformation", + "DELETE": "Delete", + "DELETE_ALL_SERIES": "Delete all series", "DELETE_FOREVER": "delete_forever", "DEM": "DEM", "DEM NAME": "DEM Name", @@ -198,6 +225,7 @@ "DEPENDING_ON_THE_WIDTH_OF_YOUR_INTERNET_BROWSER_NONE_OR_SOME_OF_THE_FILTERS_WILL_BE": "Depending on the width of your internet browser, none or some of the filters will be", "DEPTH": "Depth", "DERIVED_DATASETS": "Derived Datasets", + "DERIVED_DATASETS_1": "Derived Datasets", "DERIVED_DATASETS_CONTAIN_A_COLLECTION_OF_DATASETS_AVAILABLE_TO_VIEW_AND_DOWNLOAD": "Derived datasets contain a collection of datasets available to view and download.", "DESCENDING": "Descending", "DESCRIP_GLOBAL_SEASONAL_SENTINEL": "This dataset is the first-of-its-kind spatial representation of multi-seasonal, global SAR repeat-pass interferometric coherence and backscatter signatures. Global coverage comprises all land masses and ice sheets from 82 degrees northern to 78 degrees southern latitude. The dataset is derived from high-resolution multi-temporal repeat-pass interferometric processing of about 205,000 Sentinel-1 Single-Look-Complex (SLC) data acquired in Interferometric Wide-Swath mode (Sentinel-1 IW mode) from 1-Dec-2019 to 30-Nov-2020.", @@ -208,8 +236,14 @@ "DEVELOPER": "Developer", "DIRECTION": "Direction", "DISABLE": "Disable", + "DISP_DOI": "DISP DOI", + "DISPLACEMENT": "Displacement", + "DISPLACEMENT_DESCRIPTION": "Displacement products provide information on anthropogenic and natural changes of Earth's surface, covering North America.", + "DISPLACEMENT_FILTERS": "Displacement Filters", + "DISPLACEMENT_SEARCH": "Displacement Search", "DISPLAYED_IF_YOU_WISH_TO_UNDO_THIS_ACTION": "displayed if you wish to undo this action.", "DISPLAYED_IN_THE_SEARCH_MENU_AT_THE_TOP_YOU_CAN_ACCESS_ALL_OF_THE_HIDDEN_FILTERS_BY": "displayed in the search menu at the top. You can access all of the hidden filters by", + "DO_YOU_WANT_TO_DELETE_ALL_SERIES": "Do you want to delete all series?", "DONE": "Done", "DOWNLOAD": "Download", "DOWNLOAD_ALL": "Download All", @@ -226,12 +260,13 @@ "DRAG_AND_DROP": "Drag and Drop", "DRAG_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON_TO_MOVE_TO_YOUR_AREA_OF_INTEREST": "Drag the map while holding down the left mouse button to move to your area of interest.", "DRAW": "draw", - "DRAW_A_BOX": "Draw a box", - "DRAW_A_CIRCLE": "Draw a circle", + "DRAW_A_BOX": "Draw a Box", + "DRAW_A_CIRCLE": "Draw a Circle", "DRAW_A_LINE": "Draw a Line", "DRAW_A_POLYGON": "Draw a Polygon", "DRAW_NEW_AREA_OF_INTEREST": "Draw new area of interest", "DRAW_ON_THE_MAP": "Draw On The Map", + "DRAW_TRENDLINE": "Draw Trendline", "E_PREVENT_DEFAULT": "e.preventDefault();", "EACH_WITH_THEIR_OWN_PROCESSING_OPTIONS_SELECT_THE_PROCESSINGOPTIONS_YOU_WISH": "each with their own processing options. Select the processingoptions you wish.", "EDIT": "Edit", @@ -256,7 +291,6 @@ "EVENT_TYPES": "Event Types", "EXAMPLE": "Example", "EXAMPLE_S1_B_IW_SLC_1_SDV_20210704_T135937_20210704_T140004_027645_034_CB_0_4_B2_C": "Example: S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C", - "EXAMPLE:": "Example", "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Expand your skills with our full list of Vertex Data Search tutorials.", "EXPERIMENTAL": "Experimental", "EXPIRED": "Expired", @@ -271,9 +305,9 @@ "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "fields are available for select datasets. You may enter", "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": " fields. The date picker will automatically constrain", "FILE": "File", - "FILE_COPY": "file_copy", "FILE_I_DS_NAMES_CAN_BE_COPIED": "File IDs (names) can be copied", "FILE_IDS": "File IDs.", + "FILE_IMPORT_SUPPORTED": "File Import Supported", "FILE_IMPORT_SUPPORTED ": "File Import Supported", "FILE_LIST_SEARCH": "File List Search", "FILE_OPTION": "file option.", @@ -281,7 +315,6 @@ "FILE_TYPE": "File Type", "FILE_TYPES": "File Types", "FILE_TYPES_SELECTED": "file types selected", - "FILE_UPLOAD": "file_upload", "FILES": "Files", "FILES_CAN_BE_INDIVIDUALLY_DOWNLOADED": "Files can be individually downloaded", "FILES_HERE": "Files Here", @@ -305,11 +338,12 @@ "FORMAT": "Format", "FORMAT_SHAPES": "format_shapes", "FRAME": "Frame", + "FRAME_COVERAGE": "Frame Coverage", "FRAME_END": "Frame End", "FRAME_START": "Frame Start", "FREQUENCY": "Frequency", + "FULL": "Full", "FULL_BURST_ID": "Full Burst ID", - "FUNCTION_W_D_S_L_I_W_L_W_L_W_L_PUSH_GTM_START": "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':", "GAMMA0": "gamma0", "GAPS_DETECTED": "Gaps Detected", "GEO_SEARCH": "Geo Search", @@ -333,6 +367,7 @@ "GLACIER_SPEED": "Glacier Speed", "GLOBAL_SEASONAL_SENTINEL": "Global Seasonal Sentinel-1 Interferometric Coherence & Backscatter Dataset", "GRATICULE_OVERLAY": "Graticule Overlay", + "GRAZING_ANGLE": "Grazing Angle", "GRIDLINES_OVERLAY": "Gridlines Overlay", "GROUP_ID": "Group ID", "GROUP_ID_INFO_BAR": "Group ID", @@ -349,11 +384,10 @@ "HOW_TO_BASIC_LIST_SEARCH": "How-To basic list Search", "HOW_TO_CITE_USING_THIS_DATA": "How to cite using this data", "HTTPS_URS_EARTHDATA_NASA_GOV_USERS_NEW": "https://urs.earthdata.nasa.gov/users/new", - "HTTPS_WWW_GOOGLETAGMANAGER_COM_GTM_JS_ID_I_DL_F_PARENT_NODE_INSERT_BEFORE_J_F": "'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);", "HY_P3_API_URL": "HyP3 API URL", "HY_P3_USER_GUIDE": "HyP3 User Guide", + "HYP3_JOB_IDS_INFO_BAR": "HYP3 Job IDs Info Bar", "I_DS": "IDs", - "IF_URL_VERTEX_BETA_ASF_ALASKA_EDU_URL_VERTEX_DAAC_ASF_ALASKA_EDU_URL_VERTEX_RETIRED_DAAC_ASF_ALASKA_EDU": "if (url === 'vertex-beta.asf.alaska.edu' || url === 'vertex.daac.asf.alaska.edu' || url === 'vertex-retired.daac.asf.alaska.edu') {", "IF_YOU_ARE_LOGGED_INTO_VERTEX_CLICKING_ON_THE_CART_ICON_IN_THE_HEADER_LABELED_DOWNLOADS": "If you are logged into Vertex, Clicking on the cart icon in the header, labeled Downloads,", "IF_YOU_DO_NOT_ALREADY_HAVE_ONE_REGISTER_FOR_A_FREE_EARTHDATA_LOGIN_ACCOUNT": "If you do not already have one, register for a free Earthdata Login account.", "IF_YOU_NEED_MORE_INFORMATION_ABOUT_A_PARTICULAR_DATASET_CLICK_ON_THE_HELP_ICON_IN_THE_DATASET_SELECTOR": "If you need more information about a particular dataset, click on the help icon in the Dataset selector.", @@ -365,16 +399,17 @@ "IN_SAR_PAIR": "InSAR pair", "IN_THE_LEFT_COLUMN_AS_YOU_CLICK_ON_THE_DIFFERENT_SCENES_YOU_WILL_SEE_THE_CENTER_COLUMN_REFLECT_THE": "in the left column. As you click on the different scenes, you will see the center column reflect the", "IN_THE_UPPER_RIGHT_CORNER_OF_VERTEX_THEN_SELECT_THE_REGISTER_BUTTON_AND_FILL_IN": "in the upper-right corner of Vertex, then select the \"REGISTER\" button and fill-in", + "INCIDENCE_ANGLE": "Incidence Angle", "INCIDENCE_ANGLE_MAP": "Incidence Angle Map", "INCLUDE": "Include", "INCLUDE_A_FALSE_COLOR_RGB": "Include a false-color RGB decomposition in the product package for dual-pol granules (ignored for single-pol granules).", "INCLUDE_THE_LOCAL_INCIDENCE_ANGLE_MAP_IN_THE_PRODUCT_PACKAGE": "Include the local incidence angle map in the product package.", "INDETERMINATE": "indeterminate", + "INFO": "Info", "INFO_BACKSCATTER_COEFFICIENT": "Backscatter coefficient normalization, either by ground area (sigma0) or illuminated area projected into the look direction (gamma0).", "INFO_GISMO": "The Global Ice-Sheet Mapping Observatory (GISMO) project mapped flight lines over the Greenland ice sheet.", "INFO_GLACIER_SPEED": "This dataset reveals complex patterns of glacier flow throughout Alaska.", "INFO_GLOBAL_SEASONAL_SENTINEL": "This dataset provides spatial representation of multi-seasonal, global interferometric coherence and backscatter signatures.", - "INFO_INTERNATIONAL_POLAR_YEAR": "International Polar Year (IPY) is a collaborative research event focused on the Arctic and Antarctic.", "INFO_NAME_OF_THE_DEM": "Name of the DEM to use for processing. copernicus will use the Copernicus GLO-30 Public DEM, while legacy will use the DEM with the best coverage from ASF's legacy SRTM/NED datasets.", "INFO_PRODUCT_PIXEL": "Product pixel spacing in meters", "INFO_PRODUCT_PIXEL ": "Product pixel spacing in meters.", @@ -383,7 +418,9 @@ "INFO_SEA_ICE_MEASURES": "This dataset includes radar snapshots of Arctic and Southern Ocean sea ice.", "INFO_WETLANDS_MEASURES": "This dataset includes regional and continental-scale maps covering crucial wetlands systems.", "INSAR_DESC": "Interferometric Synthetic Aperture Radar (InSAR) processing uses two SAR images collected over the same area to determine geometric properties of the surface. The phase measurements of the two images acquired at different times are differenced to detect and quantify surface changes.", - "INTERNATIONAL_POLAR_YEAR": "International Polar Year", + "INSTRUMENT": "Instrument", + "INSTRUMENTS": "Instruments", + "INSTRUMENTS_SELECTED": "instruments selected", "INVALID_BASELINE": "Invalid Baseline", "INVALID_END_DAY": "Invalid End Day", "INVALID_START_DAY": "Invalid Start Day", @@ -398,6 +435,7 @@ "JERS_DESC": "The JERS-1 (Japanese Earth Resources Satellite) SAR is a high-resolution, all-weather imaging radar. Data uses: land surveys, agriculture, forestry, fisheries, environmental...", "JOB": "job", "JOB_FILTERS": "Job Filters", + "JOB_IDS_SELECTOR": "Job IDs Selector", "JOB_MAX": "job max", "JOB_STATUS": "Job Status", "JOB_SUBMITTED": "Job Submitted", @@ -406,6 +444,7 @@ "JOBS_LEFT_THIS_MONTH": "jobs left this month", "JOBS_NOW": "jobs now", "JOBS_PER_MONTH": "jobs per month", + "JOINT_OBSERVATION_ONLY": "Joint Observation Only", "JUN_JUL_AUG": "Jun, Jul, Aug", "KML": "kml", "LANGUAGE": "Language", @@ -415,9 +454,12 @@ "LEARN_MORE_ABOUT_ASF_AND_SAR": "Learn More About ASF & SAR", "LEARN_THE_BASICS": "Learn the Basics", "LEFTMOST_COLUMN_OF_THE_RESULTS_PANEL": "leftmost column of the results panel.", + "LICENSE": "License", "LIGHT": "Light", + "LINE": "Line", "LINE_DRAW": "Line draw", "LINE_POLYGON_AND_BOUNDING_BOX": "line, polygon, and bounding box.", + "LINEAR_FIT_NOT_AVAILABLE": "Linear fit not available", "LINK": "link", "LIST": "List", "LIST_OF": "List of", @@ -428,16 +470,21 @@ "LOADING_FILES": "Loading files...", "LOGIN": "Login", "LOGIN_TO_VIEW": "login to view", + "LOGIN_TO_VIEW_NUMBER_OF_CREDITS_LEFT_THIS_MONTH": "login to view number of credits left this month", "LOGIN_TO_VIEW_NUMBER_OF_JOBS_LEFT_THIS_MONTH": "login to view number of jobs left this month", "LOOKING_FOR_DEMS": "Looking for DEMs", "LOOKS TWO": "looks_two", "LOOKS_MANY": "Looks Many", "LOOKS_OTHER": "Looks Other", "MAGNITUDE": "Magnitude", + "MAIN": "Main", + "MAIN_BAND_FREQ_A_POLARIZATION": "Main Band (Freq. A) Polarization", + "MAIN_POLARIZATIONS": "Main Polarizations", "MAKE_SURE_YOU_ARE_LOGGED_INTO_VERTEX": "Make sure you are logged into Vertex.", "MAKE_SURE_YOU_ARE_LOGGED_INTO_VERTEX_SEARCHES_CANNOT_BE_SAVED_AND_SEARCH_HISTORY_CANNOT_BE": "Make sure you are logged into Vertex. Searches cannot be saved and search history cannot be", "MAP": "map", "MAP_CONTROLS_IN_DEPTH": "Map Controls In-Depth", + "MAP_LAYERS": "Map Layers", "MAP_TILER": "© MapTiler", "MAP_VIEW": "Map View", "MAR_APR_MAY": "Mar, Apr, May", @@ -466,21 +513,27 @@ "NAME": "Name", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST": "Navigate To Your Area of Interest", "NAVIGATE_TO_YOUR_AREA_OF_INTEREST_BY_DRAGGING_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON": "Navigate to your area of interest by dragging the map while holding down the left mouse button.", + "NEW": "New!", "NEW_DATE_GET_TIME_EVENT_GTM_JS_VAR_F_D_GET_ELEMENTS_BY_TAG_NAME_S": "new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],", - "NEW_END_DATE": "New End Date", + "NEW_END_DATE": "New End Date'\n", "NEXT": "Next", + "NISAR_DESC": "NISAR provides L- and S-band SAR data to measure Earth's changing ecosystems, dynamic surfaces, and ice masses with 12-day regularity on ascending and descending passes.", "NO OVERLAP THRESHOLD": "No Overlap Threshold", + "NO_AREA_ON_INTEREST_SPECIFIED": "No area of interest specified.", "NO_BEAM_MODES_TO_SELECT": "No beam modes to select", + "NO_CREDITS_LEFT_THIS_MONTH": "No credits left this month", "NO_FILE_TYPES_TO_SELECT": "No file types to select", "NO_FILTERS": "(No filters)", "NO_FLIGHT_DIRECTION_SELECTED": "No flight directions selected", "NO_FLIGHT_DIRECTIONS_TO_SELECT": "No flight directions to select", "NO_FRAME_INPUT": "No frame input", "NO_JOBS_LEFT_THIS_MONTH": "No jobs left this month", + "NO_MOBILE_DISPLACEMENT_SEARCH": "Displacement Searches are not available on small screens.", "NO_NAME": "No Name", "NO_ON_DEMAND_PRODUCTS": "No On Demand Products", "NO_PAIR_SELECTED": "No Pair Selected", "NO_PATH_INPUT": "No path input", + "NO_POINT_SELECTED": "No Point Selected", "NO_POLARIZATION_SELECTED": "No polarization selected", "NO_POLARIZATIONS_TO_SELECT": "No polarizations to select", "NO_PRODUCTS_AVAILABLE_FOR_THIS_EVENT": "No Products Available for this Event", @@ -488,12 +541,14 @@ "NO_SCENE_SELECTED": "No Scene Selected", "NO_SUBTYPES_TO_SELECT": "No subtypes to select", "NO_SUITABLE_PRODUCTS_FOR_THIS_TOOL": "No suitable products for this tool", + "NO_VALID_DATA_FOR_POINT": "No valid data for point.", "NON_DISCRIMINATION": "Non-Discrimination", + "NONE": "None", "NOT_ABLE_TO_SELECT_SIMILAR_SCENES_FROM_THIS_SOURCE": "Not able to select similar scenes from this source", "NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Not all filters will be available for", "NOTE_IN_VERTEX_A_SCENE_IS_CONSIDERED_TO_BE_A_PACKAGE_CONTAINING_ALL_FILES_OR_PRODUCTS": "Note: In Vertex, a scene is considered to be a package containing all files, or products,", "NOTE_THE_NUMBER_OF_FILES_THAT_ARE_PREDICTED_TO_MATCH_THE_CURRENT_SEARCH_PARAMETERS_IS_DISPLAYED_UNDER_THE_SEARCH_BUTTON_IF_THERE_ARE_NO_PREDICTED_MATCHES_THE_SEARCH_BUTTON_WILL_BE_GREYED_OUT_AND_DISPLAY_NO_RESULTS": "Note: The number of files that are predicted to match the current search parameters is displayed under the SEARCH button. If there are no predicted matches, the search button will be greyed out and display NO RESULTS.", - "NUM_BASELINE_SCENES_ASYNC_1_S": "(numBaselineScenes$ | async) === 1 ? \"\" : \"s\"", + "OBSERVATIONAL_FILTERS": "Observational Filters", "OF": "of", "OF_THE_BOUNDING_BOX_OR_TO_DELETE_THE_BOUNDING_BOX": "of the bounding box, or to delete the bounding box.", "OF_THESE_ZIPPED_FILES_TO_BE_EXAMINED_AND_INDIVIDUAL_FILES_WITHIN_THE_ZIP_ARCHIVE_TO_BE_ADDED_TO_THE_CART": "of these zipped files to be examined and individual files within the zip archive to be added to the cart", @@ -514,7 +569,7 @@ "ONLY_AVAILABLE_IN_CHROME": "Only available in Chrome", "ONLY_DISPLAY_SCENES_WITH_A_BROWSE_IMAGE": "Only display scenes with a browse image", "OPACITY": "Opacity", - "OPACITY_OF_BROWSE_IMAGES": "Opacity of Browse Images", + "OPACITY_OF_COHERENCE_LAYER": "Coherence Layer Opacity", "OPEN_IN_IMAGE_VIEWER": "Open in Image Viewer", "OPEN_LINK_TO_DOCUMENTATION": "Open link to documentation.", "OPEN_MANUAL": "Open Manual", @@ -536,6 +591,7 @@ "PAIR_OVERLAP_THRESHOLD": "Pair Overlap Threshold", "PAIRS": "Pairs", "PALSAR_DESC": "PALSAR was developed to contribute to the fields of mapping, precise regional land-coverage observation, disaster monitoring, and resource surveying.", + "PARTIAL": "Partial", "PATH": "Path", "PATH_AND_FRAME_FILTERS": "Path and Frame Filters", "PATH_END": "Path End", @@ -554,12 +610,19 @@ "PIXEL SPACING": "Pixel Spacing", "PLACE": "place", "PLACE_A_POINT": "Place a Point", + "PLEASE_BE_PATIENT": "Please be patient.", + "PLEASE_SELECT_A_POINT_ON_THE_MAP": "Please select a point on the map.", + "POINT": "Point ", "POINT_DRAW": "Point draw", "POINTING_ANGLE": "Pointing Angle ", + "POINTS": "Points", "POLARIZATION": "Polarization", + "POLARIZATION_MAIN": "Main Polarization", "POLARIZATION_SELECTED": "Polarization selected", + "POLARIZATION_SIDE": "Side Polarization", "POLARIZATIONS": "Polarizations", "POLARIZATIONS_SELECTED": "polarizations selected", + "POLYGON": "Polygon", "POLYGON_DRAW": "Polygon draw", "POWER": "power", "POWERED_BY_HY_P3": "Powered by HyP3", @@ -579,6 +642,8 @@ "PRODUCT_TYPE": "Product Type", "PRODUCT_TYPES": "Product Types", "PRODUCTION": "Production", + "PRODUCTION_CONFIGURATION": "Production Configuration", + "PRODUCTION_CONFIGURATION_FILTER": "Production Configuration Filter", "PRODUCTS_IN_YOUR_QUEUE_MAY_REQUIRE_A_RESTRICTED_DATASET_AGREEMENT": "Products in your queue may require a restricted dataset agreement.", "PRODUCTS_TO_DOWNLOADS_FROM_SELECTED_EVENT": "products to downloads from selected event", "PROFILE": "Profile", @@ -589,11 +654,13 @@ "QUEUE": "Queue", "QUEUE_YOU_CAN_ADD_AS_MANY_FILES_AS_YOU_WISH_BUT_THERE_IS_A_LIMIT_OF_TWO_HUNDRED_FILES_PER_MONTH_THAT": "queue. You can add as many files as you wish but there is a limit of two hundred files per month that", "QUICKLY_LEARN_THE_BASICS_OF_VERTEX_DATA_SEARCH_WITH_THIS_GETTING_STARTED_SERIES": "Quickly learn the basics of Vertex Data Search with this getting started series.", + "RADAR_LOOK_DIRECTION": "Radar Look Direction", "RADARSAT_1": "RADARSAT-1 Antarctic Mapping Project (RAMP)", "RADARSAT_1_DESC": "RADARSAT-1 synthetic aperture radar (SAR), was a powerful microwave instrument. It captured high quality SAR images of the Earth night and day and in all-weather conditions.", "RADARSAT_IS_AVAILABLE_THROUGH": "RADARSAT-1 is freely available through", "RADIO_BUTTON_UNCHECKED": "radio_button_unchecked", "RADIOMETRY": "Radiometry", + "RANGE_BANDWIDTH": "Range Bandwidth", "RAW": "Raw", "READ_OUR_ON_DEMAND_GUIDE": "Read Our On Demand Guide", "READ_OUR_USER_GUIDE": "Read Our User Guide", @@ -611,7 +678,10 @@ "REMOVE_JOB": "Remove job", "REMOVE_RED_EYE": "remove_red_eye", "REMOVE_SCENE_FILES_FROM_DOWNLOADS": "Remove scene files from downloads", + "REMOVE_SERIES": "Remove Series", + "REQUEUE_PROJECT": "Add Project to Queue", "RESAMPLED_DEM_SRTM_OR_NED_USED_FOR_RTC_PROCESSING": "Resampled DEM (SRTM or NED) used for RTC processing.", + "RESET_CHART_REFERENCE": "Reset chart reference", "RESET_TO_DEFAULT": "Reset to Default", "RESTORE": "Restore", "RESTORE_AREA": "Restore Area", @@ -624,6 +694,8 @@ "REVIEW_SEARCH_RESULTS": "Review search Results", "REVIEW_SUBMISSION": "Review Submission", "RGB_DECOMPOSITION": "RGB Decomposition", + "RIGHT_CLICK_SET_BASELINE": "Right-click to set baseline.", + "ROLLOUT": "Rollout", "RUNNING": "Running", "SAMPLES_PER_BURST": "Samples Per Burst", "SAR_FILE_SEARCHES": "SAR File Searches", @@ -664,8 +736,12 @@ "SCENE_START_TIME": "Scene Start Time", "SCENES": "Scenes", "SCENES_THE_LEFT_COLUMN": "Scenes - the left column", + "SCIENCE_ON_DEMAND": "Science On-Demand", + "SCIENCE_PRODUCT": "Science Product", "SCRIPTS_FOR_ACCESSING_SAR_DATA": "scripts for accessing SAR data.", "SCROLL_THROUGH_THE_LIST_OF_RESULTS_AND_YOU_SEE_SOME_FILES_HAVE_AN_ICON_OF_THREE_GRAY_SQUARES_NEXT": "Scroll through the list of results and you see some files have an icon of three gray squares next", + "SDK_PYTHON_CODE_EXPORT": "Export SDK Python Code", + "SDK_PYTHON_CODE_EXPORT_TOOLTIP": "SDK Python code export tooltip", "SEA_ICE_MEASURES": "Sea Ice MEaSUREs", "SEARCH": "Search", "SEARCH_AREA": "Search Area", @@ -702,7 +778,10 @@ "SENTINEL_1_INTERFEROGRAM_BETA_DESC": "Level 2 standardized Sentinel-1 Interferogram products generated by JPL’s Advanced Rapid Imaging and Analysis (ARIA) project.", "SENTINEL_DESC": "Sentinel-1 includes twin satellites that each carry C-band synthetic aperture radar (SAR), together providing all-weather, day-and-night imagery of Earth’s surface.", "SEP_OCT_NOV": "Sep, Oct, Nov", + "SERIES": "Series", + "SERIES_UNDEFINED": "Series undefined", "SET": "Set", + "SET_AS_BASELINE": "Set as Baseline", "SET_AS_BOTH": "Set as both", "SET_AS_END_DATE": "Set as End Date", "SET_AS_FRAME_END": "Set as frame end", @@ -712,15 +791,27 @@ "SET_AS_PATH_END": "Set as path end", "SET_AS_PATH_START": "Set as path start", "SET_AS_START_DATE": "Set as Start Date", + "SET_AS_TRACK_END": "Set as track end", + "SET_AS_TRACK_START": "Set as track start", "SET_CAMPAIGN_NAME": "Set campaign name", "SET_FLIGHT_DIRECTION": "Set flight direction", + "SET_FRAME_COVERAGE": "Set frame coverage", "SET_PROCESSING_OPTIONS_AND_A_PROJECT_NAME": "Set Processing Options And A Project Name", "SETTINGS": "settings", "SETTINGS_OVERSCAN": "settings_overscan", + "SHARE_SAVE": "Share/Save", + "SHARE_SAVE_INFORMATION": "Share this search with others and manage your searches", "SHARE_SEARCH": "Share Search", "SHARE_WITH_EMAIL": "Share With Email", + "SHIFT_TO_ZERO": "Shift to zero", + "SHORTWAVE_DISPLACEMENT": "Local Displacement", + "SHOW_LINEAR_FIT": "Show Linear Fit", + "SHOW_LINES": "Show Lines", "SHOW_PRODUCT_FILTERS_CRITERIA": "Show product filters criteria", "SHOW_RAW_DATA": "Show raw data", + "SIDE": "Side", + "SIDE_BAND_FREQ_B_POLARIZATION": "Side Band (Freq. B) Polarization", + "SIDE_POLARIZATIONS": "Side Polarizations", "SIGMA0": "sigma0", "SIGN_IN": "Sign In", "SIGN_IN_BY_CLICKING_THE_SIGN_IN_ICON_IN_THE_TOP_RIGHT_OF_THE_WINDOW_USE_YOUR_EARTHDATA_LOGIN_USERNAME_AND_PASSWORD": "Sign in by clicking the Sign in icon in the top right of the window. Use your Earthdata Login username and password.", @@ -754,6 +845,7 @@ "STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "starting corner, move the mouse, then click again to finish the box.", "STATISTICS_AND_GITHUB_REPOSITORY": "Statistics and Github Repository", "STOP_ADDING_CUSTOM_PAIR": "Stop adding custom pair", + "STOP_ADDING_POINTS": "Stop Adding", "STOP_DOWNLOAD": "Stop download", "STOP_DRAWING": "Stop drawing", "STOP_EDITING": "Stop editing", @@ -779,6 +871,7 @@ "TEMPORAL": "Temporal", "TEMPORAL_CRITERIA": "Temporal Criteria:", "TEST": "Test", + "TEST_1_1": "TEST 1.1", "THAT_ARE_RELATED_TO_A_SPECIFIC_LOCATION_AND_TIME": "that are related to a specific location and time.", "THE_BASELINE_TOOL_BUTTON_OPENS_THE_ASF_BASELINE_TOOL_WHICH_IS_USED_FOR_THE_CREATION_OF_IN_SAR_STACKS": "The 'Baseline Tool' button opens the ASF Baseline Tool, which is used for the creation of InSAR stacks.", "THE_CART_CHANGES_APPEARANCE_WHEN_THIS_IS_DONE": "The cart changes appearance when this is done.", @@ -808,7 +901,12 @@ "TO_VIEW_YOUR_SAVED_SEARCHES_FOLLOW_THESE_STEPS": "To view your saved searches follow these steps:", "TO_VIEW_YOUR_SEARCH_HISTORY_FOLLOW_THESE_STEPS": "To view your search history follow these steps:", "TOO_MANY_JOBS_IN_QUEUE": "Too many jobs in queue", + "TOOLS": "Tools", "TOOLTIP": "TOOLTIP", + "TRACK": "Track", + "TRACK_AND_FRAME_FILTERS": "Track and Frame Filters", + "TRACK_END": "Track End", + "TRACK_START": "Track Start", "TRAVEL_EXPLORE": "travel_explore", "TYPE": "Type", "UAVSAR_DESC": "Uninhabited Aerial Vehicle Synthetic Aperture Radar (UAVSAR) is specifically designed to acquire airborne repeat-track SAR data for differential interferometric measurements.", @@ -819,6 +917,7 @@ "UPLOAD_AOI_VIA_FILE": "Upload AOI via file", "UPLOAD_GEOSPATIAL_FILE": "Upload Geospatial File", "UR_LS": "URLs", + "URGENT_RESPONSE": "Urgent Response", "USE_AN_ASF_SEARCH_API_QUERY_TO_DOWNLOAD_MORE_RESULTS_MANUALLY": "Use an ASF Search API query to download more results manually.", "USE_THE_AREA_OF_INTEREST_BUTTONS_TO_TOGGLE_DRAWING_ON_THE_MAP_ON_AND_OFF_TO_EDIT_THE_SHAPE": "Use the 'Area of Interest' buttons to toggle drawing on the map on and off, to edit the shape", "USE_THE_MAP_PROJECTION_BUTTONS_IN_THE_MAP_TOOLBAR_TO_TOGGLE_BETWEEN_THE_ARCTIC_EQUATORIAL": "Use the 'Map Projection' buttons in the map toolbar to toggle between the Arctic, Equatorial,", @@ -838,7 +937,9 @@ "USING_ZIPPED_DATA": "Using Zipped Data", "USING_ZIPPED_PRODUCT_FILES": "Using Zipped Product Files", "VALIDATE_ONLY": "Validate Only", - "VALIDATED_PRODUCTS_OPTION": "Validated Products", + "VALIDATED_PRODUCTS_OPTION": "Standard Products", + "VELOCITY": "Velocity", + "VELOCITY_OVERVIEW_OPACITY": "Velocity Overview Opacity", "VERTEX_CODE_REPOSITORY": "Vertex Code Repository", "VERTEX_USER_GUIDE": "Vertex User Guide", "VIDEO_LIBRARY": "video_library", @@ -855,10 +956,13 @@ "VOLCANO": "volcano", "W_BROWSE_IMAGES": "w/Browse Images", "WATCH_OUR_TUTORIALS": "Watch Our Tutorials", + "WE_ARE_RETRIEVING_YOUR_INFORMATION": "We are retrieving your information.", "WE_HAVE_A_COLLECTION_OF_VIDEOS_TO_HELP_YOU_LEARN_AND_USE_VERTEX_TO_MAXIMUM_ADVANTAGE": "We have a collection of videos to help you learn and use Vertex to maximum advantage.", "WE_HAVE_A_LARGE_WEBSITE_FULL_OF_RICH_CONTENT_ABOUT_SAR_DATA_AND_HOW_TO_USE_IT": "We have a large website full of rich content about SAR data and how to use it.", "WEBSITE_LINKS": "Website Links", "WETLANDS_MEASURES": "Wetlands MEaSUREs", + "WHAT_ARE_CREDITS": "What are credits?", + "WHAT_ARE_THESE?": "What are these?", "WHAT_IS_BASELINE": "What is Baseline", "WHAT_IS_SBAS": "What is SBAS", "WHEN_YOU_PERFORM_A_SEARCH_AND_THE_RESULTS_ARE_RETURNED_YOU_CAN_BROWSE_THE_LIST_OF_RESULTING_SCENES": "When you perform a search and the results are returned, you can browse the list of resulting scenes", @@ -891,6 +995,7 @@ "YOUR_DOWNLOAD_QUEUE_IS_EMPTY": "Your download queue is empty.", "YOUR_JOBS_QUEUE_IS_EMPTY": "Your jobs queue is empty.", "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS": "your search and reduce the number of results.", + "YOUR_SEARCH_AND_REDUCE_THE_NUMBER_OF_RESULTS_NOT_ALL_FILTERS_WILL_BE_AVAILABLE_FOR": "Your search and reduce the number of results. Not all filters will be available for", "YOUR_SELECTION_TO_A_VALID_RANGE_FOR_THE_SELECTED_DATASET": "your selection to a valid range for the selected dataset.", "ZIPPED_FILES_WILL_BE_DENOTED_BY_A_RIGHT_POINTING_CARET_TO_THE_LEFT_OF_THE_FILENAME_CLICKING_THE_CARET": "Zipped files will be denoted by a right-pointing caret to the left of the filename. Clicking the caret", "ZOOM": "Zoom", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index faeb5b656..4d565296c 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -3,7 +3,7 @@ "20 METERS": "20 metros", "30 METERS": "30 metros", "50% OVERLAP THRESHOLD": "Umbral de Superposición del 50 %", - "A_LIST_OF_SCENE_NAMES_AND_ACQUISITION_TIMES_THAT_WERE_RETURNED_FROM_A_SEARCH_ARE_DISPLAYED_IN_THE": "Una lista de nombres de escenas y tiempos de adquisición que se devolvieron de una búsqueda se muestran en la", + "A_LIST_OF_SCENE_NAMES_AND_ACQUISITION_TIMES_THAT_WERE_RETURNED_FROM_A_SEARCH_ARE_DISPLAYED_IN_THE": "Una lista de nombres de escenas y tiempos de adquisición que se retornaron de una búsqueda se muestran en la", "A_LIST_TYPE_OF_SCENE_ALLOWS_SEARCHING_FOR_SPECIFIC_SCENE_NAMES_GRANULE_NAMES_AND_THE_RESULTS_WILL_INCLUDE_ANY_FILES_THAT_ARE_PART_OF_THOSE_SCENES": "Un tipo de lista de 'Escena' permite buscar nombres de escena específicos (nombres de gránulos), y los resultados incluirán cualquier archivo que forme parte de esas escenas.", "A_SINGLE_PATH_OR_FRAME_OR_A_RANGE_DUE_TO_INCONSISTENT_SENTINEL_1_FRAMING_WE_RECOMMEND": "una sola ruta o marco, o un rango. ", "A_SUBSET_OF_THE_PROCESSING_TYPES_AND_ENTERING_A_PROJECT_NAME_YOU_CAN_ASSOCIATE_DIFFERENT_PROJECT_NAMES_TO": "un subconjunto de los tipos de procesamiento e ingresando un nombre de proyecto, puede asociar diferentes nombres de proyecto a", @@ -16,27 +16,34 @@ "ADD_ALL_RESULTS_TO_DOWNLOADS": "Agregar todos los resultados a las descargas", "ADD_ALL_RESULTS_TO_ON_DEMAND_QUEUE": "Agregar todos los resultados a la lista de On Demand", "ADD_BEAM_MODE_TO_SEARCH": "Agregar modo de haz para buscar", + "ADD_BY_FILE_TYPE": "Agregar por tipo de archivo", + "ADD_BY_PRODUCT_TYPE": "Añadir por tipo de producto", "ADD_FILE_TO_DOWNLOADS": "Agregar archivo a las descargas", "ADD_FILE_TO_QUEUE": "Agregar archivo a la lista", "ADD_JOB": "Agregar trabajo", + "ADD_MAIN_POLARIZATION_TO_SEARCH": "Agregar polarización principal a la búsqueda", "ADD_PAIR_TO_ON_DEMAND_QUEUE": "Agregar par a la lista On Demand", + "ADD_POINTS": "Agregar puntos", "ADD_POLARIZATION_TO_SEARCH": "Agregar polarización a la búsqueda", + "ADD_RANGE_BANDWIDTH_TO_SEARCH": "Agregar ancho de banda de rango a la búsqueda", "ADD_SCENE_FILES_TO_DOWNLOADS": "Agregar archivos de escena a las descargas", - "ADD_SHOPPING_CART": "añadir_carrito_de_compras", + "ADD_SIDE_POLARIZATION_TO_SEARCH": "Agregar polarización lateral a la búsqueda", "ADD_TO_ON_DEMAND_QUEUE": "Añadir a la lista On Demand", "ADDITIONAL_DRAWING_TOOL_OPTIONS_ARE_AVAILABLE_IN_THE_TOOLBAR_INCLUDING_POINT_LINESTRING_AND_POLYGON_OPTIONS": "Las opciones de herramientas de dibujo adicionales están disponibles en la barra de herramientas, incluidas las opciones de punto, cadena de líneas y polígono.", "ADDITIONAL_FILTERS": "Filtros Adicionales", "ADJUST_OVERLAY_OPACITY": "Ajustar opacidad de superposición", - "ADVANCED_DESC": "Las imágenes del Radiómetro Visible e Infrarrojo Cercano Avanzado (AVNIR)-2 han eliminado las distorsiones causadas por el sensor y el terreno. Esto permite la superposición de datos geoespaciales...", - "ADVANCED_FEATURES": "Características avanzadas", + "ADVANCED_DESC": "Las imágenes del radiómetro AVNIR-2 (Visible y de Infrarrojo Cercano Avanzado) han eliminado distorsiones causadas por el sensor y el terreno. Esto permite la superposición geoespacial...", + "ADVANCED_FEATURES": "Características Avanzadas", "AIRSAR_DESC": "AIRSAR era una herramienta de generación de imágenes para todo clima capaz de penetrar a través de las nubes y recopilar datos durante la noche. Las longitudes de onda más largas también podrían penetrar en el dosel del bosque y...", "ALL": "todos", + "ALL_AOIS": "Todas las áreas", "ALL_DATASETS_AND_THIS_LIST_CAN_CHANGE": "todos los conjuntos de datos, y esta lista puede cambiar.", - "ALL_HELP_AND_TUTORIALS": "Ayuda Y Tutoriales", + "ALL_HELP_AND_TUTORIALS": "Ayuda y Tutoriales", "ALL_OF_THE_OTHER_SEARCH_FILTERS_OF_INTEREST_TO_YOU_TO_CREATE_THE_SEARCH_EXACTLY_AS_YOU_LIKE_IT": "todos los demás filtros de búsqueda que le interesen para crear la búsqueda exactamente como le gusta.", "ALL_TUTORIALS": "Todos Los Tutoriales", "ALLOWS_CONSTRAINING_THE_SEARCH_TO_CERTAIN_ANNUAL": "La búsqueda estacional permite restringir la búsqueda a ciertos períodos anuales.", "ALLOWS_FOR_ADDITIONAL_PARAMETERS_TO_BE_APPLIED_TO_NARROW": "Filtros adicionales permite aplicar parámetros adicionales para reducir", + "ALOS_2_DESC": "ALOS-2 PALSAR-2 ScanSAR usa banda L para adquirir productos de nivel 1.1 (SLC) de haz amplio, con cobertura revisitada cada 14 días.", "AMOUNT": "Cantidad", "AMPLITUDE": "amplitud", "AN_EASY_WAY_TO_REGISTER_FOR_AN_EARTHDATA_ACCOUNT_IS_TO_CLICK_THE_SIGN_IN_ICON": "Una forma sencilla de registrarse para obtener una cuenta de Earthdata es hacer clic en el icono \"Iniciar sesión\"", @@ -50,7 +57,7 @@ "ANTARCTIC_MAP_VIEW": "Ver Mapa Antártico", "ANY OVERLAP THRESHOLD": "Cualquier Umbral de Superposición", "AOI_OPTIONS": "Opciones de AOI", - "API": "API", + "API": "api", "API_DOCS": "Documentos API", "API_URL": "URL de API", "API_URL_DOWNLOAD_SEARCH_RESULTS": "URL de API - Descargar Resultados de Búsqueda", @@ -62,18 +69,20 @@ "AREA_OF_INTEREST": "Área de Interés", "AREA_OF_INTEREST_OPTIONS": "Opciones de Área de Interés", "AREA_OF_INTEREST_WKT": "Área de Interés • WKT", + "ARIA_VERSION": "Versión ARIA", "ARROW_BACKWARD": "flecha_hacia atrás", "ARROW_FORWARD": "flecha_adelante", "ASCENDING": "Ascendente", "ASF_DATA_SEARCH": "Búsqueda de datos ASF", - "ASF_DATA_SEARCH_TITLE": "Búsqueda de datos ASF", + "ASF_DATA_SEARCH_TITLE": "Título de búsqueda de datos ASF", "ASF_SEARCH_API": "API de búsqueda ASF", "ASF_SEARCH_PYTHON_EXPORT": "Exportación de Python de búsqueda ASF", "ASF_WEBSITE": "Sitio web de la ASF", - "ASPECT_RATIO": "relación de aspecto", + "ASPECT_RATIO": "relación_de_aspecto", "AT_THE_BOTTOM_OF_THE_LIST_OF_FILES_IS_A_FOOTER_BAR_THAT_SHOWS_SEVERAL_BUTTONS": "En la parte inferior de la lista de archivos hay una barra de pie de página que muestra varios botones.", "AUTO_RIFT_PAIR": "Par AutoRIFT", "AUTORIFT_DESC": "autoRIFT es un algoritmo altamente preciso y eficiente para encontrar el desplazamiento de píxeles entre dos imágenes de radar.", + "AZIMUTH_ANGLE": "Ángulo de Acimut", "AZIMUTH_ANX_TIME": "Tiempo Acimut Anx", "AZIMUTH_TIME": "Tiempo de Acimut", "BACK": "Atrás", @@ -90,59 +99,63 @@ "BEAM_MODES": "Modos de Haz", "BEAM_MODES_SELECTED": "modos de haz seleccionados", "BETA": "(beta)", + "BOX": "Caja", "BOX_DRAW": "Dibujar Caja", "BROWSE_IMAGE_NOT_ALL_SCENES_WILL_HAVE_ALL_EXTRA_INFORMATION": "navegar por la imagen. ", - "BUILD_COMMIT": "Compromiso de compilación", + "BROWSE_IMAGE_OPACITY": "Browse Image Opacity", + "BUILD_COMMIT": "Confirmación de compilación", "BURST_ID_ABSOLUTE": "ID de Burst Absoluta", - "BURST_ID_FULL": "ID de Burst Completa", + "BURST_ID_FULL": "ID de Burst Completo", "BURST_ID_RELATIVE": "ID de Burst Relativa", "BURST_INDEX": "Índice de Burst", - "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_BASELINE_TOOL_BUTTON_TO_PERFORM_A_BASELINE_SEARCH": "botones: \"Herramienta de línea base\" y \"Herramienta SBAS\". ", - "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_SBAS_TOOL_BUTTON_TO_PERFORM_AN_SBAS_SEARCH": "botones: \"Herramienta de línea base\" y \"Herramienta SBAS\". ", + "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_BASELINE_TOOL_BUTTON_TO_PERFORM_A_BASELINE_SEARCH": "Botones: 'Herramienta de Línea Base' y 'Herramienta SBAS'. Haga clic en el botón 'Herramienta de Línea Base' para realizar una búsqueda de Línea Base.", + "BUTTONS_BASELINE_TOOL_AND_SBAS_TOOL_CLICK_THE_SBAS_TOOL_BUTTON_TO_PERFORM_AN_SBAS_SEARCH": "Botones: 'Herramienta de Línea Base' y 'Herramienta SBAS'. Haga clic en el botón 'Herramienta SBAS' para realizar una búsqueda SBAS.", "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX": "De forma predeterminada, la herramienta de dibujo de mapas es un cuadro delimitador.", - "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "De forma predeterminada, la herramienta de dibujo de mapas es un cuadro delimitador. ", + "BY_DEFAULT_THE_MAP_DRAWING_TOOL_IS_A_BOUNDING_BOX_CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE": "De forma predeterminada, la herramienta de dibujo del mapa es un cuadro delimitador. Haga clic una vez en el mapa para especificar el", "CALIBRATION": "CalVal", - "CALIBRATION_PRODUCTS_OPTION": "Productos de referencia de calibración y validación", + "CALIBRATION_PRODUCTS_OPTION": "Productos de Referencia para Calibración Y Validación", "CAMPAIGN": "Campaña", "CAMPAIGN_NAME": "Nombre de la Campaña", "CAMPAIGN_SELECTOR": "Selector de Campaña", - "CAN_SEARCH_ASYNC_AND_AND_IS_MAX_RESULTS_LOADING_ASYNC": "(!(puedeBuscar$ | asíncrono)", "CANADAS_OPEN_LICENSE": "Licencia de Gobierno Abierto de Canadá", "CANCEL": "Cancelar", "CENTER_COLUMN_AND_FILES_COLUMN_RIGHT_WILL_POPULATE": "(columna central) y la columna Archivos (derecha) se completarán.", - "CHART": "Cuadro", - "CHEVRON_RIGHT": "chevron_right", + "CHARACTERS": "caracteres", + "CHART": "Gráfico", + "CHEVRON_RIGHT": "Flecha_derecha", + "CIRCLE": "Círculo", "CIRCLE DRAW": "Dibujar Circulo", "CIRCLE_DRAW": "Dibujo Circular", "CITATION": "Citación", - "CLEAR": "Borrar", - "CLEAR_ALL_PROCESSING_TYPES": "Borrar todos los tipos de procesamiento", - "CLEAR_CURRENT_AREA_OF_INTEREST": "Borrar área de interés actual", - "CLEAR_PRODUCT_NAME_FILTER": "Borrar filtro de nombre de producto", - "CLEAR_SEARCH": "Borrar Búsqueda", - "CLEAR_SEARCH_AREA": "Borrar área de búsqueda", - "CLEAR_WILL_CLEAR_ALL_FILES_FROM_THE_QUEUE_THE_OPTION_RESTORE_WILL_BE": "Borrar borrará todos los archivos de la lista. ", + "CLEAR": "Limpiar", + "CLEAR_ALL_PROCESSING_TYPES": "Eliminar todos los tipos de procesamiento", + "CLEAR_CURRENT_AREA_OF_INTEREST": "Eliminar área de interés actual", + "CLEAR_PRODUCT_NAME_FILTER": "Eliminar filtro de nombre de producto", + "CLEAR_SEARCH": "Eliminar Búsqueda", + "CLEAR_SEARCH_AREA": "Eliminar área de búsqueda", + "CLEAR_WILL_CLEAR_ALL_FILES_FROM_THE_QUEUE_THE_OPTION_RESTORE_WILL_BE": "Eliminar eliminará todos los archivos de la lista. La opción Restaurar será", "CLICK_ON_THE_CART_ICON_NEXT_TO_A_SCENE_NAME_TO_ADD_ALL_THE_SCENE_S_FILES_TO_THE_DOWNLOAD_QUEUE": "Haga clic en el ícono del carrito junto al nombre de una escena para agregar todos los archivos de la escena a la lista de descarga.", - "CLICK_ON_THE_FILTERS_BUTTON_IN_THE_SEARCH_MENU_THE_FILTERS_YOU_CAN_SPECIFY_INCLUDE": "haga clic en el botón 'Filtros...' en el menú de búsqueda. ", - "CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE_STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "Haga clic en el mapa una vez para especificar la esquina de inicio, mueva el mouse y luego haga clic nuevamente para terminar el cuadro.", + "CLICK_ON_THE_FILTERS_BUTTON_IN_THE_SEARCH_MENU_THE_FILTERS_YOU_CAN_SPECIFY_INCLUDE": "Haga clic en el botón 'Filtros ...' en el menú de búsqueda. Los filtros que puede especificar incluyen:", + "CLICK_ON_THE_MAP_ONCE_TO_SPECIFY_THE_STARTING_CORNER_MOVE_THE_MOUSE_THEN_CLICK_AGAIN_TO_FINISH_THE_BOX": "Haga clic una vez en el mapa para especificar la esquina de inicio, mueva el mouse y luego haga clic nuevamente para completar el rectángulo.", "CLICK_ON_THE_ZOOM_ICON_NEXT_TO_A_SCENE_NAME_TO_ZOOM_IN_TO_THE_SCENE_S_LOCATION_ON_THE_MAP": "Haga clic en el icono de zoom junto al nombre de una escena para acercar la ubicación de la escena en el mapa.", "CLICK_THE_ARROW_DOWN_ICON_ON_THE_SEARCH_BUTTON_TO_OPEN_THE_SEARCH_MENU": "Haga clic en el icono de flecha hacia abajo en el botón 'Buscar' para abrir el menú de búsqueda.", "CLICKING_EDIT_LIST_OPENS_THE_SCENE_LIST_SEARCH_WINDOW_SO_YOU_CAN_MAKE_CHANGES_TO_YOUR_LIST": "Al hacer clic en 'Editar lista', se abre la ventana de búsqueda de la lista de escenas para que pueda realizar cambios en su lista.", "CLICKING_THE_IMAGE_THUMBNAIL_WILL_OPEN_AN_IMAGE_BROWSER_SO_YOU_CAN_VIEW_THE_IMAGE_IN_MORE_DETAIL": "Al hacer clic en la miniatura de la imagen, se abrirá un explorador de imágenes para que pueda ver la imagen con más detalle.", - "CLOSE": "Cerca", + "CLOSE": "Cerrar", "COHERENCE_LAYER": "Capa de coherencia", - "COMPLETE_YOU_CAN_ALSO_SELECT_TO_ONLY_SUBMIT_CERTAIN_PROCESSING_TYPES_OR_ALL_PROCESSING_TYPES_BY_SELECTING": "completo. ", - "CONST_REDIRECT_HTTPS_SEARCH_ASF_ALASKA_EDU_WINDOW_LOCATION_PATHNAME_WINDOW_LOCATION_HASH": "const redirect = `https://search.asf.alaska.edu${ventana.ubicación.nombre de ruta}${ventana.ubicación.hash}`;", + "COMPLETE_YOU_CAN_ALSO_SELECT_TO_ONLY_SUBMIT_CERTAIN_PROCESSING_TYPES_OR_ALL_PROCESSING_TYPES_BY_SELECTING": "Complete. También puede seleccionar enviar solo ciertos tipos de procesamiento o todos los tipos de procesamiento. Al seleccionar", + "CONST_REDIRECT_HTTPS_SEARCH_ASF_ALASKA_EDU_WINDOW_LOCATION_PATHNAME_WINDOW_LOCATION_HASH": "const redirect = `https://search.asf.alaska.edu${window.location.pathname}${window.location.hash}`;", "CONST_URL_WINDOW_LOCATION_HOSTNAME_TO_LOWER_CASE": "const url = ventana.ubicación.nombre de host.toLowerCase();", "CONTACT": "Contacto", "COPIED_EVENT_ID": "ID del Evento Copiado", "COPY": "Copiar", "COPY_FILE_I_DS": "Copiar ID de Archivo", - "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copiar ID de archivo copiará los nombres de archivo de todos los archivos en la lista para usarlos en otro lugar.", + "COPY_FILE_I_DS_WILL_COPY_THE_FILE_NAMES_OF_ALL_FILES_IN_THE_QUEUE_FOR_USE_ELSEWHERE": "Copiar ID de archivo copiará los nombres de archivo de todos los archivos en la lista para usarlos en otro lugar.\n", "COPY_FILE_ID": "Copiar ID de archivo", "COPY_FILE_ID_TO_CLIPBOARD": "Copiar ID de Archivo al portapapeles", "COPY_FILE_IDS": "Copiar ID de archivos", "COPY_FILE_URLS_TO_CLIPBOARD": " Copiar URL de Archivo al portapapeles", + "COPY_JOB_ID": "Copiar ID de tarea", "COPY_NAME": "Copiar Nombre", "COPY_REFERENCE_SCENE_NAMES_TO_CLIPBOARD": "Copie los nombres de las escenas de referencia en el portapapeles", "COPY_SCENE_NAME": "Copiar nombre de escena", @@ -157,23 +170,33 @@ "COREGISTERS_SAR_DATA_TO_THE_DEM_RATHER_THAN_USING_DEAD_RECKONING_BASED_ON_ORBIT_FILES": "Registra conjuntamente los datos SAR con el DEM, en lugar de usar la estimación a ciegas basada en archivos de órbita.", "CORPORATE_FARE_ASF": "tarifa_corporativaASF", "CREATE_SUBSCRIPTION": "Crear Suscripción", + "CREDIT": "crédito", + "CREDIT_COST": "Costo del crédito", + "CREDIT_MAX": "crédito máximo", + "CREDITS": "créditos", + "CREDITS_LEFT": "créditos restantes", + "CREDITS_LEFT_THIS_MONTH": "créditos restantes este mes", "CRITICAL_BASELINE": "Línea Base Crítica", "CRITICAL_BASELINE_ABBR": "Línea Crítica", "CSV": "CSV", + "CUMULATIVE_LAYER": "Capa Acumulativa", "CURRENT_SARVIEWS_PRODUCT_FILES_PRODUCT_SIZE_TO_STRING": "currentSarviewsProduct.files.product_size.toString()", "CUSTOM_PAIR": "Par personalizado", "CUSTOMIZE_ENVIRONMENTS": "Personalizar Entornos", "DARK": "Oscuro", "DATA": "Datos", + "DATA_COURTESY": "Datos cortesía de OPERA", "DATA_COURTESY_OF": "Datos Cortesía de", "DATA_DOWNLOAD": "Descarga de Datos", "DATA_DOWNLOAD_IS_USED_TO_DOWNLOAD_MULTIPLE_PRODUCTS_WITH_EITHER_THE": "Descarga de datos se utiliza para descargar varios productos, ya sea con el", - "DATA_FILTERS": "Filtros de Fecha", + "DATA_FILTERS": "Filtros de Datos", + "DATA_TYPE": "Tipo de Dato", "DATASET": "Conjunto de Datos", - "DATASET_LINKED": "dataset_linked", + "DATASET_INFO": "Información del conjunto de datos", + "DATASET_LINKED": "conjunto_de_datos_vinculado", "DATASET_OPTIONS": "Opciones de conjuntos de datos", "DATASET_SUBTYPES": "Subtipos de conjuntos de datos", - "DATASETS": "conjuntos de datos", + "DATASETS": "Conjuntos de datos", "DATE": "Fecha", "DATE ADDED": "Fecha Añadida", "DATE_FILTERS": "Filtros de Fecha", @@ -184,13 +207,16 @@ "DEFAULT_LANGUAGE": "Idioma", "DEFAULT_LANGUAGE_AND_THEME": "Idioma y Temas ", "DEFAULT_MAP_LAYER": "Capa de mapa ", - "DEFAULT_MAX_RESULT_AMOUNT": "Importe de resultado máximo ", + "DEFAULT_MAX_RESULT_AMOUNT": "Resultados Máximos", "DEFAULT_ON_DEMAND_PRESETS": "Ajustes On Demand", "DEFAULT_SEARCH_FILTERS_PRESETS": "Ajustes preestablecidos de filtros de búsqueda ", "DEFAULT_SEARCH_PRESETS": "Valores preestablecidos de búsqueda ", "DEFAULT_THEME": "Tema ", "DEFINE_A_SEARCH_YOU_WOULD_LIKE_TO_SAVE_ENTER_THE_SEARCH_TYPE_DATASET_AREA_OF_INTEREST_AND": "Defina una búsqueda que le gustaría guardar. ", "DEFINING_DATA_SEARCHES": "Definición de búsquedas de datos", + "DEFORMATION": "Deformación", + "DELETE": "Eliminar", + "DELETE_ALL_SERIES": "Eliminar todas las series", "DELETE_FOREVER": "borrar para siempre", "DEM": "DEM", "DEM NAME": "DEM Name", @@ -198,20 +224,26 @@ "DEM_MATCHING": "Coincidenciad DEM", "DEPENDING_ON_THE_WIDTH_OF_YOUR_INTERNET_BROWSER_NONE_OR_SOME_OF_THE_FILTERS_WILL_BE": "Dependiendo del ancho de su navegador de Internet, ninguno o algunos de los filtros serán", "DEPTH": "Profundidad", - "DERIVED_DATASETS": "Conjuntos de Datos Derivados", + "DERIVED_DATASETS": "Set de Datos Derivados", + "DERIVED_DATASETS_1": "Set de Datos Derivados", "DERIVED_DATASETS_CONTAIN_A_COLLECTION_OF_DATASETS_AVAILABLE_TO_VIEW_AND_DOWNLOAD": "Los conjuntos de datos derivados contienen una colección de conjuntos de datos disponibles para ver y descargar.", - "DESC ": "PALSAR fue desarrollado para contribuir a los campos de mapeo, observación precisa de la cobertura terrestre regional, monitoreo de desastres y estudio de recursos.", - "DESCENDING": "Descendiendo", + "DESCENDING": "Descendente", "DESCRIP_GLOBAL_SEASONAL_SENTINEL": "Este conjunto de datos es la primera representación espacial de este tipo de retrodispersión y coherencia interferométrica de paso repetido de SAR global y multiestacional. La cobertura mundial comprende todas las masas terrestres y capas de hielo desde los 82 grados de latitud norte hasta los 78 grados de latitud sur. El conjunto de datos se deriva del procesamiento interferométrico de paso repetido multitemporal de alta resolución de aproximadamente 205 000 datos Sentinel-1 Single-Look-Complex (SLC) adquiridos en el modo Interferometric Wide-Swath (modo Sentinel-1 IW) del 1 de diciembre al 2019 al 30-nov-2020.", "DESCRIPTION_RADIOMETRIC_TERRAIN_CORRECTION": "La Corrección Radiométrica del Terreno (RTC) elimina las distorsiones geométricas y radiométricas en los conjuntos de datos SAR y crea datos listos para el análisis adecuados para su uso en aplicaciones GIS.", - "DETAIL": "Detalles", + "DETAIL": "Detalle", "DETAILS": "detalles : \"\"", "DETERMINATE": "determinado", "DEVELOPER": "Desarrollador", "DIRECTION": "Dirección", "DISABLE": "Desactivar", + "DISP_DOI": "DOI de desplazamiento", + "DISPLACEMENT": "Desplazamiento", + "DISPLACEMENT_DESCRIPTION": "Los productos de desplazamiento proporcionan información sobre los cambios antropogénicos y naturales en la superficie de la Tierra, cubriendo América del Norte.", + "DISPLACEMENT_FILTERS": "Filtros de desplazamiento", + "DISPLACEMENT_SEARCH": "Búsqueda de Desplazamiento", "DISPLAYED_IF_YOU_WISH_TO_UNDO_THIS_ACTION": "aparecerá si desea deshacer esta acción.", "DISPLAYED_IN_THE_SEARCH_MENU_AT_THE_TOP_YOU_CAN_ACCESS_ALL_OF_THE_HIDDEN_FILTERS_BY": "que se muestra en el menú de búsqueda en la parte superior. ", + "DO_YOU_WANT_TO_DELETE_ALL_SERIES": "¿Quieres eliminar todas las series?", "DONE": "Hecho", "DOWNLOAD": "Descargar", "DOWNLOAD_ALL": "Descargar todo", @@ -228,12 +260,13 @@ "DRAG_AND_DROP": "Arrastre y Suelte", "DRAG_THE_MAP_WHILE_HOLDING_DOWN_THE_LEFT_MOUSE_BUTTON_TO_MOVE_TO_YOUR_AREA_OF_INTEREST": "Arrastra el mapa mientras mantienes presionado el botón izquierdo del mouse para moverte a tu área de interés.", "DRAW": "Dibujar", - "DRAW_A_BOX": "Dibujar una caja", - "DRAW_A_CIRCLE": "Dibuja un circulo", + "DRAW_A_BOX": "Dibujar un Rectángulo", + "DRAW_A_CIRCLE": "Dibujar un Círculo", "DRAW_A_LINE": "Dibuja una línea", - "DRAW_A_POLYGON": "Dibujar un polígono", + "DRAW_A_POLYGON": "Dibujar un Polígono", "DRAW_NEW_AREA_OF_INTEREST": "Dibujar nueva área de interés", "DRAW_ON_THE_MAP": "Dibujar en el mapa", + "DRAW_TRENDLINE": "Dibujar línea de tendencia", "E_PREVENT_DEFAULT": "e.preventDefault();", "EACH_WITH_THEIR_OWN_PROCESSING_OPTIONS_SELECT_THE_PROCESSINGOPTIONS_YOU_WISH": "cada uno con sus propias opciones de procesamiento. ", "EDIT": "Editar", @@ -244,7 +277,7 @@ "EMAIL": "correo electrónico", "END": "Fin", "END_DATE": "Fecha Final", - "ENTER_A_NAME_FOR_YOUR_SEARCH_IN_THE_SAVE_SEARCH_DIALOG": "Introduzca un nombre para su búsqueda en el cuadro de diálogo Guardar búsqueda.", + "ENTER_A_NAME_FOR_YOUR_SEARCH_IN_THE_SAVE_SEARCH_DIALOG": "Ingrese un nombre para su búsqueda en el cuadro de diálogo Guardar búsqueda.", "ENVIRONMENT_FILE": "Archivo de entorno", "EQUATORIAL_MAP_VIEW": "Ver Mapa Ecuatorial", "ERS_DESC": "Principalmente imágenes SAR dentro de las máscaras de la estación ASF y McMurdo, Antártida. Los datos son adecuados para la interferometría.", @@ -258,49 +291,46 @@ "EVENT_TYPES": "Tipos de Evento", "EXAMPLE": "Ejemplo", "EXAMPLE_S1_B_IW_SLC_1_SDV_20210704_T135937_20210704_T140004_027645_034_CB_0_4_B2_C": "Ejemplo: S1B_IW_SLC__1SDV_20210704T135937_20210704T140004_027645_034CB0_4B2C", - "EXAMPLE:": "Ejemplo", - "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Amplíe sus habilidades con nuestra lista completa de tutoriales de búsqueda de datos de Vertex.", + "EXPAND_YOUR_SKILLS_WITH_OUR_FULL_LIST_OF_VERTEX_DATA_SEARCH_TUTORIALS": "Expanda sus habilidades con nuestra lista completa de tutoriales de búsqueda de datos de Vertex.", "EXPERIMENTAL": "Experimental", - "EXPIRED": "Venció", + "EXPIRED": "Ha expirado", "EXPORT": "Exportar", - "EXPORT_API": "API de Exportación", + "EXPORT_API": "Exportar API", "EXPORT_PYTHON": "Exportar Python", "FAILED": "Fallido", - "FALSE": "},FALSO);", + "FALSE": "},falso);", "FARADAY_ROTATION": "Rotación de Faraday", "FEEDBACK": "Comentarios", "FEEDBACK_INIT": "comentarios.init({", - "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "Los campos Ruta y Marco están disponibles para conjuntos de datos seleccionados. ", - "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": "Campos de fecha de inicio y fecha de finalización. ", + "FIELDS_ARE_AVAILABLE_FOR_SELECT_DATASETS_YOU_MAY_ENTER": "Los campos están disponibles para conjuntos de datos seleccionados. Puede ingresar", + "FIELDS_THE_DATE_PICKER_WILL_AUTOMATICALLY_CONSTRAIN": "campos. El selector de fecha restringirá automáticamente", "FILE": "Archivo", - "FILE_COPY": "Copia de Archivo", "FILE_I_DS_NAMES_CAN_BE_COPIED": "Los ID de archivo (nombres) se pueden copiar", - "FILE_IDS": "ID de archivo.", - "FILE_IMPORT_SUPPORTED": "Importación de Archivo Soportada", + "FILE_IDS": "IDs de archivo.", + "FILE_IMPORT_SUPPORTED": "Importación de Archivo Admitida", + "FILE_IMPORT_SUPPORTED ": "Importación de Archivo Admitida", "FILE_LIST_SEARCH": "Búsqueda en la Lista de Archivos", "FILE_OPTION": "opción de archivo.", "FILE_THE": "archivo. El", "FILE_TYPE": "Tipo de archivo", "FILE_TYPES": "Tipos de archivo", "FILE_TYPES_SELECTED": "tipos de archivos seleccionados", - "FILE_UPLOAD": "Subir archivo", "FILES": "Archivos", "FILES_CAN_BE_INDIVIDUALLY_DOWNLOADED": "Los archivos se pueden descargar individualmente", "FILES_HERE": "Archivos Aquí", "FILES_OPC": "(shp, geojson, kml, zip)", - "FILES_PROVIDED_BY_THIS_FEATURE_ARE_COMPATIBLE_WITH_THE_GEOGRAPHIC_SEARCH_IMPORT_FEATURE": "Los archivos proporcionados por esta función son compatibles con la función Importación de búsqueda geográfica.", + "FILES_PROVIDED_BY_THIS_FEATURE_ARE_COMPATIBLE_WITH_THE_GEOGRAPHIC_SEARCH_IMPORT_FEATURE": "Los archivos proporcionados por esta función son compatibles con la función de importación de Búsqueda Geográfica.", "FILES_THE_RIGHT_COLUMN": "Archivos - la columna derecha", "FILTER_PRESET_NAME": "Nombre del Filtro Preestablecido", "FILTER_SEARCHES": "Filtrar búsquedas", "FILTERS": "Filtros", "FILTERS_ALLOW_YOU_TUNE_YOUR_SEARCH_TO_RETURN_EXACTLY_WHAT_INTERESTS_YOU": "Los filtros le permiten ajustar su búsqueda para devolver exactamente lo que le interesa.", - "FILTERS_MORE_HORIZ": "Filtros more_horiz", "FIND_A_SUITABLE_FILE": "Encuentre un archivo adecuado", "FIND_SAR_DATA_USING_ASF_API": "Encuentre datos SAR utilizando la API de ASF", "FLIGHT_DIR": "Dirección de vuelo", "FLIGHT_DIRECTION": "Dirección del Vuelo", - "FLIGHT_DIRECTION_SELECTED": "Dirección de vuelo seleccionada", - "FLIGHT_DIRECTIONS_SELECTED": "direcciones de vuelo seleccionadas", + "FLIGHT_DIRECTION_SELECTED": "Dirección de vuelo elegido", + "FLIGHT_DIRECTIONS_SELECTED": "direcciones de vuelo elegidos", "FLIGHT_LINE": "Línea de Vuelo", "FOR_EXAMPLE_THIS_LIST_COULD_THEN_BE_PASTED _INTO_THE ": "Por ejemplo, esta lista se podría pegar en el", "FOR_EXAMPLE_THIS_LIST_COULD_THEN_BE_PASTED_INTO_THE_SCENE_LIST_SEARCH_WINDOW": "Por ejemplo, esta lista se podría pegar en la ventana de búsqueda de la lista de escenas.", @@ -308,11 +338,12 @@ "FORMAT": "Formato", "FORMAT_SHAPES": "formato_formas", "FRAME": "Marco", + "FRAME_COVERAGE": "Cobertura del Marco", "FRAME_END": "Fin del Marco", - "FRAME_START": "Inicio de Marco", + "FRAME_START": "Inicio del Marco", "FREQUENCY": "Frecuencia", - "FULL_BURST_ID": "ID de Burst Completa", - "FUNCTION_W_D_S_L_I_W_L_W_L_W_L_PUSH_GTM_START": "(función(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':", + "FULL": "Completo", + "FULL_BURST_ID": "ID de Burst Completo", "GAMMA0": "gamma0", "GAPS_DETECTED": "Brechas Detectadas", "GEO_SEARCH": "Búsqueda Geográfica", @@ -321,7 +352,7 @@ "Geographic Search": "Búsqueda Geográfica", "GEOGRAPHIC_SEARCH": "Búsqueda Geográfica", "GEOGRAPHIC_SEARCH_ALLOWS_YOU_TO_SEARCH_FOR_DATA_BASED_UPON_A_GEOGRAPHIC_LOCATION": "La búsqueda geográfica le permite buscar datos basados ​​en una ubicación geográfica.", - "GEOGRAPHIC_SEARCH_BASED_ON_BURST": "Búsqueda geográfica basada en el ID de Burst Completa", + "GEOGRAPHIC_SEARCH_BASED_ON_BURST": "Búsqueda geográfica basada en el ID de Burst completo de este producto de Burst.", "GEOGRAPHIC_SEARCH_BASED_ON_EVENT_POLYGON": "Búsqueda geográfica basada en el polígono del evento", "GEOGRAPHIC_SEARCH_BASED_ON_THIS_SCENE_S_PATH_FRAME": "Búsqueda geográfica basada en la ruta/marco de esta(s) escena(s)", "GEOGRAPHIC_SEARCH_POLYGON_SCALE": "Escala poligonal de búsqueda geográfica", @@ -336,91 +367,100 @@ "GLACIER_SPEED": "Velocidad del Glaciar", "GLOBAL_SEASONAL_SENTINEL": "Conjunto de Datos de Estacionales Globales de Retrodispersión y Coherencia Del Sentinel-1 ", "GRATICULE_OVERLAY": "Superposición de Retícula", + "GRAZING_ANGLE": "Ángulo Rasante", "GRIDLINES_OVERLAY": "Superposición de líneas de cuadrícula", - "GROUP_ID": "Grupo ID", + "GROUP_ID": "ID de grupo", "GROUP_ID_INFO_BAR": "ID de grupo", "HELP": "Ayuda", "HELP_AND_INFORMATION": "Ayuda e información", - "HELP_AND_TUTORIALS": "Ayuda", + "HELP_AND_TUTORIALS": "Ayuda y tutoriales", "HELP_EXPORT_OPTIONS_WORKS": "ayuda-exportar-opciones funciona!", "HELP_OUTLINE": "esquema_de_ayuda", - "HERE": "aquí.", + "HERE": "aquí", "HIDE_OPTIONS": "Ocultar opciones", "HIDE_RAW_DATA": "Ocultar datos sin procesar", "HISTORY": "Historial", - "HOW_TO_BASIC_GEOGRAPHIC_SEARCH": "Búsqueda geográfica básica práctica", - "HOW_TO_BASIC_LIST_SEARCH": "Lista básica de procedimientos Buscar", + "HOW_TO_BASIC_GEOGRAPHIC_SEARCH": "Guía básica de búsqueda geográfica", + "HOW_TO_BASIC_LIST_SEARCH": "Guía básica de búsqueda", "HOW_TO_CITE_USING_THIS_DATA": "Cómo citar utilizando estos datos", "HTTPS_URS_EARTHDATA_NASA_GOV_USERS_NEW": "https://urs.earthdata.nasa.gov/users/new", - "HTTPS_WWW_GOOGLETAGMANAGER_COM_GTM_JS_ID_I_DL_F_PARENT_NODE_INSERT_BEFORE_J_F": "!!!>>> Failed to fetch << Date: Thu, 19 Jun 2025 08:50:34 -0800 Subject: [PATCH 83/88] wip: browse overlay on map and rotated as icon --- src/app/services/browse-overlay.service.ts | 287 +++++++++++++-------- src/app/services/map/map.service.ts | 2 +- 2 files changed, 179 insertions(+), 110 deletions(-) diff --git a/src/app/services/browse-overlay.service.ts b/src/app/services/browse-overlay.service.ts index ce9fb03dc..4a0051a08 100644 --- a/src/app/services/browse-overlay.service.ts +++ b/src/app/services/browse-overlay.service.ts @@ -1,14 +1,13 @@ import { Injectable } from '@angular/core'; import { WktService } from '@services'; -import { applyTransform, Extent } from 'ol/extent'; +import { Extent, getCenter } from 'ol/extent'; import Feature from 'ol/Feature'; -import KML from 'ol/format/KML'; import Geometry from 'ol/geom/Geometry'; import Polygon from 'ol/geom/Polygon'; import ImageLayer from 'ol/layer/Image'; import Static from 'ol/source/ImageStatic'; // import * as olExtent from 'ol/extent'; -import { Coordinate } from 'ol/coordinate'; +import { Coordinate, rotate } from 'ol/coordinate'; import MultiPolygon from 'ol/geom/MultiPolygon'; import { PinnedProduct } from './browse-map.service'; import LayerGroup from 'ol/layer/Group'; @@ -27,9 +26,9 @@ import ImageSource from 'ol/source/Image'; import VectorLayer from 'ol/layer/Vector'; import VectorSource from 'ol/source/Vector'; // import { Overlay } from 'ol'; -import { Icon, Style } from 'ol/style'; -import { ImageStatic } from 'ol/source'; -import { getTransform, Projection } from 'ol/proj'; +import { Icon, Stroke, Style } from 'ol/style'; +import { Point } from 'ol/geom'; +import { Projection, addCoordinateTransforms, addProjection, get as getProjection, transform} from 'ol/proj'; // import { HttpClient } from '@angular/common/http'; // import { CustomProjection } from './map/views'; @@ -197,137 +196,207 @@ export class BrowseOverlayService { } } - public getKMLLayer(product: models.CMRProduct, png_url: string, wkt: string, className: string = 'ol-layer', _layer_id: string = '') { - function _substitute_url(url: string) { - console.log(url) - // https://openlayers.org/en/v7.5.2/apidoc/module-ol_format_KML-KML.html - // For `iconUrlFunction`, kmls are formatted without url of image - return png_url - // return null + public getKMLLayer(_product: models.CMRProduct, _png_url: string, wkt: string, className: string = 'ol-layer', _layer_id: string = '') { + // function _substitute_url(url: string) { + // console.log(url) + // // https://openlayers.org/en/v7.5.2/apidoc/module-ol_format_KML-KML.html + // // For `iconUrlFunction`, kmls are formatted without url of image + // return png_url + // // return null - } - - - const feature = this.wktService.wktToFeature(wkt, 'EPSG:4326'); - const feature2 = this.wktService.wktToFeature(wkt, 'EPSG:3857'); - - const polygon = this.getPolygonFromFeature(feature, wkt); - const polygon2 = this.getPolygonFromFeature(feature2, wkt); - -// let proj = new CustomProjection( -// 'EPSG:27700', -// '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 ' + -// '+x_0=400000 +y_0=-100000 +ellps=airy ' + -// '+towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 ' + -// '+units=m +no_defs', -// polygon.getExtent() -// ) - // return Imagelayer; - let proj = new Projection({code: 'EPSG:4326', 'metersPerUnit': 5, "axisOrientation": 'nwu', }) - - // let l = polygon.getArea() - // left - // bottom - // right - // top - - let fromLonLat = getTransform(proj, 'EPSG:3857'); - let extent = polygon.getExtent() - // olExtent.getlef - // let flatcoords = polygon.getCoordinates()[0] - - console.log(extent) - console.log(polygon.getCoordinates()) - // let simped = polygon.getSimplifiedGeometry(0.01).getCoordinates()[0] - // simped.pop() - // extent[2] = extent[2] - 5/2 + // } - let img = new ImageLayer({ - // source: static_image_source, - extent: polygon2.getExtent(), - - }) - - let coords = polygon.getCoordinates()[0] - let ext = applyTransform([...coords[1], ...coords[3]], fromLonLat, undefined ) - let static_image_source = new ImageStatic({ - url: png_url, - projection: 'EPSG: 4326', - // imageExtent: img.getExtent(), - imageExtent: ext - // imageExtent: extent.map(f => f), - // imageExtent: olExtent.boundingExtent( - // polygon.getCoordinates()[0].reverse() - // ), - // imageSize: [2018, 1845] - }) - + // const feature = this.wktService.wktToFeature(wkt, 'EPSG:4326'); + const feature = this.wktService.wktToFeature(wkt, 'EPSG:3857'); - img.setSource(static_image_source) - return img; + // const polygon = this.getPolygonFromFeature(feature, wkt); + // const polygon2 = this.getPolygonFromFeature(feature2, wkt); + // let anchor = this.getPolygonFromFeature(feature, wkt).getCoordinates()[0][0] const iconStyle = new Style({ image: new Icon({ - // anchor: [0.5, 46], anchorXUnits: 'pixels', anchorYUnits: 'pixels', - src: png_url, - scale: 200 + + // src: 'https://avatars.githubusercontent.com/u/1342004?s=48&v=4', + src: _png_url, + scale: 0.05, + // 'anchorOrigin': 'bottom-left', + }), }); - feature.setStyle(iconStyle) + + const lineStyle = new Style({ + "stroke": new Stroke({ + "color": "#00FF00", + "width": 10 + }) + }) + feature.setStyle( + (_feature) => { + var stringCoords = this.getPolygonFromFeature(feature, wkt).getCoordinates()[0]; + var coords = stringCoords.slice(-2); + if (coords[1][0] == coords[0][0] && coords[1][1] == coords[0][1] && stringCoords.length > 2) { + // useful for drawing + coords = stringCoords.slice(-3, -1); + } + // iconStyle.getImage().set + iconStyle.setGeometry(new Point(stringCoords[1])); + // iconStyle.getImage().setDisplacement(coords[0]) + iconStyle.getImage().setRotation( + Math.atan2(coords[1][0] - coords[0][0], coords[1][1] - coords[0][1]) + ); + + return [lineStyle, iconStyle]; + } + ) let source = new VectorSource({ wrapX: models.mapOptions.wrapX, features: [feature] }); const vecLayer = new VectorLayer({ - "extent": polygon.getExtent(), + // "extent": polygon.getExtent(), source, "zIndex": 0, opacity: 1.0, className, // style: iconStyle }) - // vecLayer.setStyle(iconStyle) return vecLayer - // function loader_function(extent, resolution, projection, success, failure) { - // const proj = projection.getCode(); - - // const url = 'https://ahocevar.com/geoserver/wfs?service=WFS&' + - // 'version=1.1.0&request=GetFeature&typename=osm:water_areas&' + - // 'outputFormat=application/json&srsname=' + proj + '&' + - // 'bbox=' + extent.join(',') + ',' + proj; +// let proj = new CustomProjection( +// 'EPSG:27700', +// '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 ' + +// '+x_0=400000 +y_0=-100000 +ellps=airy ' + +// '+towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 ' + +// '+units=m +no_defs', +// polygon.getExtent() +// ) + // return Imagelayer; + // let proj = new Projection({code: 'EPSG:4326', 'metersPerUnit': 5, "axisOrientation": 'nwu', }) + + // // let l = polygon.getArea() + // // left + // // bottom + // // right + // // top + + // let fromLonLat = getTransform(proj, 'EPSG:3857'); + // let extent = polygon.getExtent() + // // olExtent.getlef + // // let flatcoords = polygon.getCoordinates()[0] + + // console.log(extent) + // console.log(polygon.getCoordinates()) + // // let simped = polygon.getSimplifiedGeometry(0.01).getCoordinates()[0] + // // simped.pop() + // // extent[2] = extent[2] - 5/2 + + let polygon = this.getPolygonFromFeature(feature, wkt) + let img = new ImageLayer({ + // source: static_image_source, + extent: polygon.getExtent(), - // const xhr = new XMLHttpRequest(); - // xhr.open('GET', url); - // const onError = function() { - // vectorSource.removeLoadedExtent(extent); - // failure(); - // } - // xhr.onerror = onError; - // xhr.onload = function() { - // if (xhr.status == 200) { - // const features = vectorSource.getFormat().readFeatures(xhr.responseText); - // vectorSource.addFeatures(features); - // success(features); - // } else { - // onError(); - // } + }) + let rotateProjection = (projection, angle, extent) => { + function rotateCoordinate(coordinate, angle, anchor) { + var coord = rotate( + [coordinate[0] - anchor[0], coordinate[1] - anchor[1]], + angle + ); + return [coord[0] + anchor[0], coord[1] + anchor[1]]; + } + + function rotateTransform(coordinate) { + return rotateCoordinate(coordinate, angle, getCenter(extent)); + } + + function normalTransform(coordinate) { + return rotateCoordinate(coordinate, -angle, getCenter(extent)); + } + + var normalProjection = getProjection(projection); + + var rotatedProjection = new Projection({ + code: + normalProjection.getCode() + + ":" + + angle.toString() + + ":" + + extent.toString(), + units: normalProjection.getUnits(), + extent: extent + }); + addProjection(rotatedProjection); + + addCoordinateTransforms( + "EPSG:4326", + rotatedProjection, + function(coordinate) { + return rotateTransform(transform(coordinate, "EPSG:4326", projection)); + }, + function(coordinate) { + return transform(normalTransform(coordinate), projection, "EPSG:4326"); + } + ); + + addCoordinateTransforms( + "EPSG:3857", + rotatedProjection, + function(coordinate) { + return rotateTransform(transform(coordinate, "EPSG:3857", projection)); + }, + function(coordinate) { + return transform(normalTransform(coordinate), projection, "EPSG:3857"); + } + ); + + // also set up transforms with any projections defined using proj4 + // if (typeof proj4 !== "undefined") { + // var projCodes = Object.keys(proj4.defs); + // projCodes.forEach(function(code) { + // var proj4Projection = getProjection(code); + // if (!getTransform(proj4Projection, rotatedProjection)) { + // addCoordinateTransforms( + // proj4Projection, + // rotatedProjection, + // function(coordinate) { + // return rotateTransform( + // transform(coordinate, proj4Projection, projection) + // ); + // }, + // function(coordinate) { + // return transform( + // normalTransform(coordinate), + // projection, + // proj4Projection + // ); + // } + // ); // } - // xhr.send(); + // }); // } - let kml = product.metadata.nisar.additionalUrls.find(https_url => https_url.endsWith('.kml')) - let vector = new VectorLayer({ - source: new VectorSource({ - url: kml, - // loader: loader_function, - format: new KML({iconUrlFunction: _substitute_url}), - }), - }); - return vector; + return rotatedProjection; + } + // let coords = polygon.getCoordinates()[0] + // let ext = applyTransform([...coords[1], ...coords[3]], fromLonLat, undefined ) + let static_image_source = new Static({ + url: _png_url, + projection: rotateProjection("EPSG:27700", Math.PI / 4, img.getExtent()), + // imageExtent: img.getExtent(), + // imageExtent: ext, + // imageExtent: extent.map(f => f), + // imageExtent: olExtent.boundingExtent( + // polygon.getCoordinates()[0].reverse() + // ), + // imageSize: [2018, 1845] + }) + img.setSource(static_image_source) + return img + // img.getSource().getImage() + // static_image_source.getImage() } diff --git a/src/app/services/map/map.service.ts b/src/app/services/map/map.service.ts index 8fc2dd862..17f6eacba 100644 --- a/src/app/services/map/map.service.ts +++ b/src/app/services/map/map.service.ts @@ -761,7 +761,7 @@ export class MapService implements OnDestroy { }) } // else if(url.toLowerCase().includes('nisar')) { - // this.browseImageLayer = this.browseOverlayService.getKMLLayer(scene, url, wkt, 'ol-layer', 'current-overlay'); + // this.browseImageLayer = this.browseOverlayService.getKMLLayer(_scene, url, wkt, 'ol-layer', 'current-overlay'); // this.map.addLayer(this.browseImageLayer); // } else { From 2038f7c7562a540059ad78a6a63fdb8b1d431271 Mon Sep 17 00:00:00 2001 From: SpicyGarlicAlbacoreRoll Date: Tue, 8 Jul 2025 11:30:17 -0800 Subject: [PATCH 84/88] fixes frame coverage logic, displays metadata properly and selection in filter --- .../shared/scene-metadata/scene-metadata.component.html | 2 +- .../shared/scene-metadata/scene-metadata.component.ts | 2 +- .../observation-panel-selector.component.html | 4 ++-- .../observation-panel-selector.component.ts | 4 ---- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/app/components/shared/scene-metadata/scene-metadata.component.html b/src/app/components/shared/scene-metadata/scene-metadata.component.html index 6700126d0..5d6ede0b6 100644 --- a/src/app/components/shared/scene-metadata/scene-metadata.component.html +++ b/src/app/components/shared/scene-metadata/scene-metadata.component.html @@ -121,7 +121,7 @@
  • - {{ 'FRAME_COVERAGE' | translate }} • {{ scene.metadata.nisar.frameCoverage === 'TRUE' ? 'Full' : 'Partial' }} + {{ 'FRAME_COVERAGE' | translate }} • {{ scene.metadata.nisar.frameCoverage}} - + {{'FULL' | translate}} - + {{'PARTIAL' | translate}} diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.ts b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.ts index 64c8974ee..324f50e1c 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.ts +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.ts @@ -126,10 +126,6 @@ export class ObservationPanelSelectorComponent implements OnDestroy, OnInit{ this.store$.dispatch(new filtersStore.SetSubtypes(subtypes)); } public onNewFrameCoverageSelected(coverage): void { - // this value needs to be converted to a boolean value since the data is set for - // true = full frame - // false = partial frame - // null = all this.store$.dispatch(new filtersStore.setFrameCoverage(coverage)); } public onNewRangeBandwidthSelected(bandwidth) { From 656050a574d0bde690325ac2eba17ffa22cb85b1 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Thu, 10 Jul 2025 15:17:33 -0700 Subject: [PATCH 85/88] DS-5984 Tooltip Added Need language files. Also will do some polishing of other fields in the area of filters. --- .../observation-panel-selector.component.html | 40 ++++++++++--------- .../observation-panel-selector.component.scss | 8 ++++ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html index f34ae3ed5..9cca0bac2 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html @@ -109,25 +109,29 @@ - - {{ 'JOINT_OBSERVATION_ONLY' | translate}} + + + @for(parent of (dataset.bandwidth | keyvalue); track $index) { + @for(band of parent.value; track $index) { + + ({{parent.key}}) {{band}} + + } + } + + + + + {{ 'JOINT_OBSERVATION_ONLY' | translate}} - - - @for(parent of (dataset.bandwidth | keyvalue); track $index) { - @for(band of parent.value; track $index) { - - ({{parent.key}}) {{band}} - - } - } - - - + + diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss index a89b83ed9..531d9f452 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.scss @@ -26,6 +26,10 @@ mat-form-field { margin-left: 12px; } +.half-width { + flex-basis: 48%; +} + .flight-direction-field { min-width: 230px; } @@ -34,3 +38,7 @@ mat-form-field { flex-basis: 48%; } +.joint-observation-toggle { + margin: 16px 0 0 35px +} + From 932e70d775f2e3904a6d6ce4d8f3fe3f1714de93 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Thu, 10 Jul 2025 15:25:44 -0700 Subject: [PATCH 86/88] Language files updated --- src/assets/i18n/en.json | 3 +++ src/assets/i18n/es.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index cd832d2e2..46ba2f81b 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -76,6 +76,7 @@ "ASF_DATA_SEARCH": "ASF Data Search", "ASF_DATA_SEARCH_TITLE": "ASF Data Search\n", "ASF_SEARCH_API": "ASF Search API", + "ASF_SEARCH_DOCS": "ASF Search Docs", "ASF_SEARCH_PYTHON_EXPORT": "ASF Search Python Export", "ASF_WEBSITE": "ASF Website", "ASPECT_RATIO": "aspect_ratio", @@ -388,6 +389,7 @@ "HY_P3_API_URL": "HyP3 API URL", "HY_P3_USER_GUIDE": "HyP3 User Guide", "HYP3_JOB_IDS_INFO_BAR": "HYP3 Job IDs Info Bar", + "HYP3_SDK_DOCS": "HyP3 SDK Docs", "I_DS": "IDs", "IF_YOU_ARE_LOGGED_INTO_VERTEX_CLICKING_ON_THE_CART_ICON_IN_THE_HEADER_LABELED_DOWNLOADS": "If you are logged into Vertex, Clicking on the cart icon in the header, labeled Downloads,", "IF_YOU_DO_NOT_ALREADY_HAVE_ONE_REGISTER_FOR_A_FREE_EARTHDATA_LOGIN_ACCOUNT": "If you do not already have one, register for a free Earthdata Login account.", @@ -446,6 +448,7 @@ "JOBS_NOW": "jobs now", "JOBS_PER_MONTH": "jobs per month", "JOINT_OBSERVATION_ONLY": "Joint Observation Only", + "JOINT_OBSERVATION_ONLY_TOOLTIP": "Toggle on for simultaneous L- and S-band acquisitions", "JUN_JUL_AUG": "Jun, Jul, Aug", "KML": "kml", "LANGUAGE": "Language", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 682af1f81..4a6923451 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -76,6 +76,7 @@ "ASF_DATA_SEARCH": "Búsqueda de datos ASF", "ASF_DATA_SEARCH_TITLE": "Título de búsqueda de datos ASF", "ASF_SEARCH_API": "API de búsqueda ASF", + "ASF_SEARCH_DOCS": "Documentos de búsqueda de ASF", "ASF_SEARCH_PYTHON_EXPORT": "Exportación de Python de búsqueda ASF", "ASF_WEBSITE": "Sitio web de la ASF", "ASPECT_RATIO": "relación_de_aspecto", @@ -388,6 +389,7 @@ "HY_P3_API_URL": "URL de la API de HyP3", "HY_P3_USER_GUIDE": "Guía del usuario de HyP3", "HYP3_JOB_IDS_INFO_BAR": "Barra informativa de ID de tareas HYP3", + "HYP3_SDK_DOCS": "Documentos del SDK de HyP3", "I_DS": "identificaciones", "IF_YOU_ARE_LOGGED_INTO_VERTEX_CLICKING_ON_THE_CART_ICON_IN_THE_HEADER_LABELED_DOWNLOADS": "Si ha iniciado sesión en Vertex, al hacer clic en el ícono del carrito en el encabezado, denominado Descargas,", "IF_YOU_DO_NOT_ALREADY_HAVE_ONE_REGISTER_FOR_A_FREE_EARTHDATA_LOGIN_ACCOUNT": "Si aún no tiene una, regístrese para obtener una cuenta gratuita de inicio de sesión de Earthdata.", @@ -447,6 +449,7 @@ "JOBS_NOW": "trabajos ahora", "JOBS_PER_MONTH": "trabajos por mes", "JOINT_OBSERVATION_ONLY": "Solo Observación Conjunta", + "JOINT_OBSERVATION_ONLY_TOOLTIP": "Activar para adquisiciones simultáneas de banda L y S", "JUN_JUL_AUG": "Jun, Jul, Ago", "KML": "kml", "LANGUAGE": "Idioma", From 3c4eba2ada217c31afb1c956253f82ed3e4a3681 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Fri, 11 Jul 2025 15:32:57 -0700 Subject: [PATCH 87/88] DS-5984 WIP on UI of Observational Filters --- .../observation-panel-selector.component.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html index 9cca0bac2..8787fef3a 100644 --- a/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html +++ b/src/app/components/shared/selectors/observation-panel-selector/observation-panel-selector.component.html @@ -107,6 +107,14 @@ {{'PARTIAL' | translate}} + + + {{ frameCoverage?.length || 0 }}/2 + {{ 'FRAMES_SELECTED' | translate }} + + + {{ 'NO_FRAMES_TO_SELECT' | translate }} + @@ -120,6 +128,14 @@ } } + + + {{ rangeBandwidth?.length || 0 }}/{{ dataset.bandwidth.length }} + {{ 'RANGE_BANDWITH_SELECTED' | translate }} + + + {{ 'NO_BANDWITH_TO_SELECT' | translate }} + Date: Fri, 11 Jul 2025 15:40:51 -0700 Subject: [PATCH 88/88] Updated phrase language files --- src/assets/i18n/en.json | 4 ++++ src/assets/i18n/es.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 46ba2f81b..ac0071a73 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -343,6 +343,7 @@ "FRAME_COVERAGE": "Frame Coverage", "FRAME_END": "Frame End", "FRAME_START": "Frame Start", + "FRAMES_SELECTED": "frames selected", "FREQUENCY": "Frequency", "FULL": "Full", "FULL_BURST_ID": "Full Burst ID", @@ -524,6 +525,7 @@ "NISAR_DESC": "NISAR provides L- and S-band SAR data to measure Earth's changing ecosystems, dynamic surfaces, and ice masses with 12-day regularity on ascending and descending passes.", "NO OVERLAP THRESHOLD": "No Overlap Threshold", "NO_AREA_ON_INTEREST_SPECIFIED": "No area of interest specified.", + "NO_BANDWITH_TO_SELECT": "no range bandwidths to select", "NO_BEAM_MODES_TO_SELECT": "No beam modes to select", "NO_CREDITS_LEFT_THIS_MONTH": "No credits left this month", "NO_FILE_TYPES_TO_SELECT": "No file types to select", @@ -531,6 +533,7 @@ "NO_FLIGHT_DIRECTION_SELECTED": "No flight directions selected", "NO_FLIGHT_DIRECTIONS_TO_SELECT": "No flight directions to select", "NO_FRAME_INPUT": "No frame input", + "NO_FRAMES_TO_SELECT": "no frames to select", "NO_JOBS_LEFT_THIS_MONTH": "No jobs left this month", "NO_MOBILE_DISPLACEMENT_SEARCH": "Displacement Searches are not available on small screens.", "NO_NAME": "No Name", @@ -665,6 +668,7 @@ "RADIO_BUTTON_UNCHECKED": "radio_button_unchecked", "RADIOMETRY": "Radiometry", "RANGE_BANDWIDTH": "Range Bandwidth", + "RANGE_BANDWITH_SELECTED": "range bandwidths selected", "RAW": "Raw", "READ_OUR_ON_DEMAND_GUIDE": "Read Our On Demand Guide", "READ_OUR_USER_GUIDE": "Read Our User Guide", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 4a6923451..00437426d 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -343,6 +343,7 @@ "FRAME_COVERAGE": "Cobertura del Marco", "FRAME_END": "Fin del Marco", "FRAME_START": "Inicio del Marco", + "FRAMES_SELECTED": "marcos coincidentes", "FREQUENCY": "Frecuencia", "FULL": "Completo", "FULL_BURST_ID": "ID de Burst Completo", @@ -525,6 +526,7 @@ "NISAR_DESC": "NISAR proporciona datos SAR de banda L y S para medir los ecosistemas cambiantes, las superficies dinámicas y las masas de hielo de la Tierra con una regularidad de 12 días en pasadas ascendentes y descendentes.", "NO OVERLAP THRESHOLD": "Sin Umbral de Superposición", "NO_AREA_ON_INTEREST_SPECIFIED": "No se especifica el área de interés.", + "NO_BANDWITH_TO_SELECT": "No hay rangos de ancho de banda para seleccionar", "NO_BEAM_MODES_TO_SELECT": "No hay modos de haz para seleccionar", "NO_CREDITS_LEFT_THIS_MONTH": "No quedan créditos este mes", "NO_FILE_TYPES_TO_SELECT": "No hay tipos de archivo para seleccionar", @@ -532,6 +534,7 @@ "NO_FLIGHT_DIRECTION_SELECTED": "No se seleccionaron direcciones de vuelo", "NO_FLIGHT_DIRECTIONS_TO_SELECT": "No hay direcciones de vuelo para seleccionar", "NO_FRAME_INPUT": "Sin entrada del marco", + "NO_FRAMES_TO_SELECT": "no hay marco para seleccionar", "NO_JOBS_LEFT_THIS_MONTH": "No quedan trabajos este mes", "NO_MOBILE_DISPLACEMENT_SEARCH": "Las búsquedas de desplazamiento no están disponibles en pantallas pequeñas.", "NO_NAME": "Sin Nombre", @@ -666,6 +669,7 @@ "RADIO_BUTTON_UNCHECKED": "botón_de_radio_sin marcar", "RADIOMETRY": "Radiometría", "RANGE_BANDWIDTH": "Ancho de Banda de Rango", + "RANGE_BANDWITH_SELECTED": "Rangos de ancho de banda seleccionados", "RAW": "Crudo", "READ_OUR_ON_DEMAND_GUIDE": "Lea nuestra guía a On Demand ", "READ_OUR_USER_GUIDE": "Lea nuestra guía de usuario",