geonetwork-ui 2.4.0-dev.f6f2f023 → 2.4.0-dev.fe59f179

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 (211) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +10 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  6. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  7. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  9. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  12. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  13. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  14. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  15. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  16. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +7 -4
  17. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +1 -1
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +16 -44
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +2 -2
  20. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +7 -4
  21. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -3
  22. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +8 -12
  23. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  24. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  25. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  26. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  27. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  28. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +7 -4
  29. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  30. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +49 -0
  31. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  32. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  33. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  34. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  35. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  36. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  37. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  38. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +2 -3
  39. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  40. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
  41. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +59 -26
  42. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
  43. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  44. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  45. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  46. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  47. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +120 -0
  48. package/esm2022/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.mjs +5 -3
  49. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +1 -6
  50. package/esm2022/translations/de.json +27 -4
  51. package/esm2022/translations/en.json +30 -4
  52. package/esm2022/translations/es.json +27 -4
  53. package/esm2022/translations/fr.json +31 -5
  54. package/esm2022/translations/it.json +27 -4
  55. package/esm2022/translations/nl.json +27 -4
  56. package/esm2022/translations/pt.json +27 -4
  57. package/fesm2022/geonetwork-ui.mjs +774 -525
  58. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  59. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  60. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  61. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  62. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  63. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  64. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  65. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  66. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  67. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  68. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  69. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -0
  70. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  71. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  72. package/libs/feature/catalog/src/index.d.ts +1 -0
  73. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  74. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  75. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  76. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  77. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  78. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  79. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +2 -1
  80. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  81. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +14 -24
  82. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  83. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -1
  84. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  85. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  86. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  87. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  88. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  89. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  90. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  91. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  92. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  93. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  94. package/libs/feature/search/src/index.d.ts +1 -1
  95. package/libs/feature/search/src/index.d.ts.map +1 -1
  96. package/libs/feature/search/src/lib/feature-search.module.d.ts +2 -1
  97. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  98. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  99. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +25 -0
  100. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -0
  101. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  102. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  103. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  104. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  105. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  106. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  107. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  108. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  109. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  110. package/libs/ui/elements/src/index.d.ts +0 -1
  111. package/libs/ui/elements/src/index.d.ts.map +1 -1
  112. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  113. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  114. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  115. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  116. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +18 -19
  117. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  118. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +7 -4
  119. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  120. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -36
  121. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  122. package/libs/ui/layout/src/index.d.ts +1 -0
  123. package/libs/ui/layout/src/index.d.ts.map +1 -1
  124. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  125. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  126. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  127. package/libs/ui/search/src/index.d.ts +1 -0
  128. package/libs/ui/search/src/index.d.ts.map +1 -1
  129. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +30 -0
  130. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  131. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts +1 -1
  132. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts.map +1 -1
  133. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +10 -11
  134. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  135. package/package.json +1 -1
  136. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +14 -0
  137. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  138. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  139. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  140. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  141. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  142. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  143. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
  144. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  145. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  146. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  147. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  148. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  149. package/src/libs/feature/catalog/src/index.ts +1 -0
  150. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  151. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  152. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  153. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  154. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  155. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +2 -1
  156. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +2 -3
  157. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +23 -63
  158. package/src/libs/feature/record/src/lib/feature-record.module.ts +3 -2
  159. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +42 -31
  160. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  161. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  162. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  163. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  164. package/src/libs/feature/search/src/index.ts +1 -1
  165. package/src/libs/feature/search/src/lib/feature-search.module.ts +2 -1
  166. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +2 -2
  167. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +9 -0
  168. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +49 -0
  169. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  170. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  171. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  172. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  173. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  174. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  175. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  176. package/src/libs/ui/elements/src/index.ts +0 -1
  177. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  178. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  179. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  180. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  181. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -3
  182. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +0 -1
  183. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +23 -19
  184. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +79 -27
  185. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  186. package/src/libs/ui/layout/src/index.ts +1 -0
  187. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  188. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  189. package/src/libs/ui/search/src/index.ts +1 -0
  190. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +0 -0
  191. package/src/libs/{feature → ui}/search/src/lib/results-table/results-table.component.html +8 -8
  192. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +138 -0
  193. package/src/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.ts +4 -0
  194. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -3
  195. package/translations/de.json +27 -4
  196. package/translations/en.json +30 -4
  197. package/translations/es.json +27 -4
  198. package/translations/fr.json +31 -5
  199. package/translations/it.json +27 -4
  200. package/translations/nl.json +27 -4
  201. package/translations/pt.json +27 -4
  202. package/translations/sk.json +28 -5
  203. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +0 -136
  204. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  205. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +0 -36
  206. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +0 -1
  207. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  208. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -171
  209. /package/src/libs/feature/search/src/lib/results-table/{results-table.component.css → results-table-container.component.css} +0 -0
  210. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +0 -0
  211. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +0 -0
