From 04f9e7d4ffb8818acf6e7a915ba19609eb0854f7 Mon Sep 17 00:00:00 2001 From: ramtob Date: Thu, 16 Jul 2020 16:14:00 +0300 Subject: [PATCH] Planet source provider: support sensor criteria (from context) --- confd/templates/production.tmpl | 2 +- .../planet/planet-source-provider.ts | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/confd/templates/production.tmpl b/confd/templates/production.tmpl index 48ed32508d..4527262e57 100644 --- a/confd/templates/production.tmpl +++ b/confd/templates/production.tmpl @@ -605,7 +605,7 @@ "blacklist": [] }, "PLANET": { - "inActive": {{ getv "/ansyn/overlay/planet/inactive" "true" }}, + "inActive": {{ getv "/ansyn/overlay/planet/inactive" "false" }}, "whitelist": [ { "name": "Entire Earth", diff --git a/src/app/@ansyn/ansyn/app-providers/overlay-source-providers/planet/planet-source-provider.ts b/src/app/@ansyn/ansyn/app-providers/overlay-source-providers/planet/planet-source-provider.ts index 940bfd44be..a3ffad3df2 100644 --- a/src/app/@ansyn/ansyn/app-providers/overlay-source-providers/planet/planet-source-provider.ts +++ b/src/app/@ansyn/ansyn/app-providers/overlay-source-providers/planet/planet-source-provider.ts @@ -1,4 +1,4 @@ -import { forkJoin, Observable } from 'rxjs'; +import { Observable } from 'rxjs'; import { Inject } from '@angular/core'; import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { @@ -26,7 +26,6 @@ import { BaseOverlaySourceProvider, IFetchParams, IOverlayFilter, - IStartAndEndDate, timeIntersection } from '../../../modules/overlays/models/base-overlay-source-provider.model'; import { OverlaySourceProvider } from '../../../modules/overlays/models/overlays-source-providers'; @@ -118,6 +117,7 @@ export class PlanetSourceProvider extends BaseOverlaySourceProvider { }*/ buildFetchObservables(fetchParams: IFetchParams, filters: IOverlayFilter[]): Observable[] { + console.log('buildFetchObservables', fetchParams, filters) const regionFeature = feature(fetchParams.region); const fetchParamsTimeRange = { start: new Date(fetchParams.timeRange.start), @@ -125,7 +125,11 @@ export class PlanetSourceProvider extends BaseOverlaySourceProvider { }; const planetFilters: IPlanetFilter[] = filters + // If the criterion customSensorToFilter exists, take only sensors that are included there + .filter(({ sensor }) => !fetchParams.customSensorToFilter || fetchParams.customSensorToFilter.includes(sensor)) + // For each filter object, change "sensor" field to "sensors" = [sensor] .map(({ sensor, ...restItem }) => ({ ...restItem, sensors: sensor ? [sensor] : [] })) + // Replace similar filter objects with one filter object with a larger "sensors" array .reduce((res, item) => { const equalItem = res.find((f) => isEqual({ coverage: f.coverage, @@ -137,6 +141,7 @@ export class PlanetSourceProvider extends BaseOverlaySourceProvider { } return [...res, item]; }, []) + // For each filter object, cross its criteria with the corresponding criteria from fetchParams .map((item): Partial => { const intersection = intersect(regionFeature, item.coverage); const time = timeIntersection(fetchParamsTimeRange, item.timeRange); @@ -147,7 +152,9 @@ export class PlanetSourceProvider extends BaseOverlaySourceProvider { sensors }; }) + // Remove empty fetch params .filter(({ timeRange, region }: IFetchParams) => Boolean(timeRange && region)) + // Convert fetch params to Planet filters format .map(this.paramsToFilter); if (!planetFilters.length) { return []; @@ -158,6 +165,7 @@ export class PlanetSourceProvider extends BaseOverlaySourceProvider { })]; } + // Convert fetch params to Planet filters format paramsToFilter(fetchParams: IFetchParams): IPlanetFilter { const filters: IPlanetFilter = {