geonetwork-ui 2.2.0-dev.9ae0a68b → 2.2.0-dev.a9d33529

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 (241) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +36 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  5. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  6. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  7. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  8. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  9. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  10. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  11. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  12. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  13. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  14. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  15. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  16. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  17. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +23 -3
  18. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  19. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  20. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +5 -3
  21. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
  22. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  23. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  24. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  25. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  26. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +1 -1
  27. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  28. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  29. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +129 -0
  30. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +5 -3
  31. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  32. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  33. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  34. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  35. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  36. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  37. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -7
  38. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  39. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  40. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -3
  41. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  42. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  43. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  44. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  45. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  46. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  47. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
  48. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  49. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  50. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  51. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  52. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  53. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  54. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  55. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  56. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  57. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  58. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  59. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  60. package/esm2022/translations/de.json +102 -94
  61. package/esm2022/translations/en.json +27 -19
  62. package/esm2022/translations/es.json +8 -0
  63. package/esm2022/translations/fr.json +12 -4
  64. package/esm2022/translations/it.json +11 -3
  65. package/esm2022/translations/nl.json +8 -0
  66. package/esm2022/translations/pt.json +8 -0
  67. package/fesm2022/geonetwork-ui.mjs +946 -457
  68. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  69. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
  70. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  71. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  72. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  73. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  74. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  75. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  76. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  77. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +10 -5
  78. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  79. package/libs/common/domain/src/lib/model/search/search.model.d.ts +1 -2
  80. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  81. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  82. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  83. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  84. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  85. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  86. package/libs/feature/map/src/index.d.ts +1 -0
  87. package/libs/feature/map/src/index.d.ts.map +1 -1
  88. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  89. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  90. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  91. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  92. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  93. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  94. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  95. package/libs/feature/map/src/lib/feature-map.module.d.ts +15 -12
  96. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  97. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  98. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  99. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  100. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  101. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  102. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  103. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  104. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  105. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  106. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  108. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  109. package/libs/feature/search/src/index.d.ts +1 -0
  110. package/libs/feature/search/src/index.d.ts.map +1 -1
  111. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -3
  112. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  113. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  114. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  115. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  116. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  117. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +34 -0
  118. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  119. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  120. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  121. package/libs/ui/elements/src/index.d.ts +2 -0
  122. package/libs/ui/elements/src/index.d.ts.map +1 -1
  123. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  124. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  125. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  126. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
  127. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  128. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  129. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  130. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +12 -11
  131. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  132. package/libs/ui/inputs/src/index.d.ts +1 -0
  133. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  134. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  135. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  136. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
  137. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  138. package/libs/ui/layout/src/index.d.ts +2 -0
  139. package/libs/ui/layout/src/index.d.ts.map +1 -1
  140. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  141. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  142. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  143. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  144. package/libs/ui/search/src/index.d.ts +0 -1
  145. package/libs/ui/search/src/index.d.ts.map +1 -1
  146. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  147. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  148. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  149. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  150. package/package.json +4 -1
  151. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
  152. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
  153. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
  154. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  155. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  156. package/src/libs/common/domain/src/lib/index.ts +2 -0
  157. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
  158. package/src/libs/common/domain/src/lib/model/search/search.model.ts +1 -1
  159. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  160. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  161. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  162. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  163. package/src/libs/feature/map/src/index.ts +1 -0
  164. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  165. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  166. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  167. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  168. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  169. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  170. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  171. package/src/libs/feature/map/src/lib/feature-map.module.ts +12 -0
  172. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  173. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  174. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  175. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  176. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +6 -2
  177. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
  178. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  179. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  180. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  181. package/src/libs/feature/search/src/index.ts +1 -0
  182. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
  183. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  184. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  185. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  186. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +135 -0
  187. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +165 -0
  188. package/src/libs/feature/search/src/lib/state/effects.ts +4 -3
  189. package/src/libs/ui/elements/src/index.ts +2 -0
  190. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  191. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  192. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  193. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  194. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +52 -52
  195. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
  196. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  197. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -27
  198. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
  199. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  200. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  201. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +4 -0
  202. package/src/libs/ui/inputs/src/index.ts +1 -0
  203. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  204. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  205. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  206. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  207. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  208. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  209. package/src/libs/ui/layout/src/index.ts +2 -0
  210. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  211. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  212. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  213. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  214. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  215. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  216. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  217. package/src/libs/ui/search/src/index.ts +0 -1
  218. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  219. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  220. package/translations/de.json +102 -94
  221. package/translations/en.json +27 -19
  222. package/translations/es.json +8 -0
  223. package/translations/fr.json +12 -4
  224. package/translations/it.json +11 -3
  225. package/translations/nl.json +8 -0
  226. package/translations/pt.json +8 -0
  227. package/translations/sk.json +8 -0
  228. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  229. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  230. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  231. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  232. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  233. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  234. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  235. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  236. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  237. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  238. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  239. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  240. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  241. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -1,145 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { getBadgeColor, getFileFormat, getFormatPriority, } from '../../../../../../libs/util/shared/src';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@ngx-translate/core";
