geonetwork-ui 2.6.0-dev.b306f1194 → 2.6.0-dev.d216c4dea

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 (217) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -3
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  5. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
  6. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  7. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  8. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +5 -1
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +5 -1
  10. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  13. package/esm2022/libs/feature/record/src/index.mjs +1 -2
  14. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  15. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  16. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -1
  17. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  18. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
  20. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  21. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  22. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  23. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  24. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  25. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -15
  26. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  27. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
  28. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  29. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  30. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +3 -3
  31. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  32. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  33. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
  34. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
  35. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  36. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  37. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  38. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  39. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  40. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
  41. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
  42. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  43. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  44. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  45. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  46. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
  47. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +13 -6
  48. package/esm2022/translations/de.json +27 -4
  49. package/esm2022/translations/en.json +28 -5
  50. package/esm2022/translations/es.json +27 -4
  51. package/esm2022/translations/fr.json +29 -6
  52. package/esm2022/translations/it.json +27 -4
  53. package/esm2022/translations/nl.json +27 -4
  54. package/esm2022/translations/pt.json +27 -4
  55. package/fesm2022/geonetwork-ui.mjs +969 -478
  56. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  57. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  58. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  59. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  60. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  61. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -2
  62. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  63. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  64. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
  65. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  66. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  68. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  69. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  70. package/libs/feature/record/src/index.d.ts +0 -1
  71. package/libs/feature/record/src/index.d.ts.map +1 -1
  72. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  73. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  74. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  75. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  76. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  77. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  78. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  79. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  80. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
  81. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  82. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  83. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  84. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  85. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  86. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  87. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  88. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  89. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  90. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  91. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  92. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  93. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  94. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  95. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  96. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  97. package/libs/ui/elements/src/index.d.ts +1 -0
  98. package/libs/ui/elements/src/index.d.ts.map +1 -1
  99. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  100. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  101. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
  102. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  103. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  104. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  105. package/libs/ui/inputs/src/index.d.ts +0 -1
  106. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  107. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  108. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  109. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  110. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  111. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  112. package/libs/ui/map/src/index.d.ts +1 -0
  113. package/libs/ui/map/src/index.d.ts.map +1 -1
  114. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  115. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  116. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  117. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  118. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  119. package/libs/util/shared/src/index.d.ts +1 -0
  120. package/libs/util/shared/src/index.d.ts.map +1 -1
  121. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  122. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  123. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  124. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  125. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  126. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  127. package/package.json +1 -1
  128. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  129. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  130. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  131. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  132. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  133. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
  134. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
  135. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  136. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
  137. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  138. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +5 -2
  139. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
  140. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
  141. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  142. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
  143. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
  144. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  145. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  146. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  147. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  148. package/src/libs/feature/record/src/index.ts +0 -1
  149. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  150. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  151. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -0
  152. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  153. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
  154. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
  155. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  156. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  157. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  158. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  159. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
  160. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  161. package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -8
  162. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  163. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  164. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  165. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
  166. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  167. package/src/libs/ui/elements/src/index.ts +1 -0
  168. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +2 -2
  169. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
  170. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  171. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
  172. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  173. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
  174. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
  175. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -0
  176. package/src/libs/ui/inputs/src/index.ts +0 -1
  177. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
  178. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  179. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  180. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
  181. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  182. package/src/libs/ui/map/src/index.ts +1 -0
  183. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  184. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  185. package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +7 -8
  186. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
  187. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
  188. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  189. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  190. package/src/libs/util/shared/src/index.ts +1 -0
  191. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  192. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
  193. package/src/libs/util/shared/src/lib/links/link-utils.ts +30 -12
  194. package/tailwind.base.css +18 -13
  195. package/translations/de.json +27 -4
  196. package/translations/en.json +28 -5
  197. package/translations/es.json +27 -4
  198. package/translations/fr.json +29 -6
  199. package/translations/it.json +27 -4
  200. package/translations/nl.json +27 -4
  201. package/translations/pt.json +27 -4
  202. package/translations/sk.json +27 -4
  203. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  204. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  205. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  206. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  207. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
  208. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  209. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  210. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  211. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  212. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  213. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  214. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  215. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  216. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  217. /package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → ui/elements/src/lib/service-capabilities/service-capabilities.component.css} +0 -0
