geonetwork-ui 2.7.0-dev.b9840dab3 → 2.7.0-dev.d51ff2ddf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +47 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -5
- package/esm2022/libs/feature/search/src/lib/state/reducer.mjs +5 -2
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
- package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
- package/esm2022/libs/util/shared/src/lib/utils/geojson.mjs +58 -1
- package/fesm2022/geonetwork-ui.mjs +2383 -2282
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -2
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/reducer.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/model.d.ts +1 -0
- package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/geojson.d.ts +7 -2
- package/libs/util/shared/src/lib/utils/geojson.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +50 -3
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -8
- package/src/libs/feature/search/src/lib/state/reducer.ts +4 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
- package/src/libs/util/app-config/src/lib/model.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/geojson.ts +72 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injector } from '@angular/core';
|
|
2
|
-
import { Geometry } from 'geojson';
|
|
2
|
+
import type { Geometry } from 'geojson';
|
|
3
3
|
import { Aggregation, AggregationParams, AggregationsParams, SortByField } from '../../../../../../../libs/common/domain/src/lib/model/search';
|
|
4
4
|
import { AggregationResult, EsSearchParams, RequestFields, SearchFilters } from '../../../../../../../libs/api/metadata-converter/src';
|
|
5
5
|
import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elasticsearch.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"elasticsearch.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAMvC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAKlB,WAAW,EACZ,MAAM,8DAA8D,CAAA;AAErE,OAAO,EACL,iBAAiB,EACjB,cAAc,EAGd,aAAa,EACb,aAAa,EAGd,MAAM,sDAAsD,CAAA;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAA;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;;AAKtD,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAEpD,qBAGa,oBAAoB;IAc7B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,QAAQ;IAZlB,OAAO,CAAC,aAAa,CAA6B;IAGlD,OAAO,KAAK,KAAK,GAEhB;IACD,OAAO,KAAK,YAAY,GAEvB;gBAGS,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ;IAG5B,oBAAoB,CAClB,YAAY,GAAE,GAAQ,EACtB,IAAI,SAAI,EACR,IAAI,SAAI,EACR,MAAM,GAAE,WAAkB,EAC1B,aAAa,GAAE,aAAoB,EACnC,aAAa,GAAE,aAAkB,EACjC,aAAa,GAAE,aAAkB,EACjC,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,QAAQ,GAClB,cAAc;IAoBjB,OAAO,CAAC,oBAAoB;IA4C5B,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAI1D,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc;IAUxD,uBAAuB,CACrB,MAAM,EAAE,aAAa,EACrB,IAAI,SAAI,EACR,OAAO,WAAuC,GAC7C,cAAc;IAkDjB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,cAAc;IAkEtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,iBAAiB;IA+GzB,6BAA6B,CAC3B,YAAY,EAAE,GAAG,EACjB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,GAC3B,cAAc;IAQjB,mBAAmB,CAAC,GAAG,KAAA,EAAE,MAAM,KAAA;;;;;;;IAU/B,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IA6BvD,kBAAkB,CAAC,WAAW,KAAA;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IAEH,yBAAyB,CAAC,WAAW,KAAA;IAkBrC,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,uBAAuB;IAO/B,wBAAwB,CAAC,YAAY,EAAE,kBAAkB,GAAG,GAAG;IA2C/D,sBAAsB,CACpB,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,iBAAiB,GAC9B,WAAW;yCA5kBH,oBAAoB;6CAApB,oBAAoB;CAonBhC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Extent } from 'ol/extent';
|
|
2
1
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
|
|
2
|
+
import { BoundingBox } from '../../../../../../libs/util/shared/src';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class MapUtilsService {
|
|
5
|
-
getRecordExtent(record: Partial<CatalogRecord>):
|
|
5
|
+
getRecordExtent(record: Partial<CatalogRecord>): BoundingBox;
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<MapUtilsService, never>;
|
|
7
7
|
static ɵprov: i0.ɵɵInjectableDeclaration<MapUtilsService>;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-utils.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/map-utils.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map-utils.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/map-utils.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,WAAW,EAA0B,MAAM,wCAAwC,CAAA;;AAE5F,qBAGa,eAAe;IAC1B,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,WAAW;yCADjD,eAAe;6CAAf,eAAe;CAoB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/state/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAA;AAExC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,2DAA2D,CAAA;
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/state/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAA;AAExC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,2DAA2D,CAAA;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AAEzF,eAAO,MAAM,kBAAkB,gBAAgB,CAAA;AAE/C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,IAAI,CAAA;AAER,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,YAAY,EAAE,kBAAkB,CAAA;QAChC,OAAO,EAAE,YAAY,CAAA;QACrB,MAAM,EAAE,SAAS,EAAE,CAAA;KACpB,CAAA;IACD,MAAM,EAAE,iBAAiB,CAAA;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,aAAa,EAAE,CAAA;QACxB,YAAY,EAAE,YAAY,CAAA;KAC3B,CAAA;IACD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAA;AAE9D,eAAO,MAAM,UAAU,QAAO,iBAwB7B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,WAE1B,CAAA;AAED,wBAAgB,OAAO,CACrB,KAAK,aAAe,EACpB,MAAM,EAAE,WAAW,CAAC,aAAa,GAChC,WAAW,CAeb;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,WAAW,CAAC,aAAa,GAChC,iBAAiB,CAgPnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/app-config/src/lib/app-config.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kBAAkB,EAElB,YAAY,EAEZ,SAAS,EACT,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAA;AAS9F,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAID,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAID,wBAAgB,oBAAoB,IAAI,SAAS,GAAG,IAAI,CAEvD;AAID,wBAAgB,uBAAuB,IAAI,YAAY,GAAG,IAAI,CAE7D;AAGD,wBAAgB,wBAAwB,IAAI,qBAAqB,CAOhE;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAG1E;AAID,wBAAgB,aAAa,
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/app-config/src/lib/app-config.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kBAAkB,EAElB,YAAY,EAEZ,SAAS,EACT,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAA;AAS9F,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAID,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAID,wBAAgB,oBAAoB,IAAI,SAAS,GAAG,IAAI,CAEvD;AAID,wBAAgB,uBAAuB,IAAI,YAAY,GAAG,IAAI,CAE7D;AAGD,wBAAgB,wBAAwB,IAAI,qBAAqB,CAOhE;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAG1E;AAID,wBAAgB,aAAa,kBA8N5B;AAED,wBAAgB,cAAc,YAE7B;AAED,wBAAgB,MAAM,SAIrB;AAED,eAAO,MAAM,+BAA+B;;;;;;;2BAOK,UAAU;;;CAK1D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/app-config/src/lib/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,gBAAgB,CAAA;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,0BAA0B,EAAE,OAAO,CAAA;IACnC,UAAU,EAAE,WAAW,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,iBAAiB,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/app-config/src/lib/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,gBAAgB,CAAA;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,0BAA0B,EAAE,OAAO,CAAA;IACnC,UAAU,EAAE,WAAW,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,iBAAiB,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,gBAAgB,CAAC,EAAE,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AACrE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;CACnC,CAAA;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,QAAQ,CAAA;CAC3B"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import { Feature, FeatureCollection, Geometry } from 'geojson';
|
|
2
|
-
|
|
1
|
+
import type { Feature, FeatureCollection, Geometry } from 'geojson';
|
|
2
|
+
/**
|
|
3
|
+
* @returns The geometry if available, otherwise null.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getGeometryFromGeoJSON(data: FeatureCollection | Feature | Geometry): Geometry | null;
|
|
6
|
+
export type BoundingBox = [number, number, number, number];
|
|
7
|
+
export declare function getGeometryBoundingBox(geometry: Geometry): BoundingBox;
|
|
3
8
|
//# sourceMappingURL=geojson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geojson.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/geojson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"geojson.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/utils/geojson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAY,MAAM,SAAS,CAAA;AAE7E;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAC3C,QAAQ,GAAG,IAAI,CAqBjB;AAGD,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE1D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CA8DtE"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable, Injector } from '@angular/core'
|
|
2
|
-
import { Geometry } from 'geojson'
|
|
2
|
+
import type { Geometry } from 'geojson'
|
|
3
3
|
import {
|
|
4
4
|
ES_QUERY_FIELDS_PRIORITY,
|
|
5
5
|
ES_SOURCE_SUMMARY,
|
|
@@ -30,6 +30,9 @@ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src'
|
|
|
30
30
|
import { formatDate, isDateRange } from './date-range.utils'
|
|
31
31
|
import { CatalogRecord } from '../../../../../../../libs/common/domain/src/lib/model/record'
|
|
32
32
|
import { TranslateService } from '@ngx-translate/core'
|
|
33
|
+
import { getGeometryBoundingBox } from '../../../../../../../libs/util/shared/src'
|
|
34
|
+
import { getLength as getGeodesicLength } from 'ol/sphere'
|
|
35
|
+
import { LineString } from 'ol/geom'
|
|
33
36
|
|
|
34
37
|
export type DateRange = { start?: Date; end?: Date }
|
|
35
38
|
|
|
@@ -351,6 +354,11 @@ export class ElasticsearchService {
|
|
|
351
354
|
})
|
|
352
355
|
}
|
|
353
356
|
if (geometry) {
|
|
357
|
+
// boosts applied using the filter geometry:
|
|
358
|
+
// * records completely within the geometry receive a boost of 5
|
|
359
|
+
// * records intersecting the geometry receive a boost of 2
|
|
360
|
+
// * records close to the geometry center receive a boost of 5 (based on the `location` field)
|
|
361
|
+
// * records on the outskirt of the geometry receive a boost of 2.5
|
|
354
362
|
should.push(
|
|
355
363
|
{
|
|
356
364
|
geo_shape: {
|
|
@@ -358,7 +366,7 @@ export class ElasticsearchService {
|
|
|
358
366
|
shape: geometry,
|
|
359
367
|
relation: 'within',
|
|
360
368
|
},
|
|
361
|
-
boost:
|
|
369
|
+
boost: 5.0,
|
|
362
370
|
},
|
|
363
371
|
},
|
|
364
372
|
{
|
|
@@ -367,10 +375,49 @@ export class ElasticsearchService {
|
|
|
367
375
|
shape: geometry,
|
|
368
376
|
relation: 'intersects',
|
|
369
377
|
},
|
|
370
|
-
boost:
|
|
378
|
+
boost: 2.0,
|
|
371
379
|
},
|
|
372
380
|
}
|
|
373
381
|
)
|
|
382
|
+
|
|
383
|
+
// this will boost the results variably depending on their distance from the given geometry
|
|
384
|
+
// note: this takes into account the `location` field of a record; this is generally the center of all spatial extents
|
|
385
|
+
// combined, and thus the actual size/coverage of the record spatial extent isn't relevant here
|
|
386
|
+
const bbox = getGeometryBoundingBox(geometry)
|
|
387
|
+
const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2]
|
|
388
|
+
const northToCenter = new LineString([
|
|
389
|
+
[center[0], bbox[3]],
|
|
390
|
+
center,
|
|
391
|
+
]).transform('EPSG:4326', 'EPSG:3857')
|
|
392
|
+
const southToCenter = new LineString([
|
|
393
|
+
[center[0], bbox[1]],
|
|
394
|
+
center,
|
|
395
|
+
]).transform('EPSG:4326', 'EPSG:3857')
|
|
396
|
+
const westToCenter = new LineString([
|
|
397
|
+
[bbox[0], center[1]],
|
|
398
|
+
center,
|
|
399
|
+
]).transform('EPSG:4326', 'EPSG:3857')
|
|
400
|
+
const eastToCenter = new LineString([
|
|
401
|
+
[bbox[2], center[1]],
|
|
402
|
+
center,
|
|
403
|
+
]).transform('EPSG:4326', 'EPSG:3857')
|
|
404
|
+
// cutoff distance is the distance from where the boost will only be half of the max value
|
|
405
|
+
// it is an average of the "size" of the bounding box in every direction, in meters
|
|
406
|
+
const cutoffDistance =
|
|
407
|
+
(getGeodesicLength(northToCenter) +
|
|
408
|
+
getGeodesicLength(southToCenter) +
|
|
409
|
+
getGeodesicLength(westToCenter) +
|
|
410
|
+
getGeodesicLength(eastToCenter)) /
|
|
411
|
+
4
|
|
412
|
+
|
|
413
|
+
should.push({
|
|
414
|
+
distance_feature: {
|
|
415
|
+
field: 'location',
|
|
416
|
+
pivot: `${Math.round(cutoffDistance).toFixed(0)}m`,
|
|
417
|
+
origin: center,
|
|
418
|
+
boost: 5.0,
|
|
419
|
+
},
|
|
420
|
+
})
|
|
374
421
|
}
|
|
375
422
|
|
|
376
423
|
return {
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
|
-
import { extend
|
|
3
|
-
import GeoJSON from 'ol/format/GeoJSON'
|
|
2
|
+
import { extend } from 'ol/extent'
|
|
4
3
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
5
|
-
|
|
6
|
-
const GEOJSON = new GeoJSON()
|
|
4
|
+
import { BoundingBox, getGeometryBoundingBox } from '../../../../../../libs/util/shared/src'
|
|
7
5
|
|
|
8
6
|
@Injectable({
|
|
9
7
|
providedIn: 'root',
|
|
10
8
|
})
|
|
11
9
|
export class MapUtilsService {
|
|
12
|
-
getRecordExtent(record: Partial<CatalogRecord>):
|
|
10
|
+
getRecordExtent(record: Partial<CatalogRecord>): BoundingBox {
|
|
13
11
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
14
12
|
return null
|
|
15
13
|
}
|
|
16
14
|
// extend all the spatial extents into an including bbox
|
|
17
15
|
return record.spatialExtents.reduce(
|
|
18
16
|
(prev, curr) => {
|
|
19
|
-
if ('bbox' in curr) return extend(prev, curr.bbox)
|
|
17
|
+
if ('bbox' in curr) return extend(prev, curr.bbox) as BoundingBox
|
|
20
18
|
else if ('geometry' in curr) {
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
return extend(
|
|
20
|
+
prev,
|
|
21
|
+
getGeometryBoundingBox(curr.geometry)
|
|
22
|
+
) as BoundingBox
|
|
23
23
|
}
|
|
24
24
|
return prev
|
|
25
25
|
},
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
SortByField,
|
|
9
9
|
} from '../../../../../../libs/common/domain/src/lib/model/search'
|
|
10
10
|
import { DEFAULT_PAGE_SIZE, FIELDS_SUMMARY } from '../constants'
|
|
11
|
+
import { getOptionalSearchConfig } from '../../../../../../libs/util/app-config/src'
|
|
11
12
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
12
13
|
|
|
13
14
|
export const SEARCH_FEATURE_KEY = 'searchState'
|
|
@@ -55,7 +56,9 @@ export const initSearch = (): SearchStateSearch => {
|
|
|
55
56
|
},
|
|
56
57
|
params: {
|
|
57
58
|
filters: {},
|
|
58
|
-
pageSize:
|
|
59
|
+
pageSize: getOptionalSearchConfig()?.LIMIT
|
|
60
|
+
? getOptionalSearchConfig().LIMIT
|
|
61
|
+
: DEFAULT_PAGE_SIZE,
|
|
59
62
|
currentPage: 0,
|
|
60
63
|
favoritesOnly: false,
|
|
61
64
|
useSpatialFilter: true,
|
|
@@ -231,6 +231,7 @@ export function loadAppConfig() {
|
|
|
231
231
|
'filter_geometry_url',
|
|
232
232
|
'search_preset',
|
|
233
233
|
'advanced_filters',
|
|
234
|
+
'limit',
|
|
234
235
|
],
|
|
235
236
|
warnings,
|
|
236
237
|
errors
|
|
@@ -257,6 +258,7 @@ export function loadAppConfig() {
|
|
|
257
258
|
filters: param.filters,
|
|
258
259
|
})),
|
|
259
260
|
ADVANCED_FILTERS: parsedSearchSection.advanced_filters,
|
|
261
|
+
LIMIT: parsedSearchSection.limit,
|
|
260
262
|
} as SearchConfig)
|
|
261
263
|
|
|
262
264
|
const parsedMetadataQualitySection = parseConfigSection(
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { Feature, FeatureCollection, Geometry } from 'geojson'
|
|
1
|
+
import type { Feature, FeatureCollection, Geometry, Position } from 'geojson'
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @returns The geometry if available, otherwise null.
|
|
5
|
+
*/
|
|
3
6
|
export function getGeometryFromGeoJSON(
|
|
4
7
|
data: FeatureCollection | Feature | Geometry
|
|
5
|
-
): Geometry {
|
|
8
|
+
): Geometry | null {
|
|
6
9
|
if (data.type === 'FeatureCollection') {
|
|
7
10
|
return data?.features?.[0]?.geometry || null
|
|
8
11
|
}
|
|
@@ -24,3 +27,70 @@ export function getGeometryFromGeoJSON(
|
|
|
24
27
|
}
|
|
25
28
|
return null
|
|
26
29
|
}
|
|
30
|
+
|
|
31
|
+
// FIXME: this type should be more generic across the project
|
|
32
|
+
export type BoundingBox = [number, number, number, number]
|
|
33
|
+
|
|
34
|
+
export function getGeometryBoundingBox(geometry: Geometry): BoundingBox {
|
|
35
|
+
// use the bounding box if specified in the GeoJSON object
|
|
36
|
+
if (geometry.bbox) {
|
|
37
|
+
return geometry.bbox.length > 4
|
|
38
|
+
? [geometry.bbox[0], geometry.bbox[1], geometry.bbox[3], geometry.bbox[4]]
|
|
39
|
+
: (geometry.bbox as BoundingBox)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const coordinatesReducer = (prev: BoundingBox, coords: Position) =>
|
|
43
|
+
[
|
|
44
|
+
Math.min(prev[0], coords[0]),
|
|
45
|
+
Math.min(prev[1], coords[1]),
|
|
46
|
+
Math.max(prev[2], coords[0]),
|
|
47
|
+
Math.max(prev[3], coords[1]),
|
|
48
|
+
] as BoundingBox
|
|
49
|
+
const coordinatesArrayReducer = (
|
|
50
|
+
prev: BoundingBox,
|
|
51
|
+
coordsArray: Position[]
|
|
52
|
+
) => {
|
|
53
|
+
const bbox = coordsArray.reduce(coordinatesReducer, emptyExtent)
|
|
54
|
+
return [
|
|
55
|
+
Math.min(prev[0], bbox[0]),
|
|
56
|
+
Math.min(prev[1], bbox[1]),
|
|
57
|
+
Math.max(prev[2], bbox[2]),
|
|
58
|
+
Math.max(prev[3], bbox[3]),
|
|
59
|
+
] as BoundingBox
|
|
60
|
+
}
|
|
61
|
+
const emptyExtent = [Infinity, Infinity, -Infinity, -Infinity] as BoundingBox
|
|
62
|
+
|
|
63
|
+
switch (geometry.type) {
|
|
64
|
+
case 'MultiPolygon':
|
|
65
|
+
return geometry.coordinates.reduce((prev, polygonCoords) => {
|
|
66
|
+
const bbox = polygonCoords.reduce(coordinatesArrayReducer, emptyExtent)
|
|
67
|
+
return [
|
|
68
|
+
Math.min(prev[0], bbox[0]),
|
|
69
|
+
Math.min(prev[1], bbox[1]),
|
|
70
|
+
Math.max(prev[2], bbox[2]),
|
|
71
|
+
Math.max(prev[3], bbox[3]),
|
|
72
|
+
] as BoundingBox
|
|
73
|
+
}, emptyExtent)
|
|
74
|
+
case 'GeometryCollection':
|
|
75
|
+
return geometry.geometries.reduce((prev, geom) => {
|
|
76
|
+
const bbox = getGeometryBoundingBox(geom)
|
|
77
|
+
return [
|
|
78
|
+
Math.min(prev[0], bbox[0]),
|
|
79
|
+
Math.min(prev[1], bbox[1]),
|
|
80
|
+
Math.max(prev[2], bbox[2]),
|
|
81
|
+
Math.max(prev[3], bbox[3]),
|
|
82
|
+
] as BoundingBox
|
|
83
|
+
}, emptyExtent)
|
|
84
|
+
case 'Polygon':
|
|
85
|
+
case 'MultiLineString':
|
|
86
|
+
return geometry.coordinates.reduce(coordinatesArrayReducer, emptyExtent)
|
|
87
|
+
case 'LineString':
|
|
88
|
+
case 'MultiPoint':
|
|
89
|
+
return geometry.coordinates.reduce<BoundingBox>(
|
|
90
|
+
coordinatesReducer,
|
|
91
|
+
emptyExtent
|
|
92
|
+
)
|
|
93
|
+
case 'Point':
|
|
94
|
+
return coordinatesReducer(emptyExtent, geometry.coordinates)
|
|
95
|
+
}
|
|
96
|
+
}
|