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.
Files changed (25) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +47 -3
  2. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -5
  3. package/esm2022/libs/feature/search/src/lib/state/reducer.mjs +5 -2
  4. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  5. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  6. package/esm2022/libs/util/shared/src/lib/utils/geojson.mjs +58 -1
  7. package/fesm2022/geonetwork-ui.mjs +2383 -2282
  8. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  9. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  10. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  11. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -2
  12. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  13. package/libs/feature/search/src/lib/state/reducer.d.ts.map +1 -1
  14. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  15. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  16. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  17. package/libs/util/shared/src/lib/utils/geojson.d.ts +7 -2
  18. package/libs/util/shared/src/lib/utils/geojson.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +50 -3
  21. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -8
  22. package/src/libs/feature/search/src/lib/state/reducer.ts +4 -1
  23. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  24. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  25. 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;AAMlC,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;;AAEtD,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;IAmEzB,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;yCAhiBH,oBAAoB;6CAApB,oBAAoB;CAwkBhC"}
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>): Extent;
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":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAIzF,qBAGa,eAAe;IAC1B,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM;yCAD5C,eAAe;6CAAf,eAAe;CAkB3B"}
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;AAElE,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,iBAsB7B,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
+ {"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,kBA4N5B;AAED,wBAAgB,cAAc,YAE7B;AAED,wBAAgB,MAAM,SAIrB;AAED,eAAO,MAAM,+BAA+B;;;;;;;2BAOK,UAAU;;;CAK1D,CAAA"}
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"}
@@ -54,6 +54,7 @@ export interface SearchConfig {
54
54
  FILTER_GEOMETRY_DATA?: string;
55
55
  SEARCH_PRESET?: SearchPreset[];
56
56
  ADVANCED_FILTERS?: [];
57
+ LIMIT?: number;
57
58
  }
58
59
  export interface MetadataQualityConfig {
59
60
  ENABLED: boolean;
@@ -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;CACtB;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
+ {"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
- export declare function getGeometryFromGeoJSON(data: FeatureCollection | Feature | Geometry): Geometry;
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,EAAE,MAAM,SAAS,CAAA;AAE9D,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAC3C,QAAQ,CAqBV"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.7.0-dev.b9840dab3",
3
+ "version": "2.7.0-dev.d51ff2ddf",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -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: 10.0,
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: 7.0,
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, Extent } from 'ol/extent'
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>): Extent {
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
- const geom = GEOJSON.readGeometry(curr.geometry)
22
- return extend(prev, geom.getExtent())
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: DEFAULT_PAGE_SIZE,
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(
@@ -60,6 +60,7 @@ export interface SearchConfig {
60
60
  FILTER_GEOMETRY_DATA?: string
61
61
  SEARCH_PRESET?: SearchPreset[]
62
62
  ADVANCED_FILTERS?: []
63
+ LIMIT?: number
63
64
  }
64
65
 
65
66
  export interface MetadataQualityConfig {
@@ -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
+ }