@kalisio/kdk 2.3.2 → 2.4.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 (441) hide show
  1. package/.eslintignore +2 -1
  2. package/.github/workflows/main.yaml +3 -3
  3. package/README.md +1 -0
  4. package/core/api/db.js +6 -1
  5. package/core/api/hooks/hooks.model.js +1 -1
  6. package/core/api/hooks/hooks.schemas.js +0 -2
  7. package/core/api/models/messages.model.mongodb.js +13 -0
  8. package/core/api/services/authorisations/authorisations.service.js +13 -4
  9. package/core/api/services/index.js +19 -0
  10. package/core/api/services/messages/messages.hooks.js +38 -0
  11. package/core/client/api.js +7 -32
  12. package/core/client/capabilities.js +2 -2
  13. package/core/client/components/KActivity.vue +29 -6
  14. package/core/client/components/KContent.vue +2 -2
  15. package/core/client/components/KDialog.vue +4 -7
  16. package/core/client/components/KStamp.vue +3 -9
  17. package/core/client/components/KStore.vue +2 -4
  18. package/core/client/components/KTab.vue +95 -0
  19. package/core/client/components/action/KAction.vue +15 -2
  20. package/core/client/components/action/KBugReportAction.vue +4 -2
  21. package/core/client/components/action/KToggleFullscreenAction.vue +25 -0
  22. package/core/client/components/app/KSettings.vue +17 -13
  23. package/core/client/components/chart/KDataTable.vue +6 -9
  24. package/core/client/components/chart/KTimeSeriesChart.vue +62 -49
  25. package/core/client/components/collection/KBoard.vue +22 -33
  26. package/core/client/components/collection/KCard.vue +71 -56
  27. package/core/client/components/collection/KCardSection.vue +20 -10
  28. package/core/client/components/collection/KDescriptionCardSection.vue +47 -0
  29. package/core/client/components/collection/KGrid.vue +234 -54
  30. package/core/client/components/collection/KScrollDown.vue +97 -0
  31. package/core/client/components/collection/KScrollToTop.vue +93 -0
  32. package/core/client/components/collection/KTable.vue +87 -33
  33. package/core/client/components/collection/KTimeLine.vue +406 -0
  34. package/core/client/components/collection/index.js +1 -5
  35. package/core/client/components/document/KDocument.vue +20 -55
  36. package/core/client/components/document/KHtml.vue +17 -7
  37. package/core/client/components/document/KImage.vue +78 -0
  38. package/core/client/components/document/KMarkdown.vue +12 -16
  39. package/core/client/components/document/KPdf.vue +69 -0
  40. package/core/client/components/form/KFileField.vue +2 -2
  41. package/core/client/components/form/KSelectField.vue +2 -1
  42. package/core/client/components/form/KUnitField.vue +3 -1
  43. package/core/client/components/layout/KFab.vue +9 -10
  44. package/core/client/components/layout/KLayout.vue +104 -6
  45. package/core/client/components/layout/KOpener.vue +14 -19
  46. package/core/client/components/layout/KPage.vue +195 -105
  47. package/core/client/components/layout/KWindow.vue +54 -32
  48. package/core/client/components/layout/index.js +0 -2
  49. package/core/client/components/media/KRibbon.vue +95 -0
  50. package/core/client/components/menu/KMenu.vue +4 -4
  51. package/core/client/components/team/KGroupsActivity.vue +25 -27
  52. package/core/client/components/team/KMembersActivity.vue +21 -23
  53. package/core/client/components/team/KOrganisationsActivity.vue +20 -22
  54. package/core/client/components/team/KTagsActivity.vue +21 -23
  55. package/core/client/components/time/KAbsoluteTimeRange.vue +70 -170
  56. package/core/client/composables/activity.js +14 -12
  57. package/core/client/composables/collection.js +3 -1
  58. package/core/client/composables/counter.js +51 -0
  59. package/core/client/composables/index.js +3 -0
  60. package/core/client/composables/layout.js +13 -2
  61. package/core/client/composables/messages.js +15 -0
  62. package/core/client/composables/pwa.js +1 -1
  63. package/core/client/composables/schema.js +6 -6
  64. package/core/client/composables/screen.js +23 -0
  65. package/core/client/directives/index.js +1 -0
  66. package/core/client/directives/v-hover.js +23 -0
  67. package/core/client/document.js +61 -0
  68. package/core/client/exporter.js +1 -1
  69. package/core/client/filter.js +0 -1
  70. package/core/client/guards.js +1 -1
  71. package/core/client/i18n/core_en.json +14 -8
  72. package/core/client/i18n/core_fr.json +15 -9
  73. package/core/client/index.js +9 -3
  74. package/core/client/layout.js +129 -29
  75. package/core/client/local-storage.js +1 -1
  76. package/core/client/mixins/index.js +0 -1
  77. package/core/client/mixins/mixin.base-activity.js +23 -13
  78. package/core/client/mixins/mixin.base-item.js +6 -3
  79. package/core/client/services/index.js +4 -1
  80. package/core/client/services/local-settings.service.js +4 -0
  81. package/core/client/storage.js +1 -1
  82. package/core/client/store.js +1 -1
  83. package/core/client/template-context.js +17 -0
  84. package/core/client/units.js +49 -27
  85. package/core/client/utils/index.js +3 -2
  86. package/core/client/utils/utils.actions.js +4 -0
  87. package/core/client/utils/utils.colors.js +155 -2
  88. package/core/client/utils/utils.items.js +26 -0
  89. package/core/client/utils/utils.math.js +3 -0
  90. package/core/client/utils/utils.platform.js +3 -1
  91. package/core/client/utils/utils.screen.js +82 -0
  92. package/core/client/utils/utils.time.js +0 -1
  93. package/core/common/schemas/settings.update.json +12 -0
  94. package/coverage/base.css +224 -0
  95. package/coverage/block-navigation.js +87 -0
  96. package/coverage/core/api/application.js.html +1870 -0
  97. package/coverage/core/api/authentication.js.html +742 -0
  98. package/coverage/core/api/db.js.html +793 -0
  99. package/coverage/core/api/hooks/hooks.authentication.js.html +313 -0
  100. package/coverage/core/api/hooks/hooks.authorisations.js.html +1243 -0
  101. package/coverage/core/api/hooks/hooks.groups.js.html +229 -0
  102. package/coverage/core/api/hooks/hooks.logger.js.html +163 -0
  103. package/coverage/core/api/hooks/hooks.model.js.html +955 -0
  104. package/coverage/core/api/hooks/hooks.organisations.js.html +541 -0
  105. package/coverage/core/api/hooks/hooks.push.js.html +253 -0
  106. package/coverage/core/api/hooks/hooks.query.js.html +862 -0
  107. package/coverage/core/api/hooks/hooks.schemas.js.html +298 -0
  108. package/coverage/core/api/hooks/hooks.service.js.html +319 -0
  109. package/coverage/core/api/hooks/hooks.storage.js.html +193 -0
  110. package/coverage/core/api/hooks/hooks.users.js.html +868 -0
  111. package/coverage/core/api/hooks/index.html +296 -0
  112. package/coverage/core/api/hooks/index.js.html +121 -0
  113. package/coverage/core/api/index.html +191 -0
  114. package/coverage/core/api/index.js.html +148 -0
  115. package/coverage/core/api/marshall.js.html +448 -0
  116. package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
  117. package/coverage/core/api/models/index.html +176 -0
  118. package/coverage/core/api/models/messages.model.mongodb.js.html +121 -0
  119. package/coverage/core/api/models/organisations.model.mongodb.js.html +94 -0
  120. package/coverage/core/api/models/tags.model.mongodb.js.html +115 -0
  121. package/coverage/core/api/models/users.model.mongodb.js.html +115 -0
  122. package/coverage/core/api/services/account/account.hooks.js.html +208 -0
  123. package/coverage/core/api/services/account/account.service.js.html +436 -0
  124. package/coverage/core/api/services/account/index.html +131 -0
  125. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  126. package/coverage/core/api/services/authorisations/authorisations.service.js.html +529 -0
  127. package/coverage/core/api/services/authorisations/index.html +131 -0
  128. package/coverage/core/api/services/databases/databases.hooks.js.html +193 -0
  129. package/coverage/core/api/services/databases/databases.service.js.html +100 -0
  130. package/coverage/core/api/services/databases/index.html +131 -0
  131. package/coverage/core/api/services/groups/groups.hooks.js.html +178 -0
  132. package/coverage/core/api/services/groups/index.html +116 -0
  133. package/coverage/core/api/services/import-export/import-export.hooks.js.html +184 -0
  134. package/coverage/core/api/services/import-export/import-export.service.js.html +118 -0
  135. package/coverage/core/api/services/import-export/index.html +131 -0
  136. package/coverage/core/api/services/index.html +116 -0
  137. package/coverage/core/api/services/index.js.html +556 -0
  138. package/coverage/core/api/services/mailer/index.html +131 -0
  139. package/coverage/core/api/services/mailer/mailer.hooks.js.html +190 -0
  140. package/coverage/core/api/services/mailer/mailer.service.js.html +118 -0
  141. package/coverage/core/api/services/messages/index.html +116 -0
  142. package/coverage/core/api/services/messages/messages.hooks.js.html +199 -0
  143. package/coverage/core/api/services/organisations/index.html +131 -0
  144. package/coverage/core/api/services/organisations/organisations.hooks.js.html +178 -0
  145. package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
  146. package/coverage/core/api/services/push/index.html +131 -0
  147. package/coverage/core/api/services/push/push.hooks.js.html +190 -0
  148. package/coverage/core/api/services/push/push.service.js.html +121 -0
  149. package/coverage/core/api/services/storage/index.html +131 -0
  150. package/coverage/core/api/services/storage/storage.hooks.js.html +190 -0
  151. package/coverage/core/api/services/storage/storage.service.js.html +172 -0
  152. package/coverage/core/api/services/tags/index.html +116 -0
  153. package/coverage/core/api/services/tags/tags.hooks.js.html +178 -0
  154. package/coverage/core/api/services/users/index.html +116 -0
  155. package/coverage/core/api/services/users/users.hooks.js.html +307 -0
  156. package/coverage/core/api/utils.js.html +118 -0
  157. package/coverage/core/common/errors.js.html +88 -0
  158. package/coverage/core/common/index.html +176 -0
  159. package/coverage/core/common/index.js.html +115 -0
  160. package/coverage/core/common/permissions.js.html +1048 -0
  161. package/coverage/core/common/schema.js.html +190 -0
  162. package/coverage/core/common/utils.js.html +220 -0
  163. package/coverage/favicon.png +0 -0
  164. package/coverage/index.html +506 -0
  165. package/coverage/lcov-report/base.css +224 -0
  166. package/coverage/lcov-report/block-navigation.js +87 -0
  167. package/coverage/lcov-report/core/api/application.js.html +1870 -0
  168. package/coverage/lcov-report/core/api/authentication.js.html +742 -0
  169. package/coverage/lcov-report/core/api/db.js.html +793 -0
  170. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +313 -0
  171. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1243 -0
  172. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +229 -0
  173. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +163 -0
  174. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +955 -0
  175. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +541 -0
  176. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +253 -0
  177. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +862 -0
  178. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +298 -0
  179. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +319 -0
  180. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +193 -0
  181. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +868 -0
  182. package/coverage/lcov-report/core/api/hooks/index.html +296 -0
  183. package/coverage/lcov-report/core/api/hooks/index.js.html +121 -0
  184. package/coverage/lcov-report/core/api/index.html +191 -0
  185. package/coverage/lcov-report/core/api/index.js.html +148 -0
  186. package/coverage/lcov-report/core/api/marshall.js.html +448 -0
  187. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
  188. package/coverage/lcov-report/core/api/models/index.html +176 -0
  189. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +121 -0
  190. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +94 -0
  191. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +115 -0
  192. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +115 -0
  193. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +208 -0
  194. package/coverage/lcov-report/core/api/services/account/account.service.js.html +436 -0
  195. package/coverage/lcov-report/core/api/services/account/index.html +131 -0
  196. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  197. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +529 -0
  198. package/coverage/lcov-report/core/api/services/authorisations/index.html +131 -0
  199. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +193 -0
  200. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +100 -0
  201. package/coverage/lcov-report/core/api/services/databases/index.html +131 -0
  202. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +178 -0
  203. package/coverage/lcov-report/core/api/services/groups/index.html +116 -0
  204. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +184 -0
  205. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +118 -0
  206. package/coverage/lcov-report/core/api/services/import-export/index.html +131 -0
  207. package/coverage/lcov-report/core/api/services/index.html +116 -0
  208. package/coverage/lcov-report/core/api/services/index.js.html +556 -0
  209. package/coverage/lcov-report/core/api/services/mailer/index.html +131 -0
  210. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +190 -0
  211. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +118 -0
  212. package/coverage/lcov-report/core/api/services/messages/index.html +116 -0
  213. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +199 -0
  214. package/coverage/lcov-report/core/api/services/organisations/index.html +131 -0
  215. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +178 -0
  216. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
  217. package/coverage/lcov-report/core/api/services/push/index.html +131 -0
  218. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +190 -0
  219. package/coverage/lcov-report/core/api/services/push/push.service.js.html +121 -0
  220. package/coverage/lcov-report/core/api/services/storage/index.html +131 -0
  221. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +190 -0
  222. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +172 -0
  223. package/coverage/lcov-report/core/api/services/tags/index.html +116 -0
  224. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +178 -0
  225. package/coverage/lcov-report/core/api/services/users/index.html +116 -0
  226. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +307 -0
  227. package/coverage/lcov-report/core/api/utils.js.html +118 -0
  228. package/coverage/lcov-report/core/common/errors.js.html +88 -0
  229. package/coverage/lcov-report/core/common/index.html +176 -0
  230. package/coverage/lcov-report/core/common/index.js.html +115 -0
  231. package/coverage/lcov-report/core/common/permissions.js.html +1048 -0
  232. package/coverage/lcov-report/core/common/schema.js.html +190 -0
  233. package/coverage/lcov-report/core/common/utils.js.html +220 -0
  234. package/coverage/lcov-report/favicon.png +0 -0
  235. package/coverage/lcov-report/index.html +506 -0
  236. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +457 -0
  237. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +397 -0
  238. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1309 -0
  239. package/coverage/lcov-report/map/api/hooks/index.html +161 -0
  240. package/coverage/lcov-report/map/api/hooks/index.js.html +94 -0
  241. package/coverage/lcov-report/map/api/index.html +131 -0
  242. package/coverage/lcov-report/map/api/index.js.html +139 -0
  243. package/coverage/lcov-report/map/api/marshall.js.html +178 -0
  244. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +106 -0
  245. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +127 -0
  246. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +196 -0
  247. package/coverage/lcov-report/map/api/models/index.html +161 -0
  248. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +109 -0
  249. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +274 -0
  250. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +610 -0
  251. package/coverage/lcov-report/map/api/services/alerts/index.html +131 -0
  252. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +310 -0
  253. package/coverage/lcov-report/map/api/services/catalog/index.html +116 -0
  254. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1510 -0
  255. package/coverage/lcov-report/map/api/services/daptiles/index.html +116 -0
  256. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +241 -0
  257. package/coverage/lcov-report/map/api/services/features/features.service.js.html +241 -0
  258. package/coverage/lcov-report/map/api/services/features/index.html +131 -0
  259. package/coverage/lcov-report/map/api/services/index.html +116 -0
  260. package/coverage/lcov-report/map/api/services/index.js.html +817 -0
  261. package/coverage/lcov-report/map/api/services/projects/index.html +116 -0
  262. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +439 -0
  263. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +466 -0
  264. package/coverage/lcov-report/map/common/errors.js.html +94 -0
  265. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +541 -0
  266. package/coverage/lcov-report/map/common/grid.js.html +1612 -0
  267. package/coverage/lcov-report/map/common/index.html +371 -0
  268. package/coverage/lcov-report/map/common/index.js.html +172 -0
  269. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +556 -0
  270. package/coverage/lcov-report/map/common/moment-utils.js.html +157 -0
  271. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +868 -0
  272. package/coverage/lcov-report/map/common/opendap-utils.js.html +826 -0
  273. package/coverage/lcov-report/map/common/permissions.js.html +124 -0
  274. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +418 -0
  275. package/coverage/lcov-report/map/common/tms-utils.js.html +274 -0
  276. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +364 -0
  277. package/coverage/lcov-report/map/common/wcs-utils.js.html +586 -0
  278. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1033 -0
  279. package/coverage/lcov-report/map/common/wfs-utils.js.html +574 -0
  280. package/coverage/lcov-report/map/common/wms-utils.js.html +451 -0
  281. package/coverage/lcov-report/map/common/wmts-utils.js.html +547 -0
  282. package/coverage/lcov-report/prettify.css +1 -0
  283. package/coverage/lcov-report/prettify.js +2 -0
  284. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  285. package/coverage/lcov-report/sorter.js +196 -0
  286. package/coverage/lcov.info +11245 -0
  287. package/coverage/map/api/hooks/hooks.catalog.js.html +457 -0
  288. package/coverage/map/api/hooks/hooks.features.js.html +397 -0
  289. package/coverage/map/api/hooks/hooks.query.js.html +1309 -0
  290. package/coverage/map/api/hooks/index.html +161 -0
  291. package/coverage/map/api/hooks/index.js.html +94 -0
  292. package/coverage/map/api/index.html +131 -0
  293. package/coverage/map/api/index.js.html +139 -0
  294. package/coverage/map/api/marshall.js.html +178 -0
  295. package/coverage/map/api/models/alerts.model.mongodb.js.html +106 -0
  296. package/coverage/map/api/models/catalog.model.mongodb.js.html +127 -0
  297. package/coverage/map/api/models/features.model.mongodb.js.html +196 -0
  298. package/coverage/map/api/models/index.html +161 -0
  299. package/coverage/map/api/models/projects.model.mongodb.js.html +109 -0
  300. package/coverage/map/api/services/alerts/alerts.hooks.js.html +274 -0
  301. package/coverage/map/api/services/alerts/alerts.service.js.html +610 -0
  302. package/coverage/map/api/services/alerts/index.html +131 -0
  303. package/coverage/map/api/services/catalog/catalog.hooks.js.html +310 -0
  304. package/coverage/map/api/services/catalog/index.html +116 -0
  305. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1510 -0
  306. package/coverage/map/api/services/daptiles/index.html +116 -0
  307. package/coverage/map/api/services/features/features.hooks.js.html +241 -0
  308. package/coverage/map/api/services/features/features.service.js.html +241 -0
  309. package/coverage/map/api/services/features/index.html +131 -0
  310. package/coverage/map/api/services/index.html +116 -0
  311. package/coverage/map/api/services/index.js.html +817 -0
  312. package/coverage/map/api/services/projects/index.html +116 -0
  313. package/coverage/map/api/services/projects/projects.hooks.js.html +439 -0
  314. package/coverage/map/common/dynamic-grid-source.js.html +466 -0
  315. package/coverage/map/common/errors.js.html +94 -0
  316. package/coverage/map/common/geotiff-grid-source.js.html +541 -0
  317. package/coverage/map/common/grid.js.html +1612 -0
  318. package/coverage/map/common/index.html +371 -0
  319. package/coverage/map/common/index.js.html +172 -0
  320. package/coverage/map/common/meteo-model-grid-source.js.html +556 -0
  321. package/coverage/map/common/moment-utils.js.html +157 -0
  322. package/coverage/map/common/opendap-grid-source.js.html +868 -0
  323. package/coverage/map/common/opendap-utils.js.html +826 -0
  324. package/coverage/map/common/permissions.js.html +124 -0
  325. package/coverage/map/common/time-based-grid-source.js.html +418 -0
  326. package/coverage/map/common/tms-utils.js.html +274 -0
  327. package/coverage/map/common/wcs-grid-source.js.html +364 -0
  328. package/coverage/map/common/wcs-utils.js.html +586 -0
  329. package/coverage/map/common/weacast-grid-source.js.html +1033 -0
  330. package/coverage/map/common/wfs-utils.js.html +574 -0
  331. package/coverage/map/common/wms-utils.js.html +451 -0
  332. package/coverage/map/common/wmts-utils.js.html +547 -0
  333. package/coverage/prettify.css +1 -0
  334. package/coverage/prettify.js +2 -0
  335. package/coverage/sort-arrow-sprite.png +0 -0
  336. package/coverage/sorter.js +196 -0
  337. package/coverage/tmp/coverage-280506-1731704745613-0.json +1 -0
  338. package/coverage/tmp/coverage-280518-1731704745599-0.json +1 -0
  339. package/coverage/tmp/coverage-280529-1731704745588-0.json +1 -0
  340. package/coverage/tmp/coverage-280541-1731704745574-0.json +1 -0
  341. package/coverage/tmp/coverage-280548-1731704745545-0.json +1 -0
  342. package/extras/css/core.variables.scss +32 -8
  343. package/extras/icons/attribution.png +0 -0
  344. package/map/api/services/catalog/catalog.hooks.js +5 -7
  345. package/map/api/services/features/features.hooks.js +1 -1
  346. package/map/client/cesium/utils/utils.style.js +11 -2
  347. package/map/client/components/KAttribution.vue +108 -0
  348. package/map/client/components/KPositionIndicator.vue +11 -18
  349. package/map/client/components/KProjectMenu.vue +4 -4
  350. package/map/client/components/catalog/KCategoryItem.vue +74 -0
  351. package/map/client/components/catalog/KLayerCategories.vue +24 -12
  352. package/map/client/components/catalog/KLayersPanel.vue +139 -116
  353. package/map/client/components/catalog/KProjectSelector.vue +29 -17
  354. package/map/client/components/catalog/KProjectsPanel.vue +19 -35
  355. package/map/client/components/catalog/KViewSelector.vue +37 -25
  356. package/map/client/components/catalog/KViewsPanel.vue +19 -35
  357. package/map/client/components/form/KLocationField.vue +1 -2
  358. package/map/client/components/legend/KLegend.vue +34 -34
  359. package/map/client/components/location/KLocationCardSection.vue +18 -22
  360. package/map/client/components/location/KLocationMap.vue +36 -38
  361. package/map/client/components/location/KLocationTimeLineCard.vue +147 -0
  362. package/map/client/components/location/KLocationTip.vue +12 -2
  363. package/map/client/components/widget/KInformationBox.vue +0 -4
  364. package/map/client/components/widget/KStackableTimeSeries.vue +8 -1
  365. package/map/client/components/widget/KTimeSeries.vue +1 -1
  366. package/map/client/composables/highlight.js +29 -31
  367. package/map/client/composables/probe.js +7 -3
  368. package/map/client/composables/weather.js +71 -31
  369. package/map/client/i18n/map_en.json +3 -0
  370. package/map/client/i18n/map_fr.json +3 -0
  371. package/map/client/init.js +4 -3
  372. package/map/client/leaflet/ShapeMarker.js +1 -1
  373. package/map/client/leaflet/utils/utils.events.js +1 -1
  374. package/map/client/leaflet/utils/utils.style.js +20 -8
  375. package/map/client/mixins/globe/mixin.base-globe.js +111 -13
  376. package/map/client/mixins/globe/mixin.file-layers.js +10 -10
  377. package/map/client/mixins/globe/mixin.geojson-layers.js +90 -15
  378. package/map/client/mixins/globe/mixin.style.js +2 -0
  379. package/map/client/mixins/index.js +0 -1
  380. package/map/client/mixins/map/index.js +1 -0
  381. package/map/client/mixins/map/mixin.base-map.js +21 -2
  382. package/map/client/mixins/map/mixin.canvas-layers.js +7 -2
  383. package/map/client/mixins/map/mixin.edit-layers.js +12 -4
  384. package/map/client/mixins/map/mixin.file-layers.js +3 -0
  385. package/map/client/mixins/map/mixin.geojson-layers.js +90 -5
  386. package/map/client/mixins/map/mixin.pmtiles-layers.js +106 -0
  387. package/map/client/mixins/mixin.activity.js +8 -3
  388. package/map/client/mixins/mixin.feature-service.js +73 -32
  389. package/map/client/mixins/mixin.levels.js +1 -0
  390. package/map/client/mixins/mixin.weacast.js +10 -87
  391. package/map/client/utils/index.js +1 -0
  392. package/map/client/utils/utils.capture.js +1 -1
  393. package/map/client/utils/utils.catalog.js +7 -7
  394. package/map/client/utils/utils.features.js +59 -1
  395. package/map/client/utils/utils.layers.js +8 -0
  396. package/map/client/utils/utils.time-series.js +121 -0
  397. package/map/client/utils/utils.weacast.js +102 -0
  398. package/package.json +6 -6
  399. package/scripts/init_runner.sh +2 -2
  400. package/scripts/kash/CHANGELOG.md +12 -0
  401. package/scripts/kash/README.md +2 -0
  402. package/scripts/kash/kash.sh +34 -32
  403. package/scripts/run_tests.sh +2 -2
  404. package/scripts/setup_workspace.sh +24 -6
  405. package/test/api/core/hooks.test.js +6 -3
  406. package/test/api/core/test-log-2023-12-19.log +7 -0
  407. package/test/api/core/test-log-2024-01-04.log +14 -0
  408. package/test/api/core/test-log-2024-05-14.log +6 -0
  409. package/test/api/core/{test-log-2024-04-23.log → test-log-2024-06-06.log} +3 -3
  410. package/test/api/core/test-log-2024-06-26.log +25 -0
  411. package/test/api/core/test-log-2024-06-28.log +2 -0
  412. package/test/api/core/test-log-2024-07-09.log +0 -0
  413. package/test/api/core/test-log-2024-08-13.log +69 -0
  414. package/test/api/core/test-log-2024-10-28.log +53 -0
  415. package/test/api/core/test-log-2024-11-05.log +30 -0
  416. package/test/api/core/test-log-2024-11-15.log +23 -0
  417. package/test/api/map/alerts.test.js +3 -1
  418. package/test/api/map/config/layers.json +3 -1
  419. package/test/api/map/index.test.js +18 -1
  420. package/test/api/map/test-log-2023-11-24.log +121 -0
  421. package/test/api/map/test-log-2023-12-12.log +29 -0
  422. package/test/api/map/test-log-2023-12-13.log +5 -0
  423. package/test/api/map/test-log-2024-01-04.log +2 -0
  424. package/test/api/map/test-log-2024-01-11.log +1 -0
  425. package/test/api/map/test-log-2024-01-25.log +19 -0
  426. package/test/api/map/test-log-2024-06-06.log +39 -0
  427. package/test/api/map/test-log-2024-08-13.log +13 -0
  428. package/test/api/map/test-log-2024-08-20.log +55 -0
  429. package/test/api/map/test-log-2024-09-09.log +92 -0
  430. package/test/api/map/test-log-2024-10-28.log +11 -0
  431. package/test/client/core/utils.js +13 -0
  432. package/test/client/map/api.js +34 -0
  433. package/test/client/map/catalog.js +6 -2
  434. package/test/client/map/index.js +1 -0
  435. package/test/client/map/utils.js +4 -2
  436. package/core/client/components/collection/KList.vue +0 -135
  437. package/core/client/components/layout/KPageSticky.vue +0 -53
  438. package/core/client/mixins/mixin.base-collection.js +0 -162
  439. package/core/client/utils/utils.data.js +0 -22
  440. package/map/client/mixins/mixin.catalog-panel.js +0 -26
  441. package/test/api/core/test-log-2024-04-22.log +0 -84
