@kalisio/kdk 1.3.5 → 1.4.2

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 (535) hide show
  1. package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +1 -0
  2. package/.nyc_output/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json} +0 -0
  3. package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 81d21e46-766a-46bc-b1b7-143ca577347a.json} +0 -0
  4. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  5. package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → aaf3ebbb-f895-4d7b-9255-bc5dee832570.json} +0 -0
  6. package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → dbeb2602-0ac2-4e66-978b-0d29548359ca.json} +0 -0
  7. package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e47d1e4c-2fff-4dcb-908f-d3081162547c.json} +0 -0
  8. package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → 2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json} +1 -1
  9. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +1 -0
  10. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +1 -0
  11. package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  12. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +1 -0
  13. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +1 -0
  14. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +189 -67
  17. package/README.md +1 -1
  18. package/coverage/core/api/application.js.html +145 -145
  19. package/coverage/core/api/authentication.js.html +37 -37
  20. package/coverage/core/api/db.js.html +74 -74
  21. package/coverage/core/api/hooks/hooks.account.js.html +15 -15
  22. package/coverage/core/api/hooks/hooks.authentication.js.html +16 -16
  23. package/coverage/core/api/hooks/hooks.authorisations.js.html +112 -121
  24. package/coverage/core/api/hooks/hooks.devices.js.html +5 -5
  25. package/coverage/core/api/hooks/hooks.groups.js.html +3 -3
  26. package/coverage/core/api/hooks/hooks.logger.js.html +7 -7
  27. package/coverage/core/api/hooks/hooks.model.js.html +149 -149
  28. package/coverage/core/api/hooks/hooks.organisations.js.html +13 -61
  29. package/coverage/core/api/hooks/hooks.pusher.js.html +7 -7
  30. package/coverage/core/api/hooks/hooks.query.js.html +68 -32
  31. package/coverage/core/api/hooks/hooks.service.js.html +15 -15
  32. package/coverage/core/api/hooks/hooks.storage.js.html +5 -5
  33. package/coverage/core/api/hooks/hooks.tags.js.html +7 -7
  34. package/coverage/core/api/hooks/hooks.users.js.html +111 -63
  35. package/coverage/core/api/hooks/index.html +72 -72
  36. package/coverage/core/api/hooks/index.js.html +15 -15
  37. package/coverage/core/api/index.html +35 -35
  38. package/coverage/core/api/index.js.html +13 -13
  39. package/coverage/core/api/marshall.js.html +81 -81
  40. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  41. package/coverage/core/api/models/index.html +1 -1
  42. package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
  43. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  44. package/coverage/core/api/models/users.model.mongodb.js.html +7 -7
  45. package/coverage/core/api/oauth2-handler.js.html +3 -3
  46. package/coverage/core/api/oauth2-verifier.js.html +5 -5
  47. package/coverage/core/api/services/account/account.hooks.js.html +1 -1
  48. package/coverage/core/api/services/account/account.service.js.html +34 -34
  49. package/coverage/core/api/services/account/index.html +17 -17
  50. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  51. package/coverage/core/api/services/authorisations/authorisations.service.js.html +40 -37
  52. package/coverage/core/api/services/authorisations/index.html +17 -17
  53. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  54. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  55. package/coverage/core/api/services/databases/index.html +1 -1
  56. package/coverage/core/api/services/devices/devices.hooks.js.html +1 -1
  57. package/coverage/core/api/services/devices/devices.service.js.html +1 -1
  58. package/coverage/core/api/services/devices/index.html +1 -1
  59. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  60. package/coverage/core/api/services/groups/index.html +1 -1
  61. package/coverage/core/api/services/index.html +5 -5
  62. package/coverage/core/api/services/index.js.html +40 -40
  63. package/coverage/core/api/services/mailer/index.html +1 -1
  64. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  65. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  66. package/coverage/core/api/services/organisations/index.html +1 -1
  67. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  68. package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
  69. package/coverage/core/api/services/pusher/index.html +1 -1
  70. package/coverage/core/api/services/pusher/pusher.channels.js.html +1 -1
  71. package/coverage/core/api/services/pusher/pusher.hooks.js.html +1 -1
  72. package/coverage/core/api/services/pusher/pusher.service.js.html +1 -1
  73. package/coverage/core/api/services/storage/index.html +1 -1
  74. package/coverage/core/api/services/storage/storage.hooks.js.html +4 -4
  75. package/coverage/core/api/services/tags/index.html +1 -1
  76. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  77. package/coverage/core/api/services/users/index.html +1 -1
  78. package/coverage/core/api/services/users/users.hooks.js.html +12 -12
  79. package/coverage/core/common/index.html +32 -32
  80. package/coverage/core/common/index.js.html +27 -27
  81. package/coverage/core/common/permissions.js.html +135 -75
  82. package/coverage/index.html +157 -157
  83. package/coverage/lcov-report/core/api/application.js.html +145 -145
  84. package/coverage/lcov-report/core/api/authentication.js.html +37 -37
  85. package/coverage/lcov-report/core/api/db.js.html +74 -74
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +15 -15
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +16 -16
  88. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +112 -121
  89. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +5 -5
  90. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +3 -3
  91. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +7 -7
  92. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +149 -149
  93. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +13 -61
  94. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +7 -7
  95. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +68 -32
  96. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +15 -15
  97. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +5 -5
  98. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +7 -7
  99. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +111 -63
  100. package/coverage/lcov-report/core/api/hooks/index.html +72 -72
  101. package/coverage/lcov-report/core/api/hooks/index.js.html +15 -15
  102. package/coverage/lcov-report/core/api/index.html +35 -35
  103. package/coverage/lcov-report/core/api/index.js.html +13 -13
  104. package/coverage/lcov-report/core/api/marshall.js.html +81 -81
  105. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  106. package/coverage/lcov-report/core/api/models/index.html +1 -1
  107. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
  108. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  109. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +7 -7
  110. package/coverage/lcov-report/core/api/oauth2-handler.js.html +3 -3
  111. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +5 -5
  112. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
  113. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  114. package/coverage/lcov-report/core/api/services/account/index.html +17 -17
  115. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  116. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +40 -37
  117. package/coverage/lcov-report/core/api/services/authorisations/index.html +17 -17
  118. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  119. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  120. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  121. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +1 -1
  122. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +1 -1
  123. package/coverage/lcov-report/core/api/services/devices/index.html +1 -1
  124. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  125. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  126. package/coverage/lcov-report/core/api/services/index.html +5 -5
  127. package/coverage/lcov-report/core/api/services/index.js.html +40 -40
  128. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  129. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  130. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  131. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  132. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  133. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
  134. package/coverage/lcov-report/core/api/services/pusher/index.html +1 -1
  135. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +1 -1
  136. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +1 -1
  137. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +1 -1
  138. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  139. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +4 -4
  140. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  141. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  142. package/coverage/lcov-report/core/api/services/users/index.html +1 -1
  143. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +12 -12
  144. package/coverage/lcov-report/core/common/index.html +32 -32
  145. package/coverage/lcov-report/core/common/index.js.html +27 -27
  146. package/coverage/lcov-report/core/common/permissions.js.html +135 -75
  147. package/coverage/lcov-report/index.html +157 -157
  148. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +55 -55
  149. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +337 -274
  150. package/coverage/lcov-report/map/api/hooks/index.html +43 -43
  151. package/coverage/lcov-report/map/api/hooks/index.js.html +12 -12
  152. package/coverage/lcov-report/map/api/index.html +31 -31
  153. package/coverage/lcov-report/map/api/index.js.html +24 -24
  154. package/coverage/lcov-report/map/api/marshall.js.html +39 -39
  155. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +20 -20
  156. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +22 -22
  157. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +24 -24
  158. package/coverage/lcov-report/map/api/models/index.html +43 -43
  159. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +21 -21
  160. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +156 -156
  161. package/coverage/lcov-report/map/api/services/alerts/index.html +30 -30
  162. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +19 -19
  163. package/coverage/lcov-report/map/api/services/catalog/index.html +17 -17
  164. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  165. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  166. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +20 -20
  167. package/coverage/lcov-report/map/api/services/features/index.html +21 -21
  168. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  169. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +99 -99
  170. package/coverage/lcov-report/map/api/services/geocoder/index.html +28 -28
  171. package/coverage/lcov-report/map/api/services/index.html +21 -21
  172. package/coverage/lcov-report/map/api/services/index.js.html +71 -71
  173. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  174. package/coverage/lcov-report/map/common/errors.js.html +9 -9
  175. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +120 -120
  176. package/coverage/lcov-report/map/common/grid.js.html +268 -268
  177. package/coverage/lcov-report/map/common/index.html +149 -149
  178. package/coverage/lcov-report/map/common/index.js.html +31 -31
  179. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +71 -71
  180. package/coverage/lcov-report/map/common/moment-utils.js.html +14 -14
  181. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +280 -280
  182. package/coverage/lcov-report/map/common/opendap-utils.js.html +220 -220
  183. package/coverage/lcov-report/map/common/permissions.js.html +21 -21
  184. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +51 -51
  185. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  186. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +99 -99
  187. package/coverage/lcov-report/map/common/wcs-utils.js.html +66 -66
  188. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +196 -196
  189. package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
  190. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  191. package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
  192. package/coverage/lcov.info +3588 -3659
  193. package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
  194. package/coverage/map/api/hooks/hooks.query.js.html +337 -274
  195. package/coverage/map/api/hooks/index.html +43 -43
  196. package/coverage/map/api/hooks/index.js.html +12 -12
  197. package/coverage/map/api/index.html +31 -31
  198. package/coverage/map/api/index.js.html +24 -24
  199. package/coverage/map/api/marshall.js.html +39 -39
  200. package/coverage/map/api/models/alerts.model.mongodb.js.html +20 -20
  201. package/coverage/map/api/models/catalog.model.mongodb.js.html +22 -22
  202. package/coverage/map/api/models/features.model.mongodb.js.html +24 -24
  203. package/coverage/map/api/models/index.html +43 -43
  204. package/coverage/map/api/services/alerts/alerts.hooks.js.html +21 -21
  205. package/coverage/map/api/services/alerts/alerts.service.js.html +156 -156
  206. package/coverage/map/api/services/alerts/index.html +30 -30
  207. package/coverage/map/api/services/catalog/catalog.hooks.js.html +19 -19
  208. package/coverage/map/api/services/catalog/index.html +17 -17
  209. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  210. package/coverage/map/api/services/daptiles/index.html +1 -1
  211. package/coverage/map/api/services/features/features.hooks.js.html +20 -20
  212. package/coverage/map/api/services/features/index.html +21 -21
  213. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  214. package/coverage/map/api/services/geocoder/geocoder.service.js.html +99 -99
  215. package/coverage/map/api/services/geocoder/index.html +28 -28
  216. package/coverage/map/api/services/index.html +21 -21
  217. package/coverage/map/api/services/index.js.html +71 -71
  218. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  219. package/coverage/map/common/errors.js.html +9 -9
  220. package/coverage/map/common/geotiff-grid-source.js.html +120 -120
  221. package/coverage/map/common/grid.js.html +268 -268
  222. package/coverage/map/common/index.html +149 -149
  223. package/coverage/map/common/index.js.html +31 -31
  224. package/coverage/map/common/meteo-model-grid-source.js.html +71 -71
  225. package/coverage/map/common/moment-utils.js.html +14 -14
  226. package/coverage/map/common/opendap-grid-source.js.html +280 -280
  227. package/coverage/map/common/opendap-utils.js.html +220 -220
  228. package/coverage/map/common/permissions.js.html +21 -21
  229. package/coverage/map/common/time-based-grid-source.js.html +51 -51
  230. package/coverage/map/common/tms-utils.js.html +1 -1
  231. package/coverage/map/common/wcs-grid-source.js.html +99 -99
  232. package/coverage/map/common/wcs-utils.js.html +66 -66
  233. package/coverage/map/common/weacast-grid-source.js.html +196 -196
  234. package/coverage/map/common/wfs-utils.js.html +8 -5
  235. package/coverage/map/common/wms-utils.js.html +1 -1
  236. package/coverage/map/common/wmts-utils.js.html +71 -11
  237. package/extras/icons/kanban.png +0 -0
  238. package/extras/testcafe/page-models/map/catalog.js +2 -2
  239. package/extras/tours/core/add-member.js +10 -1
  240. package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
  241. package/extras/tours/core/groups.js +8 -2
  242. package/extras/tours/core/members.js +11 -21
  243. package/extras/tours/core/tags.js +7 -1
  244. package/extras/tours/map/catalog-categories.js +4 -4
  245. package/extras/tours/map/catalog-panel.js +16 -16
  246. package/extras/tours/map/favorite-views.js +3 -3
  247. package/lib/core/api/hooks/hooks.authorisations.js +149 -140
  248. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  249. package/lib/core/api/hooks/hooks.organisations.js +1 -23
  250. package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
  251. package/lib/core/api/hooks/hooks.query.js +22 -0
  252. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  253. package/lib/core/api/hooks/hooks.users.js +34 -18
  254. package/lib/core/api/hooks/hooks.users.js.map +1 -1
  255. package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
  256. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  257. package/lib/core/client/api.js +1 -0
  258. package/lib/core/client/api.js.map +1 -1
  259. package/lib/core/client/components/account/KAccountDZ.vue +3 -4
  260. package/lib/core/client/components/account/KAccountDevices.vue +5 -6
  261. package/lib/core/client/components/account/KDeviceCard.vue +2 -1
  262. package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
  263. package/lib/core/client/components/collection/KBoard.vue +26 -155
  264. package/lib/core/client/components/collection/KCard.vue +144 -42
  265. package/lib/core/client/components/collection/KCardSection.vue +52 -0
  266. package/lib/core/client/components/collection/KColumn.vue +181 -0
  267. package/lib/core/client/components/collection/KGrid.vue +13 -18
  268. package/lib/core/client/components/collection/KHistory.vue +61 -89
  269. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  270. package/lib/core/client/components/collection/KItem.vue +21 -2
  271. package/lib/core/client/components/collection/KList.vue +9 -12
  272. package/lib/core/client/components/collection/KTable.vue +33 -39
  273. package/lib/core/client/components/collection/index.js +6 -1
  274. package/lib/core/client/components/collection/index.js.map +1 -1
  275. package/lib/core/client/components/editor/KEditor.vue +0 -6
  276. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  277. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  278. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  279. package/lib/core/client/components/form/KChipsField.vue +28 -23
  280. package/lib/core/client/components/form/KColorField.vue +30 -25
  281. package/lib/core/client/components/form/KForm.vue +0 -12
  282. package/lib/core/client/components/form/KIconField.vue +1 -0
  283. package/lib/core/client/components/form/KItemField.vue +8 -4
  284. package/lib/core/client/components/form/KRoleField.vue +56 -0
  285. package/lib/core/client/components/form/KSelectField.vue +16 -1
  286. package/lib/core/client/components/form/KView.vue +5 -14
  287. package/lib/core/client/components/frame/KAction.vue +18 -12
  288. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  289. package/lib/core/client/components/frame/KChart.vue +60 -0
  290. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  291. package/lib/core/client/components/frame/KContent.vue +1 -1
  292. package/lib/core/client/components/frame/KModal.vue +30 -44
  293. package/lib/core/client/components/frame/KPanel.vue +1 -1
  294. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  295. package/lib/core/client/components/frame/KSpot.vue +31 -0
  296. package/lib/core/client/components/frame/KStamp.vue +62 -0
  297. package/lib/core/client/components/frame/index.js +56 -1
  298. package/lib/core/client/components/frame/index.js.map +1 -1
  299. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  300. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  301. package/lib/core/client/components/input/KUploader.vue +14 -5
  302. package/lib/core/client/components/layout/KAbout.vue +9 -3
  303. package/lib/core/client/components/layout/KFab.vue +1 -1
  304. package/lib/core/client/components/layout/KPage.vue +44 -19
  305. package/lib/core/client/components/layout/KTour.vue +2 -2
  306. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  307. package/lib/core/client/components/layout/KWindow.vue +1 -1
  308. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  309. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  310. package/lib/core/client/components/menu/KMenu.vue +103 -0
  311. package/lib/core/client/components/team/KAddMember.vue +17 -9
  312. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  313. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  314. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  315. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  316. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  317. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  318. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  319. package/lib/core/client/components/team/KTagCard.vue +26 -26
  320. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  321. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  322. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  323. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  324. package/lib/core/client/i18n/core_en.json +133 -93
  325. package/lib/core/client/i18n/core_fr.json +56 -16
  326. package/lib/core/client/index.js +28 -14
  327. package/lib/core/client/index.js.map +1 -1
  328. package/lib/core/client/mixins/mixin.authorisation.js +28 -18
  329. package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
  330. package/lib/core/client/mixins/mixin.base-collection.js +57 -9
  331. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  332. package/lib/core/client/mixins/mixin.base-context.js +1 -1
  333. package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
  334. package/lib/core/client/mixins/mixin.base-editor.js +26 -16
  335. package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
  336. package/lib/core/client/mixins/mixin.base-field.js +0 -4
  337. package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
  338. package/lib/core/client/mixins/mixin.base-item.js +29 -14
  339. package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
  340. package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
  341. package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
  342. package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
  343. package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
  344. package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
  345. package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
  346. package/lib/core/client/mixins/mixin.service.js +5 -33
  347. package/lib/core/client/mixins/mixin.service.js.map +1 -1
  348. package/lib/core/client/services/index.js +23 -0
  349. package/lib/core/client/services/index.js.map +1 -1
  350. package/lib/core/client/services/local-settings.service.js +4 -0
  351. package/lib/core/client/services/local-settings.service.js.map +1 -1
  352. package/lib/core/client/time.js +131 -0
  353. package/lib/core/client/time.js.map +1 -0
  354. package/lib/core/common/permissions.js +65 -23
  355. package/lib/core/common/permissions.js.map +1 -1
  356. package/lib/core/common/schemas/groups.create.json +1 -1
  357. package/lib/core/common/schemas/groups.update.json +1 -1
  358. package/lib/core/common/schemas/organisations.create.json +1 -1
  359. package/lib/core/common/schemas/organisations.update.json +2 -2
  360. package/lib/core/common/schemas/settings.update.json +139 -0
  361. package/lib/core/common/schemas/tags.update.json +9 -1
  362. package/lib/map/api/hooks/hooks.query.js +48 -27
  363. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  364. package/lib/map/api/services/features/features.hooks.js +1 -1
  365. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  366. package/lib/map/client/components/KColorLegend.vue +25 -23
  367. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  368. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  369. package/lib/map/client/components/KFeaturesFilter.vue +15 -7
  370. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  371. package/lib/map/client/components/KLayerEditionToolbar.vue +43 -0
  372. package/lib/map/client/components/KLayerStyleEditor.vue +10 -4
  373. package/lib/map/client/components/KLayerStyleForm.vue +14 -11
  374. package/lib/map/client/components/KLocationInput.vue +126 -65
  375. package/lib/map/client/components/KLocationMap.vue +199 -84
  376. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  377. package/lib/map/client/components/KTimeline.vue +41 -36
  378. package/lib/map/client/components/KUrlLegend.vue +21 -19
  379. package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
  380. package/lib/map/client/components/catalog/KCatalog.vue +14 -2
  381. package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
  382. package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
  383. package/lib/map/client/components/catalog/KImportLayer.vue +28 -8
  384. package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
  385. package/lib/map/client/components/catalog/KLayersSelector.vue +42 -42
  386. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  387. package/lib/map/client/components/form/KLocationField.vue +1 -1
  388. package/lib/map/client/components/form/KOwsLayerField.vue +21 -2
  389. package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
  390. package/lib/map/client/components/widget/KInformationBox.vue +10 -16
  391. package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
  392. package/lib/map/client/components/widget/KTimeSeries.vue +39 -29
  393. package/lib/map/client/i18n/map_en.json +65 -17
  394. package/lib/map/client/i18n/map_fr.json +67 -20
  395. package/lib/map/client/init.js +18 -6
  396. package/lib/map/client/init.js.map +1 -1
  397. package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
  398. package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
  399. package/lib/map/client/leaflet/GradientPath.js.map +1 -1
  400. package/lib/map/client/leaflet/MaskLayer.js +64 -0
  401. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  402. package/lib/map/client/mixins/globe/mixin.base-globe.js +4 -1
  403. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  404. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  405. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  406. package/lib/map/client/mixins/index.js +8 -13
  407. package/lib/map/client/mixins/index.js.map +1 -1
  408. package/lib/map/client/mixins/map/mixin.base-map.js +30 -6
  409. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  410. package/lib/map/client/mixins/map/mixin.canvas-layers.js +274 -51
  411. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  412. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  413. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  414. package/lib/map/client/mixins/map/mixin.file-layers.js +25 -18
  415. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  416. package/lib/map/client/mixins/map/mixin.geojson-layers.js +18 -10
  417. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  418. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  419. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  420. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  421. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  422. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  423. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  424. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  425. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  426. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  427. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  428. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  429. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  430. package/lib/map/client/mixins/mixin.activity.js +60 -68
  431. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  432. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  433. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  434. package/lib/map/client/mixins/mixin.feature-service.js +7 -5
  435. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  436. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  437. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  438. package/lib/map/client/pixi-utils.js +9 -0
  439. package/lib/map/client/pixi-utils.js.map +1 -1
  440. package/lib/map/client/utils.js +50 -0
  441. package/lib/map/client/utils.js.map +1 -1
  442. package/lib/map/common/wfs-utils.js +1 -1
  443. package/lib/map/common/wfs-utils.js.map +1 -1
  444. package/lib/map/common/wmts-utils.js +31 -7
  445. package/lib/map/common/wmts-utils.js.map +1 -1
  446. package/lib/test/client/core/account.js +100 -0
  447. package/lib/test/client/core/account.js.map +1 -0
  448. package/lib/test/client/core/api.js +400 -0
  449. package/lib/test/client/core/api.js.map +1 -0
  450. package/lib/test/client/core/collection.js +109 -0
  451. package/lib/test/client/core/collection.js.map +1 -0
  452. package/lib/test/client/core/index.js +90 -0
  453. package/lib/test/client/core/index.js.map +1 -0
  454. package/lib/test/client/core/layout.js +221 -0
  455. package/lib/test/client/core/layout.js.map +1 -0
  456. package/lib/test/client/core/runner.js +204 -0
  457. package/lib/test/client/core/runner.js.map +1 -0
  458. package/lib/test/client/core/screens.js +68 -0
  459. package/lib/test/client/core/screens.js.map +1 -0
  460. package/lib/test/client/core/utils.js +304 -0
  461. package/lib/test/client/core/utils.js.map +1 -0
  462. package/lib/test/client/index.js +20 -0
  463. package/lib/test/client/index.js.map +1 -0
  464. package/lib/test/client/map/catalog.js +191 -0
  465. package/lib/test/client/map/catalog.js.map +1 -0
  466. package/lib/test/client/map/controls.js +54 -0
  467. package/lib/test/client/map/controls.js.map +1 -0
  468. package/lib/test/client/map/index.js +30 -0
  469. package/lib/test/client/map/index.js.map +1 -0
  470. package/package.json +17 -9
  471. package/test.client.js +1 -0
  472. package/tests/core/test-log-2021-07-15.log +71 -0
  473. package/tests/core/test-log-2021-09-02.log +47 -0
  474. package/tests/map/test-log-%DATE%.logYYYY-07-DD +12 -0
  475. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  476. package/tests/map/test-log-2021-07-12.log +12 -0
  477. package/tests/map/test-log-2021-07-15.log +5 -0
  478. package/tests/map/test-log-2021-09-02.log +3 -0
  479. package/.nyc_output/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  480. package/.nyc_output/2bece194-92f7-4971-a688-10604044a7fa.json +0 -1
  481. package/.nyc_output/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  482. package/.nyc_output/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  483. package/.nyc_output/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  484. package/.nyc_output/processinfo/0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json +0 -1
  485. package/.nyc_output/processinfo/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  486. package/.nyc_output/processinfo/20df4355-911a-4b16-a8ab-d3392e9f0a7f.json +0 -1
  487. package/.nyc_output/processinfo/257af0bb-96c3-465a-b5ef-a1df60078d5f.json +0 -1
  488. package/.nyc_output/processinfo/284aebfa-23fd-425f-9d72-e4b8904dc224.json +0 -1
  489. package/.nyc_output/processinfo/5cbee06e-be6e-468a-bd78-4793ee785fe4.json +0 -1
  490. package/.nyc_output/processinfo/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  491. package/.nyc_output/processinfo/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  492. package/.nyc_output/processinfo/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  493. package/lib/core/client/components/frame/KLabel.vue +0 -56
  494. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  495. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  496. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  497. package/lib/map/client/mixins/mixin.time.js +0 -73
  498. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  499. package/tests/core/account.test.js +0 -415
  500. package/tests/core/client.test.js.skip +0 -37
  501. package/tests/core/config/default.js +0 -97
  502. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  503. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  504. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  505. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  506. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  507. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  508. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  509. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  510. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  511. package/tests/core/data/logo.png +0 -0
  512. package/tests/core/hooks.test.js +0 -175
  513. package/tests/core/index.test.js +0 -418
  514. package/tests/core/notifications.test.js +0 -465
  515. package/tests/core/storage.test.js +0 -134
  516. package/tests/core/team.test.js +0 -610
  517. package/tests/core/utils.js +0 -59
  518. package/tests/map/alerts.test.js +0 -554
  519. package/tests/map/config/default.js +0 -112
  520. package/tests/map/config/layers.json +0 -37
  521. package/tests/map/daptiles.test.js +0 -41
  522. package/tests/map/data/DescribeCoverage.xml +0 -55
  523. package/tests/map/data/GetCoverage.tif +0 -0
  524. package/tests/map/data/adsb.observations.json +0 -132
  525. package/tests/map/data/dataset.grb.das +0 -55
  526. package/tests/map/data/dataset.grb.dds +0 -17
  527. package/tests/map/data/dataset.grb.dods +0 -0
  528. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  529. package/tests/map/data/subdataset.grb.dods +0 -0
  530. package/tests/map/data/vigicrues.observations.json +0 -47042
  531. package/tests/map/data/vigicrues.stations.json +0 -15422
  532. package/tests/map/data/zones.json +0 -1228
  533. package/tests/map/grid-sources.test.js +0 -304
  534. package/tests/map/hooks.test.js +0 -96
  535. package/tests/map/index.test.js +0 -333