@@ -5,84 +5,112 @@ export const ORGANISATIONS_FIXTURE: Organization[] = deepFreeze([
5
5
  {
6
6
  name: 'I Data Org',
7
7
  description: 'one org for testing',
8
+ email: 'test@gmail.com',
9
+ website: new URL('https://my-geonetwork.org/'),
8
10
  logoUrl: new URL('https://my-geonetwork.org/logo1.png'),
9
11
  recordCount: 12,
10
12
  },
11
13
  {
12
14
  name: 'H Data Org',
13
15
  description: 'another org for testing',
16
+ email: 'test@gmail.com',
17
+ website: new URL('https://my-geonetwork.org/'),
14
18
  logoUrl: new URL('https://my-geonetwork.org/logo2.png'),
15
19
  recordCount: 15,
16
20
  },
17
21
  {
18
22
  name: 'J Data Org',
19
23
  description: 'another org for testing',
24
+ email: 'test@gmail.com',
25
+ website: new URL('https://my-geonetwork.org/'),
20
26
  logoUrl: new URL('https://my-geonetwork.org/logo3.png'),
21
27
  recordCount: 6,
22
28
  },
23
29
  {
24
30
  name: 'G Data Org',
25
31
  description: 'another org for testing',
32
+ email: 'test@gmail.com',
33
+ website: new URL('https://my-geonetwork.org/'),
26
34
  logoUrl: new URL('https://my-geonetwork.org/logo4.png'),
27
35
  recordCount: 8,
28
36
  },
29
37
  {
30
38
  name: 'B Data Org',
31
39
  description: 'another org for testing',
40
+ email: 'test@gmail.com',
41
+ website: new URL('https://my-geonetwork.org/'),
32
42
  logoUrl: new URL('https://my-geonetwork.org/logo5.png'),
33
43
  recordCount: 2,
34
44
  },
35
45
  {
36
46
  name: 'D Data Org',
37
47
  description: 'another org for testing',
48
+ email: 'test@gmail.com',
49
+ website: new URL('https://my-geonetwork.org/'),
38
50
  logoUrl: new URL('https://my-geonetwork.org/logo6.png'),
39
51
  recordCount: 17,
40
52
  },
41
53
  {
42
54
  name: 'F Data Org',
43
55
  description: 'another org for testing',
56
+ email: 'test@gmail.com',
57
+ website: new URL('https://my-geonetwork.org/'),
44
58
  logoUrl: new URL('https://my-geonetwork.org/logo7.png'),
45
59
  recordCount: 14,
46
60
  },
47
61
  {
48
62
  name: 'A Data Org',
49
63
  description: 'another org for testing',
64
+ email: 'test@gmail.com',
65
+ website: new URL('https://my-geonetwork.org/'),
50
66
  logoUrl: new URL('https://my-geonetwork.org/logo8.png'),
51
67
  recordCount: 3,
52
68
  },
53
69
  {
54
70
  name: 'C Data Org',
55
71
  description: 'another org for testing',
72
+ email: 'test@gmail.com',
73
+ website: new URL('https://my-geonetwork.org/'),
56
74
  logoUrl: new URL('https://my-geonetwork.org/logo9.png'),
57
75
  recordCount: 9,
58
76
  },
59
77
  {
60
78
  name: 'E Data Org',
61
79
  description: 'another org for testing',
80
+ email: 'test@gmail.com',
81
+ website: new URL('https://my-geonetwork.org/'),
62
82
  logoUrl: new URL('https://my-geonetwork.org/logo10.png'),
63
83
  recordCount: 1,
64
84
  },
65
85
  {
66
86
  name: 'é Data Org',
67
87
  description: 'another org for testing',
88
+ email: 'test@gmail.com',
89
+ website: new URL('https://my-geonetwork.org/'),
68
90
  logoUrl: new URL('https://my-geonetwork.org/logo10.png'),
69
91
  recordCount: 2,
70
92
  },
71
93
  {
72
94
  name: 'wizard-org',
73
95
  description: 'another org for testing',
96
+ email: 'test@gmail.com',
97
+ website: new URL('https://my-geonetwork.org/'),
74
98
  logoUrl: new URL('https://my-geonetwork.org/logo11.png'),
75
99
  recordCount: 2,
76
100
  },
77
101
  {
78
102
  name: "Université de l'Ingénierie",
79
103
  description: 'another org for testing',
104
+ email: 'test@gmail.com',
105
+ website: new URL('https://my-geonetwork.org/'),
80
106
  logoUrl: new URL('https://my-geonetwork.org/logo12.png'),
81
107
  recordCount: 2,
82
108
  },
83
109
  {
84
110
  name: 'ARS / Agence régionale de santé',
85
111
  description: 'another org for testing',
112
+ email: 'test@gmail.com',
113
+ website: new URL('https://my-geonetwork.org/'),
86
114
  logoUrl: new URL('https://my-geonetwork.org/logo12.png'),
87
115
  recordCount: 2,
88
116
  },
@@ -233,6 +233,14 @@ Malgré l'attention portée à la création de ces données, il est rappelé que
233
233
  description: 'Téléchargement du fichier',
234
234
  mimeType: 'x-gis/x-shapefile',
235
235
  },
236
+ {
237
+ type: 'service',
238
+ url: new URL('https://my-org.net/ogc'),
239
+ accessServiceProtocol: 'ogcFeatures',
240
+ name: 'ogcFeaturesSecondRecord',
241
+ description: 'This OGC service is the second part of the download',
242
+ identifierInService: 'my:featuretype',
243
+ },
236
244
  ],