@@ -4,13 +4,15 @@
4
4
  Window header
5
5
  -->
6
6
  <div
7
+ :id="`${placement}-window-header`"
7
8
  class="k-window-header full-width row items-center"
8
9
  v-touch-pan.prevent.mouse="onMoved"
9
10
  >
10
- <q-resize-observer @resize="onHeaderResized" />
11
+ <q-resize-observer @resize="onWindowHeaderResized" />
11
12
  <!-- window menu -->
12
13
  <KPanel
13
- id="window-menu"
14
+ v-if="currentWindow.controls.menu"
15
+ :id="`${placement}-window-menu`"
14
16
  :content="menu"
15
17
  @touchstart.passive.stop
16
18
  @mousedown.passive.stop
@@ -55,6 +57,7 @@
55
57
  :style="`min-width: ${widgetWidth}px; max-width: ${widgetWidth}px;`"
56
58
  >
57
59
  <component
60
+ :id="`${placement}-window-content`"
58
61
  ref="widgetRef"
59
62
  :is="widget.instance"
60
63
  v-bind="widget.content"
@@ -62,6 +65,7 @@
62
65
  />
63
66
  </KScrollArea>
64
67
  <component v-else
68
+ :id="`${placement}-window-content`"
65
69
  ref="widgetRef"
