geonetwork-ui 2.6.0-dev.3a78a5eaa → 2.6.0-dev.3e7617888

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 (346) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  7. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -10
  8. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  9. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  10. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -3
  11. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  12. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -1
  13. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -3
  14. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  15. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  17. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
  18. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +2 -4
  19. package/esm2022/libs/feature/record/src/index.mjs +1 -2
  20. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  21. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  22. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +45 -14
  23. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  24. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +8 -5
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -6
  26. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  27. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  28. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  29. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  30. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  31. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  32. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  33. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  34. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  35. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +26 -10
  36. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  37. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  38. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  39. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  40. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
  41. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
  42. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  43. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +163 -0
  44. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +51 -0
  45. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
  46. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  47. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  48. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  49. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  50. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
  51. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +161 -0
  52. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +22 -4
  53. package/esm2022/libs/ui/inputs/src/index.mjs +2 -2
  54. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  55. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  56. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  57. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  58. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +7 -2
  59. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  60. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  61. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  62. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  63. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +14 -3
  64. package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +5 -1
  65. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +79 -0
  66. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  67. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  68. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  69. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +5 -4
  70. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +11 -3
  71. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  72. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  73. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  74. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +6 -2
  75. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +4 -1
  76. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +30 -2
  77. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  78. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  79. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -1
  80. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +33 -24
  81. package/esm2022/translations/de.json +39 -4
  82. package/esm2022/translations/en.json +40 -5
  83. package/esm2022/translations/es.json +39 -4
  84. package/esm2022/translations/fr.json +41 -6
  85. package/esm2022/translations/it.json +39 -5
  86. package/esm2022/translations/nl.json +39 -4
  87. package/esm2022/translations/pt.json +39 -4
  88. package/fesm2022/geonetwork-ui.mjs +1674 -580
  89. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  90. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  91. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  92. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  93. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  94. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  95. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  96. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  97. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  98. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -2
  99. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  100. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  101. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  102. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -2
  103. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  104. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  105. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  106. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  107. 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
  108. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  109. package/libs/feature/record/src/index.d.ts +0 -1
  110. package/libs/feature/record/src/index.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  112. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  113. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  114. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  115. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  116. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  117. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +7 -2
  118. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  119. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  120. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +3 -1
  121. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  122. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  123. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  124. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  125. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  126. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  127. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  128. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  129. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  130. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  131. package/libs/feature/search/src/index.d.ts +1 -1
  132. package/libs/feature/search/src/index.d.ts.map +1 -1
  133. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  134. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  135. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  136. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  137. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  138. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  139. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  140. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  141. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  142. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  143. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  144. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  145. package/libs/ui/elements/src/index.d.ts +3 -0
  146. package/libs/ui/elements/src/index.d.ts.map +1 -1
  147. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
  148. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  149. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
  150. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  151. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +43 -0
  152. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
  153. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +11 -0
  154. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  155. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
  156. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  157. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  158. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  159. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  160. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +30 -0
  161. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  162. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +4 -1
  163. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  164. package/libs/ui/inputs/src/index.d.ts +1 -1
  165. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  166. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  167. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  168. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  169. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  170. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  171. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  172. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  173. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  174. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  175. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  176. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  177. package/libs/ui/map/src/index.d.ts +1 -0
  178. package/libs/ui/map/src/index.d.ts.map +1 -1
  179. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +4 -2
  180. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
  181. package/libs/ui/map/src/lib/components/map-legend/map-legend.component.d.ts.map +1 -1
  182. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  183. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  184. package/libs/ui/search/src/index.d.ts +1 -0
  185. package/libs/ui/search/src/index.d.ts.map +1 -1
  186. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  187. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  188. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  189. package/libs/ui/search/src/lib/ui-search.module.d.ts +21 -19
  190. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  191. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  192. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  193. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  194. package/libs/util/data-fetcher/src/lib/model.d.ts +3 -2
  195. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  196. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +1 -0
  197. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  198. package/libs/util/shared/src/index.d.ts +1 -0
  199. package/libs/util/shared/src/index.d.ts.map +1 -1
  200. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  201. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  202. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  203. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  204. package/libs/util/shared/src/lib/links/link-utils.d.ts +30 -23
  205. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  206. package/package.json +1 -1
  207. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  208. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  209. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  210. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  211. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  212. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  213. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  214. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
  215. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -2
  216. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  217. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -9
  218. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  219. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +6 -2
  220. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +26 -26
  221. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +2 -2
  222. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  223. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +1 -0
  224. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -0
  225. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -0
  226. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +10 -8
  227. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -0
  228. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  229. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  230. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  231. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  232. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -3
  233. package/src/libs/feature/record/src/index.ts +0 -1
  234. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  235. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  236. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
  237. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +41 -7
  238. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  239. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -3
  240. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -7
  241. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  242. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  243. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  244. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  245. package/src/libs/feature/search/src/index.ts +1 -1
  246. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -7
  247. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  248. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  249. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  250. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  251. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  252. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  253. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  254. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +24 -5
  255. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  256. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  257. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  258. package/src/libs/ui/elements/src/index.ts +3 -0
  259. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
  260. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
  261. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
  262. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
  263. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
  264. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.css +0 -0
  265. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +156 -0
  266. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +190 -0
  267. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  268. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +9 -0
  269. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +51 -0
  270. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
  271. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
  272. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
  273. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
  274. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  275. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +13 -4
  276. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  277. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +4 -2
  278. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
  279. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  280. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +96 -0
  281. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +183 -0
  282. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -0
  283. package/src/libs/ui/inputs/src/index.ts +1 -1
  284. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  285. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  286. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  287. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  288. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -5
  289. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  290. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  291. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  292. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
  293. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -7
  294. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  295. package/src/libs/ui/map/src/index.ts +1 -0
  296. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +14 -0
  297. package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +3 -0
  298. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  299. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  300. 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
  301. package/src/libs/ui/search/src/index.ts +1 -0
  302. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  303. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +24 -0
  304. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  305. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -4
  306. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +2 -1
  307. package/src/libs/ui/search/src/lib/ui-search.module.ts +5 -0
  308. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +4 -3
  309. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  310. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  311. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +3 -1
  312. package/src/libs/util/data-fetcher/src/lib/model.ts +11 -1
  313. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +29 -3
  314. package/src/libs/util/shared/src/index.ts +1 -0
  315. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  316. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +12 -3
  317. package/src/libs/util/shared/src/lib/links/link-utils.ts +50 -30
  318. package/tailwind.base.css +51 -13
  319. package/translations/de.json +39 -4
  320. package/translations/en.json +40 -5
  321. package/translations/es.json +39 -4
  322. package/translations/fr.json +41 -6
  323. package/translations/it.json +39 -5
  324. package/translations/nl.json +39 -4
  325. package/translations/pt.json +39 -4
  326. package/translations/sk.json +39 -4
  327. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  328. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  329. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  330. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  331. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  332. 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
  333. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  334. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  335. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  336. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  337. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  338. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  339. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  340. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  341. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  342. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  343. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  344. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  345. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  346. /package/src/libs/feature/{editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css → search/src/lib/results-hits/results-hits.container.component.css} +0 -0
