geonetwork-ui 2.5.0-dev.50bf7a85a → 2.5.0-dev.59720aa72

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 (240) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -17
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +25 -9
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  8. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +8 -8
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
  10. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  13. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +4 -4
  14. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -11
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  19. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  20. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  21. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  22. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  23. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  24. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  26. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  29. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  30. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
  31. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  32. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
  33. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +7 -8
  34. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  35. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  36. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +37 -2
  37. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  38. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +2 -7
  39. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  40. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  41. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  42. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  43. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  44. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  45. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  46. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  47. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  48. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  49. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  50. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  51. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  52. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
  53. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +13 -9
  54. package/esm2022/translations/de.json +4 -76
  55. package/esm2022/translations/en.json +4 -76
  56. package/esm2022/translations/es.json +3 -75
  57. package/esm2022/translations/fr.json +16 -88
  58. package/esm2022/translations/it.json +21 -92
  59. package/esm2022/translations/nl.json +3 -75
  60. package/esm2022/translations/pt.json +3 -75
  61. package/fesm2022/geonetwork-ui.mjs +414 -886
  62. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  63. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  64. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  65. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  66. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
  67. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  68. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  69. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  70. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  71. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  72. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  73. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  74. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  75. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  76. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  77. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  78. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
  79. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  80. package/libs/feature/editor/src/index.d.ts +1 -0
  81. package/libs/feature/editor/src/index.d.ts.map +1 -1
  82. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
  83. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  84. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  85. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  86. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  87. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  88. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  89. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  90. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  91. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  92. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  93. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  94. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  95. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  96. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  97. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  98. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  99. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  100. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  101. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  102. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  103. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  104. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  105. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  106. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  107. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
  108. package/libs/ui/inputs/src/index.d.ts +0 -1
  109. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  110. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
  111. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  112. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  113. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  114. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -3
  115. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  116. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  117. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  118. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  119. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  120. package/libs/ui/widgets/src/index.d.ts +0 -1
  121. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  122. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  123. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  124. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  125. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  126. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  127. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  128. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  129. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  130. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  131. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  132. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  133. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  134. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  135. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  136. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  137. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  138. package/package.json +1 -1
  139. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  140. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  141. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +22 -16
  142. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +44 -13
  143. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  144. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  145. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
  146. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  147. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
  148. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
  149. package/src/libs/feature/editor/src/index.ts +1 -0
  150. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  151. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  152. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
  153. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -10
  154. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  155. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  156. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  157. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  158. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  159. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  160. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  161. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  162. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  163. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  164. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  165. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  166. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  167. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  168. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  169. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  170. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  171. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
  172. package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +8 -8
  173. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +4 -6
  174. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  175. package/src/libs/ui/inputs/src/index.ts +0 -1
  176. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +42 -0
  177. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  178. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +1 -7
  179. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  180. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  181. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  182. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  183. package/src/libs/ui/widgets/src/index.ts +0 -1
  184. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  185. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  186. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  187. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  188. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  189. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  190. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  191. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  192. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  193. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  194. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
  195. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  196. package/translations/de.json +4 -76
  197. package/translations/en.json +4 -76
  198. package/translations/es.json +3 -75
  199. package/translations/fr.json +16 -88
  200. package/translations/it.json +21 -92
  201. package/translations/nl.json +3 -75
  202. package/translations/pt.json +3 -75
  203. package/translations/sk.json +3 -75
  204. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  205. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  206. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  207. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  208. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  209. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  210. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  211. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  212. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  213. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  214. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  215. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  216. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  217. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  218. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  219. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  220. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  221. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  222. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  223. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  224. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  225. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  226. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  227. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  228. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  229. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  230. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  231. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  232. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  233. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  234. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  235. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  236. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  237. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  238. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  239. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  240. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -6,6 +6,7 @@
6
6
  >
7
7
  <ul class="flex flex-col gap-2 w-full">
8
8
  <gn-ui-button
9
+ *ngIf="!isDraftPage"
9
10
  type="light"
10
11
  extraClass="flex flex-row items-center gap-2 w-full justify-start"
11
12
  (buttonClick)="duplicate.emit()"
