@kalisio/kdk 2.0.1 → 2.1.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 (467) hide show
  1. package/.codeclimate.yml +0 -1
  2. package/.travis.test.sh +3 -0
  3. package/core/api/application.js +13 -9
  4. package/core/api/db.js +34 -30
  5. package/core/api/hooks/hooks.authentication.js +11 -0
  6. package/core/api/hooks/hooks.authorisations.js +7 -3
  7. package/core/api/hooks/hooks.model.js +32 -43
  8. package/core/api/hooks/hooks.organisations.js +26 -116
  9. package/core/api/hooks/{hooks.devices.js → hooks.push.js} +22 -10
  10. package/core/api/hooks/hooks.query.js +0 -5
  11. package/core/api/hooks/hooks.schemas.js +23 -3
  12. package/core/api/hooks/hooks.users.js +15 -22
  13. package/core/api/hooks/index.js +1 -4
  14. package/core/api/services/account/account.hooks.js +3 -3
  15. package/core/api/services/account/account.service.js +5 -6
  16. package/core/api/services/groups/groups.hooks.js +2 -4
  17. package/core/api/services/index.js +11 -16
  18. package/core/api/services/{devices/devices.hooks.js → push/push.hooks.js} +5 -5
  19. package/core/api/services/push/push.service.js +12 -0
  20. package/core/api/services/tags/tags.hooks.js +6 -20
  21. package/core/api/services/users/users.hooks.js +12 -13
  22. package/core/api/utils.js +11 -0
  23. package/core/client/api.js +6 -0
  24. package/core/client/capabilities.js +8 -12
  25. package/core/client/components/KAction.vue +10 -3
  26. package/core/client/components/KAvatar.vue +31 -35
  27. package/core/client/components/KChipsPane.vue +23 -0
  28. package/core/client/components/account/KAccount.vue +68 -0
  29. package/core/client/components/account/KDeleteAccountManager.vue +62 -0
  30. package/core/client/components/account/KEmailManager.vue +128 -0
  31. package/core/client/components/account/KPasswordManager.vue +90 -0
  32. package/core/client/components/account/KProfile.vue +109 -0
  33. package/core/client/components/account/KResetPassword.vue +100 -111
  34. package/core/client/components/account/KSendResetPassword.vue +71 -87
  35. package/core/client/components/account/KSubscription.vue +71 -0
  36. package/core/client/components/account/KSubscriptionsManager.vue +46 -0
  37. package/core/client/components/account/KVerifyEmailManager.vue +105 -0
  38. package/core/client/components/account/index.js +4 -2
  39. package/core/client/components/app/KAbout.vue +27 -14
  40. package/core/client/components/app/KPlatform.vue +2 -2
  41. package/core/client/components/app/KWelcome.vue +71 -45
  42. package/core/client/components/collection/KBoard.vue +50 -40
  43. package/core/client/components/collection/KCard.vue +16 -7
  44. package/core/client/components/collection/KColumn.vue +146 -111
  45. package/core/client/components/collection/KGrid.vue +77 -58
  46. package/core/client/components/collection/KHistory.vue +19 -3
  47. package/core/client/components/collection/KItem.vue +5 -1
  48. package/core/client/components/collection/KList.vue +80 -56
  49. package/core/client/components/collection/KTable.vue +181 -142
  50. package/core/client/components/editor/KEditor.vue +10 -3
  51. package/core/client/components/form/KFileField.vue +22 -8
  52. package/core/client/components/form/KForm.vue +27 -14
  53. package/core/client/components/form/KItemField.vue +2 -2
  54. package/core/client/components/form/KOptionsField.vue +11 -2
  55. package/core/client/components/form/KSelectField.vue +12 -3
  56. package/core/client/components/form/KTextField.vue +6 -0
  57. package/core/client/components/form/KTokenField.vue +80 -0
  58. package/core/client/components/layout/KOpener.vue +8 -8
  59. package/core/client/components/layout/KPage.vue +8 -4
  60. package/core/client/components/layout/KWindow.vue +172 -141
  61. package/core/client/components/media/KMediaBrowser.vue +28 -12
  62. package/core/client/components/media/KShape.vue +58 -56
  63. package/core/client/components/menu/KMenu.vue +22 -13
  64. package/core/client/components/menu/KRadialFab.vue +83 -56
  65. package/core/client/components/menu/KRadialFabItem.vue +39 -19
  66. package/core/client/components/screen/KLoginScreen.vue +0 -17
  67. package/core/client/components/screen/KScreen.vue +3 -3
  68. package/core/client/components/screen/KScreenFooter.vue +0 -3
  69. package/core/client/components/team/KAddMember.vue +1 -1
  70. package/core/client/components/team/KAddTag.vue +121 -0
  71. package/core/client/components/team/KMemberCard.vue +42 -13
  72. package/core/client/components/team/KMembersActivity.vue +9 -3
  73. package/core/client/components/team/KTagCard.vue +16 -1
  74. package/core/client/composables/collection.js +181 -0
  75. package/core/client/composables/index.js +2 -0
  76. package/core/client/composables/pwa.js +71 -0
  77. package/core/client/composables/session.js +6 -9
  78. package/core/client/composables/version.js +1 -22
  79. package/core/client/i18n/core_en.json +124 -153
  80. package/core/client/i18n/core_fr.json +124 -155
  81. package/core/client/index.js +37 -110
  82. package/core/client/layout.js +37 -14
  83. package/core/client/local-storage.js +4 -3
  84. package/core/client/mixins/mixin.account.js +9 -5
  85. package/core/client/mixins/mixin.base-editor.js +19 -3
  86. package/core/client/mixins/mixin.base-item.js +3 -3
  87. package/core/client/mixins/mixin.base-viewer.js +14 -0
  88. package/core/client/mixins/mixin.object-proxy.js +2 -21
  89. package/core/client/services/index.js +0 -1
  90. package/core/client/storage.js +19 -16
  91. package/core/client/theme.js +11 -5
  92. package/core/client/utils/index.js +5 -13
  93. package/core/client/utils/utils.account.js +47 -0
  94. package/core/client/utils/utils.colors.js +6 -2
  95. package/core/client/utils/utils.content.js +7 -5
  96. package/core/client/utils/utils.platform.js +1 -20
  97. package/core/client/utils/utils.push.js +53 -0
  98. package/core/client/utils/utils.pwa.js +63 -0
  99. package/core/client/utils/utils.session.js +27 -12
  100. package/core/common/permissions.js +12 -4
  101. package/core/common/schemas/tags.create.json +35 -0
  102. package/core/common/schemas/users.update-profile.json +1 -1
  103. package/coverage/base.css +224 -0
  104. package/coverage/block-navigation.js +87 -0
  105. package/coverage/core/api/application.js.html +1849 -0
  106. package/coverage/core/api/authentication.js.html +694 -0
  107. package/coverage/core/api/db.js.html +763 -0
  108. package/coverage/core/api/hooks/hooks.account.js.html +169 -0
  109. package/coverage/core/api/hooks/hooks.authentication.js.html +274 -0
  110. package/coverage/core/api/hooks/hooks.authorisations.js.html +1213 -0
  111. package/coverage/core/api/hooks/hooks.groups.js.html +229 -0
  112. package/coverage/core/api/hooks/hooks.logger.js.html +163 -0
  113. package/coverage/core/api/hooks/hooks.model.js.html +994 -0
  114. package/coverage/core/api/hooks/hooks.organisations.js.html +553 -0
  115. package/coverage/core/api/hooks/hooks.push.js.html +232 -0
  116. package/coverage/core/api/hooks/hooks.query.js.html +838 -0
  117. package/coverage/core/api/hooks/hooks.schemas.js.html +304 -0
  118. package/coverage/core/api/hooks/hooks.service.js.html +319 -0
  119. package/coverage/core/api/hooks/hooks.storage.js.html +193 -0
  120. package/coverage/core/api/hooks/hooks.tags.js.html +850 -0
  121. package/coverage/core/api/hooks/hooks.users.js.html +826 -0
  122. package/coverage/core/api/hooks/index.html +296 -0
  123. package/coverage/core/api/hooks/index.js.html +121 -0
  124. package/coverage/core/api/index.html +191 -0
  125. package/coverage/core/api/index.js.html +148 -0
  126. package/coverage/core/api/marshall.js.html +355 -0
  127. package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
  128. package/coverage/core/api/models/index.html +161 -0
  129. package/coverage/core/api/models/organisations.model.mongodb.js.html +94 -0
  130. package/coverage/core/api/models/tags.model.mongodb.js.html +115 -0
  131. package/coverage/core/api/models/users.model.mongodb.js.html +115 -0
  132. package/coverage/core/api/services/account/account.hooks.js.html +196 -0
  133. package/coverage/core/api/services/account/account.service.js.html +445 -0
  134. package/coverage/core/api/services/account/index.html +131 -0
  135. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  136. package/coverage/core/api/services/authorisations/authorisations.service.js.html +502 -0
  137. package/coverage/core/api/services/authorisations/index.html +131 -0
  138. package/coverage/core/api/services/databases/databases.hooks.js.html +193 -0
  139. package/coverage/core/api/services/databases/databases.service.js.html +100 -0
  140. package/coverage/core/api/services/databases/index.html +131 -0
  141. package/coverage/core/api/services/groups/groups.hooks.js.html +178 -0
  142. package/coverage/core/api/services/groups/index.html +116 -0
  143. package/coverage/core/api/services/index.html +116 -0
  144. package/coverage/core/api/services/index.js.html +475 -0
  145. package/coverage/core/api/services/mailer/index.html +131 -0
  146. package/coverage/core/api/services/mailer/mailer.hooks.js.html +190 -0
  147. package/coverage/core/api/services/mailer/mailer.service.js.html +118 -0
  148. package/coverage/core/api/services/organisations/index.html +131 -0
  149. package/coverage/core/api/services/organisations/organisations.hooks.js.html +178 -0
  150. package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
  151. package/coverage/core/api/services/push/index.html +131 -0
  152. package/coverage/core/api/services/push/push.hooks.js.html +193 -0
  153. package/coverage/core/api/services/push/push.service.js.html +121 -0
  154. package/coverage/core/api/services/storage/index.html +131 -0
  155. package/coverage/core/api/services/storage/storage.hooks.js.html +190 -0
  156. package/coverage/core/api/services/storage/storage.service.js.html +172 -0
  157. package/coverage/core/api/services/tags/index.html +116 -0
  158. package/coverage/core/api/services/tags/tags.hooks.js.html +178 -0
  159. package/coverage/core/api/services/users/index.html +116 -0
  160. package/coverage/core/api/services/users/users.hooks.js.html +313 -0
  161. package/coverage/core/api/utils.js.html +118 -0
  162. package/coverage/core/common/errors.js.html +88 -0
  163. package/coverage/core/common/index.html +176 -0
  164. package/coverage/core/common/index.js.html +115 -0
  165. package/coverage/core/common/permissions.js.html +1039 -0
  166. package/coverage/core/common/schema.js.html +190 -0
  167. package/coverage/core/common/utils.js.html +220 -0
  168. package/coverage/favicon.png +0 -0
  169. package/coverage/index.html +476 -0
  170. package/coverage/lcov-report/base.css +224 -0
  171. package/coverage/lcov-report/block-navigation.js +87 -0
  172. package/coverage/lcov-report/core/api/application.js.html +1849 -0
  173. package/coverage/lcov-report/core/api/authentication.js.html +694 -0
  174. package/coverage/lcov-report/core/api/db.js.html +763 -0
  175. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +169 -0
  176. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +274 -0
  177. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1213 -0
  178. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +229 -0
  179. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +163 -0
  180. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +994 -0
  181. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +553 -0
  182. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +232 -0
  183. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +838 -0
  184. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +304 -0
  185. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +319 -0
  186. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +193 -0
  187. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +850 -0
  188. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +826 -0
  189. package/coverage/lcov-report/core/api/hooks/index.html +296 -0
  190. package/coverage/lcov-report/core/api/hooks/index.js.html +121 -0
  191. package/coverage/lcov-report/core/api/index.html +191 -0
  192. package/coverage/lcov-report/core/api/index.js.html +148 -0
  193. package/coverage/lcov-report/core/api/marshall.js.html +355 -0
  194. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
  195. package/coverage/lcov-report/core/api/models/index.html +161 -0
  196. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +94 -0
  197. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +115 -0
  198. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +115 -0
  199. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +196 -0
  200. package/coverage/lcov-report/core/api/services/account/account.service.js.html +445 -0
  201. package/coverage/lcov-report/core/api/services/account/index.html +131 -0
  202. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  203. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +502 -0
  204. package/coverage/lcov-report/core/api/services/authorisations/index.html +131 -0
  205. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +193 -0
  206. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +100 -0
  207. package/coverage/lcov-report/core/api/services/databases/index.html +131 -0
  208. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +178 -0
  209. package/coverage/lcov-report/core/api/services/groups/index.html +116 -0
  210. package/coverage/lcov-report/core/api/services/index.html +116 -0
  211. package/coverage/lcov-report/core/api/services/index.js.html +475 -0
  212. package/coverage/lcov-report/core/api/services/mailer/index.html +131 -0
  213. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +190 -0
  214. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +118 -0
  215. package/coverage/lcov-report/core/api/services/organisations/index.html +131 -0
  216. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +178 -0
  217. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
  218. package/coverage/lcov-report/core/api/services/push/index.html +131 -0
  219. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +193 -0
  220. package/coverage/lcov-report/core/api/services/push/push.service.js.html +121 -0
  221. package/coverage/lcov-report/core/api/services/storage/index.html +131 -0
  222. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +190 -0
  223. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +172 -0
  224. package/coverage/lcov-report/core/api/services/tags/index.html +116 -0
  225. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +178 -0
  226. package/coverage/lcov-report/core/api/services/users/index.html +116 -0
  227. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +313 -0
  228. package/coverage/lcov-report/core/api/utils.js.html +118 -0
  229. package/coverage/lcov-report/core/common/errors.js.html +88 -0
  230. package/coverage/lcov-report/core/common/index.html +176 -0
  231. package/coverage/lcov-report/core/common/index.js.html +115 -0
  232. package/coverage/lcov-report/core/common/permissions.js.html +1039 -0
  233. package/coverage/lcov-report/core/common/schema.js.html +190 -0
  234. package/coverage/lcov-report/core/common/utils.js.html +220 -0
  235. package/coverage/lcov-report/favicon.png +0 -0
  236. package/coverage/lcov-report/index.html +476 -0
  237. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +340 -0
  238. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +337 -0
  239. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1168 -0
  240. package/coverage/lcov-report/map/api/hooks/index.html +161 -0
  241. package/coverage/lcov-report/map/api/hooks/index.js.html +94 -0
  242. package/coverage/lcov-report/map/api/index.html +131 -0
  243. package/coverage/lcov-report/map/api/index.js.html +139 -0
  244. package/coverage/lcov-report/map/api/marshall.js.html +178 -0
  245. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +106 -0
  246. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +127 -0
  247. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +196 -0
  248. package/coverage/lcov-report/map/api/models/index.html +146 -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 +313 -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 +205 -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/geocoder/geocoder.hooks.js.html +178 -0
  260. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +322 -0
  261. package/coverage/lcov-report/map/api/services/geocoder/index.html +131 -0
  262. package/coverage/lcov-report/map/api/services/index.html +116 -0
  263. package/coverage/lcov-report/map/api/services/index.js.html +769 -0
  264. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +466 -0
  265. package/coverage/lcov-report/map/common/errors.js.html +94 -0
  266. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +535 -0
  267. package/coverage/lcov-report/map/common/grid.js.html +1612 -0
  268. package/coverage/lcov-report/map/common/index.html +371 -0
  269. package/coverage/lcov-report/map/common/index.js.html +172 -0
  270. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +556 -0
  271. package/coverage/lcov-report/map/common/moment-utils.js.html +157 -0
  272. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +868 -0
  273. package/coverage/lcov-report/map/common/opendap-utils.js.html +826 -0
  274. package/coverage/lcov-report/map/common/permissions.js.html +118 -0
  275. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +418 -0
  276. package/coverage/lcov-report/map/common/tms-utils.js.html +274 -0
  277. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +364 -0
  278. package/coverage/lcov-report/map/common/wcs-utils.js.html +586 -0
  279. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1033 -0
  280. package/coverage/lcov-report/map/common/wfs-utils.js.html +574 -0
  281. package/coverage/lcov-report/map/common/wms-utils.js.html +436 -0
  282. package/coverage/lcov-report/map/common/wmts-utils.js.html +547 -0
  283. package/coverage/lcov-report/prettify.css +1 -0
  284. package/coverage/lcov-report/prettify.js +2 -0
  285. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  286. package/coverage/lcov-report/sorter.js +196 -0
  287. package/coverage/lcov.info +10742 -0
  288. package/coverage/map/api/hooks/hooks.catalog.js.html +340 -0
  289. package/coverage/map/api/hooks/hooks.features.js.html +337 -0
  290. package/coverage/map/api/hooks/hooks.query.js.html +1168 -0
  291. package/coverage/map/api/hooks/index.html +161 -0
  292. package/coverage/map/api/hooks/index.js.html +94 -0
  293. package/coverage/map/api/index.html +131 -0
  294. package/coverage/map/api/index.js.html +139 -0
  295. package/coverage/map/api/marshall.js.html +178 -0
  296. package/coverage/map/api/models/alerts.model.mongodb.js.html +106 -0
  297. package/coverage/map/api/models/catalog.model.mongodb.js.html +127 -0
  298. package/coverage/map/api/models/features.model.mongodb.js.html +196 -0
  299. package/coverage/map/api/models/index.html +146 -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 +313 -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 +205 -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/geocoder/geocoder.hooks.js.html +178 -0
  311. package/coverage/map/api/services/geocoder/geocoder.service.js.html +322 -0
  312. package/coverage/map/api/services/geocoder/index.html +131 -0
  313. package/coverage/map/api/services/index.html +116 -0
  314. package/coverage/map/api/services/index.js.html +769 -0
  315. package/coverage/map/common/dynamic-grid-source.js.html +466 -0
  316. package/coverage/map/common/errors.js.html +94 -0
  317. package/coverage/map/common/geotiff-grid-source.js.html +535 -0
  318. package/coverage/map/common/grid.js.html +1612 -0
  319. package/coverage/map/common/index.html +371 -0
  320. package/coverage/map/common/index.js.html +172 -0
  321. package/coverage/map/common/meteo-model-grid-source.js.html +556 -0
  322. package/coverage/map/common/moment-utils.js.html +157 -0
  323. package/coverage/map/common/opendap-grid-source.js.html +868 -0
  324. package/coverage/map/common/opendap-utils.js.html +826 -0
  325. package/coverage/map/common/permissions.js.html +118 -0
  326. package/coverage/map/common/time-based-grid-source.js.html +418 -0
  327. package/coverage/map/common/tms-utils.js.html +274 -0
  328. package/coverage/map/common/wcs-grid-source.js.html +364 -0
  329. package/coverage/map/common/wcs-utils.js.html +586 -0
  330. package/coverage/map/common/weacast-grid-source.js.html +1033 -0
  331. package/coverage/map/common/wfs-utils.js.html +574 -0
  332. package/coverage/map/common/wms-utils.js.html +436 -0
  333. package/coverage/map/common/wmts-utils.js.html +547 -0
  334. package/coverage/prettify.css +1 -0
  335. package/coverage/prettify.js +2 -0
  336. package/coverage/sort-arrow-sprite.png +0 -0
  337. package/coverage/sorter.js +196 -0
  338. package/coverage/tmp/coverage-59096-1692631696256-0.json +1 -0
  339. package/coverage/tmp/coverage-59108-1692631696233-0.json +1 -0
  340. package/coverage/tmp/coverage-59119-1692631696222-0.json +1 -0
  341. package/coverage/tmp/coverage-59131-1692631696200-0.json +1 -0
  342. package/coverage/tmp/coverage-59138-1692631696175-0.json +1 -0
  343. package/extras/css/core.variables.scss +5 -1
  344. package/extras/tours/core/account-profile.js +14 -31
  345. package/extras/tours/core/account.js +143 -0
  346. package/extras/tours/core/add-member.js +7 -6
  347. package/extras/tours/core/add-tag.js +13 -0
  348. package/extras/tours/core/create-tag.js +26 -0
  349. package/extras/tours/core/edit-member-role.js +13 -0
  350. package/extras/tours/core/join-group.js +0 -12
  351. package/extras/tours/core/login.js +0 -7
  352. package/extras/tours/core/members.js +13 -26
  353. package/extras/tours/core/send-reset-password.js +1 -1
  354. package/extras/tours/core/tags.js +17 -4
  355. package/extras/tours/map/navigation-bar.js +1 -1
  356. package/extras/tours/map/side-nav.js +3 -2
  357. package/map/api/hooks/hooks.query.js +5 -3
  358. package/map/client/cesium/utils.js +68 -0
  359. package/map/client/components/KFeatureActionButton.vue +27 -27
  360. package/map/client/components/KFeaturesChart.vue +1 -1
  361. package/map/client/components/KFeaturesTable.vue +2 -2
  362. package/map/client/components/KLayerEditionToolbar.vue +1 -0
  363. package/map/client/components/KPositionIndicator.vue +1 -1
  364. package/map/client/components/catalog/KViewSelector.vue +1 -2
  365. package/map/client/components/catalog/KViewsPanel.vue +17 -15
  366. package/map/client/components/form/KDirectionField.vue +0 -1
  367. package/map/client/components/form/KLocationField.vue +16 -29
  368. package/map/client/components/legend/KSymbolsLegend.vue +2 -1
  369. package/map/client/components/location/KLocationCardSection.vue +61 -0
  370. package/map/client/components/location/KLocationMap.vue +24 -13
  371. package/map/client/components/location/KLocationSearch.vue +144 -0
  372. package/map/client/components/location/KLocationTip.vue +29 -0
  373. package/map/client/components/tools/KGeolocateTool.vue +46 -0
  374. package/map/client/components/tools/KSearchTool.vue +93 -0
  375. package/map/client/components/widget/KElevationProfile.vue +2 -2
  376. package/map/client/components/widget/KInformationBox.vue +3 -3
  377. package/map/client/composables/location.js +35 -43
  378. package/map/client/geolocation.js +65 -8
  379. package/map/client/i18n/map_en.json +15 -13
  380. package/map/client/i18n/map_fr.json +15 -13
  381. package/map/client/init.js +10 -18
  382. package/map/client/leaflet/GradientPath.js +2 -1
  383. package/map/client/leaflet/utils.js +61 -0
  384. package/map/client/mixins/globe/mixin.base-globe.js +6 -5
  385. package/map/client/mixins/globe/mixin.popup.js +3 -0
  386. package/map/client/mixins/globe/mixin.style.js +9 -64
  387. package/map/client/mixins/globe/mixin.tooltip.js +3 -0
  388. package/map/client/mixins/index.js +0 -1
  389. package/map/client/mixins/map/mixin.base-map.js +13 -9
  390. package/map/client/mixins/map/mixin.edit-layers.js +82 -15
  391. package/map/client/mixins/map/mixin.geojson-layers.js +8 -1
  392. package/map/client/mixins/map/mixin.style.js +8 -56
  393. package/map/client/mixins/mixin.activity.js +20 -12
  394. package/map/client/mixins/mixin.feature-service.js +34 -1
  395. package/map/client/readers/reader.geojson.js +1 -1
  396. package/map/client/utils/utils.location.js +45 -0
  397. package/package.json +13 -14
  398. package/test/api/core/account.test.js +112 -126
  399. package/test/api/core/config/default.cjs +7 -11
  400. package/test/api/core/config/email-templates/confirmInvitation/html.ejs +1 -1
  401. package/test/api/core/config/email-templates/identityChange/html.ejs +6 -4
  402. package/test/api/core/config/email-templates/newDevice/html.ejs +1 -1
  403. package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -0
  404. package/test/api/core/config/email-templates/passwordChange/html.ejs +1 -1
  405. package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +6 -4
  406. package/test/api/core/config/email-templates/resetPwd/html.ejs +1 -1
  407. package/test/api/core/config/email-templates/sendResetPwd/html.ejs +8 -4
  408. package/test/api/core/hooks.test.js +166 -18
  409. package/test/api/core/index.test.js +32 -70
  410. package/test/api/core/push.test.js +191 -0
  411. package/test/api/core/team.test.js +38 -32
  412. package/test/api/core/test-log-2023-07-04.log +0 -0
  413. package/test/api/core/test-log-2023-07-10.log +2 -0
  414. package/test/api/core/test-log-2023-07-12.log +0 -0
  415. package/test/api/core/test-log-2023-07-18.log +78 -0
  416. package/test/api/core/test-log-2023-07-19.log +44 -0
  417. package/test/api/core/test-log-2023-08-01.log +162 -0
  418. package/test/api/core/test-log-2023-08-21.log +66 -0
  419. package/test/api/core/test-log-2023-08-22.log +96 -0
  420. package/test/api/core/test-log-2023-08-23.log +22 -0
  421. package/test/api/core/test-log-2023-09-20.log +22 -0
  422. package/test/api/map/alerts.test.js +1 -1
  423. package/test/api/map/test-log-2023-07-18.log +62 -0
  424. package/test/api/map/test-log-2023-07-19.log +13 -0
  425. package/test/api/map/test-log-2023-08-21.log +65 -0
  426. package/test/api/map/test-log-2023-09-20.log +60 -0
  427. package/test/client/core/account.js +15 -32
  428. package/test/client/core/api.js +99 -44
  429. package/test/client/core/layout.js +4 -0
  430. package/test/client/core/runner.js +66 -14
  431. package/test/client/core/time.js +1 -1
  432. package/test/client/map/controls.js +17 -3
  433. package/core/api/hooks/hooks.account.js +0 -28
  434. package/core/api/hooks/hooks.pusher.js +0 -215
  435. package/core/api/hooks/hooks.tags.js +0 -255
  436. package/core/api/services/devices/devices.service.js +0 -99
  437. package/core/api/services/pusher/pusher.channels.js +0 -3
  438. package/core/api/services/pusher/pusher.hooks.js +0 -36
  439. package/core/api/services/pusher/pusher.service.js +0 -449
  440. package/core/client/components/KInstallApp.vue +0 -43
  441. package/core/client/components/account/KAccountActivity.vue +0 -58
  442. package/core/client/components/account/KAccountDZ.vue +0 -66
  443. package/core/client/components/account/KAccountDevices.vue +0 -56
  444. package/core/client/components/account/KAccountSecurity.vue +0 -87
  445. package/core/client/components/account/KChangeIdentity.vue +0 -102
  446. package/core/client/components/account/KChangePassword.vue +0 -132
  447. package/core/client/components/account/KDeviceCard.vue +0 -75
  448. package/core/client/components/account/KIdentityPanel.vue +0 -34
  449. package/core/client/components/account/KResendVerifySignup.vue +0 -108
  450. package/core/client/components/account/KSendChangeIdentity.vue +0 -115
  451. package/core/client/components/account/KSignupAlert.vue +0 -63
  452. package/core/client/components/account/KVerifySignup.vue +0 -102
  453. package/core/client/components/form/KTagField.vue +0 -148
  454. package/core/common/schemas/members.update.json +0 -18
  455. package/extras/tours/core/account-dz.js +0 -37
  456. package/extras/tours/core/account-security.js +0 -52
  457. package/extras/tours/core/change-password.js +0 -34
  458. package/extras/tours/core/edit-member-tags.js +0 -18
  459. package/extras/tours/core/send-change-identity.js +0 -28
  460. package/map/client/components/KLocateUser.vue +0 -36
  461. package/map/client/components/KLocationInput.vue +0 -217
  462. package/map/client/components/KLocationMap.vue +0 -301
  463. package/map/client/components/KSearchLocation.vue +0 -88
  464. package/map/client/components/input/KPlaceChooser.vue +0 -78
  465. package/map/client/components/location/KLocation.vue +0 -24
  466. package/map/client/mixins/mixin.navigator.js +0 -36
  467. package/test/api/core/notifications.test.js +0 -502