@@ -0,0 +1,53 @@
1
+ import {
2
+ Component,
3
+ EventEmitter,
4
+ Input,
5
+ OnChanges,
6
+ SimpleChanges,
7
+ Output,
8
+ } from '@angular/core'
9
+ import { Choice } from '../../../../../../libs/ui/inputs/src'
10
+
11
+ @Component({
12
+ selector: 'gn-ui-results-hits-search-kind',
13
+ templateUrl: './results-hits-search-kind.component.html',
14
+ })
15
+ export class ResultsHitsSearchKindComponent implements OnChanges {
16
+ @Input() selected: string[] = []
17
+ @Input() choices: Choice[] = []
18
+ @Output() selectionChanged = new EventEmitter<string[]>()
19
+
20
+ availableChoices: Choice[] = []
21
+
22
+ ngOnChanges(changes: SimpleChanges) {
23
+ if (changes.choices && changes.choices.currentValue) {
24
+ this.availableChoices = this.buildFilterChoices(this.choices)
25
+ }
26
+ }
27
+
28
+ buildFilterChoices(availableValues: Choice[]) {
29
+ return [
30
+ ...[
31
+ {
32
+ label: 'all',
33
+ value: 'all',
34
+ },
35
+ ],
36
+ ...availableValues,
37
+ ]
38
+ }
39
+
40
+ onSelectedValues(values: string[]) {
41
+ const selectedValues = values.includes('all') ? [] : values
42
+
43
+ this.selectionChanged.emit(selectedValues)
44
+ }
45
+
46
+ isSelectedChoice(choiceValue: string) {
47
+ return this.selected.includes(choiceValue)
48
+ }
49
+
50
+ isAllChoice(choiceValue: string) {
51
+ return this.selected.length === 0 && choiceValue === 'all'
52
+ }
53
+ }
@@ -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) {
@@ -11,6 +11,7 @@ import { RecordPreviewRowComponent } from './record-preview-row/record-preview-r
11
11
  import { RecordPreviewTextComponent } from './record-preview-text/record-preview-text.component'
12
12
  import { RecordPreviewTitleComponent } from './record-preview-title/record-preview-title.component'
13
13
  import { ResultsHitsNumberComponent } from './results-hits-number/results-hits-number.component'
14
+ import { ResultsHitsSearchKindComponent } from './results-hits-search-kind/results-hits-search-kind.component'
14
15
  import {
15
16
  DEFAULT_RESULTS_LAYOUT_CONFIG,
16
17
  RESULTS_LAYOUT_CONFIG,
@@ -24,6 +25,7 @@ import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
24
25
  import {
25
26
  MetadataQualityComponent,
26
27
  UiElementsModule,
28
+ KindBadgeComponent,
27
29
  } from '../../../../../libs/ui/elements/src'
28
30
  import { RecordPreviewFeedComponent } from './record-preview-feed/record-preview-feed.component'
29
31
  import { CommonModule } from '@angular/common'
@@ -48,6 +50,7 @@ import { matFace } from '@ng-icons/material-icons/baseline'
48
50
  RecordMetricComponent,
49
51
  ResultsListComponent,
50
52
  ResultsHitsNumberComponent,
53
+ ResultsHitsSearchKindComponent,
51
54
  ResultsListItemComponent,
52
55
  RecordPreviewFeedComponent,
53
56
  RecordPreviewRowComponent,
@@ -74,6 +77,7 @@ import { matFace } from '@ng-icons/material-icons/baseline'
74
77
  matFace,
75
78
  matHomeWorkOutline,
76
79
  }),
