geonetwork-ui 2.8.0-dev.1f70ea679 → 2.8.0-dev.2abe6a279

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 (37) hide show
  1. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +18 -7
  2. package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +37 -8
  3. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  4. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  5. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  6. package/esm2022/translations/de.json +6 -1
  7. package/esm2022/translations/en.json +6 -1
  8. package/esm2022/translations/es.json +5 -0
  9. package/esm2022/translations/fr.json +6 -1
  10. package/esm2022/translations/it.json +7 -2
  11. package/esm2022/translations/nl.json +5 -0
  12. package/esm2022/translations/pt.json +5 -0
  13. package/esm2022/translations/sk.json +6 -1
  14. package/fesm2022/geonetwork-ui.mjs +129 -28
  15. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  16. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  17. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +11 -6
  18. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +1 -1
  19. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  20. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  21. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  22. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  23. package/package.json +1 -1
  24. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +16 -5
  25. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +39 -4
  26. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +44 -9
  27. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  28. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  29. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -14
  30. package/translations/de.json +6 -1
  31. package/translations/en.json +6 -1
  32. package/translations/es.json +5 -0
  33. package/translations/fr.json +6 -1
  34. package/translations/it.json +7 -2
  35. package/translations/nl.json +5 -0
  36. package/translations/pt.json +5 -0
  37. package/translations/sk.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/dataviz/src/lib/service/data.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAEpB,YAAY,EACZ,WAAW,EACX,UAAU,EAEX,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,UAAU,EAKX,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAIL,YAAY,EACb,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAQ,UAAU,EAAc,MAAM,MAAM,CAAA;AAEnD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wFAAwF,CAAA;;AAe3H,UAAU,eAAe;IACvB,GAAG,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAA;CACvE;AAED,qBAGa,WAAW;IACV,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;IA2BvD,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,UAAU,CAAC,eAAe,CAAC;IAkD9B,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,UAAU,CAAC,MAAM,CAAC;IAerB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAMlE,uBAAuB,CACrB,OAAO,EAAE,0BAA0B,GAClC,UAAU,CAAC,qBAAqB,EAAE,CAAC;IA6BhC,kCAAkC,CACtC,UAAU,EAAE,0BAA0B,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAiB7B,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWrE,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAaxD,sBAAsB,CAC1B,OAAO,EAAE,0BAA0B,EACnC,gBAAgB,UAAQ,GACvB,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAqCxC,4BAA4B,CAC1B,YAAY,EAAE,0BAA0B,GACvC,qBAAqB,EAAE;IAU1B,aAAa,CACX,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,OAAO,GACnB,UAAU,CAAC,iBAAiB,CAAC;IAUhC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAQnD,UAAU,CACR,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,OAAO,GACnB,UAAU,CAAC,UAAU,CAAC;yCAjQd,WAAW;6CAAX,WAAW;CAmTvB"}
1
+ {"version":3,"file":"data.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/dataviz/src/lib/service/data.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAEpB,YAAY,EACZ,WAAW,EACX,UAAU,EAEX,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,UAAU,EAKX,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAIL,YAAY,EACb,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAQ,UAAU,EAAc,MAAM,MAAM,CAAA;AAEnD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,2DAA2D,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wFAAwF,CAAA;;AAe3H,UAAU,eAAe;IACvB,GAAG,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAA;CACvE;AAED,qBAGa,WAAW;IACV,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;IA2BvD,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,UAAU,CAAC,eAAe,CAAC;IA6D9B,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,UAAU,CAAC,MAAM,CAAC;IAerB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAMlE,uBAAuB,CACrB,OAAO,EAAE,0BAA0B,GAClC,UAAU,CAAC,qBAAqB,EAAE,CAAC;IA6BhC,kCAAkC,CACtC,UAAU,EAAE,0BAA0B,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAiB7B,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWrE,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAaxD,sBAAsB,CAC1B,OAAO,EAAE,0BAA0B,EACnC,gBAAgB,UAAQ,GACvB,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAqCxC,4BAA4B,CAC1B,YAAY,EAAE,0BAA0B,GACvC,qBAAqB,EAAE;IAU1B,aAAa,CACX,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,OAAO,GACnB,UAAU,CAAC,iBAAiB,CAAC;IAUhC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAQnD,UAAU,CACR,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,OAAO,GACnB,UAAU,CAAC,UAAU,CAAC;yCA5Qd,WAAW;6CAAX,WAAW;CA8TvB"}
@@ -1,11 +1,16 @@
1
- import { OnDestroy } from '@angular/core';
2
- import { DatasetServiceDistribution } from '../../../../../../libs/common/domain/src/lib/model/record';
1
+ import { OnInit } from '@angular/core';
2
+ import { DatasetServiceDistribution, DatasetTemporalExtent } from '../../../../../../libs/common/domain/src/lib/model/record';
3
3
  import * as i0 from "@angular/core";