@@ -2,105 +2,89 @@
2
2
  <KScreen :title="$t('KSendResetPassword.TITLE')">
3
3
  <div slot="screen-content">
4
4
  <div class="column justify-center sm-gutter">
5
- <div :class="textClass">
6
- <p>
7
- <q-icon name="las la-check" v-show="sent && success"/>
8
- <q-icon name="las la-exclamation-circle" v-show="sent && !success"/>
9
- &nbsp;&nbsp;
10
- {{ message }}.
11
- </p>
12
- </div>
13
- <div>
14
- <k-form ref="form" :schema="schema" />
15
- </div>
16
- <div>
17
- <div class="row justify-around">
18
- <q-btn id="reset-password" color="primary" :loading="sending" @click="onSend">
19
- {{$t('KSendResetPassword.ACTION')}}
20
- </q-btn>
21
- </div>
22
- </div>
5
+ <div :class="textClass" v-if="message">
6
+ <p>
7
+ <q-icon name="las la-exclamation-circle" v-show="send"/>
8
+ &nbsp;&nbsp;
9
+ {{ message }}.
10
+ </p>
11
+ </div>
12
+ <!-- Form -->
13
+ <KForm ref="formRef" :schema="schema" />
14
+ <!-- Actions -->
15
+ <div class="row justify-around">
16
+ <KAction
17
+ id="send-reset-password"
18
+ label="APPLY"
19
+ renderer="form-button"
20
+ :loading="processing"
21
+ :handler="apply"
22
+ />
23
+ </div>
23
24
  </div>