80
+ KindBadgeComponent,
77
81
  MetadataQualityComponent,
78
82
  ],
79
83
  exports: [
@@ -86,6 +90,7 @@ import { matFace } from '@ng-icons/material-icons/baseline'
86
90
  FacetsModule,
87
91
  RecordPreviewComponent,
88
92
  ResultsHitsNumberComponent,
93
+ ResultsHitsSearchKindComponent,
89
94
  RecordPreviewFeedComponent,
90
95
  RecordPreviewRowComponent,
91
96
  ],
@@ -3,16 +3,17 @@
3
3
  <ng-container *ngSwitchCase="'light'">
4
4
  <div class="flex items-center relative">
5
5
  <div
6
- class="flex-shrink-0 {{ color.text }} text-xs font-medium mr-2
6
+ class="flex-shrink-0 {{ color.text }} font-medium mr-2
7
7
  text-opacity-100 !text-slate-800"
8
+ data-cy="progressPercentage"
8
9
  >
9
10
  {{ progress }}%
10
11
  </div>
11
- <div class="flex-grow h-[6px] w-full {{ color.outerBar }} rounded-full">
12
+ <div class="flex-grow h-[4px] w-[52px] {{ color.outerBar }} rounded-full">
12
13
  <div
13
14
  [style.width.%]="progress"
14
15
  class="{{ color.innerBar }} transition-width duration-500
15
- ease-in-out rounded-full shadow-sm h-full"
16
+ ease-in-out rounded-full shadow-sm w-[52px] h-[4px]"
16
17
  ></div>
17
18
  </div>
18
19
  </div>