66
70
  :is="widget.instance"
67
71
  v-bind="widget.content"
@@ -71,8 +75,11 @@
71
75
  <!--
72
76
  Window footer
73
77
  -->
74
- <div id="window-footer" class="k-window-footer full-width row justify-end">
75
- <q-resize-observer @resize="onFooterResized" />
78
+ <div
79
+ :id="`${placement}-window-footer`"
80
+ class="k-window-footer full-width row justify-end"
81
+ >
82
+ <q-resize-observer @resize="onWindowFooterResized" />
76
83
  <!-- window grip -->
77
84
  <q-icon
78
85
  v-if="currentWindow.controls.resize && currentWindow.state !== 'maximized'"
@@ -90,7 +97,10 @@ import _ from 'lodash'
90
97
  import logger from 'loglevel'
91
98
  import { ref, computed, watch, provide } from 'vue'
92
99
  import { useQuasar } from 'quasar'
93
- import { Store, LocalStorage, Layout, utils } from '../..'
100
+ import { Store } from '../../store.js'
101
+ import { LocalStorage } from '../../local-storage.js'
102
+ import { Layout } from '../../layout.js'
103
+ import { loadComponent, bindContent, computeResponsiveSize } from '../../utils'
94
104
  import KPanel from '../KPanel.vue'