@@ -31,11 +31,7 @@
31
31
  *ngFor="let item of items"
32
32
  (click)="handleRowClick(item)"
33
33
  data-cy="table-row"
34
- [title]="
35
- !item.extras?.edit && !isDraftPage
36
- ? ('editor.record.lock.reason' | translate)
37
- : ''
38
- "
34
+ [title]="getItemTitle(item) | translate"
39
35
  >
40
36
  <div
41
37
  class="relative h-0"
@@ -52,9 +48,9 @@
52
48
  class="table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200"
53
49
  [ngClass]="{
54
50
  'text-purple-light cursor-default':
55
- !item.extras?.edit && !isDraftPage,
51
+ (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',
56
52
  'group-hover:text-main group-hover:bg-gray-50':
57
- item.extras?.edit || isDraftPage,
53
+ (item.extras?.edit || isDraftPage) && item.kind === 'dataset',
58
54
  }"
59
55
  >
60
56
  <ng-container
@@ -12,7 +12,11 @@ import { CommonModule } from '@angular/common'
12
12
  import { NgIconComponent, provideIcons } from '@ng-icons/core'
13
13
  import { iconoirNavArrowDown, iconoirNavArrowUp } from '@ng-icons/iconoir'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker'
16
+ import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
15
17
 
18
+ marker('editor.record.lock.reason')
19
+ marker('editor.record.lock.format')
16
20
  @Component({
17
21
  selector: 'gn-ui-interactive-table',
18
22
  templateUrl: './interactive-table.component.html',
@@ -44,6 +48,15 @@ export class InteractiveTableComponent {
44
48
  }
45
49
  }
46
50
 
51
+ getItemTitle(item: CatalogRecord) {
52
+ if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
53
+ return 'editor.record.lock.reason'
54
+ } else if (item.kind !== 'dataset') {
55
+ return 'editor.record.lock.format'
56
+ }
57
+ return ''
58
+ }
59
+
47
60
  handleRowClick(item: unknown) {
48
61
  this.itemClick.emit(item)
49
62
  }
@@ -3,3 +3,4 @@ export * from './lib/components/map-container/map-settings.token'
3
3
  export * from './lib/components/feature-detail/feature-detail.component'
4
4
  export * from './lib/components/map-legend/map-legend.component'
5
5
  export * from './lib/map-utils'
6
+ export * from './lib/components/spatial-extent/spatial-extent.component'
@@ -0,0 +1,4 @@
1
+ <gn-ui-map-container
2
+ class="h-full w-full"
3
+ [context]="mapContext$ | async"
4
+ ></gn-ui-map-container>
@@ -1,27 +1,26 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
1
+ import { Component, Input } from '@angular/core'
2
2
  import { CommonModule } from '@angular/common'
3
3
  import { Geometry } from 'geojson'
4
4
  import GeoJSON, { GeoJSONFeatureCollection } from 'ol/format/GeoJSON'
5
- import { DatasetSpatialExtent } from '../../../../../../../../../libs/common/domain/src/lib/model/record'
6
5
  import { Polygon } from 'ol/geom'
7
6
  import {
8
7
  createViewFromLayer,
9
8
  MapContext,
10
9
  MapContextLayer,
11
10
  } from '@geospatial-sdk/core'
12
- import { MapContainerComponent } from '../../../../../../../../../libs/ui/map/src'
11
+ import { MapContainerComponent } from '../map-container/map-container.component'
13
12
  import { BehaviorSubject, Observable } from 'rxjs'
14
13
  import { switchMap } from 'rxjs/operators'
14
+ import { DatasetSpatialExtent } from '../../../../../../../libs/common/domain/src/lib/model/record'
15
15
 
16
16
  @Component({
17
- selector: 'gn-ui-form-field-map-container',
17
+ selector: 'gn-ui-spatial-extent',
18
18
  standalone: true,
19
19
  imports: [CommonModule, MapContainerComponent],
20
- templateUrl: './form-field-map-container.component.html',
21
- styleUrls: ['./form-field-map-container.component.css'],
22
- changeDetection: ChangeDetectionStrategy.OnPush,
20
+ templateUrl: './spatial-extent.component.html',
21
+ styleUrl: './spatial-extent.component.css',
23
22
  })
