@kalisio/kdk 2.5.3 → 2.6.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 (545) hide show
  1. package/.github/workflows/main.yaml +35 -6
  2. package/client.globe.js +8 -0
  3. package/client.js +8 -0
  4. package/client.map.js +8 -0
  5. package/core/api/hooks/hooks.push.js +3 -2
  6. package/core/api/hooks/hooks.tags.js +56 -0
  7. package/core/api/models/tags.model.mongodb.js +8 -0
  8. package/core/api/services/index.js +33 -2
  9. package/core/api/services/tags/tags.hooks.js +47 -0
  10. package/core/client/api.js +5 -5
  11. package/core/client/components/KActivity.vue +3 -2
  12. package/core/client/components/KChip.vue +2 -2
  13. package/core/client/components/KEditor.vue +3 -1
  14. package/core/client/components/KFollower.vue +4 -4
  15. package/core/client/components/KStore.vue +1 -1
  16. package/core/client/components/KTab.vue +20 -7
  17. package/core/client/components/account/KProfile.vue +9 -25
  18. package/core/client/components/action/KAction.vue +10 -10
  19. package/core/client/components/action/KToggleFullscreenAction.vue +2 -11
  20. package/core/client/components/app/KHome.vue +3 -2
  21. package/core/client/components/collection/KFilter.vue +5 -4
  22. package/core/client/components/collection/KGrid.vue +5 -1
  23. package/core/client/components/collection/KItemsFilter.vue +47 -0
  24. package/core/client/components/collection/KItemsSorter.vue +42 -0
  25. package/core/client/components/collection/KScrollDown.vue +2 -2
  26. package/core/client/components/collection/KSearchFilterControl.vue +3 -2
  27. package/core/client/components/collection/KSorter.vue +33 -37
  28. package/core/client/components/collection/KTagsFilterControl.vue +14 -40
  29. package/core/client/components/collection/KTagsFilterView.vue +10 -45
  30. package/core/client/components/collection/KTimeFilterControl.vue +6 -7
  31. package/core/client/components/collection/KTimeFilterView.vue +13 -22
  32. package/core/client/components/collection/KTimeLine.vue +18 -9
  33. package/core/client/components/form/KColorField.vue +13 -6
  34. package/core/client/components/form/KColorScaleField.vue +7 -12
  35. package/core/client/components/form/KFileField.vue +118 -89
  36. package/core/client/components/form/KForm.vue +30 -18
  37. package/core/client/components/form/KIconField.vue +4 -1
  38. package/core/client/components/form/KNumberField.vue +9 -2
  39. package/core/client/components/form/KSelectField.vue +1 -4
  40. package/core/client/components/form/KTagField.vue +229 -0
  41. package/core/client/components/form/KTextField.vue +4 -0
  42. package/core/client/components/form/KTextareaField.vue +3 -1
  43. package/core/client/components/input/KShapePicker.vue +3 -3
  44. package/core/client/components/layout/KFab.vue +32 -20
  45. package/core/client/components/layout/KPage.vue +11 -6
  46. package/core/client/components/layout/KWindow.vue +5 -0
  47. package/core/client/components/media/index.js +2 -6
  48. package/core/client/components/menu/KMenu.vue +12 -10
  49. package/core/client/components/menu/KSubMenu.vue +12 -12
  50. package/core/client/components/messages/KMessageCard.vue +13 -12
  51. package/core/client/components/messages/KMessageComposer.vue +13 -9
  52. package/core/client/components/messages/KMessagesTimeLine.vue +16 -8
  53. package/core/client/components/tags/KTagFilter.vue +99 -0
  54. package/core/client/components/tags/KTagItem.vue +65 -0
  55. package/core/client/components/tags/KTagManager.vue +198 -0
  56. package/core/client/components/tags/KTagSelection.vue +82 -0
  57. package/core/client/components/time/KDate.vue +3 -17
  58. package/core/client/components/time/KDateTime.vue +1 -1
  59. package/core/client/components/time/KTime.vue +0 -4
  60. package/core/client/composables/collection-filter.js +41 -2
  61. package/core/client/composables/collection.js +3 -3
  62. package/core/client/composables/index.js +1 -0
  63. package/core/client/composables/pwa.js +13 -0
  64. package/core/client/composables/session.js +7 -8
  65. package/core/client/composables/user.js +36 -0
  66. package/core/client/directives/index.js +1 -0
  67. package/core/client/directives/v-drop-file.js +174 -0
  68. package/core/client/document.js +2 -1
  69. package/core/client/exporter.js +17 -3
  70. package/core/client/i18n/core_en.json +34 -7
  71. package/core/client/i18n/core_fr.json +36 -9
  72. package/core/client/i18n.js +26 -11
  73. package/core/client/layout.js +5 -5
  74. package/core/client/mixins/mixin.base-activity.js +8 -5
  75. package/core/client/mixins/mixin.base-editor.js +2 -1
  76. package/core/client/mixins/mixin.base-field.js +3 -2
  77. package/core/client/mixins/mixin.base-item.js +12 -10
  78. package/core/client/mixins/mixin.service.js +3 -1
  79. package/core/client/platform.js +0 -3
  80. package/core/client/readers/reader.json.js +2 -2
  81. package/core/client/utils/index.js +2 -0
  82. package/core/client/utils/utils.collection.js +6 -6
  83. package/core/client/utils/utils.colors.js +46 -19
  84. package/core/client/utils/utils.files.js +19 -0
  85. package/core/client/utils/utils.locale.js +13 -17
  86. package/core/client/utils/utils.services.js +27 -0
  87. package/core/client/utils/utils.shapes.js +2 -2
  88. package/core/client/utils/utils.tags.js +17 -0
  89. package/core/client/utils/utils.tours.js +31 -0
  90. package/core/common/permissions.js +3 -0
  91. package/core/common/schemas/tags.update.json +35 -0
  92. package/core/common/schemas/users.update-profile.json +1 -1
  93. package/core/common/utils.js +5 -5
  94. package/extras/configs/panes.top.js +11 -0
  95. package/extras/configs/stickies.js +1 -1
  96. package/extras/configs/widgets.left.js +13 -1
  97. package/extras/libs/jsts.min.js +8 -0
  98. package/{test/client/core/account.js → extras/tests/core/account.mjs} +4 -4
  99. package/extras/tests/core/api.mjs +114 -0
  100. package/{test/client/core/collection.js → extras/tests/core/collection.mjs} +8 -8
  101. package/{test/client/core/dialogs.js → extras/tests/core/dialogs.mjs} +1 -1
  102. package/extras/tests/core/index.mjs +9 -0
  103. package/{test/client/core/layout.js → extras/tests/core/layout.mjs} +7 -3
  104. package/{test/client/core/runner.js → extras/tests/core/runner.mjs} +3 -3
  105. package/{test/client/core/screens.js → extras/tests/core/screens.mjs} +1 -1
  106. package/{test/client/core/utils.js → extras/tests/core/utils.mjs} +79 -26
  107. package/extras/tests/index.mjs +4 -0
  108. package/{test/client/map/api.js → extras/tests/map/api.mjs} +1 -1
  109. package/{test/client/map/catalog.js → extras/tests/map/catalog.mjs} +18 -18
  110. package/{test/client/map/controls.js → extras/tests/map/controls.mjs} +3 -3
  111. package/extras/tests/map/index.mjs +5 -0
  112. package/{test/client/map/time.js → extras/tests/map/time.mjs} +3 -3
  113. package/{test/client/map/utils.js → extras/tests/map/utils.mjs} +6 -5
  114. package/extras/tours/fab.js +36 -0
  115. package/extras/tours/layout.js +49 -0
  116. package/extras/tours/pane.left.js +78 -0
  117. package/extras/tours/pane.right.js +145 -0
  118. package/extras/tours/pane.top.js +239 -0
  119. package/map/api/config/layers.cjs +28 -13
  120. package/map/api/hooks/hooks.query.js +12 -7
  121. package/map/api/models/catalog.model.mongodb.js +17 -6
  122. package/map/api/services/catalog/catalog.hooks.js +1 -1
  123. package/map/api/services/index.js +18 -1
  124. package/map/client/cesium/utils/utils.cesium.js +25 -65
  125. package/map/client/cesium/utils/utils.features.js +1 -0
  126. package/map/client/cesium/utils/utils.geojson.js +1 -0
  127. package/map/client/cesium/utils/utils.style.js +7 -6
  128. package/map/client/components/KFeatureEditor.vue +3 -3
  129. package/map/client/components/KFeaturesChart.vue +4 -4
  130. package/map/client/components/KFeaturesFilterEditor.vue +19 -13
  131. package/map/client/components/KFeaturesFilterManager.vue +7 -4
  132. package/map/client/components/KFeaturesTable.vue +2 -2
  133. package/map/client/components/KLayerEditor.vue +6 -6
  134. package/map/client/components/KMeasureTool.vue +2 -1
  135. package/map/client/components/catalog/KBaseLayersSelector.vue +1 -1
  136. package/map/client/components/catalog/KCategoryItem.vue +15 -1
  137. package/map/client/components/catalog/KConnectLayer.vue +2 -2
  138. package/map/client/components/catalog/KCreateView.vue +3 -2
  139. package/map/client/components/catalog/KFilteredLayerItem.vue +26 -6
  140. package/map/client/components/catalog/KImportLayer.vue +6 -3
  141. package/map/client/components/catalog/KLayerCategories.vue +6 -6
  142. package/map/client/components/catalog/KLayerItem.vue +12 -2
  143. package/map/client/components/catalog/KLayersList.vue +180 -0
  144. package/map/client/components/catalog/KLayersPanel.vue +146 -36
  145. package/map/client/components/catalog/KLayersSelector.vue +96 -48
  146. package/map/client/components/catalog/KProjectEditor.vue +0 -9
  147. package/map/client/components/catalog/KProjectSelector.vue +3 -2
  148. package/map/client/components/catalog/KProjectsPanel.vue +23 -8
  149. package/map/client/components/catalog/KViewsPanel.vue +18 -8
  150. package/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  151. package/map/client/components/form/KDirectionField.vue +3 -6
  152. package/map/client/components/form/KLayerCategoryField.vue +2 -2
  153. package/map/client/components/form/KOwsServiceField.vue +25 -24
  154. package/map/client/components/form/KSelectLayersField.vue +4 -4
  155. package/map/client/components/form/KSelectViewsField.vue +4 -4
  156. package/map/client/components/legend/KLayerLegend.vue +11 -2
  157. package/map/client/components/legend/KLegend.vue +44 -51
  158. package/map/client/components/location/KLocationCardSection.vue +6 -7
  159. package/map/client/components/location/KLocationMap.vue +23 -13
  160. package/map/client/components/stickies/KPosition.vue +5 -0
  161. package/map/client/components/styles/KLayerStyleAction.vue +59 -12
  162. package/map/client/components/styles/KStyleEditor.vue +71 -8
  163. package/map/client/components/styles/KStyleEditorSection.vue +82 -33
  164. package/map/client/components/styles/KStyleManager.vue +119 -59
  165. package/map/client/components/styles/KStylePreview.vue +9 -25
  166. package/map/client/components/styles/KStylePreviewItem.vue +22 -1
  167. package/map/client/components/tools/KSearchTool.vue +1 -1
  168. package/map/client/components/widget/KElevationProfile.vue +20 -17
  169. package/map/client/components/widget/KInformationBox.vue +5 -5
  170. package/map/client/components/widget/KMapillaryViewer.vue +2 -1
  171. package/map/client/components/widget/KTimeSeries.vue +11 -9
  172. package/map/client/globe.js +2 -0
  173. package/map/client/i18n/map_en.json +29 -7
  174. package/map/client/i18n/map_fr.json +29 -7
  175. package/map/client/leaflet/GradientPath.js +61 -24
  176. package/map/client/leaflet/ShapeMarker.js +12 -5
  177. package/map/client/leaflet/TiledMeshLayer.js +3 -3
  178. package/map/client/leaflet/utils/utils.geojson.js +66 -8
  179. package/map/client/leaflet/utils/utils.style.js +14 -15
  180. package/map/client/mixins/globe/mixin.base-globe.js +181 -34
  181. package/map/client/mixins/globe/mixin.file-layers.js +3 -0
  182. package/map/client/mixins/globe/mixin.geojson-layers.js +179 -31
  183. package/map/client/mixins/globe/mixin.opendap-layers.js +2 -1
  184. package/map/client/mixins/globe/mixin.style.js +23 -1
  185. package/map/client/mixins/globe/mixin.tooltip.js +14 -2
  186. package/map/client/mixins/map/mixin.base-map.js +146 -58
  187. package/map/client/mixins/map/mixin.edit-layers.js +18 -15
  188. package/map/client/mixins/map/mixin.geojson-layers.js +181 -106
  189. package/map/client/mixins/map/mixin.heatmap-layers.js +3 -2
  190. package/map/client/mixins/map/mixin.map-activity.js +6 -1
  191. package/map/client/mixins/map/mixin.mapillary-layers.js +2 -1
  192. package/map/client/mixins/map/mixin.pmtiles-layers.js +3 -3
  193. package/map/client/mixins/map/mixin.tiled-mesh-layers.js +3 -2
  194. package/map/client/mixins/map/mixin.tiled-wind-layers.js +3 -2
  195. package/map/client/mixins/mixin.activity.js +197 -51
  196. package/map/client/mixins/mixin.context.js +11 -11
  197. package/map/client/mixins/mixin.feature-service.js +11 -9
  198. package/map/client/mixins/mixin.weacast.js +5 -3
  199. package/map/client/readers/reader.geojson.js +3 -1
  200. package/map/client/utils/utils.capture.js +3 -3
  201. package/map/client/utils/utils.catalog.js +9 -5
  202. package/map/client/utils/utils.features.js +120 -54
  203. package/map/client/utils/utils.js +25 -10
  204. package/map/client/utils/utils.layers.js +148 -24
  205. package/map/client/utils/utils.location.js +26 -9
  206. package/map/client/utils/utils.schema.js +2 -1
  207. package/map/client/utils/utils.style.js +53 -9
  208. package/map/common/geotiff-grid-source.js +1 -3
  209. package/map/common/opendap-utils.js +0 -1
  210. package/map/common/tms-utils.js +0 -1
  211. package/map/common/wcs-utils.js +0 -1
  212. package/map/common/wfs-utils.js +0 -1
  213. package/map/common/wms-utils.js +7 -1
  214. package/map/common/wmts-utils.js +0 -1
  215. package/package.json +12 -12
  216. package/scripts/init_runner.sh +3 -3
  217. package/scripts/kash/CHANGELOG.md +27 -0
  218. package/scripts/kash/kash.sh +556 -237
  219. package/scripts/kash/scripts/run_tests.sh +44 -5
  220. package/scripts/setup_workspace.sh +23 -13
  221. package/test/api/core/config/default.cjs +2 -1
  222. package/test/api/core/tags.test.js +62 -0
  223. package/test/api/map/config/default.cjs +2 -1
  224. package/test/api/map/config/layers.json +9 -0
  225. package/test/api/map/data/openradiation.json +13811 -0
  226. package/test/api/map/grid-sources.test.js +1 -3
  227. package/test/api/map/index.test.js +60 -1
  228. package/test/api/map/style.test.js +30 -1
  229. package/test.api.js +1 -1
  230. package/vite/App.vue +18 -0
  231. package/vite/AppWithGlobe.vue +84 -0
  232. package/vite/GlobeActivity.vue +58 -0
  233. package/vite/MapActivity.vue +63 -0
  234. package/vite/MapActivityWithGlobe.vue +63 -0
  235. package/vite/README.md +169 -0
  236. package/vite/config.js +221 -0
  237. package/vite/index_with_globe.html +50 -0
  238. package/vite/index_with_map.html +50 -0
  239. package/vite/package.json +173 -0
  240. package/vite/quasar.variables.scss +17 -0
  241. package/vite/vite.config.js +166 -0
  242. package/vite/yarn.lock +11641 -0
  243. package/core/client/components/media/KImageViewer.vue +0 -68
  244. package/core/client/components/media/KMarkdownViewer.vue +0 -55
  245. package/core/client/components/media/KMediaBrowser.vue +0 -301
  246. package/coverage/base.css +0 -224
  247. package/coverage/block-navigation.js +0 -87
  248. package/coverage/core/api/application.js.html +0 -1870
  249. package/coverage/core/api/authentication.js.html +0 -874
  250. package/coverage/core/api/db.js.html +0 -793
  251. package/coverage/core/api/hooks/hooks.authentication.js.html +0 -139
  252. package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -958
  253. package/coverage/core/api/hooks/hooks.groups.js.html +0 -229
  254. package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
  255. package/coverage/core/api/hooks/hooks.model.js.html +0 -967
  256. package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
  257. package/coverage/core/api/hooks/hooks.push.js.html +0 -265
  258. package/coverage/core/api/hooks/hooks.query.js.html +0 -862
  259. package/coverage/core/api/hooks/hooks.schemas.js.html +0 -298
  260. package/coverage/core/api/hooks/hooks.service.js.html +0 -319
  261. package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
  262. package/coverage/core/api/hooks/hooks.users.js.html +0 -595
  263. package/coverage/core/api/hooks/index.html +0 -266
  264. package/coverage/core/api/hooks/index.js.html +0 -115
  265. package/coverage/core/api/index.html +0 -176
  266. package/coverage/core/api/index.js.html +0 -148
  267. package/coverage/core/api/marshall.js.html +0 -448
  268. package/coverage/core/api/models/groups.model.mongodb.js.html +0 -109
  269. package/coverage/core/api/models/index.html +0 -131
  270. package/coverage/core/api/models/messages.model.mongodb.js.html +0 -121
  271. package/coverage/core/api/models/organisations.model.mongodb.js.html +0 -94
  272. package/coverage/core/api/models/tags.model.mongodb.js.html +0 -115
  273. package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
  274. package/coverage/core/api/services/account/account.hooks.js.html +0 -208
  275. package/coverage/core/api/services/account/account.service.js.html +0 -436
  276. package/coverage/core/api/services/account/index.html +0 -131
  277. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  278. package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -520
  279. package/coverage/core/api/services/authorisations/index.html +0 -131
  280. package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
  281. package/coverage/core/api/services/databases/databases.service.js.html +0 -100
  282. package/coverage/core/api/services/databases/index.html +0 -131
  283. package/coverage/core/api/services/groups/groups.hooks.js.html +0 -178
  284. package/coverage/core/api/services/groups/index.html +0 -116
  285. package/coverage/core/api/services/import-export/import-export.hooks.js.html +0 -184
  286. package/coverage/core/api/services/import-export/import-export.service.js.html +0 -118
  287. package/coverage/core/api/services/import-export/index.html +0 -131
  288. package/coverage/core/api/services/index.html +0 -116
  289. package/coverage/core/api/services/index.js.html +0 -532
  290. package/coverage/core/api/services/mailer/index.html +0 -131
  291. package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
  292. package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
  293. package/coverage/core/api/services/messages/index.html +0 -116
  294. package/coverage/core/api/services/messages/messages.hooks.js.html +0 -202
  295. package/coverage/core/api/services/organisations/index.html +0 -131
  296. package/coverage/core/api/services/organisations/organisations.hooks.js.html +0 -178
  297. package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
  298. package/coverage/core/api/services/push/index.html +0 -131
  299. package/coverage/core/api/services/push/push.hooks.js.html +0 -190
  300. package/coverage/core/api/services/push/push.service.js.html +0 -121
  301. package/coverage/core/api/services/storage/index.html +0 -131
  302. package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
  303. package/coverage/core/api/services/storage/storage.service.js.html +0 -172
  304. package/coverage/core/api/services/tags/index.html +0 -116
  305. package/coverage/core/api/services/tags/tags.hooks.js.html +0 -178
  306. package/coverage/core/api/services/users/index.html +0 -131
  307. package/coverage/core/api/services/users/users.hooks.js.html +0 -310
  308. package/coverage/core/api/services/users/users.service.js.html +0 -100
  309. package/coverage/core/api/utils.js.html +0 -118
  310. package/coverage/core/common/errors.js.html +0 -88
  311. package/coverage/core/common/index.html +0 -191
  312. package/coverage/core/common/index.js.html +0 -115
  313. package/coverage/core/common/permissions.js.html +0 -733
  314. package/coverage/core/common/schema.js.html +0 -190
  315. package/coverage/core/common/utils.js.html +0 -226
  316. package/coverage/core/common/utils.offline.js.html +0 -199
  317. package/coverage/favicon.png +0 -0
  318. package/coverage/index.html +0 -476
  319. package/coverage/lcov-report/base.css +0 -224
  320. package/coverage/lcov-report/block-navigation.js +0 -87
  321. package/coverage/lcov-report/core/api/application.js.html +0 -1870
  322. package/coverage/lcov-report/core/api/authentication.js.html +0 -874
  323. package/coverage/lcov-report/core/api/db.js.html +0 -793
  324. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -139
  325. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -958
  326. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +0 -229
  327. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
  328. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -967
  329. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
  330. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +0 -265
  331. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -862
  332. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -298
  333. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
  334. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
  335. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -595
  336. package/coverage/lcov-report/core/api/hooks/index.html +0 -266
  337. package/coverage/lcov-report/core/api/hooks/index.js.html +0 -115
  338. package/coverage/lcov-report/core/api/index.html +0 -176
  339. package/coverage/lcov-report/core/api/index.js.html +0 -148
  340. package/coverage/lcov-report/core/api/marshall.js.html +0 -448
  341. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +0 -109
  342. package/coverage/lcov-report/core/api/models/index.html +0 -131
  343. package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +0 -121
  344. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +0 -94
  345. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -115
  346. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
  347. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -208
  348. package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -436
  349. package/coverage/lcov-report/core/api/services/account/index.html +0 -131
  350. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
  351. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -520
  352. package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
  353. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
  354. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
  355. package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
  356. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +0 -178
  357. package/coverage/lcov-report/core/api/services/groups/index.html +0 -116
  358. package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +0 -184
  359. package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +0 -118
  360. package/coverage/lcov-report/core/api/services/import-export/index.html +0 -131
  361. package/coverage/lcov-report/core/api/services/index.html +0 -116
  362. package/coverage/lcov-report/core/api/services/index.js.html +0 -532
  363. package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
  364. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
  365. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
  366. package/coverage/lcov-report/core/api/services/messages/index.html +0 -116
  367. package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +0 -202
  368. package/coverage/lcov-report/core/api/services/organisations/index.html +0 -131
  369. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +0 -178
  370. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
  371. package/coverage/lcov-report/core/api/services/push/index.html +0 -131
  372. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +0 -190
  373. package/coverage/lcov-report/core/api/services/push/push.service.js.html +0 -121
  374. package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
  375. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
  376. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
  377. package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
  378. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -178
  379. package/coverage/lcov-report/core/api/services/users/index.html +0 -131
  380. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -310
  381. package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
  382. package/coverage/lcov-report/core/api/utils.js.html +0 -118
  383. package/coverage/lcov-report/core/common/errors.js.html +0 -88
  384. package/coverage/lcov-report/core/common/index.html +0 -191
  385. package/coverage/lcov-report/core/common/index.js.html +0 -115
  386. package/coverage/lcov-report/core/common/permissions.js.html +0 -733
  387. package/coverage/lcov-report/core/common/schema.js.html +0 -190
  388. package/coverage/lcov-report/core/common/utils.js.html +0 -226
  389. package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
  390. package/coverage/lcov-report/favicon.png +0 -0
  391. package/coverage/lcov-report/index.html +0 -476
  392. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -553
  393. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -397
  394. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1294
  395. package/coverage/lcov-report/map/api/hooks/index.html +0 -161
  396. package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
  397. package/coverage/lcov-report/map/api/index.html +0 -131
  398. package/coverage/lcov-report/map/api/index.js.html +0 -139
  399. package/coverage/lcov-report/map/api/marshall.js.html +0 -178
  400. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
  401. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -169
  402. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -196
  403. package/coverage/lcov-report/map/api/models/index.html +0 -176
  404. package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +0 -109
  405. package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
  406. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
  407. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
  408. package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
  409. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -328
  410. package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
  411. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  412. package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
  413. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -310
  414. package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -544
  415. package/coverage/lcov-report/map/api/services/features/index.html +0 -131
  416. package/coverage/lcov-report/map/api/services/index.html +0 -116
  417. package/coverage/lcov-report/map/api/services/index.js.html +0 -1054
  418. package/coverage/lcov-report/map/api/services/projects/index.html +0 -116
  419. package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +0 -439
  420. package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
  421. package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -196
  422. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
  423. package/coverage/lcov-report/map/common/errors.js.html +0 -94
  424. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -544
  425. package/coverage/lcov-report/map/common/grid.js.html +0 -1612
  426. package/coverage/lcov-report/map/common/index.html +0 -371
  427. package/coverage/lcov-report/map/common/index.js.html +0 -172
  428. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
  429. package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
  430. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
  431. package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -826
  432. package/coverage/lcov-report/map/common/permissions.js.html +0 -130
  433. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
  434. package/coverage/lcov-report/map/common/tms-utils.js.html +0 -274
  435. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
  436. package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -586
  437. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
  438. package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -574
  439. package/coverage/lcov-report/map/common/wms-utils.js.html +0 -451
  440. package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -547
  441. package/coverage/lcov-report/prettify.css +0 -1
  442. package/coverage/lcov-report/prettify.js +0 -2
  443. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  444. package/coverage/lcov-report/sorter.js +0 -196
  445. package/coverage/lcov.info +0 -11520
  446. package/coverage/map/api/hooks/hooks.catalog.js.html +0 -553
  447. package/coverage/map/api/hooks/hooks.features.js.html +0 -397
  448. package/coverage/map/api/hooks/hooks.query.js.html +0 -1294
  449. package/coverage/map/api/hooks/index.html +0 -161
  450. package/coverage/map/api/hooks/index.js.html +0 -94
  451. package/coverage/map/api/index.html +0 -131
  452. package/coverage/map/api/index.js.html +0 -139
  453. package/coverage/map/api/marshall.js.html +0 -178
  454. package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
  455. package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -169
  456. package/coverage/map/api/models/features.model.mongodb.js.html +0 -196
  457. package/coverage/map/api/models/index.html +0 -176
  458. package/coverage/map/api/models/projects.model.mongodb.js.html +0 -109
  459. package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
  460. package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
  461. package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
  462. package/coverage/map/api/services/alerts/index.html +0 -131
  463. package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -328
  464. package/coverage/map/api/services/catalog/index.html +0 -116
  465. package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
  466. package/coverage/map/api/services/daptiles/index.html +0 -116
  467. package/coverage/map/api/services/features/features.hooks.js.html +0 -310
  468. package/coverage/map/api/services/features/features.service.js.html +0 -544
  469. package/coverage/map/api/services/features/index.html +0 -131
  470. package/coverage/map/api/services/index.html +0 -116
  471. package/coverage/map/api/services/index.js.html +0 -1054
  472. package/coverage/map/api/services/projects/index.html +0 -116
  473. package/coverage/map/api/services/projects/projects.hooks.js.html +0 -439
  474. package/coverage/map/api/services/styles/index.html +0 -116
  475. package/coverage/map/api/services/styles/styles.hooks.js.html +0 -196
  476. package/coverage/map/common/dynamic-grid-source.js.html +0 -466
  477. package/coverage/map/common/errors.js.html +0 -94
  478. package/coverage/map/common/geotiff-grid-source.js.html +0 -544
  479. package/coverage/map/common/grid.js.html +0 -1612
  480. package/coverage/map/common/index.html +0 -371
  481. package/coverage/map/common/index.js.html +0 -172
  482. package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
  483. package/coverage/map/common/moment-utils.js.html +0 -157
  484. package/coverage/map/common/opendap-grid-source.js.html +0 -868
  485. package/coverage/map/common/opendap-utils.js.html +0 -826
  486. package/coverage/map/common/permissions.js.html +0 -130
  487. package/coverage/map/common/time-based-grid-source.js.html +0 -418
  488. package/coverage/map/common/tms-utils.js.html +0 -274
  489. package/coverage/map/common/wcs-grid-source.js.html +0 -364
  490. package/coverage/map/common/wcs-utils.js.html +0 -586
  491. package/coverage/map/common/weacast-grid-source.js.html +0 -1033
  492. package/coverage/map/common/wfs-utils.js.html +0 -574
  493. package/coverage/map/common/wms-utils.js.html +0 -451
  494. package/coverage/map/common/wmts-utils.js.html +0 -547
  495. package/coverage/prettify.css +0 -1
  496. package/coverage/prettify.js +0 -2
  497. package/coverage/sort-arrow-sprite.png +0 -0
  498. package/coverage/sorter.js +0 -196
  499. package/coverage/tmp/coverage-151198-1753351220086-0.json +0 -1
  500. package/coverage/tmp/coverage-151210-1753351220070-0.json +0 -1
  501. package/coverage/tmp/coverage-151221-1753351129816-0.json +0 -1
  502. package/coverage/tmp/coverage-151233-1753351129803-0.json +0 -1
  503. package/coverage/tmp/coverage-151240-1753351129770-0.json +0 -1
  504. package/coverage/tmp/coverage-151307-1753351220058-0.json +0 -1
  505. package/coverage/tmp/coverage-151319-1753351220044-0.json +0 -1
  506. package/coverage/tmp/coverage-151326-1753351220010-0.json +0 -1
  507. package/extras/tours/core/account-profile.js +0 -32
  508. package/extras/tours/core/account.js +0 -143
  509. package/extras/tours/core/add-member.js +0 -75
  510. package/extras/tours/core/add-tag.js +0 -13
  511. package/extras/tours/core/create-group.js +0 -19
  512. package/extras/tours/core/create-organisation.js +0 -19
  513. package/extras/tours/core/create-tag.js +0 -26
  514. package/extras/tours/core/edit-member-role.js +0 -13
  515. package/extras/tours/core/groups.js +0 -65
  516. package/extras/tours/core/join-group.js +0 -13
  517. package/extras/tours/core/login.js +0 -41
  518. package/extras/tours/core/members.js +0 -108
  519. package/extras/tours/core/register.js +0 -61
  520. package/extras/tours/core/send-reset-password.js +0 -14
  521. package/extras/tours/core/tags.js +0 -65
  522. package/extras/tours/map/catalog-panel.js +0 -112
  523. package/extras/tours/map/fab.js +0 -26
  524. package/extras/tours/map/navigation-bar.js +0 -187
  525. package/extras/tours/map/side-nav.js +0 -36
  526. package/test/api/core/test-log-2025-02-05.log +0 -23
  527. package/test/api/core/test-log-2025-05-21.log +0 -15
  528. package/test/api/core/test-log-2025-06-25.log +0 -9
  529. package/test/api/core/test-log-2025-07-24.log +0 -44
  530. package/test/api/map/test-log-2025-05-27.log +0 -13
  531. package/test/api/map/test-log-2025-06-23.log +0 -7
  532. package/test/api/map/test-log-2025-07-24.log +0 -11
  533. package/test/client/core/api.js +0 -361
  534. package/test/client/core/index.js +0 -9
  535. package/test/client/index.js +0 -4
  536. package/test/client/map/index.js +0 -5
  537. package/test.client.js +0 -1
  538. /package/{test/client/core/time.js → extras/tests/core/time.mjs} +0 -0
  539. /package/extras/tours/{map/add-layer.js → add-layer.js} +0 -0
  540. /package/extras/tours/{map/catalog-categories.js → catalog-categories.js} +0 -0
  541. /package/extras/tours/{map/connect-layer.js → connect-layer.js} +0 -0
  542. /package/extras/tours/{map/create-layer.js → create-layer.js} +0 -0
  543. /package/extras/tours/{map/create-view.js → create-view.js} +0 -0
  544. /package/extras/tours/{map/import-layer.js → import-layer.js} +0 -0
  545. /package/extras/tours/{map/timeline.js → pane.bottom.js} +0 -0
