geonetwork-ui 2.6.0-dev.857b51517 → 2.6.0-dev.9d3ad45e2

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 (176) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +2 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -2
  4. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
  5. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +7 -4
  6. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +45 -9
  8. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  9. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  10. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +25 -6
  11. package/esm2022/libs/feature/record/src/index.mjs +2 -3
  12. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  13. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +33 -7
  14. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +11 -13
  15. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
  16. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -2
  17. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  18. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  19. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  20. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  21. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +27 -53
  22. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +22 -5
  23. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  24. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  25. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  26. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
  27. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
  28. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +12 -4
  29. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  30. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  31. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  32. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  33. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  34. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +65 -14
  35. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  36. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +2 -1
  37. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  38. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  39. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  40. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  41. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
  42. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
  43. package/esm2022/translations/de.json +6 -2
  44. package/esm2022/translations/en.json +7 -5
  45. package/esm2022/translations/es.json +6 -2
  46. package/esm2022/translations/fr.json +6 -4
  47. package/esm2022/translations/it.json +38 -34
  48. package/esm2022/translations/nl.json +6 -2
  49. package/esm2022/translations/pt.json +6 -2
  50. package/fesm2022/geonetwork-ui.mjs +1001 -587
  51. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  52. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  53. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  54. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  55. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  56. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  57. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +4 -1
  58. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  59. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  60. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  61. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  62. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  63. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  64. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  65. package/libs/feature/record/src/index.d.ts +1 -2
  66. package/libs/feature/record/src/index.d.ts.map +1 -1
  67. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  68. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +26 -21
  69. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  70. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  71. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  72. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  73. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  74. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  75. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  76. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  77. package/libs/ui/elements/src/index.d.ts +2 -0
  78. package/libs/ui/elements/src/index.d.ts.map +1 -1
  79. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  80. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  81. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -7
  82. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  83. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +3 -1
  84. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  85. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
  86. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  87. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
  88. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  89. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
  90. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  91. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  92. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  93. package/libs/ui/inputs/src/index.d.ts +1 -0
  94. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  95. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  96. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  97. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  98. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  99. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +15 -6
  100. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  101. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  102. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  103. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -1
  104. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  105. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  106. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  107. package/package.json +2 -2
  108. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  109. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +1 -0
  110. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -1
  111. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
  112. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +9 -3
  113. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -2
  114. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
  115. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
  116. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
  117. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  118. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +54 -10
  119. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  120. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  121. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +27 -1
  122. package/src/libs/feature/record/src/index.ts +1 -2
  123. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
  124. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -1
  125. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +35 -4
  126. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +18 -15
  127. package/src/libs/feature/search/src/lib/constants.ts +1 -0
  128. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
  129. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  130. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  131. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  132. package/src/libs/ui/elements/src/index.ts +2 -0
  133. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  134. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  135. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  136. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +133 -138
  137. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +19 -47
  138. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +7 -5
  139. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +21 -2
  140. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +6 -3
  141. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +4 -0
  142. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -1
  143. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
  144. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
  145. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
  146. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
  147. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +15 -1
  148. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +9 -1
  149. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -1
  150. package/src/libs/ui/inputs/src/index.ts +1 -0
  151. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  152. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  153. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  154. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +1 -2
  155. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  156. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  157. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +8 -10
  158. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +75 -7
  159. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  160. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  161. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +1 -0
  162. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  163. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -0
  164. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  165. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  166. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  167. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
  168. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
  169. package/translations/de.json +6 -2
  170. package/translations/en.json +7 -5
  171. package/translations/es.json +6 -2
  172. package/translations/fr.json +6 -4
  173. package/translations/it.json +38 -34
  174. package/translations/nl.json +6 -2
  175. package/translations/pt.json +6 -2
  176. package/translations/sk.json +6 -2