@@ -23,7 +24,10 @@
23
24
  (buttonClick)="displayDeleteMenu()"
24
25
  [disabled]="!canDelete"
25
26
  data-test="record-menu-delete-button"
26
- ><span translate>record.action.delete</span></gn-ui-button
27
+ ><span *ngIf="!isDraftPage" translate>record.action.delete</span>
28
+ <span *ngIf="isDraftPage" translate
29
+ >record.action.rollback</span
30
+ ></gn-ui-button
27
31
  >
28
32
  </ul>
29
33
  </div>
@@ -60,4 +64,36 @@
60
64
  </div>
61
65
  </div>
62
66
  </ng-container>
67
+ <ng-container *ngSwitchCase="'rollbackMenu'">
68
+ <div
69
+ data-test="rollbackMenuSection"
70
+ class="w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl"
71
+ >
72
+ <span class="text-lg font-bold text-center">{{
73
+ 'editor.record.undo.confirmation.title' | translate
74
+ }}</span>
75
+ <span class="text-center">{{
76
+ 'editor.record.undo.confirmation.message' | translate
77
+ }}</span>
78
+ <div class="flex flex-row gap-8 justify-center">
79
+ <gn-ui-button
80
+ (buttonClick)="rollback.emit()"
81
+ cdkFocusInitial
82
+ type="primary"
83
+ data-cy="confirm-button"
84
+ [style.--gn-ui-button-width]="'120px'"
85
+ >{{
86
+ 'editor.record.undo.confirmation.confirmText' | translate
87
+ }}</gn-ui-button
88
+ >
89
+ <gn-ui-button
90
+ [style.--gn-ui-button-width]="'120px'"
91
+ (buttonClick)="closeActionMenu.emit()"
92
+ >{{
93
+ 'editor.record.undo.confirmation.cancelText' | translate
94
+ }}</gn-ui-button
95
+ >
96
+ </div>
97
+ </div>
98
+ </ng-container>
63
99
  </ng-container>
@@ -13,7 +13,7 @@ import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elemen
13
13
  import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
15
 
16
- type ActionMenuPage = 'mainMenu' | 'deleteMenu'
16
+ type ActionMenuPage = 'mainMenu' | 'deleteMenu' | 'rollbackMenu'
17
17
 