6
- import * as i3 from "../../../../inputs/src/lib/button/button.component";
7
- import * as i4 from "../../../../inputs/src/lib/checkbox/checkbox.component";
8
- import * as i5 from "@angular/material/icon";
9
- export class RecordTableComponent {
10
- constructor() {
11
- this.selectedRecords = [];
12
- this.records = [];
13
- this.recordClick = new EventEmitter();
14
- this.recordsSelect = new EventEmitter();
15
- this.recordsDeselect = new EventEmitter();
16
- this.sortByChange = new EventEmitter();
17
- }
18
- dateToString(date) {
19
- return date?.toLocaleDateString(undefined, {
20
- year: 'numeric',
21
- month: 'long',
22
- day: 'numeric',
23
- timeZone: 'UTC',
24
- });
25
- }
26
- getStatus(isPublishedToAll) {
27
- return isPublishedToAll ? 'published' : 'not published';
28
- }
29
- formatUserInfo(userInfo) {
30
- const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
31
- if (infos && infos.length === 4) {
32
- return `${infos[2]} ${infos[1]}`;
33
- }
34
- return undefined;
35
- }
36
- getRecordFormats(record) {
37
- if (record.kind === 'service' || !('distributions' in record)) {
38
- return [];
39
- }
40
- const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
41
- formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
42
- return formats;
43
- }
44
- getBadgeColor(format) {
45
- return getBadgeColor(format);
46
- }
47
- getOrderForColumn(col) {
48
- if (!this.sortBy) {
49
- return null;
50
- }
51
- let order = null;
52
- const sortedArray = Array.isArray(this.sortBy[0])
53
- ? this.sortBy
54
- : [this.sortBy];
55
- sortedArray.forEach((sortedCol) => {
56
- if (sortedCol[1] === col) {
57
- order = sortedCol[0];
58
- }
59
- });
60
- return order;
61
- }
62
- setSortBy(col) {
63
- const sortOrder = this.getOrderForColumn(col);
64
- let newOrder;
65
- if (sortOrder) {
66
- newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
67
- }
68
- else {
69
- newOrder = 'asc';
70
- }
71
- this.sortByChange.emit([newOrder, col]);
72
- this.sortBy = [newOrder, col];
73
- }
74
- isSortedBy(col, order) {
75
- const sortOrder = this.getOrderForColumn(col);
76
- return sortOrder === order;
77
- }
78
- isChecked(record) {
79
- if (this.selectedRecords.includes(record.uniqueIdentifier)) {
80
- return true;
81
- }
82
- return false;
83
- }
84
- handleRecordSelectedChange(selected, record) {
85
- if (!selected) {
86
- this.recordsDeselect.emit([record]);
87
- this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
88
- }
89
- else {
90
- this.recordsSelect.emit([record]);
91
- this.selectedRecords.push(record.uniqueIdentifier);
92
- }
93
- }
94
- selectAll() {
95
- if (this.isAllSelected()) {
96
- this.recordsDeselect.emit(this.records);
97
- this.selectedRecords = [];
98
- }
99
- else {
100
- this.recordsSelect.emit(this.records);
101
- this.selectedRecords = this.records.map((record) => {
102
- return record.uniqueIdentifier;
103
- });
104
- }
105
- }
106
- isAllSelected() {
107
- if (this.selectedRecords.length === this.records.length) {
108
- const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
109
- if (allRecords.length === this.records.length) {
110
- return true;
111
- }
112
- }
113
- return false;
114
- }
115
- isSomeSelected() {
116
- if (this.selectedRecords.length > 0 &&
117
- this.selectedRecords.length < this.records.length) {
118
- return true;
119
- }
120
- return false;
121
- }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
124
- }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
126
- type: Component,
127
- args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"] }]
128
- }], propDecorators: { selectedRecords: [{
129
- type: Input
130
- }], records: [{
131
- type: Input
132
- }], totalHits: [{
133
- type: Input
134
- }], sortBy: [{
135
- type: Input
136
- }], recordClick: [{
137
- type: Output
138
- }], recordsSelect: [{
139
- type: Output
140
- }], recordsDeselect: [{
141
- type: Output
142
- }], sortByChange: [{
143
- type: Output
144
- }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYy9saWIvcmVjb3JkLXRhYmxlL3JlY29yZC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3JlY29yZC10YWJsZS9yZWNvcmQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0RSxPQUFPLEVBRUwsYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSx3Q0FBd0MsQ0FBQTs7Ozs7OztBQVEvQyxNQUFNLE9BQU8sb0JBQW9CO0lBTGpDO1FBTVcsb0JBQWUsR0FBYSxFQUFFLENBQUE7UUFDOUIsWUFBTyxHQUFVLEVBQUUsQ0FBQTtRQUdsQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFBO1FBQy9DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUE7UUFDbkQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQTtRQUNyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUE7S0E2SHpEO0lBM0hDLFlBQVksQ0FBQyxJQUFVO1FBQ3JCLE9BQU8sSUFBSSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsRUFBRTtZQUN6QyxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxNQUFNO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLGdCQUFtQztRQUMzQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQTBCO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2RSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMvQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQXFCO1FBQ3BDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsRUFBRTtZQUM3RCxPQUFPLEVBQUUsQ0FBQTtTQUNWO1FBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDeEIsSUFBSSxHQUFHLENBQ0wsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUN4RSxDQUNGLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkUsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFrQjtRQUM5QixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBVztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsSUFBSSxLQUFLLEdBQTBCLElBQUksQ0FBQTtRQUN2QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ2IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM3QyxJQUFJLFFBQVEsQ0FBQTtRQUNaLElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO1NBQ2hEO2FBQU07WUFDTCxRQUFRLEdBQUcsS0FBSyxDQUFBO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVyxFQUFFLEtBQXFCO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM3QyxPQUFPLFNBQVMsS0FBSyxLQUFLLENBQUE7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFxQjtRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxRQUFpQixFQUFFLE1BQXFCO1FBQ2pFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLENBQ3pDLENBQUE7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUE7U0FDMUI7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2pELE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFBO1lBQ2hDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FDdkQsQ0FBQTtZQUNELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDN0MsT0FBTyxJQUFJLENBQUE7YUFDWjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDakQ7WUFDQSxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOzhHQXBJVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixtVENmakMsNjVPQXVOQTs7MkZEeE1hLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBS3JCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgRmlsZUZvcm1hdCxcbiAgZ2V0QmFkZ2VDb2xvcixcbiAgZ2V0RmlsZUZvcm1hdCxcbiAgZ2V0Rm9ybWF0UHJpb3JpdHksXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgU29ydEJ5RmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlY29yZC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNvcmQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNvcmQtdGFibGUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNvcmRUYWJsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVjb3Jkczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSByZWNvcmRzOiBhbnlbXSA9IFtdXG4gIEBJbnB1dCgpIHRvdGFsSGl0cz86IG51bWJlclxuICBASW5wdXQoKSBzb3J0Qnk/OiBTb3J0QnlGaWVsZFxuICBAT3V0cHV0KCkgcmVjb3JkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIHJlY29yZHNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmRbXT4oKVxuICBAT3V0cHV0KCkgcmVjb3Jkc0Rlc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkW10+KClcbiAgQE91dHB1dCgpIHNvcnRCeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydEJ5RmllbGQ+KClcblxuICBkYXRlVG9TdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgIHRpbWVab25lOiAnVVRDJyxcbiAgICB9KVxuICB9XG5cbiAgZ2V0U3RhdHVzKGlzUHVibGlzaGVkVG9BbGw6IGJvb2xlYW4gfCB1bmtub3duKSB7XG4gICAgcmV0dXJuIGlzUHVibGlzaGVkVG9BbGwgPyAncHVibGlzaGVkJyA6ICdub3QgcHVibGlzaGVkJ1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZm9zID0gKHR5cGVvZiB1c2VySW5mbyA9PT0gJ3N0cmluZycgPyB1c2VySW5mbyA6ICcnKS5zcGxpdCgnfCcpXG4gICAgaWYgKGluZm9zICYmIGluZm9zLmxlbmd0aCA9PT0gNCkge1xuICAgICAgcmV0dXJuIGAke2luZm9zWzJdfSAke2luZm9zWzFdfWBcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0UmVjb3JkRm9ybWF0cyhyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBGaWxlRm9ybWF0W10ge1xuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ3NlcnZpY2UnIHx8ICEoJ2Rpc3RyaWJ1dGlvbnMnIGluIHJlY29yZCkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICBjb25zdCBmb3JtYXRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoXG4gICAgICAgIHJlY29yZC5kaXN0cmlidXRpb25zLm1hcCgoZGlzdHJpYnV0aW9uKSA9PiBnZXRGaWxlRm9ybWF0KGRpc3RyaWJ1dGlvbikpXG4gICAgICApXG4gICAgKS5maWx0ZXIoKGZvcm1hdCkgPT4gISFmb3JtYXQpXG4gICAgZm9ybWF0cy5zb3J0KChhLCBiKSA9PiBnZXRGb3JtYXRQcmlvcml0eShiKSAtIGdldEZvcm1hdFByaW9yaXR5KGEpKVxuICAgIHJldHVybiBmb3JtYXRzXG4gIH1cblxuICBnZXRCYWRnZUNvbG9yKGZvcm1hdDogRmlsZUZvcm1hdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldEJhZGdlQ29sb3IoZm9ybWF0KVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmRlckZvckNvbHVtbihjb2w6IHN0cmluZyk6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnNvcnRCeSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgbGV0IG9yZGVyOiAnYXNjJyB8ICdkZXNjJyB8IG51bGwgPSBudWxsXG4gICAgY29uc3Qgc29ydGVkQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydEJ5WzBdKVxuICAgICAgPyB0aGlzLnNvcnRCeVxuICAgICAgOiBbdGhpcy5zb3J0QnldXG4gICAgc29ydGVkQXJyYXkuZm9yRWFjaCgoc29ydGVkQ29sKSA9PiB7XG4gICAgICBpZiAoc29ydGVkQ29sWzFdID09PSBjb2wpIHtcbiAgICAgICAgb3JkZXIgPSBzb3J0ZWRDb2xbMF1cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBvcmRlclxuICB9XG5cbiAgc2V0U29ydEJ5KGNvbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydE9yZGVyID0gdGhpcy5nZXRPcmRlckZvckNvbHVtbihjb2wpXG4gICAgbGV0IG5ld09yZGVyXG4gICAgaWYgKHNvcnRPcmRlcikge1xuICAgICAgbmV3T3JkZXIgPSBzb3J0T3JkZXIgPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYydcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3T3JkZXIgPSAnYXNjJ1xuICAgIH1cbiAgICB0aGlzLnNvcnRCeUNoYW5nZS5lbWl0KFtuZXdPcmRlciwgY29sXSlcbiAgICB0aGlzLnNvcnRCeSA9IFtuZXdPcmRlciwgY29sXVxuICB9XG5cbiAgaXNTb3J0ZWRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc29ydE9yZGVyID0gdGhpcy5nZXRPcmRlckZvckNvbHVtbihjb2wpXG4gICAgcmV0dXJuIHNvcnRPcmRlciA9PT0gb3JkZXJcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJlY29yZHMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnJlY29yZHNEZXNlbGVjdC5lbWl0KFtyZWNvcmRdKVxuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZHMgPSB0aGlzLnNlbGVjdGVkUmVjb3Jkcy5maWx0ZXIoXG4gICAgICAgICh2YWwpID0+IHZhbCAhPT0gcmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWNvcmRzU2VsZWN0LmVtaXQoW3JlY29yZF0pXG4gICAgICB0aGlzLnNlbGVjdGVkUmVjb3Jkcy5wdXNoKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMucmVjb3Jkc0Rlc2VsZWN0LmVtaXQodGhpcy5yZWNvcmRzKVxuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZHMgPSBbXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlY29yZHNTZWxlY3QuZW1pdCh0aGlzLnJlY29yZHMpXG4gICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkcyA9IHRoaXMucmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJlY29yZHMubGVuZ3RoID09PSB0aGlzLnJlY29yZHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBhbGxSZWNvcmRzID0gdGhpcy5yZWNvcmRzLmZpbHRlcigocmVjb3JkKSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVjb3Jkcy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgICAgIClcbiAgICAgIGlmIChhbGxSZWNvcmRzLmxlbmd0aCA9PT0gdGhpcy5yZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlzU29tZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWNvcmRzLmxlbmd0aCA8IHRoaXMucmVjb3Jkcy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2ICpuZ0lmPVwidG90YWxIaXRzXCIgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCByZWNvcmRzLWluZm9ybWF0aW9uXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICBjbGFzcz1cIm15LTggbWwtNCBibG9jayB0ZXh0LWdyYXktODAwXCJcbiAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgZGlzcGxheWVkOiByZWNvcmRzLmxlbmd0aCxcbiAgICAgICAgICBoaXRzOiB0b3RhbEhpdHNcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIHJlc3VsdHMucmVjb3Jkcy5oaXRzLmRpc3BsYXllZE9uXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJlY29yZHMubGVuZ3RoID4gMFwiXG4gICAgICAgIGNsYXNzPVwibXktOCBtbC02IGJsb2NrIHRleHQtZ3JheS00MDAgc2VsZWN0ZWQtcmVjb3Jkc1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgYW1vdW50OiBzZWxlY3RlZFJlY29yZHMubGVuZ3RoIH1cIlxuICAgICAgPlxuICAgICAgICByZXN1bHRzLnJlY29yZHMuaGl0cy5zZWxlY3RlZFxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLVtyZXBlYXQoMyxtaW5tYXgoMCxtYXgtY29udGVudCkpXSBnYXAteC00IGdhcC15LTFcIlxuICAgICAgKm5nSWY9XCJyZWNvcmRzWzBdLm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50cyB0ZXh0LXNtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtdGFibGUtaGVhZGVyIHRleHQtZ3JheS00MDAgZmxleCBnYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy51c2VyRGV0YWlsPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1oZWFkZXIgdGV4dC1ncmF5LTQwMCBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmRhc2hib2FyZC5yZWNvcmRzLnVzZXJuYW1lPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1oZWFkZXIgdGV4dC1ncmF5LTQwMCBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmRhc2hib2FyZC5yZWNvcmRzLnVzZXJFbWFpbDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb250ZW50cyBob3Zlcjp0ZXh0LWdyYXktOTAwIHRleHQtZ3JheS04MDAgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwicmVjb3JkU2VsZWN0LmVtaXQocmVjb3JkKVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCByZWNvcmQgb2YgcmVjb3Jkc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtdGFibGUtY29sIHRleHQtMTZcIj5cbiAgICAgICAgICB7eyByZWNvcmQubmFtZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1jb2wgdGV4dC0xNlwiPlxuICAgICAgICAgIHt7IHJlY29yZC51c2VybmFtZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1jb2wgdGV4dC0xNlwiPlxuICAgICAgICAgIHt7IHJlY29yZC5lbWFpbEFkZHJlc3Nlc1swXSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy1bcmVwZWF0KDYsbWlubWF4KDAsbWF4LWNvbnRlbnQpKV0gZ2FwLXgtNCBnYXAteS0xXCJcbiAgICAgICpuZ0lmPVwiIXJlY29yZHNbMF0ubmFtZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzIHRleHQtc21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGduLXVpLWNoZWNrYm94XG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNTb21lU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAoY2hhbmdlZCk9XCJzZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZ24tdWktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLXRhYmxlLWhlYWRlciB0ZXh0LWdyYXktNDAwIGZsZXggZ2FwLTFcIj5cbiAgICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgICAgZXh0cmFDbGFzcz1cInB4LTMgcGwtMCBzcGFjZS14LTEgdGV4dC1sZWZ0XCJcbiAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZXRTb3J0QnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEudGl0bGU8L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1NvcnRlZEJ5KCdyZXNvdXJjZVRpdGxlT2JqZWN0LmRlZmF1bHQua2V5d29yZCcsICdkZXNjJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBleHBhbmRfbW9yZTwvbWF0LWljb25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJywgJ2FzYycpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgZXhwYW5kX2xlc3M8L21hdC1pY29uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHRyYW5zbGF0ZT1cIlwiIGNsYXNzPVwicmVjb3JkLXRhYmxlLWhlYWRlciB0ZXh0LWdyYXktNDAwIGZsZXggZ2FwLTFcIj5cbiAgICAgICAgICByZWNvcmQubWV0YWRhdGEuZm9ybWF0c1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1oZWFkZXIgdGV4dC1ncmF5LTQwMCBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICAgIGV4dHJhQ2xhc3M9XCJweC0zIHBsLTAgc3BhY2UteC0xXCJcbiAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZXRTb3J0QnkoJ3JlY29yZE93bmVyJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuYXV0aG9yPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTb3J0ZWRCeSgncmVjb3JkT3duZXInLCAnZGVzYycpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgZXhwYW5kX21vcmU8L21hdC1pY29uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1NvcnRlZEJ5KCdyZWNvcmRPd25lcicsICdhc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIGV4cGFuZF9sZXNzPC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1oZWFkZXIgdGV4dC1ncmF5LTQwMCBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICAgIGV4dHJhQ2xhc3M9XCJweC0zIHBsLTAgc3BhY2UteC0xXCJcbiAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZXRTb3J0QnkoJ2NoYW5nZURhdGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS51cGRhdGVkT248L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1NvcnRlZEJ5KCdjaGFuZ2VEYXRlJywgJ2Rlc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIGV4cGFuZF9tb3JlPC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTb3J0ZWRCeSgnY2hhbmdlRGF0ZScsICdhc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIGV4cGFuZF9sZXNzPC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1oZWFkZXIgdGV4dC1ncmF5LTQwMCBmbGV4IGdhcC0xXCI+XG4gICAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICAgIGV4dHJhQ2xhc3M9XCJweC0zIHBsLTAgc3BhY2UteC0xXCJcbiAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZXRTb3J0QnkoJ2NyZWF0ZURhdGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5jcmVhdGVkT248L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1NvcnRlZEJ5KCdjcmVhdGVEYXRlJywgJ2Rlc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIGV4cGFuZF9tb3JlPC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNTb3J0ZWRCeSgnY3JlYXRlRGF0ZScsICdhc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIGV4cGFuZF9sZXNzPC9tYXQtaWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRzIGhvdmVyOnRleHQtZ3JheS05MDAgdGV4dC1ncmF5LTgwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJyZWNvcmRTZWxlY3QuZW1pdChyZWNvcmQpXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHJlY29yZCBvZiByZWNvcmRzXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC10YWJsZS1jb2xcIj5cbiAgICAgICAgICA8Z24tdWktY2hlY2tib3hcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChyZWNvcmQpXCJcbiAgICAgICAgICAgIChjaGFuZ2VkKT1cImhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKCRldmVudCwgcmVjb3JkKVwiXG4gICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgPjwvZ24tdWktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3RpdGxlXT1cInJlY29yZC50aXRsZVwiXG4gICAgICAgICAgY2xhc3M9XCJyZWNvcmQtdGFibGUtY29sIHRleHQtMTYgc2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcmVjb3JkLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJyZWNvcmQtdGFibGUtY29sIGZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC0xNlwiXG4gICAgICAgICAgW3RpdGxlXT1cImZvcm1hdHMuam9pbignLCAnKVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRSZWNvcmRGb3JtYXRzKHJlY29yZCkgYXMgZm9ybWF0c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZS1idG4gbWluLXctWzQ1cHhdIHRleHQtc20gdGV4dC13aGl0ZSBweC0yIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgICAqbmdJZj1cImZvcm1hdHNbMF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXNtIHRleHQtd2hpdGUgcHgtMiBmbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEJhZGdlQ29sb3IoZm9ybWF0c1sxXSlcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXRzWzFdIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFyZWNvcmQubmFtZSAmJiBmb3JtYXRzLnNsaWNlKDIpLmxlbmd0aCA+IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPit7eyBmb3JtYXRzLnNsaWNlKDIpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtdGFibGUtY29sIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtMTZcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBlcnNvbiA8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+e3sgZm9ybWF0VXNlckluZm8ocmVjb3JkLmV4dHJhcz8ub3duZXJJbmZvKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtdGFibGUtY29sIHRleHQtMTYgc2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICB7eyBkYXRlVG9TdHJpbmcocmVjb3JkLnJlY29yZFVwZGF0ZWQpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLXRhYmxlLWNvbCB0ZXh0LTE2IHNlbGYtY2VudGVyXCI+XG4gICAgICAgICAge3sgZGF0ZVRvU3RyaW5nKHJlY29yZC5yZWNvcmRDcmVhdGVkKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,17 +0,0 @@
1
- import { WmsEndpoint, WmsLayerFull } from '@camptocamp/ogc-client';
2
- import { MapContextLayerWmsModel } from '../map-context/map-context.model';
3
- import { ProxyService } from '../../../../../../libs/util/shared/src';
4
- import { Observable } from 'rxjs';
5
- import { Extent } from 'ol/extent';
6
- import * as i0 from "@angular/core";
7
- export declare class MapUtilsWMSService {
8
- private proxy;
9
- constructor(proxy: ProxyService);
10
- getCapabilities(layer: MapContextLayerWmsModel): Observable<WmsEndpoint>;
11
- getLayerFull(layer: MapContextLayerWmsModel): Observable<WmsLayerFull>;
12
- getLayerLonLatBBox(layer: MapContextLayerWmsModel): Observable<Extent>;
13
- getLonLatBBox(wmsLayerFull: WmsLayerFull): Promise<Extent>;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<MapUtilsWMSService, never>;
15
- static ɵprov: i0.ɵɵInjectableDeclaration<MapUtilsWMSService>;
16
- }
17
- //# sourceMappingURL=map-utils-wms.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-utils-wms.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAA;AAIvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;;AAIlC,qBAGa,kBAAkB;IACjB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,UAAU,CAAC,WAAW,CAAC;IAIxE,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,UAAU,CAAC,YAAY,CAAC;IAMtE,kBAAkB,CAAC,KAAK,EAAE,uBAAuB;IAM3C,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAnBrD,kBAAkB;6CAAlB,kBAAkB;CA0C9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/projections.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAA0B,CAAA"}
@@ -1,31 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
3
- import { FileFormat } from '../../../../../../libs/util/shared/src';
4
- import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search';
5
- import * as i0 from "@angular/core";
6
- export declare class RecordTableComponent {
7
- selectedRecords: string[];
8
- records: any[];
9
- totalHits?: number;
10
- sortBy?: SortByField;
11
- recordClick: EventEmitter<CatalogRecord>;
12
- recordsSelect: EventEmitter<CatalogRecord[]>;
13
- recordsDeselect: EventEmitter<CatalogRecord[]>;
14
- sortByChange: EventEmitter<SortByField>;
15
- dateToString(date: Date): string;
16
- getStatus(isPublishedToAll: boolean | unknown): "published" | "not published";
17
- formatUserInfo(userInfo: string | unknown): string;
18
- getRecordFormats(record: CatalogRecord): FileFormat[];
19
- getBadgeColor(format: FileFormat): string;
20
- private getOrderForColumn;
21
- setSortBy(col: string): void;
22
- isSortedBy(col: string, order: 'asc' | 'desc'): boolean;
23
- isChecked(record: CatalogRecord): boolean;
24
- handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
25
- selectAll(): void;
26
- isAllSelected(): boolean;
27
- isSomeSelected(): boolean;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<RecordTableComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<RecordTableComponent, "gn-ui-record-table", never, { "selectedRecords": { "alias": "selectedRecords"; "required": false; }; "records": { "alias": "records"; "required": false; }; "totalHits": { "alias": "totalHits"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; }, { "recordClick": "recordClick"; "recordsSelect": "recordsSelect"; "recordsDeselect": "recordsDeselect"; "sortByChange": "sortByChange"; }, never, never, false, never>;
30
- }
31
- //# sourceMappingURL=record-table.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/record-table/record-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EACL,UAAU,EAIX,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;;AAEvF,qBAKa,oBAAoB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAK;IAC9B,OAAO,EAAE,GAAG,EAAE,CAAK;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,8BAAoC;IAC/C,aAAa,gCAAsC;IACnD,eAAe,gCAAsC;IACrD,YAAY,4BAAkC;IAExD,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,SAAS,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAI7C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAQlD,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAarD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,OAAO,CAAC,iBAAiB;IAgBzB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY5B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO;IAKvD,SAAS,CAAC,MAAM,EAAE,aAAa;IAO/B,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAYnE,SAAS;IAYT,aAAa,IAAI,OAAO;IAYxB,cAAc,IAAI,OAAO;yCA5Hd,oBAAoB;2CAApB,oBAAoB;CAqIhC"}
@@ -1,58 +0,0 @@
1
- import { Injectable } from '@angular/core'
2
- import { WmsEndpoint, WmsLayerFull } from '@camptocamp/ogc-client'
3
- import { MapContextLayerWmsModel } from '../map-context/map-context.model'
4
- import { ProxyService } from '../../../../../../libs/util/shared/src'
5
- import { from, Observable } from 'rxjs'
6
- import { map, switchMap } from 'rxjs/operators'
7
- import { LONLAT_CRS_CODES } from './projections'
8
- import { fromEPSGCode, register } from 'ol/proj/proj4'
9
- import { Extent } from 'ol/extent'
10
- import proj4 from 'proj4/dist/proj4'
11
- import { transformExtent } from 'ol/proj'
12
-
13
- @Injectable({
14
- providedIn: 'root',
15
- })
16
- export class MapUtilsWMSService {
17
- constructor(private proxy: ProxyService) {}
18
-
19
- getCapabilities(layer: MapContextLayerWmsModel): Observable<WmsEndpoint> {
20
- return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady())
21
- }
22
-
23
- getLayerFull(layer: MapContextLayerWmsModel): Observable<WmsLayerFull> {
24
- return this.getCapabilities(layer).pipe(
25
- map((endpoint) => endpoint.getLayerByName(layer.name))
26
- )
27
- }
28
-
29
- getLayerLonLatBBox(layer: MapContextLayerWmsModel) {
30
- return this.getLayerFull(layer).pipe(
31
- switchMap((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull)))
32
- )
33
- }
34
-
35
- async getLonLatBBox(wmsLayerFull: WmsLayerFull): Promise<Extent> {
36
- const { boundingBoxes } = wmsLayerFull
37
- const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) =>
38
- LONLAT_CRS_CODES.includes(crs)
39
- )
40
- if (lonLatCRS) {
41
- return boundingBoxes[lonLatCRS]
42
- } else {
43
- const availableEPSGCode = Object.keys(boundingBoxes)[0]
44
- register(proj4)
45
- const proj = await fromEPSGCode(availableEPSGCode)
46
- proj4.defs(availableEPSGCode, proj)
47
-
48
- const bboxWithFiniteNumbers = [
49
- parseFloat(boundingBoxes[availableEPSGCode][0]),
50
- parseFloat(boundingBoxes[availableEPSGCode][1]),
51
- parseFloat(boundingBoxes[availableEPSGCode][2]),
52
- parseFloat(boundingBoxes[availableEPSGCode][3]),
53
- ]
54
- const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326')
55
- return extent
56
- }
57
- }
58
- }
@@ -1,7 +0,0 @@
1
- .record-table-col {
2
- @apply px-5 py-3 items-center truncate;
3
- }
4
-
5
- .record-table-header {
6
- @apply record-table-col capitalize;
7
- }
@@ -1,215 +0,0 @@
1
- <div>
2
- <div *ngIf="totalHits" class="">
3
- <div class="flex records-information">
4
- <div
5
- translate
6
- class="my-8 ml-4 block text-gray-800"
7
- [translateParams]="{
8
- displayed: records.length,
9
- hits: totalHits
10
- }"
11
- >
12
- results.records.hits.displayedOn
13
- </div>
14
- <div
15
- *ngIf="selectedRecords.length > 0"
16
- class="my-8 ml-6 block text-gray-400 selected-records"
17
- translate
18
- [translateParams]="{ amount: selectedRecords.length }"
19
- >
20
- results.records.hits.selected
21
- </div>
22
- </div>
23
-
24
- <div
25
- class="grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1"
26
- *ngIf="records[0].name"
27
- >
28
- <div class="contents text-sm">
29
- <div class="record-table-header text-gray-400 flex gap-1">
30
- <span translate>dashboard.records.userDetail</span>
31
- </div>
32
- <div class="record-table-header text-gray-400 flex gap-1">
33
- <span translate>dashboard.records.username</span>
34
- </div>
35
- <div class="record-table-header text-gray-400 flex gap-1">
36
- <span translate>dashboard.records.userEmail</span>
37
- </div>
38
- </div>
39
- <div
40
- class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
41
- (click)="recordSelect.emit(record)"
42
- *ngFor="let record of records"
43
- >
44
- <div class="record-table-col text-16">
45
- {{ record.name }}
46
- </div>
47
- <div class="record-table-col text-16">
48
- {{ record.username }}
49
- </div>
50
- <div class="record-table-col text-16">
51
- {{ record.emailAddresses[0] }}
52
- </div>
53
- </div>
54
- </div>
55
-
56
- <div
57
- class="grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1"
58
- *ngIf="!records[0].name"
59
- >
60
- <div class="contents text-sm">
61
- <div class="flex justify-center items-center">
62
- <gn-ui-checkbox
63
- [checked]="isAllSelected()"
64
- [indeterminate]="isSomeSelected()"
65
- (changed)="selectAll()"
66
- type="default"
67
- >
68
- </gn-ui-checkbox>
69
- </div>
70
- <div class="record-table-header text-gray-400 flex gap-1">
71
- <gn-ui-button
72
- type="light"
73
- extraClass="px-3 pl-0 space-x-1 text-left"
74
- (buttonClick)="setSortBy('resourceTitleObject.default.keyword')"
75
- >
76
- <span translate>record.metadata.title</span>
77
- <mat-icon
78
- class="material-symbols-outlined"
79
- *ngIf="isSortedBy('resourceTitleObject.default.keyword', 'desc')"
80
- >
81
- expand_more</mat-icon
82
- >
83
- <mat-icon
84
- class="material-symbols-outlined"
85
- *ngIf="isSortedBy('resourceTitleObject.default.keyword', 'asc')"
86
- >
87
- expand_less</mat-icon
88
- >
89
- </gn-ui-button>
90
- </div>
91
- <div translate="" class="record-table-header text-gray-400 flex gap-1">
92
- record.metadata.formats
93
- </div>
94
- <div class="record-table-header text-gray-400 flex gap-1">
95
- <gn-ui-button
96
- type="light"
97
- extraClass="px-3 pl-0 space-x-1"
98
- (buttonClick)="setSortBy('recordOwner')"
99
- >
100
- <span translate>record.metadata.author</span>
101
- <mat-icon
102
- class="material-symbols-outlined"
103
- *ngIf="isSortedBy('recordOwner', 'desc')"
104
- >
105
- expand_more</mat-icon
106
- >
107
- <mat-icon
108
- class="material-symbols-outlined"
109
- *ngIf="isSortedBy('recordOwner', 'asc')"
110
- >
111
- expand_less</mat-icon
112
- >
113
- </gn-ui-button>
114
- </div>
115
- <div class="record-table-header text-gray-400 flex gap-1">
116
- <gn-ui-button
117
- type="light"
118
- extraClass="px-3 pl-0 space-x-1"
119
- (buttonClick)="setSortBy('changeDate')"
120
- >
121
- <span translate>record.metadata.updatedOn</span>
122
- <mat-icon
123
- class="material-symbols-outlined"
124
- *ngIf="isSortedBy('changeDate', 'desc')"
125
- >
126
- expand_more</mat-icon
127
- >
128
- <mat-icon
129
- class="material-symbols-outlined"
130
- *ngIf="isSortedBy('changeDate', 'asc')"
131
- >
132
- expand_less</mat-icon
133
- >
134
- </gn-ui-button>
135
- </div>
136
- <div class="record-table-header text-gray-400 flex gap-1">
137
- <gn-ui-button
138
- type="light"
139
- extraClass="px-3 pl-0 space-x-1"
140
- (buttonClick)="setSortBy('createDate')"
141
- >
142
- <span translate>record.metadata.createdOn</span>
143
- <mat-icon
144
- class="material-symbols-outlined"
145
- *ngIf="isSortedBy('createDate', 'desc')"
146
- >
147
- expand_more</mat-icon
148
- >
149
- <mat-icon
150
- class="material-symbols-outlined"
151
- *ngIf="isSortedBy('createDate', 'asc')"
152
- >
153
- expand_less</mat-icon
154
- >
155
- </gn-ui-button>
156
- </div>
157
- </div>
158
- <div
159
- class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
160
- (click)="recordSelect.emit(record)"
161
- *ngFor="let record of records"
162
- >
163
- <div class="record-table-col">
164
- <gn-ui-checkbox
165
- [checked]="isChecked(record)"
166
- (changed)="handleRecordSelectedChange($event, record)"
167
- type="default"
168
- ></gn-ui-checkbox>
169
- </div>
170
- <div
171
- [title]="record.title"
172
- class="record-table-col text-16 self-center"
173
- >
174
- {{ record.title }}
175
- </div>
176
- <div
177
- class="record-table-col flex justify-start items-center gap-2 text-16"
178
- [title]="formats.join(', ')"
179
- *ngIf="getRecordFormats(record) as formats"
180
- >
181
- <span
182
- class="badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0"
183
- [style.background-color]="getBadgeColor(formats[0])"
184
- *ngIf="formats[0]"
185
- >
186
- {{ formats[0] }}
187
- </span>
188
- <span
189
- class="badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0"
190
- [style.background-color]="getBadgeColor(formats[1])"
191
- *ngIf="formats[1]"
192
- >
193
- {{ formats[1] }}
194
- </span>
195
- <div
196
- class="flex-shrink-0"
197
- *ngIf="!record.name && formats.slice(2).length > 0"
198
- >
199
- <span>+{{ formats.slice(2).length }}</span>
200
- </div>
201
- </div>
202
- <div class="record-table-col flex items-center gap-2 text-16">
203
- <mat-icon class="material-symbols-outlined"> person </mat-icon>
204
- <span class="">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>
205
- </div>
206
- <div class="record-table-col text-16 self-center">
207
- {{ dateToString(record.recordUpdated) }}
208
- </div>
209
- <div class="record-table-col text-16 self-center">
210
- {{ dateToString(record.recordCreated) }}
211
- </div>
212
- </div>
213
- </div>
214
- </div>
215
- </div>