@@ -1,60 +1,79 @@
1
1
  <template>
2
- <k-card v-bind="$props" :actions="itemActions" :bind-actions="false" >
2
+ <k-card
3
+ v-bind="$props"
4
+ :header="header"
5
+ :actions="itemActions"
6
+ :bind-actions="false"
7
+ :dense="dense">
3
8
  <!--
4
- Card header
9
+ Card avater
5
10
  -->
6
- <template v-slot:card-header>
7
- <div class="q-pa-sm row justify-end">
8
- <q-badge id="role-badge" outine color="grey-7">
9
- {{ $t(roleLabel(role)) }}
10
- </q-badge>
11
- </div>
12
- </template>
11
+ <div slot="card-avatar">
12
+ <k-avatar :object="item" size="3.2rem" />
13
+ </div>
13
14
  <!--
14
- Card avater
15
+ Card descriptions
15
16
  -->
16
- <template v-slot:card-avatar>
17
- <k-avatar :object="item" size="4rem" />
18
- </template>
17
+ <div slot="card-description">
18
+ <div class="row full-width justify-start" v-bind:class="{ 'q-py-xs': dense, 'q-py-sm': !dense }">
19
+ {{ description }}
20
+ </div>
21
+ </div>
19
22
  <!--
20
23
  Card content