@@ -1,25 +1,16 @@
1
1
  <template>
2
2
  <KAction
3
- ref="actionRef"
4
3
  v-bind="props"
4
+ :toggled="Fullscreen"
5
5
  :handler="toggleFullscreen"
6
6
  />
7
7
  </template>
8
8
 
9
9
  <script setup>
10
10
  import _ from 'lodash'
11
- import { ref, watch } from 'vue'
12
11
  import { actionProps, Fullscreen, toggleFullscreen } from '../../utils'
13
12
  import KAction from './KAction.vue'
14
13
 
15
14
  // Props
16
- const props = defineProps(_.omit(actionProps, ['url', 'handler', 'dialog', 'route', 'closePopup']))
17
-
18
- // Data
19
- const actionRef = ref(null)
20
-
21
- // Watch
22
- watch(Fullscreen, () => {
23
- if (actionRef.value.isToggled !== Fullscreen.value) actionRef.value.toggle()
24
- })
15
+ const props = defineProps(_.omit(actionProps, ['url', 'handler', 'dialog', 'route', 'closePopup', 'toggled']))
25
16
  </script>
@@ -6,7 +6,8 @@
6
6
 
7
7
  <script setup>
8
8
  import KLayout from '../layout/KLayout.vue'
9
- import { Store } from '../../store.js'
9
+ import { useUser } from '../../composables'
10
10
 
