@kalisio/kdk 2.6.4 → 2.7.0

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 (398) hide show
  1. package/core/api/application.js +2 -4
  2. package/core/api/authentication.js +2 -3
  3. package/core/api/db.js +10 -2
  4. package/core/api/hooks/hooks.authorisations.js +4 -2
  5. package/core/api/hooks/hooks.push.js +6 -2
  6. package/core/api/hooks/hooks.query.js +29 -12
  7. package/core/api/hooks/hooks.users.js +30 -17
  8. package/core/api/models/configurations.model.mongodb.js +4 -0
  9. package/core/api/services/authorisations/authorisations.service.js +1 -1
  10. package/core/api/services/configurations/configurations.hooks.js +33 -0
  11. package/core/api/services/index.js +41 -7
  12. package/core/api/services/messages/messages.hooks.js +9 -3
  13. package/core/client/api.js +14 -1
  14. package/core/client/capabilities.js +1 -6
  15. package/core/client/components/KAvatar.vue +24 -20
  16. package/core/client/components/account/KProfile.vue +10 -71
  17. package/core/client/components/account/index.js +0 -2
  18. package/core/client/components/app/KSettings.vue +1 -0
  19. package/core/client/components/collection/KBoard.vue +4 -3
  20. package/core/client/components/collection/KCardSection.vue +1 -0
  21. package/core/client/components/collection/KGrid.vue +2 -0
  22. package/core/client/components/collection/KTable.vue +5 -1
  23. package/core/client/components/collection/KTimeLine.vue +9 -1
  24. package/core/client/components/collection/index.js +0 -2
  25. package/core/client/components/form/KChipsField.vue +2 -1
  26. package/core/client/components/form/KEmailField.vue +1 -0
  27. package/core/client/components/form/KFileField.vue +22 -1
  28. package/core/client/components/form/KForm.vue +2 -0
  29. package/core/client/components/form/KItemField.vue +1 -0
  30. package/core/client/components/form/KNumberField.vue +1 -0
  31. package/core/client/components/form/KPasswordField.vue +1 -0
  32. package/core/client/components/form/KPhoneField.vue +1 -0
  33. package/core/client/components/form/KPropertyItemField.vue +1 -0
  34. package/core/client/components/form/KResolutionField.vue +1 -0
  35. package/core/client/components/form/KSelectField.vue +31 -0
  36. package/core/client/components/form/KTagField.vue +1 -0
  37. package/core/client/components/form/KTextField.vue +1 -0
  38. package/core/client/components/form/KTokenField.vue +1 -0
  39. package/core/client/components/form/KUnitField.vue +1 -0
  40. package/core/client/components/form/KUrlField.vue +1 -0
  41. package/core/client/components/graphics/KIcon.vue +3 -4
  42. package/core/client/components/layout/KPage.vue +1 -0
  43. package/core/client/components/layout/KWindow.vue +6 -3
  44. package/core/client/components/messages/KMessageComposer.vue +2 -1
  45. package/core/client/components/messages/KMessagesTimeLine.vue +1 -1
  46. package/core/client/components/time/KDate.vue +1 -2
  47. package/core/client/components/time/KDateTime.vue +11 -11
  48. package/core/client/components/time/KTime.vue +1 -1
  49. package/core/client/composables/collection.js +33 -8
  50. package/core/client/composables/errors.js +1 -1
  51. package/core/client/composables/layout.js +9 -9
  52. package/core/client/configurations.js +50 -0
  53. package/core/client/exporter.js +1 -1
  54. package/core/client/i18n/core_en.json +6 -39
  55. package/core/client/i18n/core_fr.json +6 -39
  56. package/core/client/index.js +2 -0
  57. package/core/client/layout.js +8 -8
  58. package/core/client/mixins/mixin.base-activity.js +5 -2
  59. package/core/client/mixins/mixin.base-field.js +3 -3
  60. package/core/client/search.js +2 -1
  61. package/core/client/utils/utils.collection.js +8 -8
  62. package/core/client/utils/utils.items.js +4 -0
  63. package/core/client/utils/utils.push.js +3 -3
  64. package/core/client/utils/utils.session.js +7 -5
  65. package/core/client/utils/utils.shapes.js +38 -7
  66. package/core/client/utils/utils.time.js +21 -22
  67. package/core/common/schemas/users.update-profile.json +3 -2
  68. package/coverage/core/api/application.js.html +392 -398
  69. package/coverage/core/api/authentication.js.html +352 -187
  70. package/coverage/core/api/db.js.html +165 -126
  71. package/coverage/core/api/hooks/hooks.authentication.js.html +22 -196
  72. package/coverage/core/api/hooks/hooks.authorisations.js.html +383 -662
  73. package/coverage/core/api/hooks/hooks.logger.js.html +41 -41
  74. package/coverage/core/api/hooks/hooks.model.js.html +113 -101
  75. package/coverage/core/api/hooks/hooks.push.js.html +124 -97
  76. package/coverage/core/api/hooks/hooks.query.js.html +292 -217
  77. package/coverage/core/api/hooks/hooks.schemas.js.html +123 -123
  78. package/coverage/core/api/hooks/hooks.service.js.html +1 -1
  79. package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
  80. package/coverage/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
  81. package/coverage/core/api/hooks/hooks.users.js.html +255 -447
  82. package/coverage/core/api/hooks/index.html +107 -122
  83. package/coverage/core/api/hooks/index.js.html +4 -10
  84. package/coverage/core/api/index.html +46 -61
  85. package/coverage/core/api/index.js.html +9 -9
  86. package/coverage/core/api/marshall.js.html +9 -9
  87. package/coverage/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
  88. package/coverage/core/api/models/index.html +35 -50
  89. package/coverage/core/api/models/messages.model.mongodb.js.html +39 -27
  90. package/coverage/core/api/models/tags.model.mongodb.js.html +26 -32
  91. package/coverage/core/api/models/users.model.mongodb.js.html +10 -10
  92. package/coverage/core/api/services/account/account.hooks.js.html +5 -5
  93. package/coverage/core/api/services/account/account.service.js.html +127 -127
  94. package/coverage/core/api/services/account/index.html +22 -22
  95. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  96. package/coverage/core/api/services/authorisations/authorisations.service.js.html +213 -222
  97. package/coverage/core/api/services/authorisations/index.html +21 -21
  98. package/coverage/core/api/services/{organisations/organisations.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
  99. package/coverage/core/api/services/{groups → configurations}/index.html +8 -8
  100. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  101. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  102. package/coverage/core/api/services/databases/index.html +1 -1
  103. package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
  104. package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
  105. package/coverage/core/api/services/import-export/index.html +32 -32
  106. package/coverage/core/api/services/index.html +21 -21
  107. package/coverage/core/api/services/index.js.html +313 -142
  108. package/coverage/core/api/services/mailer/index.html +32 -32
  109. package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
  110. package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
  111. package/coverage/core/api/services/messages/index.html +21 -21
  112. package/coverage/core/api/services/messages/messages.hooks.js.html +112 -76
  113. package/coverage/core/api/services/push/index.html +32 -32
  114. package/coverage/core/api/services/push/push.hooks.js.html +80 -80
  115. package/coverage/core/api/services/push/push.service.js.html +34 -34
  116. package/coverage/core/api/services/storage/index.html +29 -29
  117. package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
  118. package/coverage/core/api/services/storage/storage.service.js.html +29 -29
  119. package/coverage/core/api/services/tags/index.html +21 -21
  120. package/coverage/core/api/services/tags/tags.hooks.js.html +119 -71
  121. package/coverage/core/api/services/users/index.html +27 -12
  122. package/coverage/core/api/services/users/users.hooks.js.html +14 -11
  123. package/coverage/core/api/services/users/users.service.js.html +100 -0
  124. package/coverage/core/common/errors.js.html +1 -1
  125. package/coverage/core/common/index.html +42 -27
  126. package/coverage/core/common/index.js.html +1 -1
  127. package/coverage/core/common/permissions.js.html +166 -472
  128. package/coverage/core/common/schema.js.html +4 -4
  129. package/coverage/core/common/utils.js.html +31 -25
  130. package/coverage/core/common/utils.offline.js.html +199 -0
  131. package/coverage/index.html +192 -192
  132. package/coverage/lcov-report/core/api/application.js.html +392 -398
  133. package/coverage/lcov-report/core/api/authentication.js.html +352 -187
  134. package/coverage/lcov-report/core/api/db.js.html +165 -126
  135. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +22 -196
  136. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +383 -662
  137. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +41 -41
  138. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +113 -101
  139. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +124 -97
  140. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +292 -217
  141. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +123 -123
  142. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
  143. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
  144. package/coverage/lcov-report/core/api/hooks/{hooks.groups.js.html → hooks.tags.js.html} +100 -76
  145. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +255 -447
  146. package/coverage/lcov-report/core/api/hooks/index.html +107 -122
  147. package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
  148. package/coverage/lcov-report/core/api/index.html +46 -61
  149. package/coverage/lcov-report/core/api/index.js.html +9 -9
  150. package/coverage/lcov-report/core/api/marshall.js.html +9 -9
  151. package/coverage/lcov-report/core/api/models/{organisations.model.mongodb.js.html → configurations.model.mongodb.js.html} +10 -7
  152. package/coverage/lcov-report/core/api/models/index.html +35 -50
  153. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +39 -27
  154. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +26 -32
  155. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +10 -10
  156. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +5 -5
  157. package/coverage/lcov-report/core/api/services/account/account.service.js.html +127 -127
  158. package/coverage/lcov-report/core/api/services/account/index.html +22 -22
  159. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
  160. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +213 -222
  161. package/coverage/lcov-report/core/api/services/authorisations/index.html +21 -21
  162. package/coverage/lcov-report/core/api/services/{groups/groups.hooks.js.html → configurations/configurations.hooks.js.html} +16 -10
  163. package/coverage/lcov-report/core/api/services/{groups → configurations}/index.html +8 -8
  164. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  165. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  166. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  167. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
  168. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
  169. package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
  170. package/coverage/lcov-report/core/api/services/index.html +21 -21
  171. package/coverage/lcov-report/core/api/services/index.js.html +313 -142
  172. package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
  173. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
  174. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
  175. package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
  176. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +112 -76
  177. package/coverage/lcov-report/core/api/services/push/index.html +32 -32
  178. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
  179. package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
  180. package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
  181. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
  182. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +29 -29
  183. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  184. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +119 -71
  185. package/coverage/lcov-report/core/api/services/users/index.html +27 -12
  186. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +14 -11
  187. package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
  188. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  189. package/coverage/lcov-report/core/common/index.html +42 -27
  190. package/coverage/lcov-report/core/common/index.js.html +1 -1
  191. package/coverage/lcov-report/core/common/permissions.js.html +166 -472
  192. package/coverage/lcov-report/core/common/schema.js.html +4 -4
  193. package/coverage/lcov-report/core/common/utils.js.html +31 -25
  194. package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
  195. package/coverage/lcov-report/index.html +192 -192
  196. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +169 -31
  197. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
  198. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +215 -35
  199. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  200. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  201. package/coverage/lcov-report/map/api/index.html +1 -1
  202. package/coverage/lcov-report/map/api/index.js.html +1 -1
  203. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  204. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  205. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +82 -7
  206. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  207. package/coverage/lcov-report/map/api/models/index.html +22 -7
  208. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
  209. package/coverage/lcov-report/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
  210. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  211. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  212. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  213. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +39 -12
  214. package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
  215. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  216. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  217. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +86 -11
  218. package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
  219. package/coverage/lcov-report/map/api/services/features/index.html +7 -7
  220. package/coverage/lcov-report/map/api/services/index.html +5 -5
  221. package/coverage/lcov-report/map/api/services/index.js.html +326 -50
  222. package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
  223. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
  224. package/coverage/{core/api/services/organisations → lcov-report/map/api/services/styles}/index.html +10 -25
  225. package/coverage/lcov-report/{core/api/services/organisations/organisations.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
  226. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  227. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  228. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +7 -10
  229. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  230. package/coverage/lcov-report/map/common/index.html +19 -19
  231. package/coverage/lcov-report/map/common/index.js.html +1 -1
  232. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  233. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  234. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  235. package/coverage/lcov-report/map/common/opendap-utils.js.html +4 -7
  236. package/coverage/lcov-report/map/common/permissions.js.html +10 -4
  237. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  238. package/coverage/lcov-report/map/common/tms-utils.js.html +9 -12
  239. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
  240. package/coverage/lcov-report/map/common/wcs-utils.js.html +12 -15
  241. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +2 -2
  242. package/coverage/lcov-report/map/common/wfs-utils.js.html +14 -17
  243. package/coverage/lcov-report/map/common/wms-utils.js.html +30 -12
  244. package/coverage/lcov-report/map/common/wmts-utils.js.html +10 -13
  245. package/coverage/lcov.info +4157 -3816
  246. package/coverage/map/api/hooks/hooks.catalog.js.html +169 -31
  247. package/coverage/map/api/hooks/hooks.features.js.html +1 -1
  248. package/coverage/map/api/hooks/hooks.query.js.html +215 -35
  249. package/coverage/map/api/hooks/index.html +7 -7
  250. package/coverage/map/api/hooks/index.js.html +1 -1
  251. package/coverage/map/api/index.html +1 -1
  252. package/coverage/map/api/index.js.html +1 -1
  253. package/coverage/map/api/marshall.js.html +1 -1
  254. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  255. package/coverage/map/api/models/catalog.model.mongodb.js.html +82 -7
  256. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  257. package/coverage/map/api/models/index.html +22 -7
  258. package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
  259. package/coverage/{core/api/models/groups.model.mongodb.js.html → map/api/models/styles.model.mongodb.js.html} +10 -7
  260. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  261. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  262. package/coverage/map/api/services/alerts/index.html +1 -1
  263. package/coverage/map/api/services/catalog/catalog.hooks.js.html +39 -12
  264. package/coverage/map/api/services/catalog/index.html +5 -5
  265. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  266. package/coverage/map/api/services/daptiles/index.html +1 -1
  267. package/coverage/map/api/services/features/features.hooks.js.html +86 -11
  268. package/coverage/map/api/services/features/features.service.js.html +307 -4
  269. package/coverage/map/api/services/features/index.html +7 -7
  270. package/coverage/map/api/services/index.html +5 -5
  271. package/coverage/map/api/services/index.js.html +326 -50
  272. package/coverage/map/api/services/projects/index.html +1 -1
  273. package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
  274. package/coverage/{lcov-report/core/api/services/organisations → map/api/services/styles}/index.html +10 -25
  275. package/coverage/{core/api/services/groups/groups.hooks.js.html → map/api/services/styles/styles.hooks.js.html} +45 -12
  276. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  277. package/coverage/map/common/errors.js.html +1 -1
  278. package/coverage/map/common/geotiff-grid-source.js.html +7 -10
  279. package/coverage/map/common/grid.js.html +1 -1
  280. package/coverage/map/common/index.html +19 -19
  281. package/coverage/map/common/index.js.html +1 -1
  282. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  283. package/coverage/map/common/moment-utils.js.html +1 -1
  284. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  285. package/coverage/map/common/opendap-utils.js.html +4 -7
  286. package/coverage/map/common/permissions.js.html +10 -4
  287. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  288. package/coverage/map/common/tms-utils.js.html +9 -12
  289. package/coverage/map/common/wcs-grid-source.js.html +3 -3
  290. package/coverage/map/common/wcs-utils.js.html +12 -15
  291. package/coverage/map/common/weacast-grid-source.js.html +2 -2
  292. package/coverage/map/common/wfs-utils.js.html +14 -17
  293. package/coverage/map/common/wms-utils.js.html +30 -12
  294. package/coverage/map/common/wmts-utils.js.html +10 -13
  295. package/coverage/tmp/coverage-1028514-1773134124472-0.json +1 -0
  296. package/coverage/tmp/coverage-1028526-1773134124448-0.json +1 -0
  297. package/coverage/tmp/coverage-1028537-1773134124431-0.json +1 -0
  298. package/coverage/tmp/coverage-1028549-1773134124401-0.json +1 -0
  299. package/coverage/tmp/coverage-1028556-1773134124353-0.json +1 -0
  300. package/extras/configs/widgets.top.js +3 -3
  301. package/extras/tests/core/collection.mjs +2 -9
  302. package/extras/tours/pane.top.js +0 -9
  303. package/map/api/hooks/hooks.catalog.js +18 -4
  304. package/map/api/services/catalog/catalog.hooks.js +3 -0
  305. package/map/api/services/features/features.hooks.js +3 -1
  306. package/map/api/services/index.js +2 -6
  307. package/map/api/services/styles/styles.hooks.js +6 -1
  308. package/map/client/components/KFeatureActionButton.vue +9 -3
  309. package/map/client/components/KFeaturesFilterManager.vue +5 -5
  310. package/map/client/components/KFilterCondition.vue +17 -10
  311. package/map/client/components/KLayerEditor.vue +49 -39
  312. package/map/client/components/KMeasureTool.vue +7 -1
  313. package/map/client/components/KTimezoneMap.vue +29 -9
  314. package/map/client/components/catalog/KLayersPanel.vue +26 -16
  315. package/map/client/components/catalog/KLayersSelector.vue +13 -2
  316. package/map/client/components/catalog/KViewsPanel.vue +5 -4
  317. package/map/client/components/form/KSelectLayersField.vue +28 -17
  318. package/map/client/components/form/KSelectViewsField.vue +18 -9
  319. package/map/client/components/form/KTimezoneField.vue +1 -2
  320. package/map/client/components/legend/KVariablesLegend.vue +10 -1
  321. package/map/client/components/location/KLocationCardSection.vue +7 -2
  322. package/map/client/components/location/KLocationMap.vue +31 -7
  323. package/map/client/components/selection/KSelectedLayerFeatures.vue +2 -2
  324. package/map/client/components/stickies/KZoomControl.vue +1 -1
  325. package/map/client/components/styles/KStyleManager.vue +4 -1
  326. package/map/client/components/widget/KTimeSeries.vue +174 -497
  327. package/map/client/components/widget/KTimeSeriesSelector.vue +72 -0
  328. package/map/client/components/widget/KTimeSeriesToolbar.vue +83 -0
  329. package/map/client/composables/catalog.js +6 -10
  330. package/map/client/composables/highlight.js +12 -9
  331. package/map/client/composables/project.js +1 -1
  332. package/map/client/composables/selection.js +8 -7
  333. package/map/client/composables/weather.js +9 -2
  334. package/map/client/geolocation.js +8 -5
  335. package/map/client/i18n/map_en.json +11 -10
  336. package/map/client/i18n/map_fr.json +10 -9
  337. package/map/client/leaflet/TiledFeatureLayer.js +85 -82
  338. package/map/client/leaflet/utils/utils.geojson.js +3 -3
  339. package/map/client/mixins/globe/mixin.base-globe.js +15 -6
  340. package/map/client/mixins/globe/mixin.geojson-layers.js +27 -18
  341. package/map/client/mixins/map/mixin.edit-layers.js +9 -1
  342. package/map/client/mixins/map/mixin.pmtiles-layers.js +118 -29
  343. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +12 -5
  344. package/map/client/mixins/map/mixin.tiled-wind-layers.js +19 -10
  345. package/map/client/mixins/mixin.activity.js +23 -30
  346. package/map/client/mixins/mixin.feature-selection.js +41 -5
  347. package/map/client/planets.js +1 -1
  348. package/map/client/readers/reader.kml.js +2 -3
  349. package/map/client/utils/utils.catalog.js +36 -10
  350. package/map/client/utils/utils.layers.js +39 -8
  351. package/map/client/utils/utils.project.js +4 -0
  352. package/map/client/utils/utils.style.js +37 -7
  353. package/map/client/utils/utils.time-series.js +215 -6
  354. package/map/common/schemas/catalog.update.json +1 -1
  355. package/map/common/weacast-grid-source.js +1 -1
  356. package/package.json +3 -3
  357. package/scripts/kash/CHANGELOG.md +0 -4
  358. package/scripts/kash/README.md +0 -9
  359. package/scripts/kash/kash.sh +45 -40
  360. package/scripts/kash/scripts/run_tests.sh +1 -4
  361. package/test/api/core/authentication.test.js +9 -4
  362. package/test/api/core/config/default.cjs +1 -0
  363. package/test/api/core/hooks.test.js +6 -0
  364. package/test/api/core/index.test.js +43 -18
  365. package/test/api/core/push.test.js +8 -8
  366. package/test/api/core/test-log-2026-03-10.log +60 -0
  367. package/test/api/core/users.test.js +384 -0
  368. package/test/api/map/grid-sources.test.js +1 -1
  369. package/test/api/map/test-log-2026-03-10.log +56 -0
  370. package/vite/package.json +11 -2
  371. package/vite/test/core/composables.test.js +77 -0
  372. package/vite/vitest.config.js +13 -0
  373. package/vite/yarn.lock +1096 -18
  374. package/.vscode/settings.json +0 -5
  375. package/core/client/components/account/KAccount.vue +0 -68
  376. package/core/client/components/account/KDeleteAccountManager.vue +0 -62
  377. package/core/client/components/account/KEmailManager.vue +0 -128
  378. package/core/client/components/account/KPasswordManager.vue +0 -90
  379. package/core/client/components/account/KVerifyEmailManager.vue +0 -105
  380. package/core/client/components/collection/KColumn.vue +0 -227
  381. package/core/client/components/collection/KHistory.vue +0 -113
  382. package/core/client/components/collection/KHistoryEntry.vue +0 -109
  383. package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
  384. package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
  385. package/coverage/core/api/utils.js.html +0 -118
  386. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
  387. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
  388. package/coverage/lcov-report/core/api/utils.js.html +0 -118
  389. package/coverage/tmp/coverage-151166-1723543324307-0.json +0 -1
  390. package/coverage/tmp/coverage-151178-1723543324283-0.json +0 -1
  391. package/coverage/tmp/coverage-151189-1723543324271-0.json +0 -1
  392. package/coverage/tmp/coverage-151201-1723543324248-0.json +0 -1
  393. package/coverage/tmp/coverage-151208-1723543324227-0.json +0 -1
  394. package/scripts/kash/LICENSE +0 -21
  395. package/test/api/core/test-log-2024-04-22.log +0 -84
  396. package/test/api/core/test-log-2024-04-23.log +0 -23
  397. package/test/api/core/test-log-2024-08-13.log +0 -3
  398. package/test/api/map/test-log-2025-03-08.log +0 -0
@@ -40,7 +40,7 @@
40
40
 
41
41
  <script>
42
42
  import _ from 'lodash'
43
- import { Store, mixins as kCoreMixins } from '../../../../core/client'
43
+ import { Context, api, mixins as kCoreMixins } from '../../../../core/client'
44
44
  import { useCatalog } from '../../composables'
45
45
 
46
46
  export default {
@@ -123,7 +123,7 @@ export default {
123
123
  mounted () {
124
124
  this.getLayers()
125
125
  this.getCategories()
126
- if (Store.get('context')) {
126
+ if (typeof this.getContextLayers === 'function') {
127
127
  this.getContextLayers()
128
128
  this.getContextCategories()
129
129
  }
@@ -132,28 +132,39 @@ export default {
132
132
  // Use global catalog
133
133
  const { layers, getLayers, categories, getCategories, layersByCategory, orphanLayers } =
134
134
  useCatalog({ context: 'global' })
135
- // Use local catalog if any
136
- const {
137
- layers: contextLayers, getLayers: getContextLayers, categories: contextCategories, getCategories: getContextCategories,
138
- layersByCategory: contextLayersByCategory, orphanLayers: orphanContextLayers
139
- } =
140
- useCatalog({ context: Store.get('context') })
141
-
142
135
  // Expose
143
- return {
136
+ const expose = {
144
137
  layersByCategory,
145
138
  orphanLayers,
146
139
  layers,
147
140
  getLayers,
148
141
  categories,
149
- getCategories,
150
- contextLayersByCategory,
151
- orphanContextLayers,
152
- contextLayers,
153
- getContextLayers,
154
- contextCategories,
155
- getContextCategories
142
+ getCategories
143
+ }
144
+ // Use local catalog if any
145
+ if (Context.get() && api.hasService('catalog', Context.get())) {
146
+ const {
147
+ layers: contextLayers, getLayers: getContextLayers, categories: contextCategories, getCategories: getContextCategories,
148
+ layersByCategory: contextLayersByCategory, orphanLayers: orphanContextLayers
149
+ } = useCatalog({ context: Context.get() })
150
+ Object.assign(expose, {
151
+ contextLayersByCategory,
152
+ orphanContextLayers,
153
+ contextLayers,
154
+ getContextLayers,
155
+ contextCategories,
156
+ getContextCategories
157
+ })
158
+ } else {
159
+ Object.assign(expose, {
160
+ contextLayersByCategory: {},
161
+ orphanContextLayers: [],
162
+ contextLayers: [],
163
+ contextCategories: []
164
+ })
156
165
  }
166
+
167
+ return expose
157
168
  }
158
169
  }
159
170
  </script>
@@ -49,7 +49,7 @@
49
49
 
50
50
  <script>
51
51
  import _ from 'lodash'
52
- import { Store, mixins as kCoreMixins } from '../../../../core/client'
52
+ import { Context, api, mixins as kCoreMixins } from '../../../../core/client'
53
53
  import { useCatalog } from '../../composables'
54
54
 
55
55
  export default {
@@ -99,23 +99,32 @@ export default {
99
99
  },
100
100
  mounted () {
101
101
  this.getViews()
102
- if (Store.get('context')) {
102
+ if (typeof this.getContextViews === 'function') {
103
103
  this.getContextViews()
104
104
  }
105
105
  },
106
106
  setup (props) {
107
107
  // Use global catalog
108
108
  const { views, getViews } = useCatalog({ context: 'global' })
109
- // Use local catalog
110
- const { views: contextViews, getViews: getContextViews } = useCatalog({ context: Store.get('context') })
111
-
112
109
  // Expose
113
- return {
110
+ const expose = {
114
111
  views,
115
- getViews,
116
- contextViews,
117
- getContextViews
112
+ getViews
118
113
  }
114
+ // Use local catalog if any
115
+ if (Context.get() && api.hasService('catalog', Context.get())) {
116
+ const { views: contextViews, getViews: getContextViews } = useCatalog({ context: Context.get() })
117
+ Object.assign(expose, {
118
+ contextViews,
119
+ getContextViews
120
+ })
121
+ } else {
122
+ Object.assign(expose, {
123
+ contextViews: []
124
+ })
125
+ }
126
+
127
+ return expose
119
128
  }
120
129
  }
121
130
  </script>
@@ -10,6 +10,7 @@
10
10
  v-model="model"
11
11
  :label="label"
12
12
  :options="options"
13
+ clearable
13
14
  use-input
14
15
  hide-dropdown-icon
15
16
  @update:model-value='onChanged'
@@ -116,8 +117,6 @@ export default {
116
117
  this.$refs.timezoneMapModal.close()
117
118
  if (fill) {
118
119
  this.fill(this.mapTimezone)
119
- // Seems to be required to correctly update the label in the q-select
120
- await this.$nextTick()
121
120
  }
122
121
  },
123
122
  onAutocomplete (value, update) {
@@ -22,6 +22,7 @@ import logger from 'loglevel'
22
22
  import { computed } from 'vue'
23
23
  import { i18n } from '../../../../core/client'
24
24
  import { Units } from '../../../../core/client/units'
25
+ import { useCurrentActivity } from '../../composables'
25
26
  import { KColorScale } from '../../../../core/client/components'
26
27
  import KLegendRenderer from './KLegendRenderer.vue'
27
28
 
@@ -41,6 +42,9 @@ const props = defineProps({
41
42
  }
42
43
  })
43
44
 
45
+ // Data
46
+ const { CurrentActivity } = useCurrentActivity({ selection: false, probe: false })
47
+
44
48
  // Computed
45
49
  const variables = computed(() => {
46
50
  const regexp = new RegExp(props.content)
@@ -54,9 +58,14 @@ const variables = computed(() => {
54
58
  .map(variable => {
55
59
  // Pick useful properties
56
60
  let { name, label, chromajs, unit } = _.pick(variable, ['name', 'label', 'chromajs', 'unit'])
61
+ // We allow variable name to be customized based on level information
62
+ label = _.template(i18n.tie(label))({
63
+ level: (CurrentActivity.value ? CurrentActivity.value.selectedLevel : null),
64
+ levelUnit: (CurrentActivity.value && CurrentActivity.value.selectableLevels ? CurrentActivity.value.selectableLevels.unit : '')
65
+ })
57
66
  // Avoid mutating layer data
58
67
  const colorScale = _.cloneDeep(chromajs)
59
- label = `${i18n.tie(label)} (${Units.getTargetUnitSymbol(unit)})`
68
+ label = `${label} (${Units.getTargetUnitSymbol(unit)})`
60
69
  // Rename required properties for backward compatibility
61
70
  if (colorScale.scale) {
62
71
  colorScale.colors = colorScale.scale
@@ -9,7 +9,7 @@
9
9
  <div v-if="feature" class="full-width column">
10
10
  <!-- Description -->
11
11
  <KTextArea
12
- :text="feature.properties[namePath]"
12
+ :text="locationName"
13
13
  :minHeight="24"
14
14
  :maxHeight="204"
15
15
  :dense="true"
@@ -40,7 +40,7 @@
40
40
 
41
41
  <script setup>
42
42
  import _ from 'lodash'
43
- import { ref, watch } from 'vue'
43
+ import { ref, watch, computed } from 'vue'
44
44
  import { utils as coreUtils } from '../../../../core.client'
45
45
  import KLocationMap from './KLocationMap.vue'
46
46
  import KLocationTip from './KLocationTip.vue'
@@ -68,6 +68,11 @@ const props = defineProps({
68
68
  // Data
69
69
  const feature = ref(null)
70
70
 
71
+ // Computed
72
+ const locationName = computed(() => {
73
+ return _.get(feature.value, `properties.${props.namePath}`)
74
+ })
75
+
71
76
  // Watch
72
77
  watch(() => [props.item, props.locationPath], () => {
73
78
  if (_.get(props.item, 'type') === 'Feature') feature.value = _.cloneDeep(props.item)
@@ -17,10 +17,12 @@ import _ from 'lodash'
17
17
  import logger from 'loglevel'
18
18
  import L from 'leaflet'
19
19
  import config from 'config'
20
+ import sift from 'sift'
20
21
  import centroid from '@turf/centroid'
21
22
  import { KPanel } from '../../../../core/client/components'
22
23
  import { api } from '../../../../core/client/api.js'
23
24
  import { Store } from '../../../../core/client/store.js'
25
+ import { Context } from '../../../../core/client/context.js'
24
26
  import * as mapMixins from '../../mixins/map'
25
27
  import { Geolocation } from '../../geolocation.js'
26
28
  import { useCatalog, useCurrentActivity } from '../../composables'
@@ -253,16 +255,26 @@ export default {
253
255
  async mapRefCreated (container) {
254
256
  if (container) {
255
257
  if (!this.mapReady) {
256
- // setup the map
258
+ // Setup the map
257
259
  logger.debug('[KDK] Create location map with viewer options', this.engineOptions.viewer)
258
260
  this.setupMap(container, this.engineOptions.viewer)
259
261
  this.mapReady = true
260
262
  // setup base layer
261
- const baseLayers = await this.getLayers({ type: 'BaseLayer' })
263
+ // We get layers coming from global catalog first if any
264
+ let baseLayers = await this.getLayers()
265
+ // Then we get layers coming from contextual catalog if any
266
+ if (typeof this.getContextLayers === 'function') baseLayers = baseLayers.concat(await this.getContextLayers())
262
267
  // [!] remember Vue won’t wait for async: use mapReady as a guard to
263
268
  // prevent executing the process after the component is destroyed
264
269
  // https://github.com/kalisio/kdk/issues/1291
265
- if (this.mapReady && baseLayers.length > 0) await this.addLayer(baseLayers[0])
270
+ if (this.mapReady && (baseLayers.length > 0)) {
271
+ const defaultLayer = _.find(baseLayers, sift({ 'leaflet.isVisible': true }))
272
+ // If no default layer defined use the first one
273
+ const baseLayer = (defaultLayer || baseLayers[0])
274
+ await this.addLayer(baseLayer)
275
+ // Ensure it is visible if not by default
276
+ await this.showLayer(baseLayer.name)
277
+ }
266
278
  // setup location
267
279
  if (this.mapReady) this.refresh()
268
280
  }
@@ -291,16 +303,28 @@ export default {
291
303
  const project = getActivityProject()
292
304
  // We expect the project object to expose the underlying API
293
305
  const planetApi = project && typeof project.getPlanetApi === 'function' ? project.getPlanetApi() : api
294
- // Use target catalog according to project and filtering options to get base layer
306
+ // Use target catalog(s) according to project and filtering options to get base layer
307
+ // Use global catalog
295
308
  const { getLayers } = useCatalog({
296
309
  project,
297
- layers: { type: 'BaseLayer', 'leaflet.isVisible': true },
298
- planetApi
310
+ layers: { type: 'BaseLayer' },
311
+ context: 'global'
299
312
  })
300
313
  // expose
301
- return {
314
+ const expose = {
302
315
  getLayers
303
316
  }
317
+ // Use local catalog if any
318
+ if (Context.get() && planetApi.hasService('catalog', Context.get())) {
319
+ const { getLayers: getContextLayers } = useCatalog({
320
+ project,
321
+ layers: { type: 'BaseLayer' },
322
+ context: Context.get()
323
+ })
324
+ Object.assign(expose, { getContextLayers })
325
+ }
326
+
327
+ return expose
304
328
  }
305
329
  }
306
330
  </script>
@@ -61,7 +61,7 @@ import { Dialog } from 'quasar'
61
61
  import { ref, computed } from 'vue'
62
62
  import { useRoute, useRouter } from 'vue-router'
63
63
  import bbox from '@turf/bbox'
64
- import { Store, i18n } from '../../../../core/client'
64
+ import { Context, i18n } from '../../../../core/client'
65
65
  import { KView } from '../../../../core/client/components'
66
66
  import KLayerItem from '../catalog/KLayerItem.vue'
67
67
  import KStyleEditor from '../styles/KStyleEditor.vue'
@@ -282,7 +282,7 @@ function editSelectedFeatureProperties (feature) {
282
282
  layerId: props.item.layer._id,
283
283
  layerName: props.item.layer.name,
284
284
  featureId: feature._id,
285
- contextId: Store.get('context')
285
+ contextId: Context.get()
286
286
  })
287
287
  })
288
288
  }
@@ -42,7 +42,7 @@ defineProps({
42
42
  },
43
43
  size: {
44
44
  type: String,
45
- default: '10px',
45
+ default: '10px'
46
46
  },
47
47
  color: {
48
48
  type: String,
@@ -58,6 +58,7 @@ import { useCurrentActivity } from '../../composables/activity.js'
58
58
  import { isLayerStyleEditable, editLayerStyle, updateLayerWithFiltersStyle } from '../../utils/utils.layers.js'
59
59
  import { editFeaturesStyle } from '../../utils/utils.features.js'
60
60
  import { getTagsFilterOptions } from '../../../../core/client/utils/utils.tags.js'
61
+ import { kmlStyleSpecialProperties } from '../../utils/utils.style.js'
61
62
  import KGrid from '../../../../core/client/components/collection/KGrid.vue'
62
63
  import KFollower from '../../../../core/client/components/KFollower.vue'
63
64
  import KTagSelection from '../../../../core/client/components/tags/KTagSelection.vue'
@@ -216,7 +217,9 @@ function applyToSelection (styleToApply) {
216
217
  if (_.has(f, 'properties.entityStyle.wall')) geometryType = 'Polygon'
217
218
  else if (_.has(f, 'properties.entityStyle.corridor')) geometryType = 'Polygon'
218
219
  }
219
- _.set(f, 'style', _.get(styleToApply, ['item', _.get(type, geometryType, 'point')], null))
220
+ const styleToKeep = _.pick(f.style, kmlStyleSpecialProperties)
221
+ const styleForGeometry = _.get(styleToApply, ['item', _.get(type, geometryType, 'point')], {})
222
+ _.set(f, 'style', _.merge({}, styleForGeometry, styleToKeep))
220
223
  })
221
224
  if (CurrentActivity.value.isInMemoryLayer(layer.layer)) {
222
225
  CurrentActivity.value.resetLayer(layer.layer)