21
24
  -->
22
25
  <div slot="card-content">
23
- <q-separator />
24
- <template v-if="tags.length > 0">
25
- <k-tags-pane id="tags-pane" class="q-pa-sm" :tags="tags" />
26
- <q-separator />
27
- </template>
28
- <div class="q-pa-sm row justify-start items-center">
29
- <template v-for="(group, index) in memberGroups">
30
- <q-btn id="group-button" :key="groupKey(group)" flat small round color="primary">
31
- <q-avatar color="primary" text-color="white" size="32px">{{ groupInitials(group) }}</q-avatar>
32
- <q-menu ref="popover">
33
- <q-toolbar inverted color="grey-7">
34
- <span style="margin:8px">{{group.name}}</span>
35
- <q-btn id="change-role-group" v-if="canChangeRoleInGroup(group)" flat round small @click="onChangeRoleInGroup(group), $refs.popover[index].hide()">
36
- <q-icon :name="roleIcon(roleForGroup(group))" />
37
- </q-btn>
38
- <q-btn id="leave-group" v-if="canLeaveGroup(group)" flat round small @click="onLeaveGroup(group), $refs.popover[index].hide()">
39
- <q-icon name="las la-minus-circle" />
40
- </q-btn>
41
- </q-toolbar>
42
- </q-menu>
43
- <q-tooltip>{{ group.name }}</q-tooltip>
44
- </q-btn>
45
- </template>
46
- <q-btn id="join-group" v-if="canJoinGroup()" flat small round @click="onJoinGroup()">
47
- <q-icon name="las la-plus-circle" color="grey-7">
48
- <q-tooltip>{{ $t('KMemberCard.JOIN_GROUP_LABEL') }}</q-tooltip>
49
- </q-icon>
50
- </q-btn>
51
- </div>
52
- <q-separator />
53
- <template v-if="expireAt">
54
- <div class="q-pa-sm">
55
- <cite class="text-red" v-if="expireAt">{{$t('KMemberCard.EXPIRE_AT_LABEL')}} {{expireAt.toLocaleString()}}</cite>
26
+ <!-- Tags section -->
27
+ <k-card-section v-if="!item.expireAt"
28
+ :title="$t('KMemberCard.TAGS_SECTION')"
29
+ :actions="tagsActions"
30
+ :context="$props"
31
+ :dense="dense">
32
+ <div v-if="hasTags">
33
+ <k-chips-pane id="tags-pane" class="q-pa-sm" :chips="tags" />
34
+ </div>
35
+ <div v-else>
36
+ {{ $t('KMemberCard.NO_TAGS_LABEL')}}
56
37
  </div>