11
- const User = Store.getRef('user')
11
+ // Data
12
+ const { User } = useUser()
12
13
  </script>
@@ -65,6 +65,7 @@
65
65
  import _ from 'lodash'
66
66
  import { Filter } from '../../filter'
67
67
  import { Search } from '../../search'
68
+ import { Store } from '../../store'
68
69
 
69
70
  export default {
70
71
  props: {
@@ -125,18 +126,18 @@ export default {
125
126
  onItemSelected (item) {
126
127
  this.items.push(item)
127
128
  this.pattern = ''
128
- this.$store.patch('filter', { items: this.items, pattern: this.pattern })
129
+ Store.patch('filter', { items: this.items, pattern: this.pattern })
129
130
  },
130
131
  onItemRemoved (itemId) {
131
132
  this.items = _.filter(this.items, item => { return item._id !== itemId })
132
- this.$store.patch('filter', { items: this.items, pattern: this.pattern })
133
+ Store.patch('filter', { items: this.items, pattern: this.pattern })
133
134
  },
134
135
  async onSearch (pattern) {
135
136
  // take about a null pattern received when clearing the input
136
137
  if (_.isNull(pattern)) pattern = ''
137
138
  // update the pattern
138
139
  this.pattern = pattern
139
- this.$store.patch('filter', { pattern: this.pattern })
140
+ Store.patch('filter', { pattern: this.pattern })
140
141
  // run the search if the pattern is not empty
141
142
  if (!_.isEmpty(pattern)) {
142
143
  const results = await Search.query(this.services, pattern)
@@ -150,7 +151,7 @@ export default {
150
151
  },
151
152
  created () {
152
153
  // Initialize the filter, we keep track of any existing items previously set by another activity
153
- this.$store.patch('filter', { fields: this.fields || this.field, pattern: '' })
154
+ Store.patch('filter', { fields: this.fields || this.field, pattern: '' })
154
155
  },
155
156
  beforeUnmount () {
156
157
  this.items = []
@@ -21,7 +21,7 @@
21
21
  <q-infinite-scroll
22
22
  @load="onLoad"
23
23
  :initial-index="1"
24
- :offset="200"
24
+ :offset="scrollOffset"
25
25
  v-scroll="onScroll"
26
26
  class="col"
27
27
  >
@@ -192,6 +192,10 @@ const props = defineProps({
192
192
  type: Boolean,
193
193
  default: true
194
194
  },
195
+ scrollOffset: {
196
+ type: Number,
197
+ default: 300
198
+ },
195
199
  header: {
196
200
  type: [Array, Object],
197
201
  default: () => null
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div class="q-pa-xs">
3
+ <q-input
4
+ :label="$tie(label)"
5
+ v-model="inputValue"
6
+ clearable
7
+ borderless
8
+ dense
9
+ debounce="500"
10
+ @update:model-value="onSearch"
11
+ >
12
+ <template v-slot:before v-if="!hideIcon">
13
+ <div class="row">
14
+ <q-icon class="q-pl-xs" dense name="search" />
15
+ </div>
16
+ </template>
17
+ </q-input>
18
+ </div>
19
+ </template>
20
+
21
+ <script setup>
22
+ import { ref } from 'vue'
23
+
24
+ // Props
25
+ const props = defineProps({
26
+ value: {
27
+ type: String,
28
+ default: ''
29
+ },
30
+ label: {
31
+ type: String,
32
+ default: 'KFilter.SEARCH_LABEL'
33
+ },
34
+ hideIcon: {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ onSearch: {
39
+ type: Function,
40
+ default: () => {}
41
+ }
42
+ })
43
+
44
+ // Data
45
+ const inputValue = ref(props.value)
46
+
47
+ </script>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <div>
3
+ <KOptionsChooser
4
+ :options="options"
5
+ :tooltip="tooltip"
6
+ @option-chosen="onOptionChosen"
7
+ />
8
+ </div>
9
+ </template>
10
+
11
+ <script setup>
12
+ import KOptionsChooser from '../input/KOptionsChooser.vue'
13
+
14
+ // Props
15
+ const props = defineProps({
16
+ options: {
17
+ type: Array,
18
+ default: () => [
19
+ { icon: 'las la-sort-alpha-down', value: { field: 'name', order: 1 }, default: true },
20
+ { icon: 'las la-sort-alpha-up', value: { field: 'name', order: -1 } }
21
+ ]
22
+ },
23
+ tooltip: {
24
+ type: String,
25
+ default: 'KSorter.SORT'
26
+ },
27
+ onOptionChanged: {
28
+ type: Function,
29
+ default: () => {}
30
+ }
31
+ })
32
+
33
+ // Emits
34
+ const emit = defineEmits(['option-changed'])
35
+
36
+ // Functions
37
+ function onOptionChosen (value) {
38
+ props.onOptionChanged(value)
39
+ emit('option-changed', value)
40
+ }
41
+
42
+ </script>
@@ -63,7 +63,7 @@ watch(() => [$q.screen.width, $q.screen.height], () => {
63
63
  const refresh = _.debounce(() => {
64
64
  const targetElement = document.getElementById(props.target)
65
65
  if (!targetElement) {
66
- logger.error('[KDK] Cannot find target element')
66
+ logger.warn('[KDK] Cannot find target element')
67
67
  return
68
68
  }
69
69
  const containerHeight = targetElement.offsetHeight
@@ -80,7 +80,7 @@ const refresh = _.debounce(() => {
80
80
  function scrollOnce () {
81
81
  const targetElement = document.getElementById(props.target)
82
82
  if (!targetElement) {
83
- logger.error('[KDK] Cannot find target element')
83
+ logger.warn('[KDK] Cannot find target element')
84
84
  return
85
85
  }
86
86
  const position = qScrollUtils.getVerticalScrollPosition(targetElement)
@@ -66,6 +66,7 @@ import _ from 'lodash'
66
66
  import { ref, computed } from 'vue'
67
67
  import { useCurrentActivity } from '../../composables/index.js'
68
68
  import { Search } from '../../search.js'
69
+ import { Store } from '../../store.js'
69
70
 
70
71
  // Props
71
72
  const props = defineProps({
@@ -115,7 +116,7 @@ function getItemIcon (item) {
115
116
  function onItemSelected (item) {
116
117
  this.items.push(item)
117
118
  this.pattern = ''
118
- this.$store.patch('filter', { items: this.items, pattern: this.pattern })
119
+ Store.patch('filter', { items: this.items, pattern: this.pattern })
119
120
  }
120
121
  function onItemRemoved (itemId) {
121
122
  _.set(state.searchFilter, 'items', _.without(items.value, itemId))
@@ -125,7 +126,7 @@ async function onSearch (pattern) {
125
126
  if (_.isNull(pattern)) pattern = ''
126
127
  // update the pattern
127
128
  this.pattern = pattern
128
- this.$store.patch('filter', { pattern: this.pattern })
129
+ Store.patch('filter', { pattern: this.pattern })
129
130
  // run the search if the pattern is not empty
130
131
  if (!_.isEmpty(pattern)) {
131
132
  const results = await Search.query(props.services, pattern)
@@ -1,46 +1,42 @@
1
1
  <template>
2
- <KOptionsChooser
3
- :options="options"
4
- :tooltip="tooltip"
5
- @option-chosen="onOptionChanged"
6
- />
2
+ <KItemsSorter v-bind="$props" @option-changed="onOptionChanged" />
7
3
  </template>
8
4
 
9
- <script>
5
+ <script setup>
10
6
  import _ from 'lodash'
11
- import KOptionsChooser from '../input/KOptionsChooser.vue'
7
+ import { onMounted, onBeforeUnmount } from 'vue'
8
+ import { Store } from '../../store.js'
9
+ import KItemsSorter from './KItemsSorter.vue'
12
10
 
13
- export default {
14
- components: {
15
- KOptionsChooser
11
+ // Props
12
+ const props = defineProps({
13
+ options: {
14
+ type: Array,
15
+ default: () => [
16
+ { icon: 'las la-sort-alpha-down', value: { field: 'name', order: 1 }, default: true },
17
+ { icon: 'las la-sort-alpha-up', value: { field: 'name', order: -1 } }
18
+ ]
16
19
  },
17
- props: {
18
- options: {
19
- type: Array,
20
- default: () => [
21
- { icon: 'las la-sort-alpha-down', value: { field: 'name', order: 1 }, default: true },
22
- { icon: 'las la-sort-alpha-up', value: { field: 'name', order: -1 } }
23
- ]
24
- },
25
- tooltip: {
26
- type: String,
27
- default: 'KSorter.SORT'
28
- }
29
- },
30
- methods: {
31
- onOptionChanged (value) {
32
- this.$store.patch('sorter', value)
33
- }
34
- },
35
- created () {
36
- // Initialize the sorter
37
- let defaultOption = _.find(this.options, { default: true })
38
- if (!defaultOption) defaultOption = _.head(this.options) || {}
39
- this.$store.patch('sorter', defaultOption.value)
40
- },
41
- beforeUnmount () {
42
- // Reset the filter, we keep track of any existing items previously set by another activity
43
- this.$store.patch('sorter', {})
20
+ tooltip: {
21
+ type: String,
22
+ default: 'KSorter.SORT'
44
23
  }
24
+ })
25
+
26
+ // Functions
27
+ function onOptionChanged (value) {
28
+ Store.patch('sorter', value)
45
29
  }
30
+
31
+ onMounted(() => {
32
+ // Initialize the sorter
33
+ let defaultOption = _.find(props.options, { default: true })
34
+ if (!defaultOption) defaultOption = _.head(props.options) || {}
35
+ Store.patch('sorter', defaultOption.value)
36
+ })
37
+
38
+ onBeforeUnmount(() => {
39
+ // Reset the filter, we keep track of any existing items previously set by another activity
40
+ Store.patch('sorter', {})
41
+ })
46
42
  </script>
@@ -1,38 +1,17 @@
1
1
  <template>
2
- <div>
3
- <q-fab
4
- v-if="hasOptions"
5
- id="tags-filter-control"
6
- icon="las la-filter"
7
- color="grey-9"
8
- flat
9
- direction="down"
10
- :vertical-actions-align="computedAlignment"
11
- padding="xs"
12
- @show="showTooltip = false"
13
- @hide="showTooltip = true"
14
- >
15
- <template v-for="tag in options" :key="tag.name">
16
- <q-fab-action
17
- :label="$tie(tag.label)"
18
- :color="tag.color"
19
- :text-color="tag.textColor"
20
- padding="1px"
21
- square
22
- @click="onTagAdded(tag)"
23
- />
24
- </template>
25
- </q-fab>
26
- <q-tooltip v-if="showTooltip">
27
- {{ $t('KTagsFilterControl.FILTER') }}
28
- </q-tooltip>
29
- </div>
2
+ <KTagFilter
3
+ :options="options"
4
+ :selection="selection"
5
+ :alignment="computedAlignment"
6
+ @selection-changed="onSelectionChanged"
7
+ />
30
8
  </template>
31
9
 
32
10
  <script setup>
33
11
  import _ from 'lodash'
34
- import { ref, computed } from 'vue'
35
- import { useCurrentActivity, useScreen } from '../../composables'
12
+ import { computed } from 'vue'
13
+ import { useScreen, useCollectionFilter } from '../../composables'
14
+ import KTagFilter from '../tags/KTagFilter.vue'
36
15
 
37
16
  // Props
38
17
  const props = defineProps({
@@ -44,19 +23,14 @@ const props = defineProps({
44
23
 
45
24
  // Data
46
25
  const { Screen } = useScreen()
47
- const { CurrentActivityContext } = useCurrentActivity()
48
- const tagsFilter = CurrentActivityContext.state.tagsFilter
49
- const showTooltip = ref(true)
26
+ const { tagsFilter, setTagsFilter } = useCollectionFilter()
50
27
 
51
28
  // Computed
52
29
  const selection = computed(() => {
53
- return _.get(tagsFilter, 'selection', [])
30
+ return _.get(tagsFilter.value, 'selection', [])
54
31
  })
55
32
  const options = computed(() => {
56
- return _.difference(_.get(tagsFilter, 'options'), selection.value)
57
- })
58
- const hasOptions = computed(() => {
59
- return !_.isEmpty(options.value)
33
+ return _.difference(_.get(tagsFilter.value, 'options'), selection.value)
60
34
  })
61
35
  const computedAlignment = computed(() => {
62
36
  if (_.isString(props.alignment)) return props.alignment
@@ -64,7 +38,7 @@ const computedAlignment = computed(() => {
64
38
  })
65
39
 
66
40
  // Function
67
- function onTagAdded (tag) {
68
- _.set(tagsFilter, 'selection', _.concat(selection.value, [tag]))
41
+ function onSelectionChanged (selection) {
42
+ setTagsFilter(selection, 'selection')
69
43
  }
70
44
  </script>
@@ -1,61 +1,26 @@
1
1
  <template>
2
- <div
3
- v-if="hasSelection"
4
- class="q-pl-xs row justify-center items-center q-gutter-x-xs k-tags-filter"
5
- >
6
- <template v-for="tag in selection" :key="tag.name">
7
- <KChip
8
- v-bind="tag"
9
- removable
10
- @remove="onRemoved(tag)"
11
- square
12
- :dense="dense"
13
- />
14
- </template>
15
- <KAction
16
- id="clear-tags"
17
- icon="cancel"
18
- color="grey-7"
19
- size="12px"
20
- :handler="onClear"
21
- />
22
- </div>
2
+ <KTagSelection
3
+ :selection="selection"
4
+ @selection-changed="onSelectionChanged"
5
+ />
23
6
  </template>
24
7
 
25
8
  <script setup>
26
9
  import _ from 'lodash'
27
10
  import { computed } from 'vue'
28
- import { useCurrentActivity, useScreen } from '../../composables'
29
- import KAction from '../action/KAction.vue'
11
+ import { useCollectionFilter } from '../../composables'
12
+ import KTagSelection from '../tags/KTagSelection.vue'
30
13
 
31
14
  // Data
32
- const { dense } = useScreen()
33
- const { CurrentActivityContext } = useCurrentActivity()
34
- const { state } = CurrentActivityContext
15
+ const { tagsFilter, setTagsFilter } = useCollectionFilter()
35
16
 
36
17
  // Computed
37
- const hasSelection = computed(() => {
38
- return state.tagsFilter && !_.isEmpty(selection.value)
39
- })
40
18
  const selection = computed(() => {
41
- return state.tagsFilter.selection
19
+ return _.get(tagsFilter.value, 'selection')
42
20
  })
43
21
 
44
22
  // Functions
45
- function onRemoved (tag) {
46
- _.set(state.tagsFilter, 'selection', _.without(selection.value, tag))
47
- }
48
- function onClear () {
49
- _.set(state.tagsFilter, 'selection', [])
23
+ function onSelectionChanged (selection) {
24
+ setTagsFilter(selection, 'selection')
50
25
  }
51
26
  </script>
52
-
53
- <style lang="scss" scoped>
54
- .k-tags-filter {
55
- padding-left: 8px;
56
- padding-right: 4px;
57
- border-radius: 24px;
58
- border: 1px solid lightgrey;
59
- background-color: #dedede
60
- }
61
- </style>
@@ -11,7 +11,7 @@
11
11
  <script setup>
12
12
  import _ from 'lodash'
13
13
  import { computed } from 'vue'
14
- import { useCurrentActivity } from '../../composables'
14
+ import { useCollectionFilter } from '../../composables'
15
15
 
16
16
  // Props
17
17
  defineProps({
@@ -22,19 +22,18 @@ defineProps({
22
22
  })
23
23
 
24
24
  // Data
25
- const { CurrentActivityContext } = useCurrentActivity()
26
- const timeFilter = CurrentActivityContext.state.timeFilter
25
+ const { timeFilter, setTimeFilter } = useCollectionFilter()
27
26
 
28
27
  // Computed
29
- const min = computed(() => _.get(timeFilter, 'min'))
30
- const max = computed(() => _.get(timeFilter, 'max'))
28
+ const min = computed(() => _.get(timeFilter.value, 'min'))
29
+ const max = computed(() => _.get(timeFilter.value, 'max'))
31
30
  const hasTimeRange = computed(() => {
32
31
  return !_.isEmpty(min.value) && !_.isEmpty(max.value) && min.value !== max.value
33
32
  })
34
33
 
35
34
  // Functions
36
35
  async function showTimeRangeSlider () {
37
- _.set(timeFilter, 'start', min.value)
38
- _.set(timeFilter, 'end', max.value)
36
+ setTimeFilter(min.value, 'start')
37
+ setTimeFilter(max.value, 'end')
39
38
  }
40
39
  </script>
@@ -26,37 +26,37 @@
26
26
  </template>
27
27
 
28
28
  <script setup>
29
+ import _ from 'lodash'
29
30
  import { computed } from 'vue'
30
- import { useCurrentActivity, useScreen } from '../../composables'
31
+ import { useScreen, useCollectionFilter } from '../../composables'
31
32
 
32
33
  // Props
33
34
  defineProps({
34
- dateOnly: {
35
- type: Boolean,
36
- default: false
35
+ dateFormat: {
36
+ type: String,
37
+ default: null
37
38
  }
38
39
  })
39
40
 
40
41
  // Data
41
42
  const { dense } = useScreen()
42
- const { CurrentActivityContext } = useCurrentActivity()
43
- const { state } = CurrentActivityContext
43
+ const { timeFilter, setTimeFilter, cleatTimeFilter } = useCollectionFilter()
44
44
 
45
45
  // Computed
46
46
  const hasSelection = computed(() => {
47
- return state.timeFilter && startTimeRange.value && endTimeRange.value
47
+ return timeFilter.value && startTimeRange.value && endTimeRange.value
48
48
  })
49
49
  const startTimeRange = computed(() => {
50
- return state.timeFilter.start
50
+ return _.get(timeFilter.value, 'start')
51
51
  })
52
52
  const endTimeRange = computed(() => {
53
- return state.timeFilter.end
53
+ return _.get(timeFilter.value, 'end')
54
54
  })
55
55
  const minTimeRange = computed(() => {
56
- return state.timeFilter.min
56
+ return _.get(timeFilter.value, 'min')
57
57
  })
58
58
  const maxTimeRange = computed(() => {
59
- return state.timeFilter.max
59
+ return _.get(timeFilter.value, 'max')
60
60
  })
61
61
  const timeRangeModel = computed({
62
62
  get: function () {
@@ -66,15 +66,9 @@ const timeRangeModel = computed({
66
66
  }
67
67
  },
68
68
  set: function (value) {
69
- Object.assign(state.timeFilter, {
70
- start: value.start,
71
- end: value.end
72
- })
69
+ setTimeFilter({ start: value.start, end: value.end })
73
70
  }
74
71
  })
75
- const dateFormat = computed(() => {
76
- return dense.value ? 'DD/MM/YY' : 'DD/MM/YYYY'
77
- })
78
72
  const textClass = computed(() => {
79
73
  return dense.value ? 'text-caption' : 'text-body2 text-weight-regular'
80
74
  })
@@ -88,10 +82,7 @@ const slider = computed(() => {
88
82
 
89
83
  // Functions
90
84
  function onClear () {
91
- Object.assign(state.timeFilter, {
92
- start: null,
93
- end: null
94
- })
85
+ cleatTimeFilter()
95
86
  }
96
87
  </script>
97
88
 
@@ -26,7 +26,7 @@
26
26
  <q-infinite-scroll
27
27
  @load="onLoad"
28
28
  :initial-index="1"
29
- :offset="200"
29
+ :offset="scrollOffset"
30
30
  v-scroll="onScroll"
31
31
  >
32
32
  <template v-for="item in items" :key="item._id">
@@ -60,7 +60,7 @@
60
60
  <KPanel
61
61
  v-if="getDecoration(item)"
62
62
  :content="getDecoration(item)"
63
- class="q-gutter-xs"
63
+ class="q-gutter-xs k-decoration"
64
64
  />
65
65
  </div>
66
66
  <div v-else class="column items-end">
@@ -73,8 +73,7 @@
73
73
  <KPanel
74
74
  v-if="getDecoration(item)"
75
75
  :content="getDecoration(item)"
76
- direction="horizontal"
77
- class="justify-end q-gutter-xs"
76
+ class="justify-end q-gutter-xs k-decoration"
78
77
  />
79
78
  </div>
80
79
  </slot>
@@ -232,6 +231,10 @@ const props = defineProps({
232
231
  type: Boolean,
233
232
  default: true
234
233
  },
234
+ scrollOffset: {
235
+ type: Number,
236
+ default: 300
237
+ },
235
238
  header: {
236
239
  type: [Array, Object],
237
240
  default: () => null
@@ -286,6 +289,10 @@ const comfortSize = computed(() => {
286
289
  const comfortPadding = computed(() => {
287
290
  return props.dense ? '24px' : '32px'
288
291
  })
292
+ const decorationSize = computed(() => {
293
+ if (layout.value === 'dense') return '80vw'
294
+ return `${props.sideWidth}vw`
295
+ })
289
296
 
290
297
  // Watch
291
298
  watch(items, onCollectionRefreshed)
@@ -379,10 +386,6 @@ onBeforeUnmount(() => {
379
386
  padding-top: 8px;
380
387
  padding-bottom: 8px;
381
388
  }
382
- .k-timeline-heading {
383
- font-size: 1.2rem;
384
- font-weight: bold;
385
- }
386
389
  .q-timeline__title {
387
390
  margin-bottom: 4px;
388
391
  }
@@ -409,5 +412,11 @@ onBeforeUnmount(() => {
409
412
  .q-timeline--dense--right .q-timeline__entry {
410
413
  padding-left: v-bind(comfortPadding);
411
414
  }
412
-
415
+ .k-timeline-heading {
416
+ font-size: 1.2rem;
417
+ font-weight: bold;
418
+ }
419
+ .k-decoration {
420
+ max-width: v-bind(decorationSize);
421
+ }
413
422
  </style>