4
- export declare class StacViewComponent implements OnDestroy {
4
+ export declare class StacViewComponent implements OnInit {
5
5
  link: DatasetServiceDistribution;
6
- private subscription;
7
- ngOnDestroy(): void;
6
+ initialTemporalExtent: DatasetTemporalExtent | null;
7
+ currentTemporalExtent: DatasetTemporalExtent | null;
8
+ isTemporalFilterModified: boolean;
9
+ onStartDateChange(date: Date): void;
10
+ onEndDateChange(date: Date): void;
11
+ onResetFilters(): void;
12
+ ngOnInit(): void;
8
13
  static ɵfac: i0.ɵɵFactoryDeclaration<StacViewComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<StacViewComponent, "gn-ui-stac-view", never, { "link": { "alias": "link"; "required": false; }; }, {}, never, never, true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<StacViewComponent, "gn-ui-stac-view", never, { "link": { "alias": "link"; "required": false; }; "initialTemporalExtent": { "alias": "initialTemporalExtent"; "required": false; }; }, {}, never, never, true, never>;
10
15
  }
11
16
  //# sourceMappingURL=stac-view.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stac-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,SAAS,EACV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,2DAA2D,CAAA;;AAItG,qBAQa,iBAAkB,YAAW,SAAS;IACxC,IAAI,EAAE,0BAA0B,CAAA;IACzC,OAAO,CAAC,YAAY,CAAqB;IAEzC,WAAW;yCAJA,iBAAiB;2CAAjB,iBAAiB;CAO7B"}
1
+ {"version":3,"file":"stac-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,MAAM,EACP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAMlE,qBAca,iBAAkB,YAAW,MAAM;IACrC,IAAI,EAAE,0BAA0B,CAAA;IAChC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAE5D,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAO;IAC1D,wBAAwB,UAAQ;IAEhC,iBAAiB,CAAC,IAAI,EAAE,IAAI;IAQ5B,eAAe,CAAC,IAAI,EAAE,IAAI;IAQ1B,cAAc;IAKd,QAAQ;yCA5BG,iBAAiB;2CAAjB,iBAAiB;CA+B7B"}
@@ -6,13 +6,14 @@ import * as i0 from "@angular/core";
6
6
  export declare const WEB_COMPONENT_EMBEDDER_URL: InjectionToken<string>;
7
7
  export declare class DataViewPermalinkComponent {
8
8
  private config;
9
+ private proxyPath;
9
10
  protected wcEmbedderBaseUrl: string;
10
11
  private facade;
11
12
  viewType$: BehaviorSubject<string>;
12
13
  set viewType(value: string);
13
14
  permalinkUrl$: import("rxjs").Observable<string>;
14
- constructor(config: Configuration, wcEmbedderBaseUrl: string, facade: MdViewFacade);
15
- static ɵfac: i0.ɵɵFactoryDeclaration<DataViewPermalinkComponent, [null, { optional: true; }, null]>;
15
+ constructor(config: Configuration, proxyPath: string, wcEmbedderBaseUrl: string, facade: MdViewFacade);
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataViewPermalinkComponent, [null, { optional: true; }, { optional: true; }, null]>;
16
17
  static ɵcmp: i0.ɵɵComponentDeclaration<DataViewPermalinkComponent, "gn-ui-data-view-permalink", never, { "viewType": { "alias": "viewType"; "required": false; }; }, {}, never, never, true, never>;
17
18
  }
18
19
  //# sourceMappingURL=data-view-permalink.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-view-permalink.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAGf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAsB,MAAM,MAAM,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;;AAMvC,eAAO,MAAM,0BAA0B,wBAEtC,CAAA;AAED,qBAQa,0BAA0B;IA4CZ,OAAO,CAAC,MAAM;IAGrC,SAAS,CAAC,iBAAiB,EAAE,MAAM;IACnC,OAAO,CAAC,MAAM;IA/ChB,SAAS,0BAAqC;IAC9C,IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,aAAa,oCAkCZ;gBAGgC,MAAM,EAAE,aAAa,EAG1C,iBAAiB,EAAE,MAAM,EAC3B,MAAM,EAAE,YAAY;yCAhDnB,0BAA0B;2CAA1B,0BAA0B;CAkDtC"}
1
+ {"version":3,"file":"data-view-permalink.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAGf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAsB,MAAM,MAAM,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;;AAMvC,eAAO,MAAM,0BAA0B,wBAEtC,CAAA;AAED,qBAQa,0BAA0B;IA+CZ,OAAO,CAAC,MAAM;IAGrC,OAAO,CAAC,SAAS;IAGjB,SAAS,CAAC,iBAAiB,EAAE,MAAM;IACnC,OAAO,CAAC,MAAM;IArDhB,SAAS,0BAAqC;IAC9C,IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,aAAa,oCAqCZ;gBAGgC,MAAM,EAAE,aAAa,EAG5C,SAAS,EAAE,MAAM,EAGf,iBAAiB,EAAE,MAAM,EAC3B,MAAM,EAAE,YAAY;yCAtDnB,0BAA0B;2CAA1B,0BAA0B;CAwDtC"}
@@ -4,12 +4,13 @@ import { BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class DataViewWebComponentComponent {
6
6
  private config;
7
+ private proxyPath;
7
8
  private facade;
8
9
  viewType$: BehaviorSubject<string>;
9
10
  set viewType(value: string);
10
11
  webComponentHtml$: import("rxjs").Observable<string>;
11
- constructor(config: Configuration, facade: MdViewFacade);
12
- static ɵfac: i0.ɵɵFactoryDeclaration<DataViewWebComponentComponent, never>;
12
+ constructor(config: Configuration, proxyPath: string, facade: MdViewFacade);
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataViewWebComponentComponent, [null, { optional: true; }, null]>;
13
14
  static ɵcmp: i0.ɵɵComponentDeclaration<DataViewWebComponentComponent, "gn-ui-data-view-web-component", never, { "viewType": { "alias": "viewType"; "required": false; }; }, {}, never, never, true, never>;
14
15
  }
15
16
  //# sourceMappingURL=data-view-web-component.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-view-web-component.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAsB,MAAM,MAAM,CAAA;;AAM1D,qBAQa,6BAA6B;IA4Ef,OAAO,CAAC,MAAM;IACrC,OAAO,CAAC,MAAM;IA5EhB,SAAS,0BAAqC;IAC9C,IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IACD,iBAAiB,oCAmEhB;gBAGgC,MAAM,EAAE,aAAa,EAC5C,MAAM,EAAE,YAAY;yCA7EnB,6BAA6B;2CAA7B,6BAA6B;CA+EzC"}
1
+ {"version":3,"file":"data-view-web-component.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAsB,MAAM,MAAM,CAAA;;AAM1D,qBAQa,6BAA6B;IA2Ff,OAAO,CAAC,MAAM;IAGrC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IA9FhB,SAAS,0BAAqC;IAC9C,IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IACD,iBAAiB,oCAkFhB;gBAGgC,MAAM,EAAE,aAAa,EAG5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY;yCA/FnB,6BAA6B;2CAA7B,6BAA6B;CAiGzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.8.0-dev.1f70ea679",
3
+ "version": "2.8.0-dev.2abe6a279",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -97,16 +97,27 @@ export class DataService {
97
97
  if (!featureType) {
98
98
  throw new Error('wfs.featuretype.notfound')
99
99
  }
100
+
101
+ const wfsVersion = endpoint.getVersion()
102
+ const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0'
103
+ const defaultCrs = featureType.defaultCrs
104
+
105
+ const shouldAddOutputCrs = addSrsName && defaultCrs
106
+
100
107
  return {
101
- all: featureType.outputFormats.reduce(
102
- (prev, curr) => ({
108
+ all: featureType.outputFormats.reduce((prev, curr) => {
109
+ const isJsonFormat = curr.toLowerCase().includes('json')
110
+ return {
103
111
  ...prev,
104
112
  [curr]: endpoint.getFeatureUrl(featureType.name, {
105
113
  outputFormat: curr,
114
+ ...(shouldAddOutputCrs &&
115
+ !isJsonFormat && {
116
+ outputCrs: defaultCrs,
117
+ }),
106
118
  }),
107
- }),
108
- {}
109
- ),
119
+ }
120
+ }, {}),
110
121
  geojson: endpoint.supportsJson(featureType.name)
111
122
  ? endpoint.getFeatureUrl(featureType.name, {
112
123
  asJson: true,
@@ -1,5 +1,40 @@
1
- <div class="w-full h-full flex flex-col">
2
- <div
3
- class="relative h-full mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden"
4
- ></div>
1
+ <div
2
+ class="w-full h-full flex flex-row mt-6 bg-white border border-gray-300 rounded-lg overflow-hidden"
3
+ >
4
+ <div class="flex-1 flex flex-col">
5
+ <div class="m-8">
6
+ <p class="mb-4" translate>stac.filter.period</p>
7
+ <p translate>stac.filter.from</p>
8
+ <gn-ui-date-picker
9
+ id="start-date-picker"
10
+ [date]="currentTemporalExtent?.start"
11
+ (dateChange)="onStartDateChange($event)"
12
+ />
13
+ <p class="mt-4" translate>stac.filter.to</p>
14
+ <gn-ui-date-picker
15
+ id="end-date-picker"
16
+ [date]="currentTemporalExtent?.end"
17
+ (dateChange)="onEndDateChange($event)"
18
+ />
19
+ </div>
20
+
21
+ <div class="mt-auto mb-8 mx-8" *ngIf="isTemporalFilterModified">
22
+ <button
23
+ id="reset-filters-button"
24
+ type="button"
25
+ class="flex items-center"
26
+ (click)="onResetFilters()"
27
+ >
28
+ <span translate>stac.filter.reset</span>
29
+ <ng-icon
30
+ name="matDeleteOutline"
31
+ class="pointer-events-none ml-2"
32
+ ></ng-icon>
33
+ </button>
34
+ </div>
35
+ </div>
36
+
37
+ <div class="w-[655px] flex-shrink-0 flex items-center justify-center">
38
+ <span>Map...</span>
39
+ </div>
5
40
  </div>
@@ -3,11 +3,16 @@ import {
3
3
  ChangeDetectionStrategy,
4
4
  Component,
5
5
  Input,
6
- OnDestroy,
6
+ OnInit,
7
7
  } from '@angular/core'
8
- import { DatasetServiceDistribution } from '../../../../../../libs/common/domain/src/lib/model/record'
9
- import { TranslatePipe } from '@ngx-translate/core'
10
- import { Subscription } from 'rxjs'
8
+ import {
9
+ DatasetServiceDistribution,
10
+ DatasetTemporalExtent,
11
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
12
+ import { DatePickerComponent } from '../../../../../../libs/ui/inputs/src'
13
+ import { NgIconComponent, provideIcons } from '@ng-icons/core'
14
+ import { matDeleteOutline } from '@ng-icons/material-icons/outline'
15
+ import { TranslateDirective } from '@ngx-translate/core'
11
16
 
12
17
  @Component({
13
18
  selector: 'gn-ui-stac-view',
@@ -15,13 +20,43 @@ import { Subscription } from 'rxjs'
15
20
  styleUrls: ['./stac-view.component.css'],
16
21
  changeDetection: ChangeDetectionStrategy.OnPush,
17
22
  standalone: true,
18
- imports: [CommonModule, TranslatePipe],
23
+ imports: [
24
+ CommonModule,
25
+ DatePickerComponent,
26
+ NgIconComponent,
27
+ TranslateDirective,
28
+ ],
29
+ viewProviders: [provideIcons({ matDeleteOutline })],
19
30
  })
20
- export class StacViewComponent implements OnDestroy {
31
+ export class StacViewComponent implements OnInit {
21
32
  @Input() link: DatasetServiceDistribution
22
- private subscription = new Subscription()
33
+ @Input() initialTemporalExtent: DatasetTemporalExtent | null
34
+
35
+ currentTemporalExtent: DatasetTemporalExtent | null = null
36
+ isTemporalFilterModified = false
37
+
38
+ onStartDateChange(date: Date) {
39
+ this.currentTemporalExtent = {
40
+ ...this.currentTemporalExtent,
41
+ start: date,
42
+ }
43
+ this.isTemporalFilterModified = true
44
+ }
45
+
46
+ onEndDateChange(date: Date) {
47
+ this.currentTemporalExtent = {
48
+ ...this.currentTemporalExtent,
49
+ end: date,
50
+ }
51
+ this.isTemporalFilterModified = true
52
+ }
53
+
54
+ onResetFilters() {
55
+ this.currentTemporalExtent = this.initialTemporalExtent
56
+ this.isTemporalFilterModified = false
57
+ }
23
58
 
24
- ngOnDestroy() {
25
- this.subscription.unsubscribe()
59
+ ngOnInit() {
60
+ this.currentTemporalExtent = this.initialTemporalExtent
26
61
  }
27
62
  }
@@ -12,7 +12,7 @@ import { MdViewFacade } from '../state'
12
12
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
13
13
  import { CommonModule } from '@angular/common'
14
14
  import { TranslatePipe } from '@ngx-translate/core'
15
- import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
15
+ import { GEONETWORK_UI_TAG_NAME, PROXY_PATH } from '../../../../../../libs/util/shared/src'
16
16
 
17
17
  export const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken<string>(
18
18
  'webComponentEmbedderUrl'
@@ -60,6 +60,9 @@ export class DataViewPermalinkComponent {
60
60
  url.searchParams.append('e', `gn-dataset-view-map`)
61
61
  }
62
62
  url.searchParams.append('a', `api-url=${this.config.basePath}`)
63
+ if (this.proxyPath) {
64
+ url.searchParams.append('a', `proxy-path=${this.proxyPath}`)
65
+ }
63
66
  url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`)
64
67
  url.searchParams.append('a', `primary-color=#0f4395`)
65
68
  url.searchParams.append('a', `secondary-color=#8bc832`)
@@ -72,6 +75,9 @@ export class DataViewPermalinkComponent {
72
75
  constructor(
73
76
  @Inject(Configuration) private config: Configuration,
74
77
  @Optional()
78
+ @Inject(PROXY_PATH)
79
+ private proxyPath: string,
80
+ @Optional()
75
81
  @Inject(WEB_COMPONENT_EMBEDDER_URL)
76
82
  protected wcEmbedderBaseUrl: string,
77
83
  private facade: MdViewFacade
@@ -3,6 +3,7 @@ import {
3
3
  Component,
4
4
  Inject,
5
5
  Input,
6
+ Optional,
6
7
  } from '@angular/core'
7
8
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
8
9
  import { MdViewFacade } from '../state'
@@ -10,7 +11,7 @@ import { BehaviorSubject, combineLatest, map } from 'rxjs'
10
11
  import { CopyTextButtonComponent } from '../../../../../../libs/ui/inputs/src'
11
12
  import { CommonModule } from '@angular/common'
12
13
  import { TranslatePipe } from '@ngx-translate/core'
13
- import { GEONETWORK_UI_TAG_NAME } from '../../../../../../libs/util/shared/src'
14
+ import { GEONETWORK_UI_TAG_NAME, PROXY_PATH } from '../../../../../../libs/util/shared/src'
14
15
 
15
16
  @Component({
16
17
  selector: 'gn-ui-data-view-web-component',
@@ -42,7 +43,12 @@ export class DataViewWebComponentComponent {
42
43
  api-url="${new URL(
43
44
  this.config.basePath,
44
45
  window.location.origin
45
- ).toString()}"
46
+ ).toString()}"${
47
+ this.proxyPath
48
+ ? `
49
+ proxy-path="${this.proxyPath}"`
50
+ : ''
51
+ }
46
52
  dataset-id="${metadata.uniqueIdentifier}"
47
53
  aggregation="${aggregation}"
48
54
  x-property="${xProperty}"
@@ -65,7 +71,12 @@ export class DataViewWebComponentComponent {
65
71
  api-url="${new URL(
66
72
  this.config.basePath,
67
73
  window.location.origin
68
- ).toString()}"
74
+ ).toString()}"${
75
+ this.proxyPath
76
+ ? `
77
+ proxy-path="${this.proxyPath}"`
78
+ : ''
79
+ }
69
80
  dataset-id="${metadata.uniqueIdentifier}"
70
81
  primary-color="#0f4395"
71
82
  secondary-color="#8bc832"
@@ -82,7 +93,12 @@ export class DataViewWebComponentComponent {
82
93
  api-url="${new URL(
83
94
  this.config.basePath,
84
95
  window.location.origin
85
- ).toString()}"
96
+ ).toString()}"${
97
+ this.proxyPath
98
+ ? `
99
+ proxy-path="${this.proxyPath}"`
100
+ : ''
101
+ }
86
102
  dataset-id="${metadata.uniqueIdentifier}"
87
103
  primary-color="#0f4395"
88
104
  secondary-color="#8bc832"
@@ -97,6 +113,9 @@ export class DataViewWebComponentComponent {
97
113
 
98
114
  constructor(
99
115
  @Inject(Configuration) private config: Configuration,
116
+ @Optional()
117
+ @Inject(PROXY_PATH)
118
+ private proxyPath: string,
100
119
  private facade: MdViewFacade
101
120
  ) {}
102
121
  }
@@ -3,7 +3,11 @@
3
3
  ghostClass="h-[178px]"
4
4
  [showContent]="fieldReady('abstract')"
5
5
  >
6
- <gn-ui-max-lines [maxLines]="6" *ngIf="metadata.abstract">
6
+ <gn-ui-max-lines
7
+ [maxLines]="6"
8
+ *ngIf="metadata.abstract"
9
+ data-test="metadata-info-abstract"
10
+ >
7
11
  <div class="mb-6">
8
12
  <gn-ui-markdown-parser
9
13
  [textContent]="metadata.abstract"
@@ -101,19 +105,31 @@
101
105
  <gn-ui-expandable-panel
102
106
  *ngIf="
103
107
  (metadata.kind === 'dataset' && metadata.lineage) ||
108
+ resourceContact ||
109
+ metadata.resourceCreated ||
110
+ metadata.resourcePublished ||
104
111
  metadata.resourceUpdated ||
105
- metadata.updateFrequency ||
106
- (metadata.kind === 'dataset' && metadata.status)
112
+ (metadata.kind === 'dataset' && metadata.updateFrequency) ||
113
+ metadata.otherLanguages?.length ||
114
+ (metadata.kind === 'dataset' && temporalExtent)
107
115
  "
108
116
  [title]="'record.metadata.details' | translate"
109
117
  data-test="details-panel"
110
118
  >
111
- <div *ngIf="metadata.lineage" class="text-gray-900 flex flex-col mt-4 gap-2">
119
+ <div
120
+ *ngIf="metadata.kind === 'dataset' && metadata.lineage"
121
+ class="text-gray-900 flex flex-col mt-4 gap-2"
122
+ data-test="details-panel-lineage"
123
+ >
112
124
  <p class="whitespace-pre-line break-words text-gray-900" gnUiLinkify>
113
125
  {{ metadata.lineage }}
114
126
  </p>
115
127
  </div>
116
- <div class="flex flex-row gap-6 mt-5 mb-8" *ngIf="resourceContact">
128
+ <div
129
+ class="flex flex-row gap-6 mt-5 mb-8 resource-contact"
130
+ *ngIf="resourceContact"
131
+ data-test="details-panel-resource-contact"
132
+ >
117
133
  <div
118
134
  *ngIf="resourceContact.organization?.logoUrl?.href"
119
135
  class="flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden"
@@ -165,19 +181,37 @@
165
181
  <div
166
182
  class="py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700"
167
183
  >
168
- <div *ngIf="metadata.resourceCreated">
184
+ <div
185
+ *ngIf="metadata.resourceCreated"
186
+ data-test="details-panel-resource-created"
187
+ >
169
188
  <p class="text-sm" translate>record.metadata.creation</p>
170
- <p class="text-primary font-medium mt-1">
189
+ <p class="text-primary font-medium mt-1 resource-created">
171
190
  {{ formatDate(metadata.resourceCreated) }}
172
191
  </p>
173
192
  </div>
174
- <div *ngIf="metadata.resourcePublished">
193
+ <div
194
+ *ngIf="metadata.resourcePublished"
195
+ data-test="details-panel-resource-published"
196
+ >
175
197
  <p class="text-sm" translate>record.metadata.publication</p>
176
- <p class="text-primary font-medium mt-1">
198
+ <p class="text-primary font-medium mt-1 resource-published">
177
199
  {{ formatDate(metadata.resourcePublished) }}
178
200
  </p>
179
201
  </div>
180
- <div *ngIf="updateFrequency">
202
+ <div
203
+ *ngIf="metadata.resourceUpdated"
204
+ data-test="details-panel-resource-updated"
205
+ >
206
+ <p class="text-sm" translate>record.metadata.update</p>
207
+ <p class="text-primary font-medium mt-1 resource-updated">
208
+ {{ formatDate(metadata.resourceUpdated) }}
209
+ </p>
210
+ </div>
211
+ <div
212
+ *ngIf="metadata.kind === 'dataset' && metadata.updateFrequency"
213
+ data-test="details-panel-update-frequency"
214
+ >
181
215
  <p class="text-sm" translate>record.metadata.updateFrequency</p>
182
216
  <p
183
217
  class="text-primary font-medium mt-1 updateFrequency"
@@ -187,11 +221,14 @@
187
221
  {{ updateFrequency }}
188
222
  </p>
189
223
  </div>
190
- <div *ngIf="metadata.otherLanguages?.length">
224
+ <div
225
+ *ngIf="metadata.otherLanguages?.length"
226
+ data-test="details-panel-other-languages"
227
+ >
191
228
  <p class="text-sm mb-1" translate>record.metadata.languages</p>
192
229
  <div class="flex flex-row gap-1 flex-wrap">
193
230
  <p
194
- class="text-primary font-medium"
231
+ class="text-primary font-medium other-languages"
195
232
  translate
196
233
  *ngFor="let language of metadata.otherLanguages"
197
234
  >
@@ -199,9 +236,14 @@
199
236
  </p>
200
237
  </div>
201
238
  </div>
202
- <div *ngIf="temporalExtent">
239
+ <div
240
+ *ngIf="metadata.kind === 'dataset' && temporalExtent"
241
+ data-test="details-panel-temporal-extent"
242
+ >
203
243
  <p class="text-sm" translate>record.metadata.temporalExtent</p>
204
- <div class="flex flex-row gap-1 mb-1 text-primary font-medium">
244
+ <div
245
+ class="flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent"
246
+ >
205
247
  <p
206
248
  *ngIf="temporalExtent.start && temporalExtent.end"
207
249
  translate
@@ -524,8 +524,9 @@
524
524
  "record.metadata.title": "Titel",
525
525
  "record.metadata.topics": "Kategorien",
526
526
  "record.metadata.uniqueId": "Eindeutige Kennung",
527
+ "record.metadata.update": "Aktualisierungsdatum",
527
528
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
528
- "record.metadata.updatedOn": "Geändert am",
529
+ "record.metadata.updatedOn": "Informationen geändert am",
529
530
  "record.metadata.usage": "Nutzung und Einschränkungen",
530
531
  "record.metadata.userFeedbacks": "",
531
532
  "record.metadata.userFeedbacks.anonymousUser": "",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "",
633
634
  "share.tab.permalink": "Teilen",
634
635
  "share.tab.webComponent": "Integrieren",
636
+ "stac.filter.from": "",
637
+ "stac.filter.period": "",
638
+ "stac.filter.reset": "",
639
+ "stac.filter.to": "",
635
640
  "table.loading.data": "Daten werden geladen...",
636
641
  "table.object.count": "Objekte in diesem Datensatz",
637
642
  "table.paginator.firstPage": "Erste Seite",
@@ -524,8 +524,9 @@
524
524
  "record.metadata.title": "Title",
525
525
  "record.metadata.topics": "Categories",
526
526
  "record.metadata.uniqueId": "Unique Identifier",
527
+ "record.metadata.update": "Date of update",
527
528
  "record.metadata.updateFrequency": "Data Update Frequency",
528
- "record.metadata.updatedOn": "Updated on",
529
+ "record.metadata.updatedOn": "Metadata modified on",
529
530
  "record.metadata.usage": "License and Conditions",
530
531
  "record.metadata.userFeedbacks": "Questions / Answers",
531
532
  "record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "Spatial extent",
633
634
  "share.tab.permalink": "Share",
634
635
  "share.tab.webComponent": "Integrate",
636
+ "stac.filter.from": "From",
637
+ "stac.filter.period": "Period",
638
+ "stac.filter.reset": "Reset filters",
639
+ "stac.filter.to": "To",
635
640
  "table.loading.data": "Loading data...",
636
641
  "table.object.count": "Objects in this dataset",
637
642
  "table.paginator.firstPage": "First page",
@@ -524,6 +524,7 @@
524
524
  "record.metadata.title": "",
525
525
  "record.metadata.topics": "",
526
526
  "record.metadata.uniqueId": "",
527
+ "record.metadata.update": "",
527
528
  "record.metadata.updateFrequency": "",
528
529
  "record.metadata.updatedOn": "",
529
530
  "record.metadata.usage": "",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "",
633
634
  "share.tab.permalink": "",
634
635
  "share.tab.webComponent": "",
636
+ "stac.filter.from": "",
637
+ "stac.filter.period": "",
638
+ "stac.filter.reset": "",
639
+ "stac.filter.to": "",
635
640
  "table.loading.data": "",
636
641
  "table.object.count": "",
637
642
  "table.paginator.firstPage": "Primera página",
@@ -524,8 +524,9 @@
524
524
  "record.metadata.title": "Intitulé",
525
525
  "record.metadata.topics": "Catégories",
526
526
  "record.metadata.uniqueId": "Identificateur de ressource unique",
527
+ "record.metadata.update": "Date de mise à jour",
527
528
  "record.metadata.updateFrequency": "Fréquence de mise à jour des données",
528
- "record.metadata.updatedOn": "Modifié le",
529
+ "record.metadata.updatedOn": "Fiche de métadonnées modifiée le",
529
530
  "record.metadata.usage": "Licences et conditions d'utilisation",
530
531
  "record.metadata.userFeedbacks": "Questions / Réponses",
531
532
  "record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "Etendue spatiale",
633
634
  "share.tab.permalink": "Partager",
634
635
  "share.tab.webComponent": "Intégrer",
636
+ "stac.filter.from": "Du",
637
+ "stac.filter.period": "Choix de la période",
638
+ "stac.filter.reset": "Réinitialiser les filtres",
639
+ "stac.filter.to": "Au",
635
640
  "table.loading.data": "Chargement des données...",
636
641
  "table.object.count": "enregistrements dans ce jeu de données",
637
642
  "table.paginator.firstPage": "Première page",
@@ -513,7 +513,7 @@
513
513
  "record.metadata.resourcePublished": "Pubblicato il {date}",
514
514
  "record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
515
515
  "record.metadata.ressources.and.links": "Risorse e collegamenti",
516
- "record.metadata.sheet": "Origine del metadata",
516
+ "record.metadata.sheet": "Origine dei metadati",
517
517
  "record.metadata.status": "Stato",
518
518
  "record.metadata.status.notPublished": "Non pubblicato",
519
519
  "record.metadata.status.published": "Pubblicato",
@@ -524,8 +524,9 @@
524
524
  "record.metadata.title": "Titolo",
525
525
  "record.metadata.topics": "Categorie",
526
526
  "record.metadata.uniqueId": "Identificatore unico di risorsa",
527
+ "record.metadata.update": "Data di aggiornamento",
527
528
  "record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
528
- "record.metadata.updatedOn": "Modificato il",
529
+ "record.metadata.updatedOn": "Metadati modificati il",
529
530
  "record.metadata.usage": "Licenze e limiti di utilizzo",
530
531
  "record.metadata.userFeedbacks": "Domande / Risposte",
531
532
  "record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "Estensione spaziale",
633
634
  "share.tab.permalink": "Condividere",
634
635
  "share.tab.webComponent": "Incorporare",
636
+ "stac.filter.from": "",
637
+ "stac.filter.period": "",
638
+ "stac.filter.reset": "",
639
+ "stac.filter.to": "",
635
640
  "table.loading.data": "Caricamento dei dati...",
636
641
  "table.object.count": "record in questi dati",
637
642
  "table.paginator.firstPage": "Prima pagina",
@@ -524,6 +524,7 @@
524
524
  "record.metadata.title": "",
525
525
  "record.metadata.topics": "",
526
526
  "record.metadata.uniqueId": "",
527
+ "record.metadata.update": "",
527
528
  "record.metadata.updateFrequency": "",
528
529
  "record.metadata.updatedOn": "",
529
530
  "record.metadata.usage": "",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "",
633
634
  "share.tab.permalink": "",
634
635
  "share.tab.webComponent": "",
636
+ "stac.filter.from": "",
637
+ "stac.filter.period": "",
638
+ "stac.filter.reset": "",
639
+ "stac.filter.to": "",
635
640
  "table.loading.data": "",
636
641
  "table.object.count": "",
637
642
  "table.paginator.firstPage": "",
@@ -524,6 +524,7 @@
524
524
  "record.metadata.title": "",
525
525
  "record.metadata.topics": "",
526
526
  "record.metadata.uniqueId": "",
527
+ "record.metadata.update": "",
527
528
  "record.metadata.updateFrequency": "",
528
529
  "record.metadata.updatedOn": "",
529
530
  "record.metadata.usage": "",
@@ -632,6 +633,10 @@
632
633
  "service.metadata.spatialExtent": "",
633
634
  "share.tab.permalink": "",
634
635
  "share.tab.webComponent": "",
636
+ "stac.filter.from": "",
637
+ "stac.filter.period": "",
638
+ "stac.filter.reset": "",
639
+ "stac.filter.to": "",
635
640
  "table.loading.data": "",
636
641
  "table.object.count": "",
637
642
  "table.paginator.firstPage": "",