237
245
  lineage: `Document d’urbanisme numérisé conformément aux prescriptions nationales du CNIG par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.
238
246
  Ce lot de données produit en 2019, a été numérisé à partir du PCI Vecteur de 2019 et contrôlé par le Service d'Information Géographique de l'Agglomération de la Région de Compiègne.`,
@@ -38,4 +38,8 @@ export interface DatasetMetadataApiModel {
38
38
  * textual description of dataset lineage
39
39
  */
40
40
  creationProcessDescription?: string
41
+ /**
42
+ * Optional, additional options for the dataset
43
+ */
44
+ options: any
41
45
  }
@@ -34,4 +34,6 @@ export interface DatasetUploadStatusApiModel {
34
34
  * detected charset
35
35
  */
36
36
  encoding?: string
37
+ format?: 'CSV' | 'SHAPEFILE'
38
+ options?: any
37
39
  }
@@ -21,7 +21,7 @@ export interface UserApiModel {
21
21
  emailAddresses?: Set<string>
22
22
  addresses?: Set<AddressApiModel>
23
23
  primaryAddress?: AddressApiModel
24
- organisation?: string
24
+ organization?: string
25
25
  kind?: string
26
26
  lastLoginDate?: string
27
27
  authorities?: Array<GrantedAuthorityApiModel>
@@ -1,4 +1,5 @@
1
1
  export * from './lib/feature-catalog.module'
2
+ export * from './lib/organization-url.token'
2
3
  export * from './lib/sources/sources.service'
3
4
  export * from './lib/sources/sources.model'
4
5
  export * from './lib/records/records.service'
@@ -4,7 +4,6 @@ import { UiCatalogModule } from '../../../../../libs/ui/catalog/src'
4
4
  import {
5
5
  GroupsApiService,
6
6
  SearchApiService,
7
- SiteApiService,
8
7
  } from '../../../../../libs/data-access/gn4/src'
9
8
  import { CommonModule } from '@angular/common'
10
9
  import { SourceLabelComponent } from './source-label/source-label.component'
@@ -19,7 +19,7 @@
19
19
  [showContent]="!!organisation.name"
20
20
  >
21
21
  <gn-ui-organisation-preview
22
- [organisation]="organisation"
22
+ [organization]="organisation"
23
23
  [organisationUrl]="getOrganisationUrl(organisation)"
24
24
  (clickedOrganisation)="orgSelect.emit($event)"
25
25
  ></gn-ui-organisation-preview>
@@ -10,10 +10,10 @@ import {
10
10
  import { Organization } from '../../../../../../libs/common/domain/src/lib/model/record'
11
11
  import { BehaviorSubject, combineLatest, Observable } from 'rxjs'
12
12
  import { map, startWith, tap } from 'rxjs/operators'
13
- import { ORGANIZATION_URL_TOKEN } from '../feature-catalog.module'
14
13
  import { OrganizationsServiceInterface } from '../../../../../../libs/common/domain/src/lib/organizations.service.interface'
15
14
  import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search'
16
15
  import { createFuzzyFilter } from '../../../../../../libs/util/shared/src'
16
+ import { ORGANIZATION_PAGE_URL_TOKEN } from '../organization-url.token'
17
17
 
18
18
  @Component({
19
19
  selector: 'gn-ui-organisations',
@@ -28,7 +28,7 @@ export class OrganisationsComponent {
28
28
  constructor(
29
29
  private organisationsService: OrganizationsServiceInterface,
30
30
  @Optional()
31
- @Inject(ORGANIZATION_URL_TOKEN)
31
+ @Inject(ORGANIZATION_PAGE_URL_TOKEN)
32
32
  private urlTemplate: string
33
33
  ) {}
34
34
 
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core'
2
+
3
+ // expects the replacement key ${name}
4
+ export const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken<string>(
5
+ 'organization-page-url-token'
6
+ )
@@ -1,18 +1,16 @@
1
1
  import { Injectable } from '@angular/core'
2
- import { Observable, of } from 'rxjs'
3
- import { catchError, shareReplay } from 'rxjs/operators'
2
+ import { Observable, of, switchMap } from 'rxjs'
3
+ import { shareReplay } from 'rxjs/operators'
4
4
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
5
5
 
6
6
  @Injectable({
7
7
  providedIn: 'root',
8
8
  })
9
9
  export class RecordsService {
10
- recordsCount$: Observable<number> = this.recordsRepository
11
- .getMatchesCount({})
12
- .pipe(
13
- shareReplay(1),
14
- catchError(() => of(0))
15
- )
10
+ recordsCount$: Observable<number> = of(true).pipe(
11
+ switchMap(() => this.recordsRepository.getMatchesCount({})),
12
+ shareReplay(1)
13
+ )
16
14
 
17
15
  constructor(private recordsRepository: RecordsRepositoryInterface) {}
18
16
  }
@@ -12,7 +12,7 @@ import {
12
12
  import { TableViewComponent } from './table-view/table-view.component'
13
13
  import { ChartViewComponent } from './chart-view/chart-view.component'
14
14
  import { TranslateModule } from '@ngx-translate/core'
15
- import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
15
+ import { PopupAlertComponent, UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
16
16
  import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
17
17
 
18
18
  @NgModule({
@@ -26,6 +26,7 @@ import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
26
26
  TranslateModule,
27
27
  ChartComponent,
28
28
  UiInputsModule,
29
+ PopupAlertComponent,
29
30
  ],
30
31
  declarations: [
31
32
  GeoTableViewComponent,
@@ -4,10 +4,9 @@
4
4
  [displayWithFn]="displayWithFn"
5
5
  [action]="autoCompleteAction"
6
6
  (itemSelected)="handleItemSelection($event)"
7
- (inputSubmitted)="handleInputSubmission($event)"
8
- (inputCleared)="handleInputCleared()"
9
- [value]="searchInputValue$ | async"
10
7
  [clearOnSelection]="true"
8
+ [minCharacterCount]="0"
9
+ [allowSubmit]="false"
11
10
  ></gn-ui-autocomplete>
12
11
  <div class="flex gap-2 flex-wrap">
13
12
  <gn-ui-badge
@@ -1,24 +1,17 @@
1
1
  import { CommonModule } from '@angular/common'
2
- import {
3
- ChangeDetectionStrategy,
4
- Component,
5
- EventEmitter,
6
- Input,
7
- OnInit,
8
- Output,
9
- } from '@angular/core'
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
10
3
  import { FormControl } from '@angular/forms'
11
- import {
12
- KeywordType,
13
- ThesaurusModel,
14
- } from '../../../../../../../../../libs/common/domain/src/lib/model/thesaurus'
15
4
  import { PlatformServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/platform.service.interface'
16
5
  import {
6
+ AutocompleteComponent,
17
7
  DropdownSelectorComponent,
18
8
  UiInputsModule,
19
9
  } from '../../../../../../../../../libs/ui/inputs/src'
20
10
  import { UiWidgetsModule } from '../../../../../../../../../libs/ui/widgets/src'
21
- import { Observable, map } from 'rxjs'
11
+ import { map } from 'rxjs'
12
+ import { Keyword } from '../../../../../../../../../libs/common/domain/src/lib/model/record'
13
+
14
+ type AutocompleteItem = { title: string; value: Keyword }
22
15
 
23
16
  @Component({
24
17
  selector: 'gn-ui-form-field-keywords',
@@ -31,69 +24,36 @@ import { Observable, map } from 'rxjs'
31
24
  UiInputsModule,
32
25
  CommonModule,
33
26
  UiWidgetsModule,
27
+ AutocompleteComponent,
34
28
  ],
35
29
  })
36
- export class FormFieldKeywordsComponent implements OnInit {
37
- @Input() control: FormControl<any>
38
- @Output() itemSelected = new EventEmitter<string>()
39
- @Output() inputSubmitted = new EventEmitter<string>()
40
- searchInputValue$: Observable<void | { title: string }>
41
- allThesaurus$: Observable<any[]>
30
+ export class FormFieldKeywordsComponent {
31
+ @Input() control: FormControl<Keyword[]>
42
32
 
43
- displayWithFn = (item) => {
44
- if (item) {
45
- return `${item?.title} (${item?.value?.name})`
46
- }
47
- return null
33
+ displayWithFn = (item: AutocompleteItem) => {
34
+ return `${item.title} (${item.value.thesaurus?.name})`
48
35
  }
49
36
 
50
37
  autoCompleteAction = (query: string) => {
51
- const keywords$ = this.platformService.searchKeywords(query).pipe(
52
- map((thesaurus) =>
53
- thesaurus.map((thes) => {
54
- return { title: thes.label, value: thes.thesaurus }
55
- })
38
+ return this.platformService
39
+ .searchKeywords(query, ['temporal', 'theme', 'other'])
40
+ .pipe(
41
+ map((keywords) =>
42
+ keywords.map((keyword) => {
43
+ return { title: keyword.label, value: keyword }
44
+ })
45
+ )
56
46
  )
57
- )
58
-
59
- return keywords$
60
47
  }
61
48
 
62
49
  constructor(private platformService: PlatformServiceInterface) {}
63
50
 
64
- ngOnInit(): void {
65
- this.searchInputValue$ = this.autoCompleteAction('')[0]
66
- }
67
-
68
- // type: { title: string; value: ThesaurusModel }
69
- handleItemSelection(item) {
70
- this.addKeyword({
71
- label: item.title,
72
- thesaurus: item.value,
73
- type: item.value.type,
74
- })
75
- }
76
-
77
- handleInputSubmission(any: string) {
78
- // Should there be an input submission?
79
-
80
- if (this.inputSubmitted.observers.length > 0) {
81
- this.inputSubmitted.emit(any)
82
- } else {
83
- // this.searchService.updateFilters({ any })
84
- }
85
- }
86
-
87
- async handleInputCleared() {
88
- this.autoCompleteAction('')
51
+ handleItemSelection(item: AutocompleteItem) {
52
+ this.addKeyword(item.value)
89
53
  }
90
54
 
91
- addKeyword(item: {
92
- label: string
93
- thesaurus: ThesaurusModel
94
- type: KeywordType
95
- }) {
96
- const addedKeywords = [...this.control.value, item]
55
+ addKeyword(keyword: Keyword) {
56
+ const addedKeywords = [...this.control.value, keyword]
97
57
 
98
58
  // remove duplicates from keyword
99
59
  const filteredKeywords = addedKeywords.filter((value, index, self) => {
@@ -1,4 +1,4 @@
1
- import { InjectionToken, NgModule } from '@angular/core'
1
+ import { NgModule } from '@angular/core'
2
2
  import { CommonModule } from '@angular/common'
3
3
  import { UiMapModule } from '../../../../../libs/ui/map/src'
4
4
  import { StoreModule } from '@ngrx/store'
@@ -17,7 +17,7 @@ import {
17
17
  } from './state/mdview.reducer'
18
18
  import { MatTabsModule } from '@angular/material/tabs'
19
19
  import { MatIconModule } from '@angular/material/icon'
20
- import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
20
+ import { PopupAlertComponent, UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
21
21
  import { TranslateModule } from '@ngx-translate/core'
22
22
  import { ExternalViewerButtonComponent } from './external-viewer-button/external-viewer-button.component'
23
23
  import { FeatureCatalogModule } from '../../../../../libs/feature/catalog/src'
@@ -52,6 +52,7 @@ import { DataViewShareComponent } from './data-view-share/data-view-share.compon
52
52
  TranslateModule,
53
53
  TableComponent,
54
54
  FeatureDatavizModule,
55
+ PopupAlertComponent,
55
56
  ],
56
57
  providers: [MdViewFacade],
57
58
  exports: [
@@ -1,6 +1,14 @@
1
1
  import { Injectable } from '@angular/core'
2
2
  import { select, Store } from '@ngrx/store'
3
- import { defaultIfEmpty, filter, map, mergeMap, scan } from 'rxjs/operators'
3
+ import {
4
+ catchError,
5
+ defaultIfEmpty,
6
+ filter,
7
+ map,
8
+ mergeMap,
9
+ switchMap,
10
+ toArray,
11
+ } from 'rxjs/operators'
4
12
  import * as MdViewActions from './mdview.actions'
5
13
  import * as MdViewSelectors from './mdview.selectors'
6
14
  import { LinkClassifierService, LinkUsage } from '../../../../../../libs/util/shared/src'
@@ -95,36 +103,39 @@ export class MdViewFacade {
95
103
  )
96
104
 
97
105
  geoDataLinksWithGeometry$ = this.allLinks$.pipe(
98
- mergeMap((links) => {
99
- return from(links)
100
- }),
101
- mergeMap((link) => {
102
- if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
103
- if (
104
- link.type === 'service' &&
105
- link.accessServiceProtocol === 'ogcFeatures'
106
- ) {
107
- return from(this.dataService.getItemsFromOgcApi(link.url.href)).pipe(
108
- map((collectionRecords: OgcApiRecord) => {
109
- return collectionRecords && collectionRecords.geometry
110
- ? link
111
- : null
112
- }),
113
- defaultIfEmpty(null)
114
- )
115
- } else {
116
- return of(link)
117
- }
118
- } else {
119
- return of(null)
120
- }
121
- }),
122
- scan((acc, val) => {
123
- if (val !== null && !acc.includes(val)) {
124
- acc.push(val)
125
- }
126
- return acc
127
- }, [])
106
+ switchMap((links) =>
107
+ from(links).pipe(
108
+ mergeMap((link) => {
109
+ if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
110
+ if (
111
+ link.type === 'service' &&
112
+ link.accessServiceProtocol === 'ogcFeatures'
113
+ ) {
114
+ return from(
115
+ this.dataService.getItemsFromOgcApi(link.url.href)
116
+ ).pipe(
117
+ map((collectionRecords: OgcApiRecord) => {
118
+ return collectionRecords && collectionRecords.geometry
119
+ ? link
120
+ : null
121
+ }),
122
+ defaultIfEmpty(null),
123
+ catchError((e) => {
124
+ console.error(e)
125
+ return of(null)
126
+ })
127
+ )
128
+ } else {
129
+ return of(link)
130
+ }
131
+ } else {
132
+ return of(null)
133
+ }
134
+ }),
135
+ toArray(),
136
+ map((links) => links.filter((link) => link !== null))
137
+ )
138
+ )
128
139
  )
129
140
 
130
141
  landingPageLinks$ = this.metadata$.pipe(
@@ -2,6 +2,7 @@ export const ROUTER_STATE_KEY = 'router'
2
2
 
3
3
  export const ROUTER_ROUTE_SEARCH = 'search'
4
4
  export const ROUTER_ROUTE_DATASET = 'dataset'
5
+ export const ROUTER_ROUTE_ORGANIZATION = 'organization'
5
6
 
6
7
  export enum ROUTE_PARAMS {
7
8
  SORT = '_sort',
@@ -4,6 +4,7 @@ export interface RouterConfigModel {
4
4
  searchStateId: string
5
5
  searchRouteComponent: Type<any>
6
6
  recordRouteComponent: Type<any>
7
+ organizationRouteComponent: Type<any>
7
8
  }
8
9
 
9
10
  export const ROUTER_CONFIG = new InjectionToken<RouterConfigModel>(
@@ -1,5 +1,9 @@
1
1
  import { Inject, Injectable } from '@angular/core'
2
- import { ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH } from '.'
2
+ import {
3
+ ROUTER_ROUTE_DATASET,
4
+ ROUTER_ROUTE_ORGANIZATION,
5
+ ROUTER_ROUTE_SEARCH,
6
+ } from '.'
3
7
  import { Router, Routes } from '@angular/router'
4
8
  import { ROUTER_CONFIG, RouterConfigModel } from './router.config'
5
9
 
@@ -30,10 +34,18 @@ export class RouterService {
30
34
  path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
31
35
  component: this.routerConfig.recordRouteComponent,
32
36
  },
37
+ {
38
+ path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
39
+ component: this.routerConfig.organizationRouteComponent,
40
+ },
33
41
  ]
34
42
  }
35
43
 
36
44
  getSearchRoute(): string {
37
45
  return ROUTER_ROUTE_SEARCH
38
46
  }
47
+
48
+ getOrganizationPageRoute(): string {
49
+ return ROUTER_ROUTE_ORGANIZATION
50
+ }
39
51
  }
@@ -3,7 +3,7 @@ import { MdViewActions } from '../../../../../../../libs/feature/record/src'
3
3
  import { RouterService } from '../router.service'
4
4
  import { RouterReducerState } from '@ngrx/router-store'
5
5
  import { select, Store } from '@ngrx/store'
6
- import { distinctUntilChanged, filter, map, take } from 'rxjs/operators'
6
+ import { distinctUntilChanged, filter, map, take, tap } from 'rxjs/operators'
7
7
  import {
8
8
  ROUTER_ROUTE_DATASET,
9
9
  ROUTER_ROUTE_SEARCH,
@@ -51,6 +51,14 @@ export class RouterFacade {
51
51
  })
52
52
  }
53
53
 
54
+ goToOrganization(organizationName: string) {
55
+ const path = `${this.routerService.getOrganizationPageRoute()}/${organizationName}`
56
+ this.go({
57
+ path,
58
+ queryParamsHandling: '',
59
+ })
60
+ }
61
+
54
62
  updateSearch(query?: SearchRouteParams) {
55
63
  this.go({
56
64
  path: this.routerService.getSearchRoute(),
@@ -21,4 +21,4 @@ export * from './lib/results-hits-number/results-hits.container.component'
21
21
  export * from './lib/results-layout/results-layout.component'
22
22
  export * from './lib/sort-by/sort-by.component'
23
23
  export * from './lib/state/container/search-state.container.directive'
24
- export * from './lib/results-table/results-table.component'
24
+ export * from './lib/results-table/results-table-container.component'
@@ -14,7 +14,7 @@ import { SearchEffects } from './state/effects'
14
14
  import { initialState, reducer, SEARCH_FEATURE_KEY } from './state/reducer'
15
15
  import { ResultsHitsContainerComponent } from './results-hits-number/results-hits.container.component'
16
16
  import { SearchStateContainerDirective } from './state/container/search-state.container.directive'
17
- import { UiInputsModule } from '../../../../../libs/ui/inputs/src'
17
+ import { AutocompleteComponent, UiInputsModule } from '../../../../../libs/ui/inputs/src'
18
18
  import { NgModule } from '@angular/core'
19
19
  import { UiElementsModule } from '../../../../../libs/ui/elements/src'
20
20
  import { FavoriteStarComponent } from './favorites/favorite-star/favorite-star.component'
@@ -51,6 +51,7 @@ import { Gn4Repository } from '../../../../../libs/api/repository/src'
51
51
  FacetsModule,
52
52
  MatIconModule,
53
53
  UiWidgetsModule,
54
+ AutocompleteComponent,
54
55
  ],
55
56
  exports: [
56
57
  SortByComponent,
@@ -11,7 +11,7 @@ import {
11
11
  AutocompleteComponent,
12
12
  AutocompleteItem,
13
13
  } from '../../../../../../libs/ui/inputs/src'
14
- import { Observable, firstValueFrom } from 'rxjs'
14
+ import { firstValueFrom, Observable } from 'rxjs'
15
15
  import { map } from 'rxjs/operators'
16
16
  import { SearchFacade } from '../state/search.facade'
17
17
  import { SearchService } from '../utils/service/search.service'
@@ -32,7 +32,7 @@ export class FuzzySearchComponent implements OnInit {
32
32
  @Output() inputSubmitted = new EventEmitter<string>()
33
33
  searchInputValue$: Observable<{ title: string }>
34
34
 
35
- displayWithFn: (record: CatalogRecord) => string = (record) => record?.title
35
+ displayWithFn: (record: CatalogRecord) => string = (record) => record.title
36
36
 
37
37
  autoCompleteAction = (query: string) =>
38
38
  this.recordsRepository
@@ -0,0 +1,9 @@
1
+ <gn-ui-results-table
2
+ [records]="records$ | async"
3
+ [recordHasDraft]="hasDraft"
4
+ [selectedRecordsIdentifiers]="selectedRecords$ | async"
5
+ [sortOrder]="sortBy$ | async"
6
+ (recordClick)="handleRecordClick($event)"
7
+ (recordsSelectedChange)="handleRecordsSelectedChange($event[0], $event[1])"
8
+ (sortByChange)="handleSortByChange($event[0], $event[1])"
9
+ ></gn-ui-results-table>