57
- </template>
38
+ </k-card-section>
39
+ <!-- Groups section -->
40
+ <k-card-section v-if="!item.expireAt"
41
+ :title="$t('KMemberCard.GROUPS_SECTION')"
42
+ :actions="groupsActions"
43
+ :context="$props"
44
+ :dense=dense>
45
+ <div v-if="hasGroups" class="row justify-start items-center">
46
+ <template v-for="(group, index) in groups">
47
+ <q-btn :id="(group.name + '-button') | kebabCase" :key="groupKey(group)" flat small round color="primary">
48
+ <q-avatar color="primary" text-color="white" size="2rem">{{ groupInitials(group) }}</q-avatar>
49
+ <q-menu ref="popover">
50
+ <q-toolbar inverted color="grey-7">
51
+ <span style="margin:8px">{{group.name}}</span>
52
+ <q-btn id="change-role-group" v-if="canChangeRoleInGroup(group)" flat round small @click="onChangeRoleInGroup(group), $refs.popover[index].hide()">
53
+ <q-icon :name="roleIcon(roleForGroup(group))" />
54
+ </q-btn>
55
+ <q-btn id="leave-group" v-if="canLeaveGroup(group)" flat round small @click="onLeaveGroup(group), $refs.popover[index].hide()">
56
+ <q-icon name="las la-minus-circle" />
57
+ </q-btn>
58
+ </q-toolbar>
59
+ </q-menu>
60
+ <q-tooltip>{{ group.name }}</q-tooltip>
61
+ </q-btn>
62
+ </template>
63
+ </div>
64
+ <div v-else>
65
+ {{ $t('KMemberCard.NO_GROUPS_LABEL')}}
66
+ </div>
67
+ </k-card-section>
68
+ <!-- Expiration section -->
69
+ <k-card-section v-if="item.expireAt" :dense="dense">
70
+ <div class="row full-width justify-between items-center no-wrap">
71
+ <span class="text-warning text-weight-bold" v-if="expireAt">
72
+ {{$t('KMemberCard.EXPIRE_AT_LABEL')}} {{expireAt.toLocaleString()}}
73
+ </span>
74
+ <k-panel :content="expirationActions" />
75
+ </div>
76
+ </k-card-section>
58
77
  </div>