@@ -1,12 +1,19 @@
1
1
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
2
+ import { TemplateRef } from '@angular/core';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class RelatedRecordCardComponent {
4
5
  private readonly baseClasses;
6
+ linkHref: string;
5
7
  record: CatalogRecord;
6
8
  extraClass: string;
9
+ favoriteTemplate: TemplateRef<{
10
+ $implicit: CatalogRecord;
11
+ }>;
12
+ metadataQualityDisplay: boolean;
13
+ size: string;
7
14
  constructor();
8
15
  get classList(): string;
9
16
  static ɵfac: i0.ɵɵFactoryDeclaration<RelatedRecordCardComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<RelatedRecordCardComponent, "gn-ui-related-record-card", never, { "record": { "alias": "record"; "required": false; }; "extraClass": { "alias": "extraClass"; "required": false; }; }, {}, never, never, true, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<RelatedRecordCardComponent, "gn-ui-related-record-card", never, { "linkHref": { "alias": "linkHref"; "required": false; }; "record": { "alias": "record"; "required": false; }; "extraClass": { "alias": "extraClass"; "required": false; }; "favoriteTemplate": { "alias": "favoriteTemplate"; "required": false; }; "metadataQualityDisplay": { "alias": "metadataQualityDisplay"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
11
18
  }
12
19
  //# sourceMappingURL=related-record-card.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"related-record-card.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAQzF,qBAea,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAE3B,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,SAAK;;IAgBxB,IAAI,SAAS,WAEZ;yCAtBU,0BAA0B;2CAA1B,0BAA0B;CAuBtC"}
1
+ {"version":3,"file":"related-record-card.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AAQzF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;;AAE3C,qBAgBa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAE3B,QAAQ,EAAE,MAAM,CAAO;IACvB,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,SAAK;IACf,gBAAgB,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC3D,sBAAsB,EAAE,OAAO,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;;IAgBrB,IAAI,SAAS,WAEZ;yCA1BU,0BAA0B;2CAA1B,0BAA0B;CA2BtC"}
@@ -18,6 +18,7 @@ export declare class ServiceCapabilitiesComponent implements OnInit {
18
18
  ngOnInit(): void;
19
19
  onSearchChange(event: Event): void;
20
20
  onSearchEnter(event: KeyboardEvent): void;
21
+ clearSearch(): void;
21
22
  loadLayers(): Promise<void>;
22
23
  selectLayer(layer: WfsFeatureTypeFull | WmsLayerFull | WmtsLayer): void;
23
24
  isList(value: string | string[]): value is string[];
@@ -1 +1 @@
1
- {"version":3,"file":"service-capabilities.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAWvE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACV,MAAM,wBAAwB,CAAA;;AAiB/B,qBAqBa,4BAA6B,YAAW,MAAM;IA2BvD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IA3BjB,QAAQ,QAAK;IACtB,eAAe,QAAK;IACpB,cAAc,QAAK;IACnB,aAAa,MAAO;IACpB,gBAAgB,QAAK;IACrB,WAAW,SAAK;IAChB,OAAO,UAAQ;IACf,YAAY,MAAA;IAEZ,gBAAgB,WAcf;gBAGS,GAAG,EAAE,iBAAiB,EACtB,gBAAgB,EAAE,gBAAgB;IAG5C,QAAQ;IAIR,cAAc,CAAC,KAAK,EAAE,KAAK;IAS3B,aAAa,CAAC,KAAK,EAAE,aAAa;IAO5B,UAAU;IAkBhB,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,SAAS;IAuBhE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/B,kBAAkB;IAOlB,YAAY;IAmBZ,aAAa,CAAC,SAAS,KAAA;yCA1HZ,4BAA4B;2CAA5B,4BAA4B;CA+HxC"}
1
+ {"version":3,"file":"service-capabilities.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAWvE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACV,MAAM,wBAAwB,CAAA;;AAkB/B,qBAsBa,4BAA6B,YAAW,MAAM;IA2BvD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IA3BjB,QAAQ,QAAK;IACtB,eAAe,QAAK;IACpB,cAAc,QAAK;IACnB,aAAa,MAAO;IACpB,gBAAgB,QAAK;IACrB,WAAW,SAAK;IAChB,OAAO,UAAQ;IACf,YAAY,MAAA;IAEZ,gBAAgB,WAcf;gBAGS,GAAG,EAAE,iBAAiB,EACtB,gBAAgB,EAAE,gBAAgB;IAG5C,QAAQ;IAIR,cAAc,CAAC,KAAK,EAAE,KAAK;IAS3B,aAAa,CAAC,KAAK,EAAE,aAAa;IAOlC,WAAW;IAML,UAAU;IAkBhB,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,SAAS;IAuBhE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/B,kBAAkB;IAOlB,YAAY;IAmBZ,aAAa,CAAC,SAAS,KAAA;yCAhIZ,4BAA4B;2CAA5B,4BAA4B;CAqIxC"}
@@ -22,9 +22,10 @@ import * as i20 from "./application-banner/application-banner.component";
22
22
  import * as i21 from "./internal-link-card/internal-link-card.component";
23
23
  import * as i22 from "./service-capabilities/service-capabilities.component";
24
24
  import * as i23 from "./kind-badge/kind-badge.component";
25
+ import * as i24 from "./geo-data-badge/geo-data-badge.component";
25
26
  export declare class UiElementsModule {
26
27
  static ɵfac: i0.ɵɵFactoryDeclaration<UiElementsModule, never>;
27
- static ɵmod: i0.ɵɵNgModuleDeclaration<UiElementsModule, [typeof i1.AvatarComponent, typeof i2.UserPreviewComponent], [typeof i3.CommonModule, typeof i4.MatTooltipModule, typeof i5.UiWidgetsModule, typeof i6.UiLayoutModule, typeof i7.TranslateModule, typeof i8.UtilSharedModule, typeof i9.RouterModule, typeof i10.UiInputsModule, typeof i11.FormsModule, typeof i3.NgOptimizedImage, typeof i12.PopoverComponent, typeof i13.MarkdownParserComponent, typeof i14.ThumbnailComponent, typeof i15.TimeSincePipe, typeof i16.BadgeComponent, typeof i17.MaxLinesComponent, typeof i18.TextInputComponent, typeof i19.ImageInputComponent, typeof i20.ApplicationBannerComponent, typeof i21.InternalLinkCardComponent, typeof i22.ServiceCapabilitiesComponent, typeof i23.KindBadgeComponent], [typeof i14.ThumbnailComponent, typeof i1.AvatarComponent, typeof i2.UserPreviewComponent, typeof i13.MarkdownParserComponent, typeof i19.ImageInputComponent, typeof i20.ApplicationBannerComponent, typeof i21.InternalLinkCardComponent, typeof i22.ServiceCapabilitiesComponent, typeof i23.KindBadgeComponent]>;
28
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiElementsModule, [typeof i1.AvatarComponent, typeof i2.UserPreviewComponent], [typeof i3.CommonModule, typeof i4.MatTooltipModule, typeof i5.UiWidgetsModule, typeof i6.UiLayoutModule, typeof i7.TranslateModule, typeof i8.UtilSharedModule, typeof i9.RouterModule, typeof i10.UiInputsModule, typeof i11.FormsModule, typeof i3.NgOptimizedImage, typeof i12.PopoverComponent, typeof i13.MarkdownParserComponent, typeof i14.ThumbnailComponent, typeof i15.TimeSincePipe, typeof i16.BadgeComponent, typeof i17.MaxLinesComponent, typeof i18.TextInputComponent, typeof i19.ImageInputComponent, typeof i20.ApplicationBannerComponent, typeof i21.InternalLinkCardComponent, typeof i22.ServiceCapabilitiesComponent, typeof i23.KindBadgeComponent, typeof i24.GeoDataBadgeComponent], [typeof i14.ThumbnailComponent, typeof i1.AvatarComponent, typeof i2.UserPreviewComponent, typeof i13.MarkdownParserComponent, typeof i19.ImageInputComponent, typeof i20.ApplicationBannerComponent, typeof i21.InternalLinkCardComponent, typeof i22.ServiceCapabilitiesComponent, typeof i23.KindBadgeComponent, typeof i24.GeoDataBadgeComponent]>;
28
29
  static ɵinj: i0.ɵɵInjectorDeclaration<UiElementsModule>;
29
30
  }
30
31
  //# sourceMappingURL=ui-elements.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA0BA,qBA2Ca,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,qBA6Ca,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
@@ -24,4 +24,5 @@ export * from './lib/text-input/text-input.component';
24
24
  export * from './lib/ui-inputs.module';
25
25
  export * from './lib/url-input/url-input.component';
26
26
  export * from './lib/viewport-intersector/viewport-intersector.component';
27
+ export * from './lib/search-feature-catalog/search-feature-catalog.component';
27
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/inputs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAA;AACzD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2CAA2C,CAAA;AACzD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mDAAmD,CAAA;AACjE,cAAc,yCAAyC,CAAA;AACvD,cAAc,yDAAyD,CAAA;AACvE,cAAc,qDAAqD,CAAA;AACnE,cAAc,mEAAmE,CAAA;AACjF,cAAc,2DAA2D,CAAA;AACzE,cAAc,uDAAuD,CAAA;AACrE,cAAc,qDAAqD,CAAA;AACnE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,2CAA2C,CAAA;AACzD,cAAc,yCAAyC,CAAA;AACvD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,uCAAuC,CAAA;AACrD,cAAc,wBAAwB,CAAA;AACtC,cAAc,qCAAqC,CAAA;AACnD,cAAc,2DAA2D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/inputs/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAA;AACzD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2CAA2C,CAAA;AACzD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mDAAmD,CAAA;AACjE,cAAc,yCAAyC,CAAA;AACvD,cAAc,yDAAyD,CAAA;AACvE,cAAc,qDAAqD,CAAA;AACnE,cAAc,mEAAmE,CAAA;AACjF,cAAc,2DAA2D,CAAA;AACzE,cAAc,uDAAuD,CAAA;AACrE,cAAc,qDAAqD,CAAA;AACnE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,2CAA2C,CAAA;AACzD,cAAc,yCAAyC,CAAA;AACvD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,uCAAuC,CAAA;AACrD,cAAc,wBAAwB,CAAA;AACtC,cAAc,qCAAqC,CAAA;AACnD,cAAc,2DAA2D,CAAA;AACzE,cAAc,+DAA+D,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { DatasetFeatureCatalog } from '../../../../../../libs/common/domain/src/lib/model/record';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SearchFeatureCatalogComponent {
5
+ private _featureCatalog;
6
+ searchTerm: any;
7
+ set featureCatalog(value: DatasetFeatureCatalog);
8
+ get featureCatalog(): DatasetFeatureCatalog;
9
+ filteredFeatureCatalogChange: EventEmitter<DatasetFeatureCatalog>;
10
+ filteredFeatureCatalog: DatasetFeatureCatalog;
11
+ filterAction: (searchTerm: string) => void;
12
+ get totalObjects(): number;
13
+ get totalAttributes(): number;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchFeatureCatalogComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchFeatureCatalogComponent, "gn-ui-search-feature-catalog", never, { "featureCatalog": { "alias": "featureCatalog"; "required": false; }; }, { "filteredFeatureCatalogChange": "filteredFeatureCatalogChange"; }, never, never, true, never>;
16
+ }
17
+ //# sourceMappingURL=search-feature-catalog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-feature-catalog.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAA;AAItE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;;AAOjG,qBAaa,6BAA6B;IACxC,OAAO,CAAC,eAAe,CAAuB;IAC9C,UAAU,EAAE,GAAG,CAAA;IACf,IAAa,cAAc,CAAC,KAAK,EAAE,qBAAqB,EAGvD;IACD,IAAI,cAAc,IAAI,qBAAqB,CAE1C;IAES,4BAA4B,sCACK;IAC3C,sBAAsB,EAAE,qBAAqB,CAAA;IAE7C,YAAY,eAAgB,MAAM,KAAG,IAAI,CAuBxC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,eAAe,IAAI,MAAM,CAO5B;yCAnDU,6BAA6B;2CAA7B,6BAA6B;CAoDzC"}
@@ -1,13 +1,20 @@
1
- import { ElementRef } from '@angular/core';
1
+ import { ElementRef, TemplateRef, OnDestroy, ChangeDetectorRef, AfterViewInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class ExpandablePanelComponent {
4
- title: string;
5
- collapsed: boolean;
6
- contentDiv: ElementRef;
7
- maxHeight: string;
3
+ export declare class ExpandablePanelComponent implements AfterViewInit, OnDestroy {
4
+ private readonly changeDetector;
5
+ title?: string;
6
+ iconColor?: string;
7
+ titleTemplate?: TemplateRef<HTMLElement>;
8
+ contentDiv?: ElementRef;
9
+ private _collapsed;
10
+ private contentObserver?;
11
+ constructor(changeDetector: ChangeDetectorRef);
12
+ ngAfterViewInit(): void;
13
+ set collapsed(value: boolean);
14
+ get collapsed(): boolean;
8
15
  toggle(): void;
9
- setMaxHeight(): string;
16
+ ngOnDestroy(): void;
10
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ExpandablePanelComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<ExpandablePanelComponent, "gn-ui-expandable-panel", never, { "title": { "alias": "title"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; }, {}, never, ["*"], true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ExpandablePanelComponent, "gn-ui-expandable-panel", never, { "title": { "alias": "title"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; }, {}, ["titleTemplate"], ["*"], true, never>;
12
19
  }
13
20
  //# sourceMappingURL=expandable-panel.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expandable-panel.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAGX,MAAM,eAAe,CAAA;;AAKtB,qBASa,wBAAwB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,UAAO;IACA,UAAU,EAAE,UAAU,CAAA;IAC/C,SAAS,SAAsB;IAE/B,MAAM,IAAI,IAAI;IAKd,YAAY;yCAXD,wBAAwB;2CAAxB,wBAAwB;CAgBpC"}
1
+ {"version":3,"file":"expandable-panel.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EAEV,WAAW,EAEX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACd,MAAM,eAAe,CAAA;;AAKtB,qBASa,wBAAyB,YAAW,aAAa,EAAE,SAAS;IAS3D,OAAO,CAAC,QAAQ,CAAC,cAAc;IARlC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,SAAK;IACO,aAAa,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAA;IAEhD,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,eAAe,CAAC,CAAgB;gBAEX,cAAc,EAAE,iBAAiB;IAE9D,eAAe;IASf,IAAa,SAAS,CAAC,KAAK,EAAE,OAAO,EAEpC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,MAAM,IAAI,IAAI;IAId,WAAW;yCAhCA,wBAAwB;2CAAxB,wBAAwB;CAqCpC"}
@@ -1,18 +1,27 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, NgZone } from '@angular/core';
2
+ import { ViewportRuler, ConnectedPosition } from '@angular/cdk/overlay';
2
3
  import * as i0 from "@angular/core";
3
- export declare class TruncatedTextComponent implements AfterViewInit {
4
- private cd;
4
+ export declare class TruncatedTextComponent implements AfterViewInit, OnDestroy {
5
+ private readonly cd;
6
+ private readonly ngZone;
7
+ private readonly viewportRuler;
5
8
  text: string;
9
+ extraClass: string;
6
10
  textElement: ElementRef<HTMLElement>;
7
11
  isTextTruncated: boolean;
8
12
  isOpen: boolean;
9
- constructor(cd: ChangeDetectorRef);
13
+ overlayPosition: ConnectedPosition;
14
+ private readonly resizeObserver;
15
+ private readonly mutationObserver;
16
+ private readonly viewportSubscription;
17
+ constructor(cd: ChangeDetectorRef, ngZone: NgZone, viewportRuler: ViewportRuler);
10
18
  ngAfterViewInit(): void;
11
- ngOnChange(): void;
19
+ ngOnDestroy(): void;
12
20
  toggleOverlay(): void;
21
+ private updateOverlayPosition;
13
22
  close(): void;
14
23
  private checkTextTruncation;
15
24
  static ɵfac: i0.ɵɵFactoryDeclaration<TruncatedTextComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<TruncatedTextComponent, "gn-ui-truncated-text", never, { "text": { "alias": "text"; "required": false; }; }, {}, never, never, true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<TruncatedTextComponent, "gn-ui-truncated-text", never, { "text": { "alias": "text"; "required": false; }; "extraClass": { "alias": "extraClass"; "required": false; }; }, {}, never, never, true, never>;
17
26
  }
18
27
  //# sourceMappingURL=truncated-text.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"truncated-text.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EAEjB,UAAU,EAGX,MAAM,eAAe,CAAA;;AAUtB,qBAea,sBAAuB,YAAW,aAAa;IAM9C,OAAO,CAAC,EAAE;IALb,IAAI,SAAK;IACQ,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC9D,eAAe,UAAQ;IACvB,MAAM,UAAQ;gBAEM,EAAE,EAAE,iBAAiB;IAEzC,eAAe;IAIf,UAAU;IAIV,aAAa;IAIb,KAAK;IAIL,OAAO,CAAC,mBAAmB;yCAxBhB,sBAAsB;2CAAtB,sBAAsB;CA6BlC"}
1
+ {"version":3,"file":"truncated-text.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EAEjB,UAAU,EAEV,SAAS,EAET,MAAM,EACP,MAAM,eAAe,CAAA;AAMtB,OAAO,EAEL,aAAa,EACb,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;;AAI7B,qBAea,sBAAuB,YAAW,aAAa,EAAE,SAAS;IAkBnE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAnBvB,IAAI,SAAK;IACT,UAAU,SAAK;IAEE,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC9D,eAAe,UAAQ;IACvB,MAAM,UAAQ;IACd,eAAe,EAAE,iBAAiB,CAKjC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAc;gBAGhC,EAAE,EAAE,iBAAiB,EACrB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa;IAoB/C,eAAe;IAWf,WAAW;IAOX,aAAa;IAOb,OAAO,CAAC,qBAAqB;IAgB7B,KAAK;IAIL,OAAO,CAAC,mBAAmB;yCArFhB,sBAAsB;2CAAtB,sBAAsB;CA2FlC"}
@@ -1,9 +1,13 @@
1
1
  import type { Feature } from 'geojson';
2
+ import { DatasetFeatureCatalog } from '../../../../../../../libs/common/domain/src/lib/model/record';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class FeatureDetailComponent {
4
5
  feature: Feature;
5
- get properties(): string[];
6
+ _featureAttributes: any[];
7
+ set featureCatalog(value: DatasetFeatureCatalog);
8
+ get properties(): {};
9
+ setProperties(): {};
6
10
  static ɵfac: i0.ɵɵFactoryDeclaration<FeatureDetailComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<FeatureDetailComponent, "gn-ui-feature-detail", never, { "feature": { "alias": "feature"; "required": false; }; }, {}, never, never, true, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeatureDetailComponent, "gn-ui-feature-detail", never, { "feature": { "alias": "feature"; "required": false; }; "featureCatalog": { "alias": "featureCatalog"; "required": false; }; }, {}, never, never, true, never>;
8
12
  }
9
13
  //# sourceMappingURL=feature-detail.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-detail.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;;AAItC,qBAQa,sBAAsB;IACxB,OAAO,EAAE,OAAO,CAAA;IAEzB,IAAI,UAAU,aAKb;yCARU,sBAAsB;2CAAtB,sBAAsB;CASlC"}
1
+ {"version":3,"file":"feature-detail.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;;AAIpG,qBAQa,sBAAsB;IACxB,OAAO,EAAE,OAAO,CAAA;IACzB,kBAAkB,QAAK;IACvB,IAAa,cAAc,CAAC,KAAK,EAAE,qBAAqB,EAEvD;IAED,IAAI,UAAU,OAGb;IAED,aAAa;yCAZF,sBAAsB;2CAAtB,sBAAsB;CAgClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spatial-extent.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGlC,OAAO,EAEL,UAAU,EAEX,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAA;;AAEnG,qBAOa,sBAAsB;IACjC,IAAa,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAExD;IACD,eAAe,0CAAkD;IACjE,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAwClC;IAED,KAAK,SAAK;IAEV,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ;yCAjD3D,sBAAsB;2CAAtB,sBAAsB;CA8DlC"}
1
+ {"version":3,"file":"spatial-extent.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGlC,OAAO,EAEL,UAAU,EAEX,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAA;;AAEnG,qBAOa,sBAAsB;IACjC,IAAa,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAExD;IACD,eAAe,0CAAkD;IACjE,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAyClC;IAED,KAAK,SAAK;IAEV,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ;yCAlD3D,sBAAsB;2CAAtB,sBAAsB;CA+DlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"results-list.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-list/results-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAIZ,WAAW,EACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAEL,uBAAuB,EACxB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAEzF,qBAMa,oBAAoB;IACtB,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,YAAY,EAAE,uBAAuB,CACP;IAC9B,gBAAgB,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC3D,eAAe,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAAA;IAClD,sBAAsB,EAAE,OAAO,CAAA;IAC9B,QAAQ,8BAAoC;yCAP3C,oBAAoB;2CAApB,oBAAoB;CAQhC"}
1
+ {"version":3,"file":"results-list.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/results-list/results-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGZ,WAAW,EACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAEL,uBAAuB,EACxB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;;AAEzF,qBAMa,oBAAoB;IACtB,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,YAAY,EAAE,uBAAuB,CACP;IAC9B,gBAAgB,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAC3D,eAAe,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAAA;IAClD,sBAAsB,EAAE,OAAO,CAAA;IAC9B,QAAQ,8BAAoC;yCAP3C,oBAAoB;2CAApB,oBAAoB;CAQhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAGlE,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CACd,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,SAAS,EAAE;IAuCd,QAAQ,CACN,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,SAAS;yCA5CP,qBAAqB;6CAArB,qBAAqB;CAgDjC"}
1
+ {"version":3,"file":"link-classifier.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-classifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,2DAA2D,CAAA;;AAGlE,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,WAAW;IAClB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,YAAY,gBAAgB;IAC5B,OAAO,YAAY;CACpB;AAED,qBAGa,qBAAqB;IAChC,gBAAgB,CACd,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,SAAS,EAAE;IA0Cd,QAAQ,CACN,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,SAAS;yCA/CP,qBAAqB;6CAArB,qBAAqB;CAmDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,UAAU,CAcZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CA0BR;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;;;;;;8JAmC5E;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,SAUxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
1
+ {"version":3,"file":"link-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/shared/src/lib/links/link-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,2DAA2D,CAAA;AAUlE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHV,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAA;AAE7C,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,GAAG,IAAI,CAgBnB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,UAAU,CAcZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,KAAK,EAAE,MAAM,GACZ,OAAO,CAQT;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAO7D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EACnD,MAAM,EAAE,UAAU,GACjB,OAAO,CAQT;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,GAClD,MAAM,CA6BR;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;;;;;;8JAmC5E;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,SAUxC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.6.0-dev.857b51517",
3
+ "version": "2.6.0-dev.9d3ad45e2",
4
4
  "engines": {
5
5
  "node": ">=20"
6
6
  },
@@ -62,7 +62,7 @@
62
62
  "@nx/angular": "20.2.2",
63
63
  "@rgrove/parse-xml": "4.2.0",
64
64
  "alasql": "4.6.0",
65
- "axios": "1.7.9",
65
+ "axios": "1.8.2",
66
66
  "basiclightbox": "^5.0.4",
67
67
  "chart.js": "4.4.7",
68
68
  "chroma-js": "3.1.2",
@@ -4,6 +4,7 @@ export function matchProtocol(protocol: string): ServiceProtocol {
4
4
  if (/wms/i.test(protocol)) return 'wms'
5
5
  if (/wfs/i.test(protocol)) return 'wfs'
6
6
  if (/wmts/i.test(protocol)) return 'wmts'
7
+ if (/tms/i.test(protocol)) return 'tms'
7
8
  if (/wps/i.test(protocol)) return 'wps'
8
9
  if (/ogc\W*api\W*features/i.test(protocol)) return 'ogcFeatures'
9
10
  if (/esri/i.test(protocol)) return 'esriRest'
@@ -430,6 +430,7 @@ export class Gn4FieldMapper {
430
430
  /^OGC:WMS/.test(protocol) ||
431
431
  /^OGC:WFS/.test(protocol) ||
432
432
  /^OGC:WMTS/.test(protocol) ||
433
+ /TMS/i.test(protocol) ||
433
434
  /ogc\W*api\W*features/i.test(protocol) ||
434
435
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
435
436
  ) {
@@ -65,7 +65,8 @@ export function extractCharacterString(): ChainableFunction<
65
65
  return pipe(
66
66
  fallback(
67
67
  findChildElement('gco:CharacterString', false),
68
- findChildElement('gmx:Anchor', false)
68
+ findChildElement('gmx:Anchor', false),
69
+ findChildElement('gmx:MimeFileType', false)
69
70
  ),
70
71
  readText()
71
72
  )
@@ -8,6 +8,7 @@ export const ES_SOURCE_SUMMARY = [
8
8
  'overview',
9
9
  'logo',
10
10
  'codelist_status_text',
11
+ 'link',
11
12
  'linkProtocol',
12
13
  'contactForResource.organisation',
13
14
  'contact.organisation',
@@ -152,7 +152,9 @@ export class Gn4Repository implements RecordsRepositoryInterface {
152
152
  attributes: Array.isArray(featureType.attributeTable)
153
153
  ? featureType.attributeTable.map((attr) => ({
154
154
  name: attr.name,
155
+ code: attr.code,
155
156
  title: attr.definition,
157
+ type: attr.type,
156
158
  }))
157
159
  : [],
158
160
  })),
@@ -164,7 +166,8 @@ export class Gn4Repository implements RecordsRepositoryInterface {
164
166
  ): Observable<DatasetFeatureCatalog | null> {
165
167
  if (
166
168
  record.extras?.['featureTypes'] &&
167
- Array.isArray(record.extras['featureTypes'])
169
+ Array.isArray(record.extras['featureTypes']) &&
170
+ record.extras['featureTypes'].length > 0
168
171
  ) {
169
172
  return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']))
170
173
  }
@@ -362,9 +365,12 @@ export class Gn4Repository implements RecordsRepositoryInterface {
362
365
  const record = await converter.readRecord(fetchedRecordAsXml)
363
366
 
364
367
  record.title = `${record.title} (Copy)`
365
- await converter.writeRecord(record, fetchedRecordAsXml)
368
+ const recordAsXml = await converter.writeRecord(
369
+ record,
370
+ fetchedRecordAsXml
371
+ )
366
372
 
367
- return this.saveRecord(record, '', false)
373
+ return this.saveRecord(record, recordAsXml, false)
368
374
  }),
369
375
  exhaustMap((uuidObservable: Observable<string>) => uuidObservable),
370
376
  catchError((error: HttpErrorResponse) => {
@@ -152,6 +152,8 @@ export type ServiceProtocol =
152
152
  | 'esriRest'
153
153
  | 'ogcFeatures'
154
154
  | 'GPFDL'
155
+ | 'tms'
156
+ | 'maplibre-style'
155
157
  | 'other'
156
158
 
157
159
  export type OnlineResourceType = 'service' | 'download' | 'link' | 'endpoint'
@@ -235,7 +237,7 @@ export type DatasetFeatureCatalog = {
235
237
  featureTypes: Array<{
236
238
  name: string
237
239
  definition: string
238
- attributes: Array<{ name: string; title: string }>
240
+ attributes: Array<{ name: string; title: string; code: string }>
239
241
  }>
240
242
  }
241
243
 
@@ -272,7 +274,12 @@ export interface DatasetFeatureType {
272
274
  isAbstract: string
273
275
  typeName: string
274
276
  definition: string
275
- attributeTable: Array<{ name: string; definition: string }>
277
+ attributeTable: Array<{
278
+ name: string
279
+ definition: string
280
+ type: string
281
+ code: string
282
+ }>
276
283
  }
277
284
 
278
285
  export type ReuseType = 'application' | 'map' | 'other'
@@ -144,4 +144,14 @@ export const elasticLinkFixture = (): Record<string, unknown> => ({
144
144
  name: 'ogcapi features layer',
145
145
  url: 'https://mel.integration.apps.gs-fr-prod.camptocamp.com/data/ogcapi/collections/comptages_velo/items?',
146
146
  },
147
+ maplayerTms: {
148
+ accessServiceProtocol: 'TMS',
149
+ name: 'mytmslayer',
150
+ url: 'https://my.tms.server/MapServer',
151
+ },
152
+ maplayerTms2: {
153
+ accessServiceProtocol: 'OSGeo:TMS',
154
+ name: 'myothertmslayer',
155
+ url: 'https://my.tms.server/MapServer',
156
+ },
147
157
  })
@@ -185,6 +185,20 @@ export const aSetOfLinksFixture = () => ({
185
185
  url: new URL('https://my.ogc.server/wms'),
186
186
  accessServiceProtocol: 'wms',
187
187
  }) as DatasetServiceDistribution,
188
+ geodataTms: () =>
189
+ ({
190
+ name: 'mytmslayer',
191
+ type: 'service',
192
+ url: new URL('https://my.ogc.server/tms'),
193
+ accessServiceProtocol: 'tms',
194
+ }) as DatasetServiceDistribution,
195
+ geodataAsMaplibreStyle: () =>
196
+ ({
197
+ name: 'mytmslayerAsMaplibreJson',
198
+ type: 'service',
199
+ url: new URL('https://my.ogc.server/tms/layer/style.json'),
200
+ accessServiceProtocol: 'maplibre-style',
201
+ }) as DatasetServiceDistribution,
188
202
  geodataWfs2: () =>
189
203
  ({
190
204
  name: 'myotherlayer',
@@ -231,7 +231,7 @@ As such, **it is not very interesting at all.**`,
231
231
  recordUpdated: new Date('2022-04-15T14:18:19'),
232
232
  resourceUpdated: new Date('2022-03-29'),
233
233
  title:
234
- "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022",
234
+ "Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022 (Ce lot informe du droit à bâtir sur la commune d'Avrigny)",
235
235
  abstract: `Plan local d'urbanisme (PLU) dématérialisé - commune d'Avrigny - approbation du 29/03/2022.
236
236
 
237
237
  Ce lot informe du droit à bâtir sur la commune d'Avrigny.
@@ -18,15 +18,17 @@
18
18
  [selected]="xProperty$.value"
19
19
  [title]="'chart.dropdown.xProperty' | translate"
20
20
  ></gn-ui-dropdown-selector>
21
- <gn-ui-dropdown-selector
22
- class="basis-1/4"
23
- *ngIf="!isCountAggregation"
24
- [choices]="yChoices$ | async"
25
- (selectValue)="yProperty$.next($event)"
26
- [selected]="yProperty$.value"
27
- [title]="'chart.dropdown.yProperty' | translate"
28
- class="select-y-prop"
29
- ></gn-ui-dropdown-selector>
21
+ <ng-container *ngIf="yChoices$ | async as yChoices">
22
+ <gn-ui-dropdown-selector
23
+ class="basis-1/4"
24
+ *ngIf="!isCountAggregation"
25
+ [choices]="yChoices"
26
+ (selectValue)="yProperty$.next($event)"
27
+ [selected]="yProperty$.value"
28
+ [title]="'chart.dropdown.yProperty' | translate"
29
+ class="select-y-prop"
30
+ ></gn-ui-dropdown-selector>
31
+ </ng-container>
30
32
  <gn-ui-dropdown-selector
31
33
  class="basis-1/4"
32
34
  [choices]="aggregationChoices"
@@ -43,6 +45,7 @@
43
45
  *ngIf="!error"
44
46
  [data]="chartData$ | async"
45
47
  [type]="chartType$.value"
48
+ [prettyLabel]="prettyLabel$ | async"
46
49
  [labelProperty]="labelProperty"
47
50
  [valueProperty]="valueProperty"
48
51
  ></gn-ui-chart>
@@ -2,9 +2,7 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  ChangeDetectorRef,
4
4
  Component,
5
- Inject,
6
5
  Input,
7
- Optional,
8
6
  Output,
9
7
  } from '@angular/core'
10
8
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
@@ -13,6 +11,7 @@ import {
13
11
  FetchError,
14
12
  FieldAggregation,
15
13
  getJsonDataItemsProxy,
14
+ PropertyInfo,
16
15
  } from '../../../../../../libs/util/data-fetcher/src'
17
16
  import {
18
17
  DropdownChoice,
@@ -30,7 +29,10 @@ import {
30
29
  } from 'rxjs/operators'
31
30
  import { DataService } from '../service/data.service'
32
31
  import { InputChartType } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
33
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
32
+ import {
33
+ DatasetFeatureCatalog,
34
+ DatasetOnlineResource,
35
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
34
36
  import { TranslateModule, TranslateService } from '@ngx-translate/core'
35
37
  import { CommonModule } from '@angular/common'
36
38
  import { ChartComponent } from '../../../../../../libs/ui/dataviz/src'
@@ -67,9 +69,18 @@ marker('chart.aggregation.count')
67
69
  standalone: true,
68
70
  })
69
71
  export class ChartViewComponent {
72
+ public featureCatalog$ = new BehaviorSubject<DatasetFeatureCatalog | null>(
73
+ null
74
+ )
75
+ @Input() set featureCatalog(value: DatasetFeatureCatalog) {
76
+ this.featureCatalog$.next(value)
77
+ }
70
78
  @Input() cacheActive = true
71
79
  @Input() set link(value: DatasetOnlineResource) {
72
80
  this.currentLink$.next(value)
81
+ if (value) {
82
+ this.aggregation$.next('sum')
83
+ }
73
84
  }
74
85
  private currentLink$ = new BehaviorSubject<DatasetOnlineResource>(null)
75
86
 
@@ -150,13 +161,8 @@ export class ChartViewComponent {
150
161
  }),
151
162
  shareReplay(1)
152
163
  )
153
- properties$ = this.dataset$.pipe(
154
- switchMap((dataset) =>
155
- dataset.properties.catch((error) => {
156
- this.handleError(error)
157
- return []
158
- })
159
- ),
164
+ properties$ = combineLatest([this.dataset$, this.featureCatalog$]).pipe(
165
+ switchMap(([dataset, catalog]) => this.setProperties(dataset, catalog)),
160
166
  shareReplay(1)
161
167
  )
162
168
  yChoices$ = this.properties$.pipe(
@@ -197,6 +203,7 @@ export class ChartViewComponent {
197
203
  this.yProperty$.pipe(filter((value) => value !== undefined)),
198
204
  this.aggregation$,
199
205
  ]).pipe(
206
+ filter(([_, x, y]) => !!x || !!y),
200
207
  switchMap(([dataset, xProp, yProp, aggregation]) => {
201
208
  const fieldAgg: FieldAggregation =
202
209
  aggregation === 'count' ? ['count'] : [aggregation, yProp]
@@ -217,6 +224,18 @@ export class ChartViewComponent {
217
224
  shareReplay(1)
218
225
  )
219
226
 
227
+ prettyLabel$ = combineLatest([
228
+ this.aggregation$,
229
+ this.properties$,
230
+ this.yProperty$,
231
+ ]).pipe(
232
+ map(([aggregation, properties, yProperty]) => {
233
+ if (aggregation === 'count') return 'count()'
234
+ const prop = properties.find((p) => p.name === yProperty)
235
+ return prop ? `${aggregation}(${prop.label})` : ''
236
+ })
237
+ )
238
+
220
239
  get labelProperty() {
221
240
  if (!this.xProperty$.value) return ''
222
241
  return `distinct(${this.xProperty$.value})`
@@ -235,6 +254,31 @@ export class ChartViewComponent {
235
254
  private translateService: TranslateService
236
255
  ) {}
237
256
 
257
+ setProperties(
258
+ dataset: BaseReader,
259
+ catalog: DatasetFeatureCatalog
260
+ ): Promise<PropertyInfo[]> {
261
+ return dataset.properties
262
+ .then((properties) => {
263
+ return properties.map((p) => {
264
+ if (catalog) {
265
+ const featureAttributes = catalog?.featureTypes[0]?.attributes ?? []
266
+ const matchingAttribute = featureAttributes.find(
267
+ (attr) => attr.name === p.label
268
+ )
269
+ if (matchingAttribute?.code) {
270
+ return { ...p, label: matchingAttribute.code }
271
+ }
272
+ return p
273
+ }
274
+ return p
275
+ })
276
+ })
277
+ .catch((error) => {
278
+ this.handleError(error)
279
+ return []
280
+ })
281
+ }
238
282
  handleError(error: FetchError | Error | string) {
239
283
  if (error instanceof FetchError) {
240
284
  this.error = this.translateService.instant(
@@ -6,6 +6,7 @@ import {
6
6
  OgcApiRecord,
7
7
  WfsEndpoint,
8
8
  WfsVersion,
9
+ TmsEndpoint,
9
10
  } from '@camptocamp/ogc-client'
10
11
  import {
11
12
  BaseReader,
@@ -231,6 +232,42 @@ export class DataService {
231
232
  })
232
233
  }
233
234
 
235
+ async getGeodataLinksFromTms(
236
+ tmsLink: DatasetServiceDistribution,
237
+ keepOriginalLink = false
238
+ ): Promise<DatasetServiceDistribution[]> {
239
+ const endpoint = new TmsEndpoint(tmsLink.url.toString())
240
+ const tileMaps = await endpoint.allTileMaps
241
+ if (!tileMaps?.length) return null
242
+
243
+ // TODO: at some point use the identifierInService field if more that one layers in the TMS service
244
+ const tileMapInfo = await endpoint.getTileMapInfo(tileMaps[0].href)
245
+
246
+ // case 1: no styles; return a plain TMS link
247
+ if (!tileMapInfo?.metadata?.length) return [tmsLink]
248
+
249
+ // case 2: styles present; return each as a separate link
250
+ const styleLinks = tileMapInfo.metadata
251
+ .filter((meta) => meta.href)
252
+ .map((meta) => {
253
+ const fileName = meta.href.split('/').pop() || ''
254
+ const linkName =
255
+ tmsLink.description || ('name' in tmsLink ? tmsLink.name : '')
256
+ const styleName = fileName.split('.')[0]
257
+ const name = `${linkName} - ${styleName}`
258
+ return {
259
+ type: 'service',
260
+ url: new URL(meta.href),
261
+ name,
262
+ accessServiceProtocol: 'maplibre-style',
263
+ } as DatasetServiceDistribution
264
+ })
265
+ if (keepOriginalLink) {
266
+ styleLinks.unshift(tmsLink)
267
+ }
268
+ return styleLinks
269
+ }
270
+
234
271
  getDownloadLinksFromEsriRest(
235
272
  esriRestLink: DatasetServiceDistribution
236
273
  ): DatasetOnlineResource[] {