24
- export class FormFieldMapContainerComponent {
23
+ export class SpatialExtentComponent {
25
24
  @Input() set spatialExtents(value: DatasetSpatialExtent[]) {
26
25
  this.spatialExtents$.next(value)
27
26
  }
@@ -9,10 +9,10 @@
9
9
  <ng-icon
10
10
  name="iconoirLock"
11
11
  class="text-purple"
12
- *ngIf="!item.extras?.edit && !isDraftPage"
12
+ *ngIf="(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'"
13
13
  ></ng-icon>
14
14
  <gn-ui-checkbox
15
- *ngIf="item.extras?.edit || isDraftPage"
15
+ *ngIf="(item.extras?.edit || isDraftPage) && item.kind === 'dataset'"
16
16
  [checked]="isChecked(item)"
17
17
  (changed)="handleRecordSelectedChange($event, item)"
18
18
  class="-m-2"
@@ -149,11 +149,14 @@
149
149
  (buttonClick)="openActionMenu(item, template)"
150
150
  type="light"
151
151
  data-test="record-menu-button"
152
- [disabled]="!item.extras?.edit && !isDraftPage"
152
+ [disabled]="
153
+ (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'
154
+ "
153
155
  >
154
156
  <ng-icon
155
157
  [ngClass]="{
156
- 'text-purple-light': !item.extras?.edit && !isDraftPage,
158
+ 'text-purple-light':
159
+ (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',
157
160
  }"
158
161
  name="matMoreVert"
159
162
  ></ng-icon>
@@ -174,8 +174,9 @@ export class ResultsTableComponent {
174
174
  }
175
175
 
176
176
  handleRecordClick(item: CatalogRecord) {
177
- if (item?.extras?.edit || this.isDraftPage)
177
+ if ((item?.extras?.edit || this.isDraftPage) && item.kind === 'dataset') {
178
178
  this.recordClick.emit(item as CatalogRecord)
179
+ }
179
180
  }
180
181
 
181
182
  handleDuplicate(item: unknown) {
@@ -99,6 +99,7 @@ export function loadAppConfig() {
99
99
  'metadata_language',
100
100
  'login_url',
101
101
  'logout_url',
102
+ 'settings_url',
102
103
  'web_component_embedder_url',
103
104
  'languages',
104
105
  'contact_email',
@@ -7,6 +7,7 @@ proxy_path = "/proxy/?url="
7
7
  metadata_language = "fre"
8
8
  login_url = "/cas/login?service="
9
9
  logout_url = "/geonetwork/signout"
10
+ settings_url = "/geonetwork/settings"
10
11
  web_component_embedder_url = "/datahub/wc-embedder.html"
11
12
 
12
13
  [map]
@@ -3,3 +3,4 @@ export * from './lib/services'
3
3
  export * from './lib/utils'
4
4
  export * from './lib/links'
5
5
  export * from './lib/image-fallback.directive'
6
+ export * from './lib/gn-ui-version'
@@ -0,0 +1,8 @@
1
+ import packageJson from '../../../../../package.json'
2
+
3
+ export const GEONETWORK_UI_VERSION = packageJson.version
4
+
5
+ export const GEONETWORK_UI_TAG_NAME =
6
+ GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
7
+ ? 'main'
8
+ : `v${packageJson.version}`
@@ -1,5 +1,8 @@
1
1
  import { Injectable } from '@angular/core'
2
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
2
+ import {
3
+ DatasetOnlineResource,
4
+ ServiceOnlineResource,
5
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
3
6
  import { getFileFormat } from './link-utils'
4
7
 
5
8
  export enum LinkUsage {
@@ -16,8 +19,11 @@ export enum LinkUsage {
16
19
  providedIn: 'root',
17
20
  })
18
21
  export class LinkClassifierService {
19
- getUsagesForLink(link: DatasetOnlineResource): LinkUsage[] {
22
+ getUsagesForLink(
23
+ link: DatasetOnlineResource | ServiceOnlineResource
24
+ ): LinkUsage[] {
20
25
  switch (link.type) {
26
+ case 'endpoint':
21
27
  case 'service': {
22
28
  switch (link.accessServiceProtocol) {
23
29
  case 'esriRest':
@@ -54,7 +60,10 @@ export class LinkClassifierService {
54
60
  }
55
61
  }
56
62
 
57
- hasUsage(link: DatasetOnlineResource, usage: LinkUsage) {
63
+ hasUsage(
64
+ link: DatasetOnlineResource | ServiceOnlineResource,
65
+ usage: LinkUsage
66
+ ) {
58
67
  return this.getUsagesForLink(link).indexOf(usage) > -1
59
68
  }
60
69
  }
@@ -1,6 +1,7 @@
1
1
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
2
2
  import {
3
3
  DatasetOnlineResource,
4
+ ServiceOnlineResource,
4
5
  ServiceProtocol,
5
6
  } from '../../../../../../libs/common/domain/src/lib/model/record'
6
7
  import {
@@ -140,7 +141,9 @@ export function getFormatPriority(linkFormat: FileFormat): number {
140
141
  return 0
141
142
  }
142
143
 
143
- export function getLinkPriority(link: DatasetOnlineResource): number {
144
+ export function getLinkPriority(
145
+ link: DatasetOnlineResource | ServiceOnlineResource
146
+ ): number {
144
147
  return getFormatPriority(getFileFormat(link))
145
148
  }
146
149
 
@@ -164,7 +167,9 @@ export function getFileFormatFromServiceOutput(
164
167
  return null
165
168
  }
166
169
 
167
- export function getFileFormat(link: DatasetOnlineResource): FileFormat {
170
+ export function getFileFormat(
171
+ link: DatasetOnlineResource | ServiceOnlineResource
172
+ ): FileFormat {
168
173
  if ('mimeType' in link) {
169
174
  const mimeTypeFormat = mimeTypeToFormat(link.mimeType)
170
175
  if (mimeTypeFormat !== null) {
@@ -181,7 +186,7 @@ export function getFileFormat(link: DatasetOnlineResource): FileFormat {
181
186
  }
182
187
 
183
188
  export function isFormatInQueryParam(
184
- link: DatasetOnlineResource,
189
+ link: DatasetOnlineResource | ServiceOnlineResource,
185
190
  alias: string
186
191
  ): boolean {
187
192
  const queryParams = link.url.searchParams
@@ -203,7 +208,7 @@ export function mimeTypeToFormat(mimeType: string): FileFormat {
203
208
  }
204
209
 
205
210
  export function checkFileFormat(
206
- link: DatasetOnlineResource,
211
+ link: DatasetOnlineResource | ServiceOnlineResource,
207
212
  format: FileFormat
208
213
  ): boolean {
209
214
  return (
@@ -225,7 +230,9 @@ export function getBadgeColor(linkFormat: FileFormat): string {
225
230
  return 'var(--color-gray-700)' // Default color ?
226
231
  }
227
232
 
228
- export function getLinkLabel(link: DatasetOnlineResource): string {
233
+ export function getLinkLabel(
234
+ link: DatasetOnlineResource | ServiceOnlineResource
235
+ ): string {
229
236
  let format = ''
230
237
  switch (link.type) {
231
238
  case 'service':
@@ -249,7 +256,7 @@ export function getLinkLabel(link: DatasetOnlineResource): string {
249
256
  default:
250
257
  format = getFileFormat(link)
251
258
  }
252
- const label = link.description || link.name
259
+ const label = link.description || ('name' in link ? link.name : '')
253
260
  return format ? `${label} (${format})` : label
254
261
  }
255
262
 
@@ -261,14 +268,25 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
261
268
  }
262
269
  case 'wfs': {
263
270
  const endpointWfs = await new WfsEndpoint(url).isReady()
264
- return endpointWfs.getFeatureTypes()
271
+ const featureTypes = await endpointWfs.getFeatureTypes()
272
+ const layers = await Promise.all(
273
+ featureTypes.map(async (collection) => {
274
+ return await endpointWfs.getFeatureTypeFull(collection.name)
275
+ })
276
+ )
277
+ return layers
265
278
  }
266
279
  case 'wms': {
267
280
  const endpointWms = await new WmsEndpoint(url).isReady()
268
- return endpointWms
269
- .getLayers()
270
- .flatMap(wmsLayerFlatten)
271
- .filter((l) => l.name)
281
+ const layers = (
282
+ await endpointWms
283
+ .getLayers()
284
+ .flatMap(wmsLayerFlatten)
285
+ .filter((l) => l.name)
286
+ ).map((collection) => {
287
+ return endpointWms.getLayerByName(collection.name)
288
+ })
289
+ return layers
272
290
  }
273
291
  case 'wmts': {
274
292
  const endpointWmts = await new WmtsEndpoint(url).isReady()
@@ -279,7 +297,7 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
279
297
  }
280
298
  }
281
299
 
282
- function wmsLayerFlatten(layerFull) {
300
+ export function wmsLayerFlatten(layerFull) {
283
301
  const layer = {
284
302
  title: layerFull.title,
285
303
  name: layerFull.name,
package/tailwind.base.css CHANGED
@@ -66,15 +66,20 @@
66
66
  /* this is a base class, do not use it directly */
67
67
  .gn-ui-btn {
68
68
  --rounded: var(--gn-ui-button-rounded, 0.25em);
69
+ --border-width: var(--gn-ui-button-border-width, 1px);
69
70
  --padding: var(--gn-ui-button-padding, 1em);
70
71
  --width: var(--gn-ui-button-width, auto);
71
72
  --height: var(--gn-ui-button-height, auto);
72
- --background: var(--gn-ui-button-background, --color-background);
73
+ --background: var(--gn-ui-button-background, var(--color-background));
74
+ --bg-hover: var(--gn-ui-button-bg-hover, var(--color-background));
73
75
  --font-size: var(--gn-ui-button-font-size, 1em);
76
+ --color: var(--gn-ui-button-color, var(--color-main));
74
77
  @apply flex flex-row items-center justify-center
75
78
  text-[length:--font-size] leading-none
79
+ text-[color:--color]
76
80
  p-[--padding] rounded-[--rounded] w-[--width] h-[--height] overflow-hidden
77
- bg-[--background] transition-all duration-100
81
+ border-[length:--border-width] bg-[--background] transition-all duration-100
82
+ hover:bg-[--bg-hover] focus:bg-[--bg-hover] active:bg-[--background]
78
83
  outline-none
79
84
  relative
80
85
  disabled:opacity-50 disabled:pointer-events-none
@@ -89,44 +94,44 @@
89
94
 
90
95
  .gn-ui-btn-default {
91
96
  @apply gn-ui-btn text-white
92
- bg-gray-700 hover:bg-gray-800 active:bg-gray-900
93
- border border-gray-700 focus:ring-4 focus:ring-gray-200;
97
+ bg-gray-700 hover:bg-gray-800 hover:!text-white active:bg-gray-900
98
+ border-gray-700 focus:ring-4 focus:ring-gray-200 focus:text-gray-900;
94
99
  }
95
100
 
96
101
  .gn-ui-btn-primary {
97
102
  @apply gn-ui-btn text-white
98
103
  bg-primary hover:bg-primary-darker focus:bg-primary-darker active:bg-primary-darkest
99
- border border-primary focus:ring-4 focus:ring-primary-lightest;
104
+ border-primary focus:ring-4 focus:ring-primary-lightest;
100
105
  }
101
106
 
102
107
  .gn-ui-btn-secondary {
103
108
  @apply gn-ui-btn text-white
104
109
  bg-secondary hover:bg-secondary-darker focus:bg-secondary-darker active:bg-secondary-darkest
105
- border border-secondary focus:ring-4 focus:ring-secondary-lightest;
110
+ border-secondary focus:ring-4 focus:ring-secondary-lightest;
106
111
  }
107
112
 
108
113
  .gn-ui-btn-gray {
109
114
  @apply gn-ui-btn text-black
110
115
  bg-gray-100 hover:bg-gray-200 focus:bg-gray-200 active:bg-gray-300
111
- border border-gray-100 focus:ring-4 focus:ring-gray-50;
116
+ border-gray-100 focus:ring-4 focus:ring-gray-50;
112
117
  }
113
118
 
114
119
  .gn-ui-btn-black {
115
120
  @apply gn-ui-btn text-white
116
121
  bg-black hover:bg-gray-950 focus:bg-gray-950 active:bg-gray-900
117
- border border-black focus:ring-4 focus:ring-gray-300;
122
+ border-black focus:ring-4 focus:ring-gray-300;
118
123
  }
119
124
 
120
125
  .gn-ui-btn-outline {
121
- @apply gn-ui-btn text-main
126
+ @apply gn-ui-btn
122
127
  hover:text-primary-darker focus:text-primary-darker active:text-primary-black
123
- border border-gray-300 hover:border-primary-lighter focus:border-primary-lighter focus:ring-4 focus:ring-primary-lightest active:border-primary-darker;
128
+ border-gray-300 hover:border-primary-lighter focus:border-primary-lighter focus:ring-4 focus:ring-primary-lightest active:border-primary-darker;
124
129
  }
125
130
 
126
131
  .gn-ui-btn-light {
127
- @apply gn-ui-btn text-main
132
+ @apply gn-ui-btn
128
133
  hover:bg-gray-50 focus:bg-gray-50 active:bg-gray-100
129
- border border-white focus:ring-4 focus:ring-gray-300;
134
+ border-white focus:ring-4 focus:ring-gray-300;
130
135
  }
131
136
 
132
137
  .gn-ui-card-xs {
@@ -225,7 +230,7 @@
225
230
 
226
231
  /* Section title */
227
232
  .gn-ui-section-title {
228
- @apply text-title font-medium pt-9 text-[28px] container-lg px-4 lg:mx-auto;
233
+ @apply text-title font-medium pt-9 text-[28px];
229
234
  }
230
235
  }
231
236
 
@@ -63,7 +63,6 @@
63
63
  "datahub.news.contact.title": "Ein spezielles Bedürfnis?",
64
64
  "datahub.news.feed": "Nachrichtenfeed",
65
65
  "datahub.news.figures": "Indikatoren",
66
- "datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
67
66
  "datahub.search.back": "Zurück",
68
67
  "datahub.search.filter.all": "Alle",
69
68
  "datahub.search.filter.generatedByAPI": "Generiert durch eine API",
@@ -73,6 +72,7 @@
73
72
  "dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
74
73
  "dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
75
74
  "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
75
+ "dataset.error.restrictedAccess": "",
76
76
  "dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
77
77
  "dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
78
78
  "domain.contact.role.author": "",
@@ -233,6 +233,7 @@
233
233
  "editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
234
234
  "editor.record.loadError.closeMessage": "Verstanden",
235
235
  "editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
236
+ "editor.record.lock.format": "",
236
237
  "editor.record.lock.reason": "",
237
238
  "editor.record.onlineResource.protocol.other": "",
238
239
  "editor.record.onlineResourceError.body": "",
@@ -292,7 +293,6 @@
292
293
  "input.image.dropFileLabel": "",
293
294
  "input.image.selectFileLabel": "",
294
295
  "input.image.uploadErrorLabel": "",
295
- "input.image.uploadErrorRetry": "",
296
296
  "input.image.uploadProgressCancel": "",
297
297
  "input.image.uploadProgressLabel": "",
298
298
  "language.ca": "Katalanisch",
@@ -332,6 +332,7 @@
332
332
  "map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
333
333
  "multiselect.filter.placeholder": "Suche",
334
334
  "nav.back": "Zurück",
335
+ "navbar.mobile.menuTitle": "Schnellzugriff",
335
336
  "next": "weiter",
336
337
  "ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
337
338
  "organisation.filter.placeholder": "Ergebnisse filtern",
@@ -358,6 +359,7 @@
358
359
  "record.card.metadata.contact": "",
359
360
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
360
361
  "record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
362
+ "record.kind.data": "",
361
363
  "record.kind.dataset": "",
362
364
  "record.kind.reuse": "",
363
365
  "record.kind.service": "",
@@ -394,6 +396,7 @@
394
396
  "record.metadata.api.form.zoneTitle": "",
395
397
  "record.metadata.api.form.zoneTooltip": "",
396
398
  "record.metadata.api.gpfdl": "",
399
+ "record.metadata.capabilities": "",
397
400
  "record.metadata.catalog": "Katalog",
398
401
  "record.metadata.contact": "Kontakt",
399
402
  "record.metadata.creation": "Erstellungsdatum",
@@ -430,13 +433,12 @@
430
433
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
431
434
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
432
435
  "record.metadata.related": "Ähnliche Datensätze",
433
- "record.metadata.related.contents": "Verwandte Inhalte",
436
+ "record.metadata.related.contents": "",
434
437
  "record.metadata.ressources.and.links": "Ressourcen und Links",
435
438
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
436
439
  "record.metadata.status": "Status",
437
440
  "record.metadata.status.notPublished": "",
438
441
  "record.metadata.status.published": "",
439
- "record.metadata.technical": "Technische Informationen",
440
442
  "record.metadata.temporalExtent": "Zeitlicher Umfang",
441
443
  "record.metadata.temporalExtent.fromDateToDate": "Von {start} bis {end}",
442
444
  "record.metadata.temporalExtent.sinceDate": "Seit {start}",
@@ -473,6 +475,7 @@
473
475
  "results.sortBy.popularity": "Beliebtheit",
474
476
  "results.sortBy.qualityScore": "Qualitätsbewertung",
475
477
  "results.sortBy.relevancy": "Relevanz",
478
+ "reuse.metadata.access": "",
476
479
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
477
480
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
478
481
  "search.error.organizationHasNoDataset": "",
@@ -522,6 +525,26 @@
522
525
  "search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
523
526
  "search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
524
527
  "search.filters.user": "Editor",
528
+ "service.metadata.capabilities": "",
529
+ "service.metadata.capabilities.abstract": "",
530
+ "service.metadata.capabilities.attribution": "",
531
+ "service.metadata.capabilities.availableCrs": "",
532
+ "service.metadata.capabilities.defaultCrs": "",
533
+ "service.metadata.capabilities.geometryName": "",
534
+ "service.metadata.capabilities.geometryType": "",
535
+ "service.metadata.capabilities.keywords": "",
536
+ "service.metadata.capabilities.name": "",
537
+ "service.metadata.capabilities.objectCount": "",
538
+ "service.metadata.capabilities.otherCrs": "",
539
+ "service.metadata.capabilities.outputFormats": "",
540
+ "service.metadata.capabilities.resourceLinks": "",
541
+ "service.metadata.capabilities.title": "",
542
+ "service.metadata.filter": "",
543
+ "service.metadata.filter.noLayers": "",
544
+ "service.metadata.other": "",
545
+ "service.metadata.question": "",
546
+ "service.metadata.search": "",
547
+ "service.metadata.spatialExtent": "",
525
548
  "share.tab.permalink": "Teilen",
526
549
  "share.tab.webComponent": "Integrieren",
527
550
  "table.loading.data": "Daten werden geladen...",
@@ -63,7 +63,6 @@
63
63
  "datahub.news.contact.title": "A specific need?",
64
64
  "datahub.news.feed": "News feed",
65
65
  "datahub.news.figures": "Indicators",
66
- "datahub.record.addToFavorites": "Add to favorites",
67
66
  "datahub.search.back": "Back",
68
67
  "datahub.search.filter.all": "All",
69
68
  "datahub.search.filter.generatedByAPI": "Generated by an API",
@@ -73,6 +72,7 @@
73
72
  "dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
74
73
  "dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
75
74
  "dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
75
+ "dataset.error.restrictedAccess": "Access to this resource is restricted",
76
76
  "dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
77
77
  "dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
78
78
  "domain.contact.role.author": "Author",
@@ -233,6 +233,7 @@
233
233
  "editor.record.loadError.body": "The dataset could not be loaded:",
234
234
  "editor.record.loadError.closeMessage": "Understood",
235
235
  "editor.record.loadError.title": "Error loading dataset",
236
+ "editor.record.lock.format": "Record with the format 'service' or 'reuse' are not editable",
236
237
  "editor.record.lock.reason": "You are not an editor of the allowed groups",
237
238
  "editor.record.onlineResource.protocol.other": "Other",
238
239
  "editor.record.onlineResourceError.body": "An error happened while adding the resource:",
@@ -292,7 +293,6 @@
292
293
  "input.image.dropFileLabel": "or drop it here",
293
294
  "input.image.selectFileLabel": "Select an image",
294
295
  "input.image.uploadErrorLabel": "The image could not be uploaded",
295
- "input.image.uploadErrorRetry": "Retry",
296
296
  "input.image.uploadProgressCancel": "Cancel",
297
297
  "input.image.uploadProgressLabel": "Upload in progress...",
298
298
  "language.ca": "Catalan",
@@ -332,6 +332,7 @@
332
332
  "map.wms.urlInput.hint": "Enter WMS service URL",
333
333
  "multiselect.filter.placeholder": "Search",
334
334
  "nav.back": "Back",
335
+ "navbar.mobile.menuTitle": "Quick access",
335
336
  "next": "Next",
336
337
  "ogc.unreachable.unknown": "The service could not be reached",
337
338
  "organisation.filter.placeholder": "Filter results",
@@ -358,7 +359,8 @@
358
359
  "record.card.metadata.contact": "Metadata Contact",
359
360
  "record.externalViewer.open": "Open in the external map viewer",
360
361
  "record.feature.limit": "Preview disabled due to too many elements",
361
- "record.kind.dataset": "Data",
362
+ "record.kind.data": "Data",
363
+ "record.kind.dataset": "Dataset",
362
364
  "record.kind.reuse": "Reuse",
363
365
  "record.kind.service": "Service",
364
366
  "record.metadata.about": "Description",
@@ -394,6 +396,7 @@
394
396
  "record.metadata.api.form.zoneTitle": "Zone",
395
397
  "record.metadata.api.form.zoneTooltip": "Dropdown for selecting a geographic zone",
396
398
  "record.metadata.api.gpfdl": "Data download",
399
+ "record.metadata.capabilities": "Service capabilities",
397
400
  "record.metadata.catalog": "Catalog",
398
401
  "record.metadata.contact": "Contact",
399
402
  "record.metadata.creation": "Date of creation",
@@ -430,13 +433,12 @@
430
433
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
431
434
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
432
435
  "record.metadata.related": "Related datasets",
433
- "record.metadata.related.contents": "Related contents",
436
+ "record.metadata.related.contents": "Related content",
434
437
  "record.metadata.ressources.and.links": "Resources and links",
435
438
  "record.metadata.sheet": "Original metadata",
436
439
  "record.metadata.status": "Status",
437
440
  "record.metadata.status.notPublished": "Not published",
438
441
  "record.metadata.status.published": "Published",
439
- "record.metadata.technical": "Technical information",
440
442
  "record.metadata.temporalExtent": "Temporal extent",
441
443
  "record.metadata.temporalExtent.fromDateToDate": "From { start } to { end }",
442
444
  "record.metadata.temporalExtent.sinceDate": "Since { start }",
@@ -473,6 +475,7 @@
473
475
  "results.sortBy.popularity": "Popularity",
474
476
  "results.sortBy.qualityScore": "Quality score",
475
477
  "results.sortBy.relevancy": "Relevancy",
478
+ "reuse.metadata.access": "Access the reuse",
476
479
  "search.autocomplete.error": "Suggestions could not be fetched:",
477
480
  "search.error.couldNotReachApi": "The API could not be reached",
478
481
  "search.error.organizationHasNoDataset": "This organization has no dataset yet.",
@@ -522,6 +525,26 @@
522
525
  "search.filters.useSpatialFilter": "Show datasets in the area of interest first",
523
526
  "search.filters.useSpatialFilterHelp": "When this is enabled, datasets situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
524
527
  "search.filters.user": "Editor",
528
+ "service.metadata.capabilities": "Technical information",
529
+ "service.metadata.capabilities.abstract": "Abstract",
530
+ "service.metadata.capabilities.attribution": "Attribution",
531
+ "service.metadata.capabilities.availableCrs": "Available CRS",
532
+ "service.metadata.capabilities.defaultCrs": "Default CRS",
533
+ "service.metadata.capabilities.geometryName": "Geometry name",
534
+ "service.metadata.capabilities.geometryType": "Geometry type",
535
+ "service.metadata.capabilities.keywords": "Keywords",
536
+ "service.metadata.capabilities.name": "Name",
537
+ "service.metadata.capabilities.objectCount": "Object count",
538
+ "service.metadata.capabilities.otherCrs": "Other CRS",
539
+ "service.metadata.capabilities.outputFormats": "Output formats",
540
+ "service.metadata.capabilities.resourceLinks": "Resource links",
541
+ "service.metadata.capabilities.title": "Title",
542
+ "service.metadata.filter": "Layers will be filtered by title and abstract",
543
+ "service.metadata.filter.noLayers": "No layer matches your search",
544
+ "service.metadata.other": "Other information",
545
+ "service.metadata.question": "Ask a question",
546
+ "service.metadata.search": "Search through the layer list",
547
+ "service.metadata.spatialExtent": "Spatial extent",
525
548
  "share.tab.permalink": "Share",
526
549
  "share.tab.webComponent": "Integrate",
527
550
  "table.loading.data": "Loading data...",