18
18
  @Component({
19
19
  selector: 'gn-ui-action-menu',
@@ -32,9 +32,11 @@ type ActionMenuPage = 'mainMenu' | 'deleteMenu'
32
32
  export class ActionMenuComponent {
33
33
  @Input() canDuplicate: boolean
34
34
  @Input() canDelete: boolean
35
+ @Input() isDraftPage: boolean
35
36
  @Output() duplicate = new EventEmitter<void>()
36
37
  @Output() delete = new EventEmitter<void>()
37
38
  @Output() closeActionMenu = new EventEmitter<void>()
39
+ @Output() rollback = new EventEmitter<void>()
38
40
 
39
41
  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger
40
42
 
@@ -55,7 +57,11 @@ export class ActionMenuComponent {
55
57
  }
56
58
 
57
59
  displayDeleteMenu() {
58
- this.sectionDisplayed = 'deleteMenu'
60
+ if (this.isDraftPage) {
61
+ this.sectionDisplayed = 'rollbackMenu'
62
+ } else {
63
+ this.sectionDisplayed = 'deleteMenu'
64
+ }
59
65
  this.cdr.markForCheck()
60
66
  }
61
67
  }
@@ -162,9 +162,11 @@
162
162
  <gn-ui-action-menu
163
163
  [canDuplicate]="canDuplicate(item) && !isDuplicating"
164
164
  [canDelete]="canDelete(item)"
165
+ [isDraftPage]="isDraftPage"
165
166
  (duplicate)="handleDuplicate(item)"
166
167
  (delete)="handleDelete(item)"
167
168
  (closeActionMenu)="closeActionMenu()"
169
+ (rollback)="handleRollback(item)"
168
170
  >
169
171
  </gn-ui-action-menu>
170
172
  </ng-template>
@@ -74,6 +74,7 @@ export class ResultsTableComponent {
74
74
  @Output() recordClick = new EventEmitter<CatalogRecord>()
75
75
  @Output() duplicateRecord = new EventEmitter<CatalogRecord>()
76
76
  @Output() deleteRecord = new EventEmitter<CatalogRecord>()
77
+ @Output() rollbackDraft = new EventEmitter<CatalogRecord>()
77
78
  @Output() recordsSelectedChange = new EventEmitter<
78
79
  [CatalogRecord[], boolean]
79
80
  >()
@@ -186,6 +187,11 @@ export class ResultsTableComponent {
186
187
  this.closeActionMenu()
187
188
  }
188
189
 
190
+ handleRollback(item: unknown) {
191
+ this.rollbackDraft.emit(item as CatalogRecord)
192
+ this.closeActionMenu()
193
+ }
194
+
189
195
  setSortBy(col: string, order: 'asc' | 'desc') {
190
196
  this.sortByChange.emit([col, order])
191
197
  }
@@ -5,4 +5,3 @@ export * from './lib/loading-mask/loading-mask.component'
5
5
  export * from './lib/color-scale/color-scale.component'
6
6
  export * from './lib/popup-alert/popup-alert.component'
7
7
  export * from './lib/spinning-loader/spinning-loader.component'
8
- export * from './lib/step-bar/step-bar.component'
@@ -3,14 +3,13 @@ import { UtilSharedModule } from '../../../../../libs/util/shared/src'
3
3
  import { TranslateModule } from '@ngx-translate/core'
4
4
  import { NgxDropzoneModule } from 'ngx-dropzone'
5
5
  import { ColorScaleComponent } from './color-scale/color-scale.component'
6
- import { StepBarComponent } from './step-bar/step-bar.component'
7
6
  import { TagInputModule } from 'ngx-chips'
8
7
  import { FormsModule, ReactiveFormsModule } from '@angular/forms'
9
8
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'
10
9
  import { CommonModule } from '@angular/common'
11
10
 
12
11
  @NgModule({
13
- declarations: [ColorScaleComponent, StepBarComponent],
12
+ declarations: [ColorScaleComponent],
14
13
  imports: [
15
14
  CommonModule,
16
15
  TranslateModule.forChild(),
@@ -21,6 +20,6 @@ import { CommonModule } from '@angular/common'
21
20
  UtilSharedModule,
22
21
  MatProgressSpinnerModule,
23
22
  ],
24
- exports: [StepBarComponent],
23
+ exports: [],
25
24
  })
26
25
  export class UiWidgetsModule {}
@@ -17,10 +17,17 @@ export async function openDataset(
17
17
  namespace?: string
18
18
  wfsVersion?: WfsVersion
19
19
  wfsFeatureType?: string
20
- }
20
+ },
21
+ cacheActive?: boolean
21
22
  ): Promise<BaseReader> {
22
23
  const fileType = await inferDatasetType(url, typeHint)
23
- let reader: BaseReader
24
+ let reader:
25
+ | CsvReader
26
+ | JsonReader
27
+ | GeojsonReader
28
+ | ExcelReader
29
+ | GmlReader
30
+ | WfsReader
24
31
  try {
25
32
  switch (fileType) {
26
33
  case 'csv':
@@ -42,6 +49,7 @@ export async function openDataset(
42
49
  reader = await WfsReader.createReader(url, options.wfsFeatureType)
43
50
  break
44
51
  }
52
+ reader.setCacheActive(cacheActive)
45
53
  reader.load()
46
54
  return reader
47
55
  } catch (e: any) {
@@ -61,9 +69,10 @@ export async function openDataset(
61
69
  export async function readDataset(
62
70
  url: string,
63
71
  typeHint?: SupportedType,
64
- options?: any
72
+ options?: any,
73
+ cacheActive = true
65
74
  ): Promise<DataItem[]> {
66
- const reader = await openDataset(url, typeHint, options)
75
+ const reader = await openDataset(url, typeHint, options, cacheActive)
67
76
  try {
68
77
  return await reader.read()
69
78
  } catch (e: any) {
@@ -0,0 +1,14 @@
1
+ import { BaseReader } from './base'
2
+
3
+ export abstract class BaseCacheReader extends BaseReader {
4
+ constructor(
5
+ protected url: string,
6
+ protected cacheActive = true
7
+ ) {
8
+ super(url)
9
+ }
10
+
11
+ setCacheActive(value: boolean) {
12
+ this.cacheActive = value
13
+ }
14
+ }
@@ -2,13 +2,14 @@ import { BaseReader } from './base'
2
2
  import { DataItem, DatasetInfo, PropertyInfo } from '../model'
3
3
  import { getJsonDataItemsProxy, jsonToGeojsonFeature } from '../utils'
4
4
  import { generateSqlQuery } from '../sql-utils'
5
+ import { BaseCacheReader } from './base-cache'
5
6
 
6
7
  type ParseResult = {
7
8
  items: DataItem[]
8
9
  properties: PropertyInfo[]
9
10
  }
10
11
 
11
- export class BaseFileReader extends BaseReader {
12
+ export class BaseFileReader extends BaseCacheReader {
12
13
  private parseResult_: Promise<ParseResult>
13
14
 
14
15
  protected getData(): Promise<ParseResult> {
@@ -11,8 +11,8 @@ import {
11
11
 
12
12
  export class BaseReader {
13
13
  protected selected: FieldName[] = null
14
- protected groupedBy: FieldGroupBy[] = null
15
- protected aggregations: FieldAggregation[] = null
14
+ public groupedBy: FieldGroupBy[] = null
15
+ public aggregations: FieldAggregation[] = null
16
16
  protected filter: FieldFilter = null
17
17
  protected sort: FieldSort[] = null
18
18
  protected startIndex: number = null
@@ -47,6 +47,6 @@ export function parseCsv(text: string): {
47
47
 
48
48
  export class CsvReader extends BaseFileReader {
49
49
  getData() {
50
- return fetchDataAsText(this.url).then(parseCsv)
50
+ return fetchDataAsText(this.url, this.cacheActive).then(parseCsv)
51
51
  }
52
52
  }
@@ -28,6 +28,6 @@ export function parseExcel(buffer: ArrayBuffer): Promise<{
28
28
 
29
29
  export class ExcelReader extends BaseFileReader {
30
30
  getData() {
31
- return fetchDataAsArrayBuffer(this.url).then(parseExcel)
31
+ return fetchDataAsArrayBuffer(this.url, this.cacheActive).then(parseExcel)
32
32
  }
33
33
  }
@@ -24,6 +24,6 @@ export function parseGeojson(text: string): {
24
24
 
25
25
  export class GeojsonReader extends BaseFileReader {
26
26
  getData() {
27
- return fetchDataAsText(this.url).then(parseGeojson)
27
+ return fetchDataAsText(this.url, this.cacheActive).then(parseGeojson)
28
28
  }
29
29
  }
@@ -37,17 +37,17 @@ export function parseGml(
37
37
  }
38
38
 
39
39
  export class GmlReader extends BaseFileReader {
40
- namespace: string
41
- version: WfsVersion
42
-
43
- constructor(url, namespace, version) {
40
+ constructor(
41
+ protected url: string,
42
+ protected namespace: string,
43
+ protected version: WfsVersion,
44
+ protected cacheActive = true
45
+ ) {
44
46
  super(url)
45
- this.namespace = namespace
46
- this.version = version
47
47
  }
48
48
 
49
49
  protected getData() {
50
- return fetchDataAsText(this.url).then((text) =>
50
+ return fetchDataAsText(this.url, this.cacheActive).then((text) =>
51
51
  parseGml(text, this.namespace, this.version)
52
52
  )
53
53
  }
@@ -23,6 +23,6 @@ export function parseJson(text: string): {
23
23
 
24
24
  export class JsonReader extends BaseFileReader {
25
25
  getData() {
26
- return fetchDataAsText(this.url).then(parseJson)
26
+ return fetchDataAsText(this.url, this.cacheActive).then(parseJson)
27
27
  }
28
28
  }
@@ -1,18 +1,24 @@
1
1
  import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
2
2
  import { DataItem, DatasetInfo, PropertyInfo } from '../model'
3
3
  import { fetchDataAsText } from '../utils'
4
- import { BaseReader } from './base'
5
4
  import { GmlReader, parseGml } from './gml'
6
5
  import { GeojsonReader, parseGeojson } from './geojson'
7
- import { marker } from '@biesbjerg/ngx-translate-extract-marker'
6
+ import { BaseCacheReader } from './base-cache'
7
+ import { getJsonDataItemsProxy, jsonToGeojsonFeature } from '../utils'
8
+ import { generateSqlQuery } from '../sql-utils'
8
9
 
9
- export class WfsReader extends BaseReader {
10
+ export class WfsReader extends BaseCacheReader {
10
11
  endpoint: WfsEndpoint
11
12
  featureTypeName: string
12
13
  version: WfsVersion
13
14
 
14
- constructor(url: string, wfsEndpoint: WfsEndpoint, featureTypeName: string) {
15
- super(url)
15
+ constructor(
16
+ url: string,
17
+ wfsEndpoint: WfsEndpoint,
18
+ featureTypeName: string,
19
+ cacheActive?: boolean
20
+ ) {
21
+ super(url, cacheActive)
16
22
  this.endpoint = wfsEndpoint
17
23
  this.featureTypeName = featureTypeName
18
24
  this.version = this.endpoint.getVersion()
@@ -90,11 +96,10 @@ export class WfsReader extends BaseReader {
90
96
  }
91
97
  }
92
98
 
93
- protected getData() {
94
- if (this.aggregations || this.groupedBy) {
95
- throw new Error(marker('wfs.aggregations.notsupported'))
99
+ public async getData(aggregation?, groupedBy?) {
100
+ if (aggregation || groupedBy) {
101
+ return { items: await this.getQueryData() }
96
102
  }
97
-
98
103
  const asJson = this.endpoint.supportsJson(this.featureTypeName)
99
104
  const attributes = this.selected ?? undefined
100
105
  let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
@@ -117,18 +122,36 @@ export class WfsReader extends BaseReader {
117
122
  url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`
118
123
  }
119
124
 
120
- return fetchDataAsText(url).then((text) =>
125
+ return fetchDataAsText(url, this.cacheActive).then((text) =>
121
126
  asJson
122
127
  ? parseGeojson(text)
123
128
  : parseGml(text, this.featureTypeName, this.version)
124
129
  )
125
130
  }
126
131
 
132
+ public async getQueryData() {
133
+ const items = (await this.getData()).items
134
+ const jsonItems = getJsonDataItemsProxy(items)
135
+ const query = generateSqlQuery(
136
+ this.selected,
137
+ this.filter,
138
+ this.sort,
139
+ this.startIndex,
140
+ this.count,
141
+ this.groupedBy,
142
+ this.aggregations
143
+ )
144
+ const result = await import('alasql').then((module) =>
145
+ module.default(query, [jsonItems])
146
+ )
147
+ return result.map(jsonToGeojsonFeature)
148
+ }
149
+
127
150
  load() {
128
151
  // Nothing to load for Wfs
129
152
  }
130
153
 
131
154
  async read(): Promise<DataItem[]> {
132
- return (await this.getData()).items
155
+ return (await this.getData(this.aggregations, this.groupedBy)).items
133
156
  }
134
157
  }
@@ -51,39 +51,45 @@ export function fetchHeaders(url: string): Promise<DatasetHeaders> {
51
51
  })
52
52
  }
53
53
 
54
- export function fetchDataAsText(url: string): Promise<string> {
55
- return useCache(
56
- () =>
57
- sharedFetch(url)
58
- .catch((error) => {
59
- throw FetchError.corsOrNetwork(error.message)
60
- })
61
- .then(async (response) => {
62
- if (!response.ok) {
63
- throw FetchError.http(response.status, await response.text())
64
- }
65
- return response.text()
66
- }),
67
- url,
68
- 'asText'
69
- )
54
+ export function fetchDataAsText(
55
+ url: string,
56
+ cacheActive: boolean
57
+ ): Promise<string> {
58
+ const fetchFactory = () =>
59
+ sharedFetch(url)
60
+ .catch((error) => {
61
+ throw FetchError.corsOrNetwork(error.message)
62
+ })
63
+ .then(async (response) => {
64
+ if (!response.ok) {
65
+ const clonedResponse = response.clone()
66
+ throw FetchError.http(response.status, await clonedResponse.text())
67
+ }
68
+ const clonedResponse = response.clone()
69
+ return clonedResponse.text()
70
+ })
71
+
72
+ return cacheActive ? useCache(fetchFactory, url, 'asText') : fetchFactory()
70
73
  }
71
- export function fetchDataAsArrayBuffer(url: string): Promise<ArrayBuffer> {
72
- return useCache(
73
- () =>
74
- sharedFetch(url)
75
- .catch((error) => {
76
- throw FetchError.corsOrNetwork(error.message)
77
- })
78
- .then(async (response) => {
79
- if (!response.ok) {
80
- throw FetchError.http(response.status, await response.text())
81
- }
82
- // convert to a numeric array so that we can store the response in cache
83
- return Array.from(new Uint8Array(await response.arrayBuffer()))
84
- }),
85
- url,
86
- 'asArrayBuffer'
74
+ export function fetchDataAsArrayBuffer(
75
+ url: string,
76
+ cacheActive: boolean
77
+ ): Promise<ArrayBuffer> {
78
+ const fetchFactory = () =>
79
+ sharedFetch(url)
80
+ .catch((error) => {
81
+ throw FetchError.corsOrNetwork(error.message)
82
+ })
83
+ .then(async (response) => {
84
+ if (!response.ok) {
85
+ throw FetchError.http(response.status, await response.text())
86
+ }
87
+ // convert to a numeric array so that we can store the response in cache
88
+ return Array.from(new Uint8Array(await response.arrayBuffer()))
89
+ })
90
+
91
+ return (
92
+ cacheActive ? useCache(fetchFactory, url, 'asArrayBuffer') : fetchFactory()
87
93
  ).then((array) => {
88
94
  return new Uint8Array(array).buffer
89
95
  })
@@ -20,8 +20,6 @@
20
20
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
21
21
  "chart.type.pie": "Kreisdiagramm",
22
22
  "dashboard.catalog.allRecords": "Metadatenkatalog",
23
- "dashboard.catalog.contacts": "Kontakte",
24
- "dashboard.catalog.thesaurus": "Thesaurus",
25
23
  "dashboard.createRecord": "Neuer Eintrag",
26
24
  "dashboard.importRecord": "",
27
25
  "dashboard.importRecord.importExternal": "",
@@ -34,29 +32,10 @@
34
32
  "dashboard.records.myDraft": "Meine Entwürfe",
35
33
  "dashboard.records.myRecords": "Meine Datensätze",
36
34
  "dashboard.records.search": "Suche nach \"{searchText}\"",
37
- "dashboard.records.templates": "Vorlagen",
38
35
  "dashboard.records.userDetail": "Name",
39
36
  "dashboard.records.userEmail": "E-Mail",
40
37
  "dashboard.records.username": "Benutzername",
41
38
  "dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
42
- "datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
43
- "datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
44
- "datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
45
- "datafeeder.analysisProgressBar.subtitle": "Die Analyse kann einige Minuten dauern. Bitte warten Sie.",
46
- "datafeeder.analysisProgressBar.title": "Analyse in Bearbeitung",
47
- "datafeeder.datasetValidation.datasetInformation": "Der bereitgestellte Datensatz enthält {number} Elemente",
48
- "datafeeder.datasetValidation.submitButton": "OK, meine Daten sind korrekt",
49
- "datafeeder.datasetValidation.title": "Stellen Sie sicher, dass Ihre Daten korrekt sind",
50
- "datafeeder.datasetValidation.unknown": " - ",
51
- "datafeeder.datasetValidationCsv.explicitLineNumbers": "",
52
- "datafeeder.datasetValidationCsv.lineNumbers": "",
53
- "datafeeder.form.abstract": "Wie würden Sie Ihren Datensatz beschreiben?",
54
- "datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
55
- "datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
56
- "datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
57
- "datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
58
- "datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
59
- "datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
60
39
  "datafeeder.month.april": "April",
61
40
  "datafeeder.month.august": "August",
62
41
  "datafeeder.month.december": "Dezember",
@@ -69,59 +48,6 @@
69
48
  "datafeeder.month.november": "November",
70
49
  "datafeeder.month.october": "Oktober",
71
50
  "datafeeder.month.september": "September",
72
- "datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
73
- "datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
74
- "datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
75
- "datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
76
- "datafeeder.publish.upload": "Jetzt hochladen",
77
- "datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
78
- "datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
79
- "datafeeder.publishSuccess.mapViewer": "Kartenviewer",
80
- "datafeeder.publishSuccess.ogcFeature": "",
81
- "datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
82
- "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
83
- "datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
84
- "datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
85
- "datafeeder.summarizePage.previous": "Zurück",
86
- "datafeeder.summarizePage.submit": "Absenden",
87
- "datafeeder.summarizePage.title": "Sie sind fast fertig...",
88
- "datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
89
- "datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
90
- "datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
91
- "datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
92
- "datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
93
- "datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
94
- "datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
95
- "datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
96
- "datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
97
- "datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
98
- "datafeeder.upload.error.title.fileSize": "Die Dateigröße ist zu groß",
99
- "datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
100
- "datafeeder.upload.illustration.enrichment": "Anreicherung",
101
- "datafeeder.upload.illustration.import": "Import",
102
- "datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
103
- "datafeeder.upload.illustration.validation": "Validierung",
104
- "datafeeder.upload.illustration.verification": "Überprüfung",
105
- "datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
106
- "datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
107
- "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
108
- "datafeeder.upload.uploadButton": "Hochladen",
109
- "datafeeder.validation.csv.delimiter": "",
110
- "datafeeder.validation.csv.delimiter.comma": "",
111
- "datafeeder.validation.csv.delimiter.semicolon": "",
112
- "datafeeder.validation.csv.lat.field": "",
113
- "datafeeder.validation.csv.lng.field": "",
114
- "datafeeder.validation.csv.quote.double": "",
115
- "datafeeder.validation.csv.quote.none": "",
116
- "datafeeder.validation.csv.quote.simple": "",
117
- "datafeeder.validation.csv.quoteChar": "",
118
- "datafeeder.validation.encoding": "Codierung",
119
- "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
120
- "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
121
- "datafeeder.validation.projection": "Raumbezugssystem:",
122
- "datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
123
- "datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
124
- "datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
125
51
  "datafeeder.wizardSummarize.createdAt": "Erstellt am",
126
52
  "datafeeder.wizardSummarize.scale": "Maßstab",
127
53
  "datahub.header.datasets": "Datensätze",
@@ -425,9 +351,10 @@
425
351
  "record.action.download": "Herunterladen",
426
352
  "record.action.duplicate": "",
427
353
  "record.action.duplicating": "",
354
+ "record.action.rollback": "",
428
355
  "record.action.view": "Anzeigen",
429
356
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
430
- "record.feature.limit": "Die Ressource enthält mehr als {count} Features und kann hier nicht angezeigt werden.",
357
+ "record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
431
358
  "record.metadata.about": "Beschreibung",
432
359
  "record.metadata.api": "API",
433
360
  "record.metadata.api.form.closeButton": "Schließen",
@@ -547,6 +474,8 @@
547
474
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
548
475
  "search.field.any.placeholder": "Suche Datensätze ...",
549
476
  "search.field.sortBy": "Sortieren nach:",
477
+ "search.filters.availableServices.download": "",
478
+ "search.filters.availableServices.view": "",
550
479
  "search.filters.changeDate": "Letzte Aktualisierung",
551
480
  "search.filters.clear": "Zurücksetzen",
552
481
  "search.filters.contact": "Kontakte",
@@ -602,7 +531,6 @@
602
531
  "tooltip.url.open": "URL öffnen",
603
532
  "ui.readLess": "Weniger lesen",
604
533
  "ui.readMore": "Weiterlesen",
605
- "wfs.aggregations.notsupported": "",
606
534
  "wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
607
535
  "wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
608
536
  "wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",