24
25
  </div>
25
26
  </KScreen>
26
27
  </template>
27
28
 
28
- <script>
29
+ <script setup>
29
30
  import _ from 'lodash'
31
+ import { computed, ref } from 'vue'
32
+ import { useRouter } from 'vue-router'
33
+ import { i18n, utils } from '../..'
30
34
  import KScreen from '../screen/KScreen.vue'
31
- import KForm from '../form/KForm.vue'
32
- import { account } from '../../mixins'
33
35
 
34
- export default {
35
- name: 'k-send-reset-password',
36
- components: {
37
- KScreen,
38
- KForm
39
- },
40
- mixins: [account],
41
- data () {
42
- return {
43
- message: '',
44
- success: false,
45
- sent: false,
46
- sending: false,
47
- schema: {
48
- $schema: 'http://json-schema.org/draft-07/schema#',
49
- $id: 'http://kalisio.xyz/schemas/send-reset-password#',
50
- title: 'Send reset password form',
51
- type: 'object',
52
- properties: {
53
- email: {
54
- type: 'string',
55
- format: 'email',
56
- field: {
57
- component: 'form/KEmailField',
58
- label: 'KSendResetPassword.EMAIL_FIELD_LABEL'
59
- }
60
- }
61
- },
62
- required: ['email']
63
- }
64
- }
65
- },
66
- computed: {
67
- textClass () {
68
- const classObject = {}
69
- if (this.sent) {
70
- classObject['text-positive'] = this.success
71
- classObject['text-negative'] = !this.success
36
+ // Data
37
+ const router = useRouter()
38
+ const formRef = ref(null)
39
+ const message = ref(i18n.t('KSendResetPassword.MESSAGE'))
40
+ const processing = ref(false)
41
+ const send = ref(false)
42
+ const schema = ref({
43
+ $schema: 'http://json-schema.org/draft-07/schema#',
44
+ $id: 'http://kalisio.xyz/schemas/send-reset-password#',
45
+ title: 'Send reset password form',
46
+ type: 'object',
47
+ properties: {
48
+ email: {
49
+ type: 'string',
50
+ format: 'email',
51
+ field: {
52
+ component: 'form/KEmailField',
53
+ label: 'KSendResetPassword.EMAIL_FIELD_LABEL'
72
54
  }
73
- return classObject
74
55
  }
75
56
  },
76
- methods: {
77
- async onSend () {
78
- const result = this.$refs.form.validate()
79
- if (result.isValid) {
80
- try {
81
- this.sending = true
82
- await this.sendResetPassword(result.values.email)
83
- this.message = this.$t('KSendResetPassword.SUCCESS_MESSAGE')
84
- this.success = true
85
- } catch (error) {
86
- const type = _.get(error, 'errors.$className')
87
- switch (type) {
88
- case 'isVerified':
89
- this.message = this.$t('KSendResetPassword.ERROR_MESSAGE_IS_VERIFIED')
90
- break
91
- default:
92
- this.message = this.$t('KSendResetPassword.ERROR_MESSAGE_DEFAULT')
93
- }
94
- this.success = false
95
- }
96
- this.sent = true
97
- this.sending = false
98
- }
57
+ required: ['email']
58
+ })
59
+
60
+ // Computed
61
+ const textClass = computed(() => {
62
+ const classObject = {}
63
+ classObject['self-center'] = true
64
+ if (send.value) classObject['text-negative'] = true
65
+ return classObject
66
+ })
67
+
68
+ // Functions
69
+ async function apply () {
70
+ const { isValid, values } = formRef.value.validate()
71
+ if (!isValid) return false
72
+ try {
73
+ processing.value = true
74
+ await utils.sendResetPassword(values.email)
75
+ processing.value = false
76
+ router.push({ path: `reset-password/${values.email}` })
77
+ } catch (error) {
78
+ processing.value = false
79
+ const type = _.get(error, 'errors.$className')
80
+ switch (type) {
81
+ case 'isVerified':
82
+ message.value = i18n.t('KSendResetPassword.ERROR_MESSAGE_IS_VERIFIED')
83
+ break
84
+ default:
85
+ message.value = i18n.t('KSendResetPassword.ERROR_MESSAGE_DEFAULT')
99
86
  }
100
- },
101
- created () {
102
- // Components initialization
103
- this.message = this.$t('KSendResetPassword.MESSAGE')
104
87
  }
88
+ send.value = true
105
89
  }
106
90
  </script>
@@ -0,0 +1,71 @@
1
+ <template>
2
+ <q-item>
3
+ <!-- Icon -->
4
+ <q-item-section avatar>
5
+ <q-icon :name="icon" />
6
+ </q-item-section>
7
+ <!-- Label -->
8
+ <q-item-section>
9
+ {{ label }}
10
+ </q-item-section>
11
+ <!-- Actions -->
12
+ <KPanel
13
+ :content="bindedActions"
14
+ />
15
+ </q-item>
16
+ </template>
17
+
18
+ <script setup>
19
+ import _ from 'lodash'
20
+ import { removeSubscription } from '@kalisio/feathers-webpush/client.js'
21
+ import { computed } from 'vue'
22
+ import { Dialog } from 'quasar'
23
+ import { Store, i18n, api, utils } from '../..'
24
+ import KPanel from '../KPanel.vue'
25
+
26
+ // Props
27
+ const props = defineProps({
28
+ subscription: {
29
+ type: Object,
30
+ required: true
31
+ },
32
+ actions: {
33
+ type: Array,
34
+ required: true
35
+ }
36
+ })
37
+
38
+ // Computed
39
+ const icon = computed(() => {
40
+ return 'lab la-' + _.get(props.subscription, 'browser.name')
41
+ })
42
+ const label = computed(() => {
43
+ return _.capitalize(_.get(props.subscription, 'browser.name')) + ' (' + _.get(props.subscription, 'browser.version') + ') - ' + _.capitalize(_.get(props.subscription, 'platform'))
44
+ })
45
+ const bindedActions = computed(() => {
46
+ return utils.bindContent(_.cloneDeep(props.actions), { unsubscribe })
47
+ })
48
+
49
+ // Functions
50
+ function unsubscribe () {
51
+ const description = label.value
52
+ Dialog.create({
53
+ title: i18n.t('KSubscription.UNSUBSCRIBE_DIALOG_TITLE', { description }),
54
+ message: i18n.t('KSubscription.UNSUBSCRIBE_DIALOG_MESSAGE', { description }),
55
+ html: true,
56
+ ok: {
57
+ label: i18n.t('OK'),
58
+ flat: true
59
+ },
60
+ cancel: {
61
+ label: i18n.t('CANCEL'),
62
+ flat: true
63
+ }
64
+ }).onOk(async () => {
65
+ // Patch user subscriptions
66
+ const user = Store.get('user')
67
+ removeSubscription(user, props.subscription, 'subscriptions')
68
+ api.service('api/users').patch(Store.user._id, { subscriptions: user.subscriptions })
69
+ })
70
+ }
71
+ </script>
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <div class="q-pa-md column">
3
+ <div v-if="subscriptions.length > 0">
4
+ <q-list>
5
+ <template v-for="subscription in subscriptions" :key="subscription.endpoint">
6
+ <KSubscription
7
+ :subscription="subscription"
8
+ :actions="actions"
9
+ />
10
+ </template>
11
+ </q-list>
12
+ </div>
13
+ <div v-else class="row col justify-center">
14
+ <KStamp
15
+ icon="las la-exclamation-circle"
16
+ icon-size="1.6rem"
17
+ :text="$t('KSubscriptionsManager.EMPTY')"
18
+ direction="horizontal"
19
+ />
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script setup>
25
+ import _ from 'lodash'
26
+ import { computed } from 'vue'
27
+ import { Store } from '../../store.js'
28
+ import KSubscription from './KSubscription.vue'
29
+ import KStamp from '../KStamp.vue'
30
+
31
+ // Props
32
+ defineProps({
33
+ actions: {
34
+ type: Array,
35
+ default: () => []
36
+ }
37
+ })
38
+
39
+ // Data
40
+ const User = Store.get('user')
41
+
42
+ // Computed
43
+ const subscriptions = computed(() => {
44
+ return _.get(User, 'subscriptions', [])
45
+ })
46
+ </script>
@@ -0,0 +1,105 @@
1
+ <template>
2
+ <!-- Helper -->
3
+ <q-expansion-item icon="las la-question" :label="$t('KVerifyEmailManager.HELP_LABEL')">
4
+ <div class="q-pa-md">
5
+ <i18n-t class="text-body2" keypath="KVerifyEmailManager.HELP_TEXT" tag="p" scope="global" />
6
+ </div>
7
+ </q-expansion-item>
8
+ <q-expansion-item icon="las la-question" :label="$t('KVerifyEmailManager.HELP_EMAIL_LABEL')">
9
+ <div class="q-pa-md">
10
+ <i18n-t class="text-body2" keypath="KVerifyEmailManager.HELP_EMAIL_TEXT" tag="p" scope="global">
11
+ <template v-slot:email>
12
+ <span class="text-weight-bold">{{ notifierEmail }}</span>
13
+ </template>
14
+ </i18n-t>
15
+ </div>
16
+ </q-expansion-item>
17
+ <q-card>
18
+ <!-- Form -->
19
+ <q-card-section>
20
+ <KForm
21
+ ref="formRef"
22
+ :schema="schema"
23
+ />
24
+ </q-card-section>
25
+ <!-- Actions -->
26
+ <q-card-actions align="center">
27
+ <KAction
28
+ id="resend-verify-signup"
29
+ label="KVerifyEmailManager.ACTION"
30
+ renderer="form-button"
31
+ outline
32
+ :handler="resendVerifySignup"
33
+ />
34
+ <KAction
35
+ id="verify-email"
36
+ label="APPLY"
37
+ renderer="form-button"
38
+ :loading="processing"
39
+ :handler="apply"
40
+ />
41
+ </q-card-actions>
42
+ </q-card>
43
+ </template>
44
+
45
+ <script setup>
46
+ import { ref } from 'vue'
47
+ import { Notify } from 'quasar'
48
+ import { Store, i18n, utils } from '../..'
49
+
50
+ // Props
51
+ defineProps({
52
+ notifierEmail: {
53
+ type: String,
54
+ default: true
55
+ }
56
+ })
57
+
58
+ // Data
59
+ const User = Store.get('user')
60
+ const formRef = ref(null)
61
+ const processing = ref(false)
62
+ const schema = ref({
63
+ $schema: 'http://json-schema.org/draft-07/schema#',
64
+ $id: 'http://kalisio.xyz/schemas/verify-email-manager#',
65
+ title: 'Verify email form',
66
+ type: 'object',
67
+ properties: {
68
+ token: {
69
+ type: 'string',
70
+ minLength: 6,
71
+ maxLength: 6,
72
+ tokenLength: 6,
73
+ field: {
74
+ component: 'form/KTokenField',
75
+ label: 'KVerifyEmailManager.TOKEN_LABEL'
76
+ }
77
+ }
78
+ },
79
+ required: ['token']
80
+ })
81
+
82
+ // Functions
83
+ async function apply () {
84
+ const { isValid, values } = formRef.value.validate()
85
+ if (!isValid) return
86
+ try {
87
+ processing.value = true
88
+ await utils.verifySignup(values.token, User.email)
89
+ processing.value = false
90
+ Notify.create({
91
+ type: 'positive',
92
+ message: i18n.t('KVerifyEmailManager.EMAIL_VERIFIED')
93
+ })
94
+ } catch (error) {
95
+ processing.value = false
96
+ Notify.create({
97
+ type: 'negative',
98
+ message: i18n.t('KVerifyEmailManager.ERROR_MESSAGE')
99
+ })
100
+ }
101
+ }
102
+ function resendVerifySignup () {
103
+ utils.resendVerifySignup(User.email)
104
+ }
105
+ </script>
@@ -1,5 +1,7 @@
1
- import KAccountActivity from './KAccountActivity.vue'
1
+ import KAccount from './KAccount.vue'
2
+ import KProfile from './KProfile.vue'
2
3
 
3
4
  export {
4
- KAccountActivity
5
+ KAccount,
6
+ KProfile
5
7
  }
@@ -47,6 +47,8 @@ const { clientVersionName, apiVersionName } = useVersion()
47
47
  const platform = getPlatform()
48
48
  // logo component
49
49
  const logoComponent = ref(loadComponent(_.get(config, 'logoComponent', 'KLogo')))
50
+ // changelog url
51
+ const changelog = _.get(config, 'appChangelog')
50
52
  // bug report
51
53
  const bugReport = {
52
54
  address: _.get(config, 'publisherContact'),
@@ -61,25 +63,36 @@ _.forOwn(platform, (value, key) => { bugReport.body += `${key}: ${value}%0D%0A`
61
63
  bugReport.body += `domain: ${_.get(config, 'domain')}%0D%0A`
62
64
  bugReport.body += `flavor: ${_.get(config, 'flavor')}%0D%0A`
63
65
  // actions
64
- const defaultActions = [
65
- {
66
+ const defaultActions = [{
67
+ id: 'platform-info',
68
+ icon: 'las la-desktop',
69
+ label: 'KAbout.PLATFORM_INFO',
70
+ stack: true,
71
+ dialog: {
72
+ title: 'KAbout.PLATFORM_INFO',
73
+ component: 'app/KPlatform',
74
+ okAction: 'CLOSE',
75
+ widthPolicy: 'narrow'
76
+ }
77
+ }
78
+ ]
79
+ if (_.isNil(bugReport.address)) {
80
+ defaultActions.unshift({
66
81
  id: 'report-bug',
67
82
  icon: 'las la-bug',
68
83
  label: 'KAbout.BUG_REPORT',
69
84
  stack: true,
70
85
  url: `mailto:${bugReport.address}?subject=${bugReport.subject}&body=${bugReport.body}`
71
- }, {
72
- id: 'platform-info',
73
- icon: 'las la-desktop',
74
- label: 'KAbout.PLATFORM_INFO',
86
+ })
87
+ }
88
+ if (!_.isNil(changelog)) {
89
+ defaultActions.unshift({
90
+ id: 'view-changelog',
91
+ icon: 'las la-history',
92
+ label: 'KAbout.VIEW_CHANGELOG',
75
93
  stack: true,
76
- dialog: {
77
- title: 'KAbout.PLATFORM_INFO',
78
- component: 'app/KPlatform',
79
- okAction: 'CLOSE',
80
- widthPolicy: 'narrow'
81
- }
82
- }
83
- ]
94
+ url: changelog
95
+ })
96
+ }
84
97
  const actions = ref(_.get(config, 'about.actions', defaultActions))
85
98
  </script>
@@ -39,10 +39,10 @@ const platform = getPlatform()
39
39
  // function
40
40
  async function copy () {
41
41
  try {
42
- await copyToClipboard(JSON.stringify(platform.value, null, 2))
42
+ await copyToClipboard(JSON.stringify(platform, null, 2))
43
43
  $q.notify({ type: 'positive', message: i18n.t('KPlatform.INFO_COPIED') })
44
44
  } catch (error) {
45
- $q.notify({ message: i18n.t('KPositionIndicator.CANNOT_COPY_INFO') })
45
+ $q.notify({ type: 'negative', message: i18n.t('KPositionIndicator.CANNOT_COPY_INFO') })
46
46
  }
47
47
  }
48
48
  </script>
@@ -1,52 +1,72 @@
1
1
  <template>
2
2
  <q-dialog v-model="showWelcome" persistent>
3
- <q-card class="q-pa-sm column q-gutter-y-md" style="min-width: 50vw">
3
+ <q-card class="q-pa-xs column items-center q-gutter-y-xs no-wrap">
4
4
  <!-- Logo -->
5
- <component :is="logoComponent" />
5
+ <component
6
+ :is="logoComponent"
7
+ :height="dense ? '70px' : '100px'"
8
+ />
6
9
  <!-- Carousel -->
7
- <div class="row justify-center">
8
- <q-carousel
9
- class="q-pa-none"
10
- v-model="currentSlide"
11
- swipeable
12
- animated
13
- padding
14
- navigation
15
- transition-prev="scale"
16
- transition-next="scale"
17
- control-type="flat"
18
- control-color="primary"
10
+ <q-carousel
11
+ v-model="currentSlide"
12
+ swipeable
13
+ animated
14
+ navigation
15
+ transition-prev="scale"
16
+ transition-next="scale"
17
+ control-type="flat"
18
+ control-color="primary"
19
+ height="320px"
20
+ >
21
+ <q-carousel-slide
22
+ name="welcome"
23
+ class="column no-wrap justify-center text-center q-gutter-sm"
19
24
  >
20
- <q-carousel-slide name="welcome" class="column no-wrap justify-center text-center q-gutter-md">
21
- <div class="text-h5">{{ $t('KWelcome.WELCOME_TITLE') }}</div>
22
- <div class="text-subtitle1">{{ $t('KWelcome.WELCOME_MESSAGE') }}</div>
23
- <div class="text-subtitle1">{{ $t('KWelcome.ONLINE_HELP') }}
24
- <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onOnlineHelp()"/>
25
- </div>
26
- </q-carousel-slide>
27
- <q-carousel-slide name="tour" class="column no-wrap justify-center text-center q-gutter-md">
28
- <div class="text-subtitle1">{{ $t('KWelcome.TOUR_MESSAGE') }}
29
- <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onDefaultTour()"/>
30
- </div>
31
- <div class="text-subtitle1">{{ $t('KWelcome.TOUR_LINK_MESSAGE') }}</div>
32
- </q-carousel-slide>
33
- <q-carousel-slide name="goodbye" class="column no-wrap justify-center text-center q-gutter-md">
34
- <div class="text-subtitle1">
35
- <span>
36
- {{ $t('KWelcome.CONTEXTUAL_HELP') }}
37
- <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-question-circle"/>
38
- </span>
39
- </div>
40
- <div class="text-subtitle1">{{ $t('KWelcome.GOODBYE_MESSAGE') }}</div>
41
- </q-carousel-slide>
42
- </q-carousel>
43
- </div>
44
- <div class="row justify-center">
45
- <k-action id="close-button" label="CLOSE" renderer="form-button" :handler="() => hide()" />
46
- </div>
47
- <div class="row justify-center">
48
- <q-checkbox v-model="toggle" @update:modelValue="onToggleIntroduction" :label="$t('KWelcome.HIDE_WELCOME')" color="primary" />
25
+ <div :class="dense ? 'text-weight-medium' : 'text-h6'">{{ $t('KWelcome.WELCOME_TITLE') }}</div>
26
+ <div>{{ $t('KWelcome.WELCOME_MESSAGE') }}</div>
27
+ <div>{{ $t('KWelcome.ONLINE_HELP') }}
28
+ <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onOnlineHelp()"/>
29
+ </div>
30
+ </q-carousel-slide>
31
+ <q-carousel-slide
32
+ name="tour"
33
+ class="column no-wrap justify-center text-center q-gutter-sm"
34
+ >
35
+ <div>{{ $t('KWelcome.TOUR_MESSAGE') }}
36
+ <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onDefaultTour()"/>
37
+ </div>
38
+ <div>{{ $t('KWelcome.TOUR_LINK_MESSAGE') }}</div>
39
+ </q-carousel-slide>
40
+ <q-carousel-slide
41
+ name="goodbye"
42
+ class="column no-wrap justify-center text-center q-gutter-sm"
43
+ >
44
+ <div>
45
+ <span>
46
+ {{ $t('KWelcome.CONTEXTUAL_HELP') }}
47
+ <q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-question-circle"/>
48
+ </span>
49
+ </div>
50
+ <div>{{ $t('KWelcome.GOODBYE_MESSAGE') }}</div>
51
+ </q-carousel-slide>
52
+ </q-carousel>
53
+ <div :class="dense ? 'q-py-xs' : 'q-py-md'">
54
+ <KAction
55
+ id="close-button"
56
+ label="CLOSE"
57
+ renderer="form-button"
58
+ :handler="() => hide()"
59
+ />
49
60
  </div>
61
+ <q-checkbox
62
+ v-model="toggle"
63
+ :label="$t('KWelcome.HIDE_WELCOME')"
64
+ color="primary"
65
+ size="xs"
66
+ :dense="dense"
67
+ @update:modelValue="onToggleIntroduction"
68
+ :class="dense ? 'q-pt-xs text-caption' : 'q-pt-md'"
69
+ />
50
70
  </q-card>
51
71
  </q-dialog>
52
72
  </template>
@@ -54,19 +74,25 @@
54
74
  <script setup>
55
75
  import _ from 'lodash'
56
76
  import config from 'config'
57
- import { ref, onBeforeUnmount } from 'vue'
58
- import { openURL } from 'quasar'
77
+ import { ref, computed, onBeforeUnmount } from 'vue'
78
+ import { openURL, useQuasar } from 'quasar'
59
79
  import { Store, api } from '../..'
60
80
  import { loadComponent } from '../../utils'
61
81
  import KAction from '../KAction.vue'
62
82
 
63
83
  // Data
84
+ const $q = useQuasar()
64
85
  const logoComponent = ref(loadComponent(_.get(config, 'logoComponent', 'KLogo')))
65
86
  const defaultTour = _.get(config, 'welcome.tour', 'home')
66
87
  const showWelcome = ref(false)
67
88
  const currentSlide = ref('welcome')
68
89
  const toggle = ref(false)
69
90
 
91
+ // Computed
92
+ const dense = computed(() => {
93
+ return $q.screen.lt.sm
94
+ })
95
+
70
96
  // functions
71
97
  function getWelcomeKey () {
72
98
  return _.get(config, 'appName').toLowerCase() + '-welcome'