59
78
  </k-card>
60
79
  </template>
@@ -65,11 +84,36 @@ import { Dialog } from 'quasar'
65
84
  import mixins from '../../mixins'
66
85
  import { getInitials, processIcon, isEmailValid } from '../../utils'
67
86
  import { Roles, getRoleForOrganisation, getRoleForGroup, findGroupsWithRole } from '../../../common/permissions'
87
+ import { KCard, KCardSection } from '../collection'
88
+ import { KAvatar, KPanel, KChipsPane } from '../frame'
68
89
 
69
90
  export default {
70
91
  name: 'k-member-card',
92
+ components: {
93
+ KCard,
94
+ KCardSection,
95
+ KAvatar,
96
+ KPanel,
97
+ KChipsPane
98
+ },
71
99
  mixins: [mixins.baseItem],
72
100
  computed: {
101
+ header () {
102
+ const components = _.filter(this.itemActions, { scope: 'header' })
103
+ components.splice(0, 0, { id: 'role-badge', component: 'QBadge', label: this.$t(this.roleLabel(this.role)), color: 'grey-7' }, { component: 'QSpace' })
104
+ return components
105
+ },
106
+ role () {
107
+ const role = getRoleForOrganisation(this.item, this.contextId)
108
+ if (!_.isUndefined(role)) return Roles[role]
109
+ return ''
110
+ },
111
+ tagsActions () {
112
+ return _.filter(this.itemActions, { scope: 'tags' })
113
+ },
114
+ hasTags () {
115
+ return !_.isEmpty(this.tags)
116
+ },
73
117
  tags () {
74
118
  // Check for custom tags field
75
119
  let tags = this.options.tagsField ? _.get(this.item, this.options.tagsField, '') : this.item.tags
@@ -79,16 +123,23 @@ export default {
79
123
  tags.forEach(tag => processIcon(tag))
80
124
  return tags
81
125
  },
82
- memberGroups () {
126
+ groupsActions () {
127
+ return _.filter(this.itemActions, { scope: 'groups' })
128
+ },
129
+ hasGroups () {
130
+ return !_.isEmpty(this.groups)
131
+ },
132
+ groups () {
83
133
  return _.filter(this.item.groups, { context: this.contextId })
84
134
  },
85
- role () {
86
- const role = getRoleForOrganisation(this.item, this.contextId)
87
- if (!_.isUndefined(role)) return Roles[role]
88
- return ''
135
+ expirationActions () {
136
+ return _.filter(this.itemActions, { scope: 'expiration' })
89
137
  },
90
138
  expireAt () {
91
139
  return this.item.expireAt ? new Date(this.item.expireAt) : null
140
+ },
141
+ dense () {
142
+ return this.$q.screen.lt.sm
92
143
  }
93
144
  },
94
145
  methods: {
@@ -185,7 +236,7 @@ export default {
185
236
  },
186
237
  onChangeRoleInGroup (group) {
187
238
  this.$router.push({
188
- name: 'change-role',
239
+ name: 'edit-member-role',
189
240
  params: {
190
241
  contextId: this.contextId,
191
242
  objectId: this.item._id,
@@ -193,12 +244,6 @@ export default {
193
244
  }
194
245
  })
195
246
  },
196
- onJoinGroup () {
197
- this.$router.push({
198
- name: 'join-group',
199
- params: { contextId: this.contextId, objectId: this.item._id }
200
- })
201
- },
202
247
  onLeaveGroup (group) {
203
248
  Dialog.create({
204
249
  title: this.$t('KMemberCard.LEAVE_GROUP_DIALOG_TITLE', { group: group.name }),
@@ -226,10 +271,6 @@ export default {
226
271
  }
227
272
  },
228
273
  created () {
229
- // Load the required components
230
- this.$options.components['k-card'] = this.$load('collection/KCard')
231
- this.$options.components['k-avatar'] = this.$load('frame/KAvatar')
232
- this.$options.components['k-tags-pane'] = this.$load('team/KTagsPane')
233
274
  // Load the role configuration
234
275
  this.roleIcons = this.$config('roles.icons')
235
276
  this.roleLabels = this.$config('roles.labels')
@@ -11,7 +11,13 @@
11
11
  :renderer="renderer"
12
12
  :contextId="contextId"
13
13
  :base-query="baseQuery"
14
- :filter-query="filter.query" />
14
+ :filter-query="filter.query">
15
+ <template slot="empty-section">
16
+ <div class="absolute-center">
17
+ <k-stamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
18
+ </div>
19
+ </template>
20
+ </k-grid>
15
21
  <!--
16
22
  Router view to enable routing to modals
17
23
  -->
@@ -99,10 +105,11 @@ export default {
99
105
  }
100
106
  }
101
107
  },
102
- created () {
108
+ beforeCreate () {
103
109
  // Load the required components
104
110
  this.$options.components['k-page'] = this.$load('layout/KPage')
105
111
  this.$options.components['k-grid'] = this.$load('collection/KGrid')
112
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
106
113
  },
107
114
  beforeDestroy () {
108
115
  this.unsubscribeUsers()
@@ -10,7 +10,13 @@
10
10
  :renderer="renderer"
11
11
  :base-query="sorter.query"
12
12
  :filter-query="filter.query"
13
- :list-strategy="'smart'" />
13
+ :list-strategy="'smart'">
14
+ <template slot="empty-section">
15
+ <div class="absolute-center">
16
+ <k-stamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
17
+ </div>
18
+ </template>
19
+ </k-grid>
14
20
  <!--
15
21
  Router view to enable routing to modals
16
22
  -->
@@ -40,6 +46,7 @@ export default {
40
46
  // Load the required components
41
47
  this.$options.components['k-page'] = this.$load('layout/KPage')
42
48
  this.$options.components['k-grid'] = this.$load('collection/KGrid')
49
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
43
50
  }
44
51
  }
45
52
  </script>
@@ -1,40 +1,43 @@
1
1
  <template>
2
- <k-card v-bind="$props" :actions="itemActions" :bind-actions="false" :options="{ nameField: 'value' }">
3
- <div slot="card-label">
4
- <span class="text-subtitle1 text-weight-medium ellipsis">{{ item.value }}</span>
5
- </div>
2
+ <k-card
3
+ v-bind="$props"
4
+ :actions="itemActions"
5
+ :bind-actions="false"
6
+ :options="{ nameField: 'value' }"
7
+ :dense="dense">
6
8
  <!--
7
9
  Card content
8
10
  -->
9
11
  <div slot="card-content">
10
- <q-list bordered>
11
- <q-item
12
+ <!-- Members -->
13
+ <k-card-section :title="$t('KTagCard.MEMBERS_SECTION')" :dense="dense">
14
+ <k-action
12
15
  id="list-members"
13
- clickable
14
- @click="onListMembers">
15
- <q-item-section avatar>
16
- <q-icon name="las la-user-friends" />
17
- </q-item-section>
18
- <q-item-section>
19
- <q-item-label>
20
- {{ $t(`KTagCard.MEMBERS_LABEL`, { count: item.count }) }}
21
- </q-item-label>
22
- <q-tooltip>
23
- {{ $t(`KTagCard.VIEW_MEMBERS_LABEL`) }}
24
- </q-tooltip>
25
- </q-item-section>
26
- </q-item>
27
- </q-list>
16
+ icon="las la-user-friends"
17
+ :label="$t('KTagCard.MEMBERS_LABEL', { count: item.count })"
18
+ :tooltip="$t('KTagCard.VIEW_MEMBERS_LABEL')"
19
+ @triggered="onListMembers" />
20
+ </k-card-section>
28
21
  </div>
29
22
  </k-card>
30
23
  </template>
31
24
 
32
25
  <script>
33
26
  import mixins from '../../mixins'
27
+ import { KCard, KCardSection } from '../collection'
34
28
 
35
29
  export default {
36
30
  name: 'k-tag-card',
31
+ components: {
32
+ KCard,
33
+ KCardSection
34
+ },
37
35
  mixins: [mixins.baseItem],
36
+ computed: {
37
+ dense () {
38
+ return this.$q.screen.lt.sm
39
+ }
40
+ },
38
41
  methods: {
39
42
  onListMembers () {
40
43
  // Setup filter accordingly
@@ -47,12 +50,9 @@ export default {
47
50
  this.$router.push({ name: 'members-activity', params: { contextId: this.contextId, mode: 'filter' } })
48
51
  }
49
52
  },
50
- created () {
53
+ beforeCreate () {
51
54
  // Load the required components
52
- this.$options.components['k-card'] = this.$load('collection/KCard')
53
- this.$options.components['k-tags-pane'] = this.$load('team/KTagsPane')
54
- // We will use the member role to illustrate the number of users with the tag
55
- this.roleIcons = this.$config('roles.icons')
55
+ this.$options.components['k-action'] = this.$load('frame/KAction')
56
56
  }
57
57
  }
58
58
  </script>
@@ -11,7 +11,13 @@
11
11
  :renderer="renderer"
12
12
  :base-query="sorter.query"
13
13
  :filter-query="filter.query"
14
- :list-strategy="'smart'" />
14
+ :list-strategy="'smart'">
15
+ <template slot="empty-section">
16
+ <div class="absolute-center">
17
+ <k-stamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KGrid.EMPTY_GRID')" />
18
+ </div>
19
+ </template>
20
+ </k-grid>
15
21
  <!--
16
22
  Router view to enable routing to modals
17
23
  -->
@@ -43,10 +49,11 @@ export default {
43
49
  }, this.activityOptions.items)
44
50
  }
45
51
  },
46
- created () {
52
+ beforeCreate () {
47
53
  // Load the required components
48
54
  this.$options.components['k-page'] = this.$load('layout/KPage')
49
55
  this.$options.components['k-grid'] = this.$load('collection/KGrid')
56
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
50
57
  }
51
58
  }
52
59
  </script>
@@ -0,0 +1,144 @@
1
+ <template>
2
+ <div class="row justify-center items-center q-gutter-x-none">
3
+ <div class="q-pl-md">{{ $t('KTimeRange.START_LABEL') }}</div>
4
+ <k-action
5
+ id="start-time-action"
6
+ tooltip="KTimeRange.PICK_START_DATE_LABEL"
7
+ :label="formattedStart">
8
+ <template v-slot:content>
9
+ <q-popup-proxy ref="popup" transition-show="scale" transition-hide="scale">
10
+ <q-date id="start-time-popup" v-model="formattedStart" mask="DD/MM/YY"
11
+ :title="formattedStart" :subtitle="$t('KTimeRange.START_LABEL')"
12
+ @input="onTimeRangeChanged" :options="checkTimeRange" />
13
+ </q-popup-proxy>
14
+ </template>
15
+ </k-action>
16
+ <div class="q-pl-md">{{ $t('KTimeRange.END_LABEL') }}</div>
17
+ <k-action
18
+ id="end-time-action"
19
+ tooltip="KTimeRange.PICK_END_DATE_LABEL"
20
+ :label="formattedEnd">
21
+ <template v-slot:content>
22
+ <q-popup-proxy ref="popup" transition-show="scale" transition-hide="scale">
23
+ <q-date id="end-time-popup" v-model="formattedEnd" mask="DD/MM/YY"
24
+ :title="formattedEnd" :subtitle="$t('KTimeRange.END_LABEL')"
25
+ @input="onTimeRangeChanged" :options="checkTimeLimit" />
26
+ </q-popup-proxy>
27
+ </template>
28
+ </k-action>
29
+ <q-separator vertical size="2" />
30
+ <k-menu
31
+ id="timerange-selector"
32
+ icon="las la-calendar"
33
+ :content="entries"
34
+ action-renderer="item" />
35
+ </div>
36
+ </template>
37
+
38
+ <script>
39
+ import moment from 'moment'
40
+ import { Time } from '../../time'
41
+ import KAction from '../frame/KAction.vue'
42
+ import KStamp from '../frame/KStamp.vue'
43
+ import KMenu from '../menu/KMenu.vue'
44
+
45
+ export default {
46
+ name: 'k-time-range',
47
+ components: {
48
+ KAction,
49
+ KStamp,
50
+ KMenu
51
+ },
52
+ computed: {
53
+ formattedStart: {
54
+ get: function () {
55
+ return this.start.format('DD/MM/YY')
56
+ },
57
+ set: function (value) {
58
+ this.start = moment(value, 'DD/MM/YY')
59
+ }
60
+ },
61
+ formattedEnd: {
62
+ get: function () {
63
+ return this.end.format('DD/MM/YY')
64
+ },
65
+ set: function (value) {
66
+ this.end = moment(value, 'DD/MM/YY')
67
+ }
68
+ }
69
+ },
70
+ data () {
71
+ return {
72
+ start: Time.getRange().start,
73
+ end: Time.getRange().end,
74
+ entries: [
75
+ {
76
+ id: 'last-day',
77
+ label: 'KTimeRange.LAST_DAY_LABEL',
78
+ handler: () => this.quickRangeTriggered(moment.duration(1, 'days'))
79
+ },
80
+ {
81
+ id: 'last-2-days',
82
+ label: 'KTimeRange.LAST_2_DAYS_LABEL',
83
+ handler: () => this.quickRangeTriggered(moment.duration(2, 'days'))
84
+ },
85
+ {
86
+ id: 'last-3-days',
87
+ label: 'KTimeRange.LAST_3_DAYS_LABEL',
88
+ handler: () => this.quickRangeTriggered(moment.duration(3, 'days'))
89
+ },
90
+ {
91
+ id: 'last-week',
92
+ label: 'KTimeRange.LAST_WEEK_LABEL',
93
+ handler: () => this.quickRangeTriggered(moment.duration(1, 'weeks'))
94
+ },
95
+ {
96
+ id: 'last-2-weeks',
97
+ label: 'KTimeRange.LAST_2_WEEKS_LABEL',
98
+ handler: () => this.quickRangeTriggered(moment.duration(2, 'weeks'))
99
+ },
100
+ {
101
+ id: 'last-month',
102
+ label: 'KTimeRange.LAST_MONTH_LABEL',
103
+ handler: () => this.quickRangeTriggered(moment.duration(1, 'months'))
104
+ },
105
+ {
106
+ id: 'last-3-months',
107
+ label: 'KTimeRange.LAST_3_MONTHS_LABEL',
108
+ handler: () => this.quickRangeTriggered(moment.duration(3, 'months'))
109
+ },
110
+ {
111
+ id: 'last-6-months',
112
+ label: 'KTimeRange.LAST_6_MONTHS_LABEL',
113
+ handler: () => this.quickRangeTriggered(moment.duration(6, 'months'))
114
+ },
115
+ {
116
+ id: 'last-year',
117
+ label: 'KTimeRange.LAST_YEAR_LABEL',
118
+ handler: () => this.quickRangeTriggered(moment.duration(1, 'years'))
119
+ }
120
+ ]
121
+ }
122
+ },
123
+ methods: {
124
+ checkTimeRange (date) {
125
+ return moment(date).isSameOrBefore(this.end)
126
+ },
127
+ checkTimeLimit (date) {
128
+ return moment(date).isSameOrBefore(moment()) && moment(date).isAfter(this.start)
129
+ },
130
+ quickRangeTriggered (duration) {
131
+ this.end = moment()
132
+ this.start = moment().subtract(duration).startOf('day')
133
+ this.onTimeRangeChanged()
134
+ },
135
+ onTimeRangeChanged () {
136
+ Time.patchRange({ start: this.start, end: this.end })
137
+ }
138
+ },
139
+ beforeDestroy () {
140
+ // Reset the filter, we keep track of any existing items previously set by another activity
141
+ this.$store.patch('sorter', {})
142
+ }
143
+ }
144
+ </script>
@@ -2,6 +2,7 @@
2
2
  <k-modal
3
3
  id="modal-viewer"
4
4
  :title="viewerTitle"
5
+ :buttons="getButtons()"
5
6
  v-model="isModalOpened"
6
7
  @opened="$emit('opened')"
7
8
  @closed="$emit('closed')">
@@ -24,6 +25,11 @@ export default {
24
25
  mixins.schemaProxy
25
26
  ],
26
27
  methods: {
28
+ getButtons () {
29
+ return [
30
+ { id: 'close-button', label: 'CLOSE', renderer: 'form-button', handler: () => this.closeModal() }
31
+ ]
32
+ },
27
33
  async openModal () {
28
34
  await this.refresh()
29
35
  this.isModalOpened = true
@@ -15,12 +15,6 @@ export default {
15
15
  mixins.objectProxy,
16
16
  mixins.schemaProxy
17
17
  ],
18
- watch: {
19
- '$route' (to, from) {
20
- // React to route changes but reusing the same component as this one is generic
21
- this.refresh()
22
- }
23
- },
24
18
  created () {
25
19
  // Load the required components
26
20
  this.$options.components['k-view'] = this.$load('form/KView')