@@ -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]
@@ -53,7 +53,9 @@ export async function openDataset(
53
53
  reader.load()
54
54
  return reader
55
55
  } catch (e: any) {
56
- throw FetchError.parsingFailed(e.message)
56
+ //WfsReader may already raise a FetchError
57
+ if (e instanceof FetchError) throw e
58
+ else throw FetchError.parsingFailed(e.message)
57
59
  }
58
60
  }
59
61
 
@@ -7,7 +7,14 @@ export class FetchError {
7
7
  stack = null
8
8
 
9
9
  constructor(
10
- public type: 'http' | 'network' | 'parse' | 'unsupportedType' | 'unknown',
10
+ public type:
11
+ | 'http'
12
+ | 'forbidden'
13
+ | 'network'
14
+ | 'parse'
15
+ | 'unsupportedType'
16
+ | 'unknown',
17
+
11
18
  public info: string,
12
19
  public httpStatus = 0
13
20
  ) {
@@ -20,6 +27,9 @@ ${body}`
20
27
  : `${code}`
21
28
  return new FetchError('http', info, code)
22
29
  }
30
+ static forbidden(code: number) {
31
+ return new FetchError('forbidden', '', code)
32
+ }
23
33
  static corsOrNetwork(message: string) {
24
34
  return new FetchError('network', message, 0)
25
35
  }
@@ -1,5 +1,5 @@
1
- import { WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
2
- import { DataItem, DatasetInfo, PropertyInfo } from '../model'
1
+ import { EndpointError, WfsEndpoint, WfsVersion } from '@camptocamp/ogc-client'
2
+ import { DataItem, DatasetInfo, FetchError, PropertyInfo } from '../model'
3
3
  import { fetchDataAsText } from '../utils'
4
4
  import { GmlReader, parseGml } from './gml'
5
5
  import { GeojsonReader, parseGeojson } from './geojson'
@@ -7,6 +7,32 @@ import { BaseCacheReader } from './base-cache'
7
7
  import { getJsonDataItemsProxy, jsonToGeojsonFeature } from '../utils'
8
8
  import { generateSqlQuery } from '../sql-utils'
9
9
 
10
+ export async function getWfsEndpoint(wfsUrl: string): Promise<WfsEndpoint> {
11
+ try {
12
+ return await new WfsEndpoint(wfsUrl).isReady()
13
+ } catch (e) {
14
+ if (
15
+ e instanceof Error &&
16
+ 'isCrossOriginRelated' in e &&
17
+ 'httpStatus' in e
18
+ ) {
19
+ const error = e as EndpointError
20
+ if (error.isCrossOriginRelated === true) {
21
+ throw new Error(`wfs.unreachable.cors`)
22
+ }
23
+ if (error.httpStatus === 401 || error.httpStatus === 403) {
24
+ throw FetchError.forbidden(error.httpStatus)
25
+ } else if (error.httpStatus === 400 || error.httpStatus > 403) {
26
+ throw FetchError.http(error.httpStatus)
27
+ } else {
28
+ throw FetchError.unknownType()
29
+ }
30
+ } else {
31
+ throw FetchError.unknownType()
32
+ }
33
+ }
34
+ }
35
+
10
36
  export class WfsReader extends BaseCacheReader {
11
37
  endpoint: WfsEndpoint
12
38
  featureTypeName: string
@@ -53,7 +79,7 @@ export class WfsReader extends BaseCacheReader {
53
79
  }
54
80
 
55
81
  static async createReader(wfsUrlEndpoint: string, featureTypeName?: string) {
56
- const wfsEndpoint = await new WfsEndpoint(wfsUrlEndpoint).isReady()
82
+ const wfsEndpoint = await getWfsEndpoint(wfsUrlEndpoint)
57
83
  const featureTypes = wfsEndpoint.getFeatureTypes()
58
84
  const featureType = wfsEndpoint.getFeatureTypeSummary(
59
85
  featureTypes.length === 1 && !featureTypeName
@@ -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 {
@@ -16,7 +17,7 @@ export const FORMATS = {
16
17
  csv: {
17
18
  extensions: ['csv'],
18
19
  priority: 1,
19
- color: '#a6d6c0',
20
+ color: '#F6A924',
20
21
  mimeTypes: ['text/csv', 'application/csv'],
21
22
  },
22
23
  excel: {
@@ -28,7 +29,7 @@ export const FORMATS = {
28
29
  'openxmlformats-officedocument',
29
30
  ],
30
31
  priority: 2,
31
- color: '#acc5e4',
32
+ color: '#FFDE10',
32
33
  mimeTypes: [
33
34
  'application/vnd.ms-excel',
34
35
  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
@@ -37,31 +38,31 @@ export const FORMATS = {
37
38
  geojson: {
38
39
  extensions: ['geojson'],
39
40
  priority: 3,
40
- color: '#b3cde8',
41
+ color: '#293C6F',
41
42
  mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
42
43
  },
43
44
  json: {
44
45
  extensions: ['json'],
45
46
  priority: 3,
46
- color: '#b3cde8',
47
+ color: '#84D0F0',
47
48
  mimeTypes: ['application/json'],
48
49
  },
49
50
  shp: {
50
51
  extensions: ['shp', 'shape', 'zipped-shapefile'],
51
52
  priority: 4,
52
- color: '#b2d8ba',
53
+ color: '#009036',
53
54
  mimeTypes: ['x-gis/x-shapefile'],
54
55
  },
55
56
  gml: {
56
57
  extensions: ['gml'],
57
58
  priority: 5,
58
- color: '#e3b3e5',
59
+ color: '#E75113',
59
60
  mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
60
61
  },
61
62
  kml: {
62
63
  extensions: ['kml', 'kmz'],
63
64
  priority: 6,
64
- color: '#c1e6a0',
65
+ color: '#F4B5D0',
65
66
  mimeTypes: [
66
67
  'application/vnd.google-earth.kml+xml',
67
68
  'application/vnd.google-earth.kmz',
@@ -70,55 +71,55 @@ export const FORMATS = {
70
71
  gpkg: {
71
72
  extensions: ['gpkg', 'geopackage'],
72
73
  priority: 7,
73
- color: '#f7cce6',
74
+ color: '#7D5D9F',
74
75
  mimeTypes: ['application/geopackage+sqlite3'],
75
76
  },
76
77
  zip: {
77
78
  extensions: ['zip', 'tar.gz'],
78
79
  priority: 8,
79
- color: '#ffe7a3',
80
+ color: '#B0CB52',
80
81
  mimeTypes: ['application/zip', 'application/x-zip'],
81
82
  },
82
83
  pdf: {
83
84
  extensions: ['pdf'],
84
85
  priority: 9,
85
- color: '#f5b2a3',
86
+ color: '#49579E',
86
87
  mimeTypes: ['application/pdf'],
87
88
  },
88
89
  jpg: {
89
90
  extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
90
91
  priority: 9,
91
- color: '#d1c1e9',
92
+ color: '#C4A98F',
92
93
  mimeTypes: ['image/jpg'],
93
94
  },
94
95
  svg: {
95
96
  extensions: ['svg'],
96
97
  priority: 10,
97
- color: '#f3c1c9',
98
+ color: '#EB6D82',
98
99
  mimeTypes: ['image/svg+xml'],
99
100
  },
100
101
  dxf: {
101
102
  extensions: ['dxf'],
102
103
  priority: 11,
103
- color: '#f6ceac',
104
+ color: '#DCCD00',
104
105
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
105
106
  },
106
107
  html: {
107
108
  extensions: ['html', 'htm'],
108
109
  priority: 12,
109
- color: '#FFF2CC',
110
+ color: '#C0C9B6',
110
111
  mimeTypes: ['text/html'],
111
112
  },
112
113
  fgb: {
113
114
  extensions: ['fgb', 'flatgeobuf'],
114
115
  priority: 13,
115
- color: '#ffe7a3',
116
+ color: '#A8111C',
116
117
  mimeTypes: ['application/flatgeobuf'],
117
118
  },
118
119
  jsonfg: {
119
120
  extensions: ['jsonfg', 'jsonfgc'],
120
121
  priority: 14,
121
- color: '#ffe7a3',
122
+ color: '#009EE0',
122
123
  mimeTypes: [
123
124
  'application/vnd.ogc.fg+json',
124
125
  'application/vnd.ogc.fg+json;compatibility=geojson',
@@ -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,13 +208,15 @@ 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 (
210
- ('name' in link && new RegExp(`[./]${format}`, 'i').test(link.name)) ||
215
+ ('name' in link &&
216
+ new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
211
217
  ('url' in link &&
212
- new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
218
+ new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
219
+ ('name' in link && link.name.toLowerCase().includes(format))
213
220
  )
214
221
  }
215
222
 
@@ -223,7 +230,9 @@ export function getBadgeColor(linkFormat: FileFormat): string {
223
230
  return 'var(--color-gray-700)' // Default color ?
224
231
  }
225
232
 
226
- export function getLinkLabel(link: DatasetOnlineResource): string {
233
+ export function getLinkLabel(
234
+ link: DatasetOnlineResource | ServiceOnlineResource
235
+ ): string {
227
236
  let format = ''
228
237
  switch (link.type) {
229
238
  case 'service':
@@ -247,7 +256,7 @@ export function getLinkLabel(link: DatasetOnlineResource): string {
247
256
  default:
248
257
  format = getFileFormat(link)
249
258
  }
250
- const label = link.description || link.name
259
+ const label = link.description || ('name' in link ? link.name : '')
251
260
  return format ? `${label} (${format})` : label
252
261
  }
253
262
 
@@ -259,14 +268,25 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
259
268
  }
260
269
  case 'wfs': {
261
270
  const endpointWfs = await new WfsEndpoint(url).isReady()
262
- 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
263
278
  }
264
279
  case 'wms': {
265
280
  const endpointWms = await new WmsEndpoint(url).isReady()
266
- return endpointWms
267
- .getLayers()
268
- .flatMap(wmsLayerFlatten)
269
- .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
270
290
  }
271
291
  case 'wmts': {
272
292
  const endpointWmts = await new WmtsEndpoint(url).isReady()
@@ -277,7 +297,7 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
277
297
  }
278
298
  }
279
299
 
280
- function wmsLayerFlatten(layerFull) {
300
+ export function wmsLayerFlatten(layerFull) {
281
301
  const layer = {
282
302
  title: layerFull.title,
283
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,72 @@
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;
135
+ }
136
+
137
+ .gn-ui-card-xs {
138
+ @apply min-h-[68px] md:w-[487px];
139
+ }
140
+
141
+ .gn-ui-card-s {
142
+ @apply min-h-[135px] md:w-80;
143
+ }
144
+
145
+ .gn-ui-card-m {
146
+ @apply min-h-[68px] md:w-[487px];
147
+ }
148
+
149
+ .gn-ui-card-l {
150
+ @apply min-h-[68px] md:w-[992px];
151
+ }
152
+
153
+ .gn-ui-card-title {
154
+ @apply font-title font-medium text-black text-ellipsis overflow-hidden break-words line-clamp-3;
155
+ }
156
+
157
+ .gn-ui-card-icon {
158
+ @apply flex border border-gray-300 rounded-lg py-1 px-2 align-middle;
159
+ }
160
+
161
+ .gn-ui-card-detail {
162
+ @apply font-medium text-gray-500 text-ellipsis break-words text-sm;
130
163
  }
131
164
 
132
165
  /* DROPDOWN MULTISELECT CLASS */
@@ -186,7 +219,7 @@
186
219
 
187
220
  /* TODO: add prefix */
188
221
  .card-icon {
189
- @apply text-primary opacity-50 group-hover:text-secondary group-hover:opacity-100 transition-colors transition-opacity;
222
+ @apply text-black group-hover:text-primary-darkest transition-colors;
190
223
  }
191
224
 
192
225
  /* makes spinners appear in the right color */
@@ -194,6 +227,11 @@
194
227
  mat-progress-spinner circle {
195
228
  stroke: currentColor !important;
196
229
  }
230
+
231
+ /* Section title */
232
+ .gn-ui-section-title {
233
+ @apply text-title font-medium pt-9 text-[28px];
234
+ }
197
235
  }
198
236
 
199
237
  html {