95
105
  import KScrollArea from '../KScrollArea.vue'
96
106
  import KMenu from '../menu/KMenu.vue'
@@ -112,10 +122,12 @@ const props = defineProps({
112
122
 
113
123
  // Data
114
124
  const $q = useQuasar()
125
+ const header = Layout.getHeader()
126
+ const footer = Layout.getFooter()
115
127
  const currentWindow = Layout.getWindow(props.placement)
128
+ const windowHeaderHeight = ref(0)
129
+ const windowFooterHeight = ref(0)
116
130
  const widgetRef = ref(null)
117
- const headerHeight = ref(0)
118
- const footerHeight = ref(0)
119
131
  const pinIcons = {
120
132
  left: 'las la-angle-left',
121
133
  right: 'las la-angle-right',
@@ -138,7 +150,7 @@ const widgets = computed(() => {
138
150
  let isCurrentValid = false
139
151
  _.forEach(currentWindow.components, (widget) => {
140
152
  const componentName = _.get(widget, 'content.component')
141
- widget.instance = utils.loadComponent(componentName)
153
+ widget.instance = loadComponent(componentName)
142
154
  if (currentWindow.current === widget.id) isCurrentValid = true
143
155
  })
144
156
  if (!isCurrentValid) Layout.setWindowCurrent(props.placement, _.get(widgets, '[0].id'))
@@ -198,7 +210,7 @@ const headerControls = computed(() => {
198
210
  size: 'sm',
199
211
  tooltip: 'KWindow.RESTORE_ACTION',
200
212
  visible: currentWindow.controls.restore && currentWindow.state === 'maximized',
201
- handler: () => Layout.setWindowState(props.placement, LocalStorage.get(getStorageKey('restore-state')))
213
+ handler: () => Layout.setWindowState(props.placement, LocalStorage.get(getStorageKey('restore-state')) || 'pinned')
202
214
  }, {
203
215
  id: `close-${props.placement}-window`,
204
216
  icon: 'las la-times',
@@ -229,14 +241,14 @@ const widgetLabel = computed(() => {
229
241
  const widgetHeader = computed(() => {
230
242
  if (!widget.value) return null
231
243
  let header = _.cloneDeep(widget.value.header)
232
- header = utils.bindContent(header, widgetRef.value)
244
+ header = bindContent(header, widgetRef.value)
233
245
  return header
234
246
  })
235
247
  const widgetWidth = computed(() => {
236
248
  return currentWindow.size[0] - border
237
249
  })
238
250
  const widgetHeight = computed(() => {
239
- return currentWindow.size[1] - headerHeight.value - footerHeight.value
251
+ return currentWindow.size[1] - windowHeaderHeight.value - windowFooterHeight.value
240
252
  })
241
253
 
242
254
  // Watch
@@ -287,25 +299,26 @@ function refresh (newState, oldState) {
287
299
  break
288
300
  }
289
301
  default:
290
- logger.warn(`[KDK] invalid window state ${currentWindow.state}`)
302
+ logger.error(`[KDK] invalid window state ${currentWindow.state}`)
291
303
  }
292
304
  }
293
305
  function setPinnedGeometry () {
294
- const sizeRatio = currentWindow.sizePolicy.pinned[$q.screen.name]
295
- const w = $q.screen.width * sizeRatio[0] / 100
296
- const h = $q.screen.height * sizeRatio[1] / 100
306
+ const size = computeResponsiveSize(currentWindow.sizePolicy.pinned)
297
307
  let x, y
298
308
  if (props.placement === 'top' || props.placement === 'bottom') {
299
- x = $q.screen.width / 2 - w / 2
300
- y = props.placement === 'top' ? 0 : $q.screen.height - h
309
+ x = $q.screen.width / 2 - size[0] / 2
310
+ y = props.placement === 'top' ? 0 : $q.screen.height - size[1]
301
311
  } else {
302
- x = props.placement === 'left' ? 0 : $q.screen.width - w
303
- y = $q.screen.height / 2 - h / 2
312
+ x = props.placement === 'left' ? 0 : $q.screen.width - size[0]
313
+ y = $q.screen.height / 2 - size[1] / 2
304
314
  }
305
- updateGeometry([x, y], [w, h])
315
+ updateGeometry([x, y], size)
306
316
  }
307
317
  function setMaximizedGeometry () {
308
- updateGeometry([0, 0], [$q.screen.width, $q.screen.height])
318
+ let height = $q.screen.height
319
+ if (header.visible) height -= header.size[1]
320
+ if (footer.visible) height -= footer.size[1]
321
+ updateGeometry([0, 0], [$q.screen.width, height])
309
322
  }
310
323
  function updateGeometry (position, size, check = false) {
311
324
  // check geometry
@@ -351,6 +364,9 @@ function updateGeometry (position, size, check = false) {
351
364
  function onMoved (event) {
352
365
  if (!event) return
353
366
  if (currentWindow.state !== 'maximized') {
367
+ // Set Focus
368
+ Layout.setFocus(`windows.${props.placement}`)
369
+ // Update geometry
354
370
  if (currentWindow.state !== 'floating') {
355
371
  storeGeometry()
356
372
  Layout.setWindowState(props.placement, 'floating')
@@ -365,8 +381,10 @@ function onMoved (event) {
365
381
  if (event.isFinal) storeGeometry()
366
382
  }
367
383
  }
368
- function onResized (event) {
384
+ const onResized = _.throttle((event) => {
369
385
  if (!event) return
386
+ // Set Focus
387
+ Layout.setFocus(`windows.${props.placement}`)
370
388
  // Handle the pinned and floating currentState
371
389
  if (currentWindow.state !== 'maximized') {
372
390
  if (currentWindow.state !== 'floating') {
@@ -382,22 +400,26 @@ function onResized (event) {
382
400
  updateGeometry(currentWindow.position, newSize)
383
401
  if (event.isFinal) storeGeometry()
384
402
  }
385
- }
386
- function onScreenResized () {
403
+ }, 5)
404
+ const onScreenResized = _.throttle(() => {
387
405
  if (currentWindow.state === 'pinned') setPinnedGeometry()
388
406
  else if (currentWindow.state === 'maximized') setMaximizedGeometry()
389
407
  else updateGeometry(currentWindow.position, currentWindow.size, true)
408
+ }, 50)
409
+ function onWindowHeaderResized (size) {
410
+ windowHeaderHeight.value = size.height
390
411
  }
391
- function onHeaderResized (size) {
392
- headerHeight.value = size.height
393
- }
394
- function onFooterResized (size) {
395
- footerHeight.value = size.height
412
+ function onWindowFooterResized (size) {
413
+ windowFooterHeight.value = size.height
396
414
  }
397
415
 
398
416
  // restore the state
399
- const fallbackState = readState() || 'pinned'
400
- Layout.setWindowState(props.placement, fallbackState)
417
+ const currentState = currentWindow.state
418
+ if (currentState) refresh(currentState)
419
+ else {
420
+ const fallbackState = readState() || 'pinned'
421
+ Layout.setWindowState(props.placement, fallbackState)
422
+ }
401
423
  </script>
402
424
 
403
425
  <style lang="scss" scoped>
@@ -420,7 +442,7 @@ Layout.setWindowState(props.placement, fallbackState)
420
442
  background-color: $window-header-hover-background;
421
443
  }
422
444
  .k-window-footer {
423
- height: v-bind(footerHeight)px;
445
+ height: v-bind(windowFooterHeight)px;
424
446
  border-radius: 0 0 $window-border-radius $window-border-radius;
425
447
  }
426
448
  .k-window-grip:hover {
@@ -1,13 +1,11 @@
1
1
  import KFab from './KFab.vue'
2
2
  import KLayout from './KLayout.vue'
3
3
  import KPage from './KPage.vue'
4
- import KPageSticky from './KPageSticky.vue'
5
4
  import KWindow from './KWindow.vue'
6
5
 
7
6
  export {
8
7
  KFab,
9
8
  KLayout,
10
9
  KPage,
11
- KPageSticky,
12
10
  KWindow
13
11
  }
@@ -0,0 +1,95 @@
1
+ <template>
2
+ <div class="k-ribbon">
3
+ {{ text }}
4
+ </div>
5
+ </template>
6
+
7
+ <script setup>
8
+ import _ from 'lodash'
9
+ import { computed } from 'vue'
10
+ import { getHtmlColor } from '../../utils/utils.colors.js'
11
+ const width = 500
12
+
13
+ // Props
14
+ const props = defineProps({
15
+ text: {
16
+ type: String,
17
+ default: undefined
18
+ },
19
+ size: {
20
+ type: Number,
21
+ default: 32
22
+ },
23
+ color: {
24
+ type: String,
25
+ default: 'primary'
26
+ },
27
+ textColor: {
28
+ type: String,
29
+ default: 'white'
30
+ },
31
+ letterSpacing: {
32
+ type: Number,
33
+ default: 2
34
+ },
35
+ position: {
36
+ type: String,
37
+ default: 'top-left',
38
+ validator: (value) => {
39
+ return ['top-left', 'top-right', 'bottom-right', 'bottom-left'].includes(value)
40
+ }
41
+ },
42
+ origin: {
43
+ type: Array,
44
+ default: [50, 50],
45
+ validator: (value) => {
46
+ return _.isArray(value) && _.size(value) === 2
47
+ }
48
+ }
49
+ })
50
+
51
+ // Computed
52
+ const computedWidth = computed(() => {
53
+ return `${width}px`
54
+ })
55
+ const computedHeight = computed(() => {
56
+ return `${props.size}px`
57
+ })
58
+ const computedFontSize = computed(() => {
59
+ return `${props.size - 8}px`
60
+ })
61
+ const computedColor = computed(() => {
62
+ return getHtmlColor(props.color)
63
+ })
64
+ const computedTextColor = computed(() => {
65
+ return getHtmlColor(props.textColor)
66
+ })
67
+ const computedLetterSpacing = computed(() => {
68
+ return `${props.letterSpacing}px`
69
+ })
70
+ const translation = computed(() => {
71
+ if (props.position === 'top-left') return `${props.origin[0] - (width / 2)}px, ${props.origin[1] - (props.size / 2)}px`
72
+ if (props.position === 'top-right') return `${(width / 2) - props.origin[0]}px, ${props.origin[1] - (props.size / 2)}px`
73
+ if (props.position === 'bottom-right') return `${(width / 2) - props.origin[0]}px, ${(props.size / 2) - props.origin[1]}px`
74
+ if (props.position === 'bottom-left') return `${props.origin[0] - (width / 2)}px, ${(props.size / 2) - props.origin[1]}px`
75
+ })
76
+ const rotation = computed(() => {
77
+ if (props.position === 'top-left' || props.position === 'bottom-right') return '-45deg'
78
+ return '45deg'
79
+ })
80
+ </script>
81
+
82
+ <style lang="scss" scope>
83
+ .k-ribbon {
84
+ width: v-bind(computedWidth);
85
+ height: v-bind(computedHeight);
86
+ display: flex;
87
+ justify-content: center;
88
+ align-items: center;
89
+ transform: translate(v-bind(translation)) rotate(v-bind(rotation));
90
+ background-color: v-bind(computedColor);
91
+ color: v-bind(computedTextColor);
92
+ font-size: v-bind(computedFontSize);
93
+ letter-spacing: v-bind(computedLetterSpacing);
94
+ }
95
+ </style>
@@ -140,8 +140,8 @@ function onClicked (event) {
140
140
  }
141
141
  </script>
142
142
 
143
- <style lang="scss" scoped>
144
- .q-btn-dropdown__arrow {
145
- margin-left: 0px !important;
146
- }
143
+ <style lang="scss">
144
+ .q-btn-dropdown__arrow {
145
+ margin-left: 0px !important;
146
+ }
147
147
  </style>
@@ -1,32 +1,30 @@
1
1
  <template>
2
2
  <KPage padding>
3
- <template v-slot:page-content>
4
- <!--
5
- Groups collection
6
- -->
7
- <KGrid
8
- ref="groupsGrid"
9
- :contextId="contextId"
10
- service="groups"
11
- :renderer="renderer"
12
- :base-query="sorter.query"
13
- :filter-query="filter.query"
14
- :list-strategy="'smart'">
15
- <template v-slot:empty-section>
16
- <div class="absolute-center">
17
- <KStamp
18
- icon="las la-exclamation-circle"
19
- icon-size="3rem"
20
- :text="$t('KGrid.EMPTY_GRID')"
21
- />
22
- </div>
23
- </template>
24
- </KGrid>
25
- <!--
26
- Router view to enable routing to modals
27
- -->
28
- <router-view service="groups"></router-view>
29
- </template>
3
+ <!--
4
+ Groups collection
5
+ -->
6
+ <KGrid
7
+ ref="groupsGrid"
8
+ :contextId="contextId"
9
+ service="groups"
10
+ :renderer="renderer"
11
+ :base-query="sorter.query"
12
+ :filter-query="filter.query"
13
+ :list-strategy="'smart'">
14
+ <template v-slot:empty-section>
15
+ <div class="absolute-center">
16
+ <KStamp
17
+ icon="las la-exclamation-circle"
18
+ icon-size="3rem"
19
+ :text="$t('KGrid.EMPTY_LABEL')"
20
+ />
21
+ </div>
22
+ </template>
23
+ </KGrid>
24
+ <!--
25
+ Router view to enable routing to modals
26
+ -->
27
+ <router-view service="groups"></router-view>
30
28
  </KPage>
31
29
  </template>
32
30
 
@@ -1,28 +1,26 @@
1
1
  <template>
2
2
  <KPage padding>
3
- <template v-slot:page-content>
4
- <!--
5
- Members collection, cannot use smart strategy here because membership is not managed at service level
6
- but using authorisations on users
7
- -->
8
- <KGrid
9
- ref="membersGrid"
10
- service="members"
11
- :renderer="renderer"
12
- :contextId="contextId"
13
- :base-query="baseQuery"
14
- :filter-query="filter.query">
15
- <template v-slot:empty-section>
16
- <div class="absolute-center">
17
- <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
18
- </div>
19
- </template>
20
- </KGrid>
21
- <!--
22
- Router view to enable routing to modals
23
- -->
24
- <router-view service="members"></router-view>
25
- </template>
3
+ <!--
4
+ Members collection, cannot use smart strategy here because membership is not managed at service level
5
+ but using authorisations on users
6
+ -->
7
+ <KGrid
8
+ ref="membersGrid"
9
+ service="members"
10
+ :renderer="renderer"
11
+ :contextId="contextId"
12
+ :base-query="baseQuery"
13
+ :filter-query="filter.query">
14
+ <template v-slot:empty-section>
15
+ <div class="absolute-center">
16
+ <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_LABEL')" />
17
+ </div>
18
+ </template>
19
+ </KGrid>
20
+ <!--
21
+ Router view to enable routing to modals
22
+ -->
23
+ <router-view service="members"></router-view>
26
24
  </KPage>
27
25
  </template>
28
26
 
@@ -1,27 +1,25 @@
1
1
  <template>
2
2
  <KPage padding>
3
- <template v-slot:page-content>
4
- <!--
5
- Organisations collection
6
- -->
7
- <KGrid
8
- ref="organisationsGrid"
9
- service="organisations"
10
- :renderer="renderer"
11
- :base-query="sorter.query"
12
- :filter-query="filter.query"
13
- :list-strategy="'smart'">
14
- <template v-slot:empty-section>
15
- <div class="absolute-center">
16
- <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
17
- </div>
18
- </template>
19
- </KGrid>
20
- <!--
21
- Router view to enable routing to modals
22
- -->
23
- <router-view service="organisations"></router-view>
24
- </template>
3
+ <!--
4
+ Organisations collection
5
+ -->
6
+ <KGrid
7
+ ref="organisationsGrid"
8
+ service="organisations"
9
+ :renderer="renderer"
10
+ :base-query="sorter.query"
11
+ :filter-query="filter.query"
12
+ :list-strategy="'smart'">
13
+ <template v-slot:empty-section>
14
+ <div class="absolute-center">
15
+ <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_LABEL')" />
16
+ </div>
17
+ </template>
18
+ </KGrid>
19
+ <!--
20
+ Router view to enable routing to modals
21
+ -->
22
+ <router-view service="organisations"></router-view>
25
23
  </KPage>
26
24
  </template>
27
25
 
@@ -1,28 +1,26 @@
1
1
  <template>
2
2
  <KPage padding>
3
- <template v-slot:page-content>
4
- <!--
5
- Groups collection
6
- -->
7
- <KGrid
8
- ref="tagsGrid"
9
- :contextId="contextId"
10
- service="tags"
11
- :renderer="renderer"
12
- :base-query="sorter.query"
13
- :filter-query="filter.query"
14
- :list-strategy="'smart'">
15
- <template v-slot:empty-section>
16
- <div class="absolute-center">
17
- <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
18
- </div>
19
- </template>
20
- </KGrid>
21
- <!--
22
- Router view to enable routing to modals
23
- -->
24
- <router-view service="tags"></router-view>
25
- </template>
3
+ <!--
4
+ Groups collection
5
+ -->
6
+ <KGrid
7
+ ref="tagsGrid"
8
+ :contextId="contextId"
9
+ service="tags"
10
+ :renderer="renderer"
11
+ :base-query="sorter.query"
12
+ :filter-query="filter.query"
13
+ :list-strategy="'smart'">
14
+ <template v-slot:empty-section>
15
+ <div class="absolute-center">
16
+ <KStamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_LABEL')" />
17
+ </div>
18
+ </template>
19
+ </KGrid>
20
+ <!--
21
+ Router view to enable routing to modals
22
+ -->
23
+ <router-view service="tags"></router-view>
26
24
  </KPage>
27
25
  </template>
28
26