@kalisio/kdk 1.3.4 → 1.4.1

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 (536) hide show
  1. package/.nyc_output/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 03fad5e1-0985-48cc-bcbf-b53b3567b484.json} +0 -0
  2. package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 0a387479-430c-4f37-afd0-7cb413b43f71.json} +0 -0
  3. package/.nyc_output/3def2322-4b64-4d43-886a-2f1d1ac42e7f.json +1 -0
  4. package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → 48c4e1d1-6dc8-4531-9519-3715b705900e.json} +0 -0
  5. package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → 5942dc79-7596-496b-aca5-0a4fbea84813.json} +0 -0
  6. package/.nyc_output/dcf9446b-252f-41f8-96f9-0119b21bc294.json +1 -0
  7. package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e4dcc112-f0f4-42fe-a481-fb65d8cb1b7d.json} +0 -0
  8. package/.nyc_output/processinfo/03fad5e1-0985-48cc-bcbf-b53b3567b484.json +1 -0
  9. package/.nyc_output/processinfo/0a387479-430c-4f37-afd0-7cb413b43f71.json +1 -0
  10. package/.nyc_output/processinfo/3def2322-4b64-4d43-886a-2f1d1ac42e7f.json +1 -0
  11. package/.nyc_output/processinfo/48c4e1d1-6dc8-4531-9519-3715b705900e.json +1 -0
  12. package/.nyc_output/processinfo/5942dc79-7596-496b-aca5-0a4fbea84813.json +1 -0
  13. package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → dcf9446b-252f-41f8-96f9-0119b21bc294.json} +1 -1
  14. package/.nyc_output/processinfo/e4dcc112-f0f4-42fe-a481-fb65d8cb1b7d.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +251 -94
  17. package/README.md +1 -1
  18. package/coverage/core/api/application.js.html +145 -145
  19. package/coverage/core/api/authentication.js.html +36 -36
  20. package/coverage/core/api/db.js.html +74 -74
  21. package/coverage/core/api/hooks/hooks.account.js.html +4 -4
  22. package/coverage/core/api/hooks/hooks.authentication.js.html +4 -4
  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 +93 -45
  35. package/coverage/core/api/hooks/index.html +66 -66
  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 +1 -1
  49. package/coverage/core/api/services/account/index.html +1 -1
  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 +19 -19
  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 +32 -32
  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 +158 -158
  83. package/coverage/lcov-report/core/api/application.js.html +145 -145
  84. package/coverage/lcov-report/core/api/authentication.js.html +36 -36
  85. package/coverage/lcov-report/core/api/db.js.html +74 -74
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +4 -4
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +4 -4
  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 +93 -45
  100. package/coverage/lcov-report/core/api/hooks/index.html +66 -66
  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 +1 -1
  114. package/coverage/lcov-report/core/api/services/account/index.html +1 -1
  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 +19 -19
  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 +32 -32
  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 +158 -158
  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 +302 -275
  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 +3530 -3606
  193. package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
  194. package/coverage/map/api/hooks/hooks.query.js.html +302 -275
  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 +23 -158
  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/KFilter.vue +3 -2
  268. package/lib/core/client/components/collection/KGrid.vue +13 -18
  269. package/lib/core/client/components/collection/KHistory.vue +61 -89
  270. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  271. package/lib/core/client/components/collection/KItem.vue +21 -2
  272. package/lib/core/client/components/collection/KList.vue +9 -12
  273. package/lib/core/client/components/collection/KTable.vue +33 -39
  274. package/lib/core/client/components/collection/index.js +6 -1
  275. package/lib/core/client/components/collection/index.js.map +1 -1
  276. package/lib/core/client/components/editor/KEditor.vue +0 -6
  277. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  278. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  279. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  280. package/lib/core/client/components/form/KChipsField.vue +28 -23
  281. package/lib/core/client/components/form/KColorField.vue +30 -25
  282. package/lib/core/client/components/form/KForm.vue +0 -12
  283. package/lib/core/client/components/form/KIconField.vue +1 -0
  284. package/lib/core/client/components/form/KItemField.vue +8 -3
  285. package/lib/core/client/components/form/KRoleField.vue +56 -0
  286. package/lib/core/client/components/form/KSelectField.vue +16 -1
  287. package/lib/core/client/components/form/KView.vue +5 -14
  288. package/lib/core/client/components/frame/KAction.vue +18 -12
  289. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  290. package/lib/core/client/components/frame/KChart.vue +60 -0
  291. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  292. package/lib/core/client/components/frame/KContent.vue +1 -1
  293. package/lib/core/client/components/frame/KModal.vue +30 -44
  294. package/lib/core/client/components/frame/KPanel.vue +1 -1
  295. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  296. package/lib/core/client/components/frame/KSpot.vue +31 -0
  297. package/lib/core/client/components/frame/KStamp.vue +62 -0
  298. package/lib/core/client/components/frame/index.js +56 -1
  299. package/lib/core/client/components/frame/index.js.map +1 -1
  300. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  301. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  302. package/lib/core/client/components/input/KUploader.vue +14 -5
  303. package/lib/core/client/components/layout/KAbout.vue +9 -3
  304. package/lib/core/client/components/layout/KFab.vue +1 -1
  305. package/lib/core/client/components/layout/KPage.vue +44 -19
  306. package/lib/core/client/components/layout/KTour.vue +2 -2
  307. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  308. package/lib/core/client/components/layout/KWindow.vue +1 -1
  309. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  310. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  311. package/lib/core/client/components/menu/KMenu.vue +103 -0
  312. package/lib/core/client/components/team/KAddMember.vue +17 -9
  313. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  314. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  315. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  316. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  317. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  318. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  319. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  320. package/lib/core/client/components/team/KTagCard.vue +26 -26
  321. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  322. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  323. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  324. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  325. package/lib/core/client/i18n/core_en.json +132 -93
  326. package/lib/core/client/i18n/core_fr.json +55 -16
  327. package/lib/core/client/index.js +28 -14
  328. package/lib/core/client/index.js.map +1 -1
  329. package/lib/core/client/mixins/mixin.authorisation.js +28 -18
  330. package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
  331. package/lib/core/client/mixins/mixin.base-collection.js +57 -9
  332. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  333. package/lib/core/client/mixins/mixin.base-context.js +1 -1
  334. package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
  335. package/lib/core/client/mixins/mixin.base-editor.js +26 -16
  336. package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
  337. package/lib/core/client/mixins/mixin.base-field.js +0 -4
  338. package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
  339. package/lib/core/client/mixins/mixin.base-item.js +29 -14
  340. package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
  341. package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
  342. package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
  343. package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
  344. package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
  345. package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
  346. package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
  347. package/lib/core/client/mixins/mixin.service.js +5 -33
  348. package/lib/core/client/mixins/mixin.service.js.map +1 -1
  349. package/lib/core/client/services/index.js +23 -0
  350. package/lib/core/client/services/index.js.map +1 -1
  351. package/lib/core/client/services/local-settings.service.js +4 -0
  352. package/lib/core/client/services/local-settings.service.js.map +1 -1
  353. package/lib/core/client/time.js +131 -0
  354. package/lib/core/client/time.js.map +1 -0
  355. package/lib/core/common/permissions.js +65 -23
  356. package/lib/core/common/permissions.js.map +1 -1
  357. package/lib/core/common/schemas/groups.create.json +1 -1
  358. package/lib/core/common/schemas/groups.update.json +1 -1
  359. package/lib/core/common/schemas/organisations.create.json +1 -1
  360. package/lib/core/common/schemas/organisations.update.json +2 -2
  361. package/lib/core/common/schemas/settings.update.json +139 -0
  362. package/lib/core/common/schemas/tags.update.json +9 -1
  363. package/lib/map/api/hooks/hooks.query.js +48 -27
  364. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  365. package/lib/map/api/services/features/features.hooks.js +1 -1
  366. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  367. package/lib/map/client/components/KColorLegend.vue +25 -23
  368. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  369. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  370. package/lib/map/client/components/KFeaturesFilter.vue +15 -7
  371. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  372. package/lib/map/client/components/KLayerEditionToolbar.vue +43 -0
  373. package/lib/map/client/components/KLayerStyleEditor.vue +10 -4
  374. package/lib/map/client/components/KLayerStyleForm.vue +14 -11
  375. package/lib/map/client/components/KLocationInput.vue +126 -65
  376. package/lib/map/client/components/KLocationMap.vue +199 -84
  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 +15 -3
  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 +14 -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 +63 -16
  394. package/lib/map/client/i18n/map_fr.json +66 -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 +6 -1
  400. package/lib/map/client/leaflet/GradientPath.js.map +1 -1
  401. package/lib/map/client/leaflet/MaskLayer.js +64 -0
  402. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  403. package/lib/map/client/mixins/globe/mixin.base-globe.js +4 -1
  404. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  405. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  406. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  407. package/lib/map/client/mixins/index.js +8 -13
  408. package/lib/map/client/mixins/index.js.map +1 -1
  409. package/lib/map/client/mixins/map/mixin.base-map.js +30 -6
  410. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  411. package/lib/map/client/mixins/map/mixin.canvas-layers.js +275 -52
  412. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  413. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  414. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  415. package/lib/map/client/mixins/map/mixin.file-layers.js +25 -18
  416. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  417. package/lib/map/client/mixins/map/mixin.geojson-layers.js +18 -10
  418. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  419. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  420. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  421. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  422. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  423. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  424. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  425. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  426. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  427. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  428. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  429. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  430. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  431. package/lib/map/client/mixins/mixin.activity.js +60 -68
  432. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  433. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  434. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  435. package/lib/map/client/mixins/mixin.feature-service.js +7 -5
  436. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  437. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  438. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  439. package/lib/map/client/pixi-utils.js +9 -0
  440. package/lib/map/client/pixi-utils.js.map +1 -1
  441. package/lib/map/client/utils.js +50 -0
  442. package/lib/map/client/utils.js.map +1 -1
  443. package/lib/map/common/wfs-utils.js +1 -1
  444. package/lib/map/common/wfs-utils.js.map +1 -1
  445. package/lib/map/common/wmts-utils.js +31 -7
  446. package/lib/map/common/wmts-utils.js.map +1 -1
  447. package/lib/test/client/core/account.js +100 -0
  448. package/lib/test/client/core/account.js.map +1 -0
  449. package/lib/test/client/core/api.js +400 -0
  450. package/lib/test/client/core/api.js.map +1 -0
  451. package/lib/test/client/core/collection.js +109 -0
  452. package/lib/test/client/core/collection.js.map +1 -0
  453. package/lib/test/client/core/index.js +90 -0
  454. package/lib/test/client/core/index.js.map +1 -0
  455. package/lib/test/client/core/layout.js +221 -0
  456. package/lib/test/client/core/layout.js.map +1 -0
  457. package/lib/test/client/core/runner.js +204 -0
  458. package/lib/test/client/core/runner.js.map +1 -0
  459. package/lib/test/client/core/screens.js +68 -0
  460. package/lib/test/client/core/screens.js.map +1 -0
  461. package/lib/test/client/core/utils.js +304 -0
  462. package/lib/test/client/core/utils.js.map +1 -0
  463. package/lib/test/client/index.js +20 -0
  464. package/lib/test/client/index.js.map +1 -0
  465. package/lib/test/client/map/catalog.js +191 -0
  466. package/lib/test/client/map/catalog.js.map +1 -0
  467. package/lib/test/client/map/controls.js +54 -0
  468. package/lib/test/client/map/controls.js.map +1 -0
  469. package/lib/test/client/map/index.js +30 -0
  470. package/lib/test/client/map/index.js.map +1 -0
  471. package/package.json +17 -9
  472. package/test.client.js +1 -0
  473. package/tests/core/test-log-2021-07-15.log +71 -0
  474. package/tests/core/test-log-2021-09-02.log +47 -0
  475. package/tests/map/test-log-%DATE%.logYYYY-07-DD +12 -0
  476. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  477. package/tests/map/test-log-2021-07-12.log +12 -0
  478. package/tests/map/test-log-2021-07-15.log +5 -0
  479. package/tests/map/test-log-2021-09-02.log +3 -0
  480. package/.nyc_output/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  481. package/.nyc_output/2bece194-92f7-4971-a688-10604044a7fa.json +0 -1
  482. package/.nyc_output/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  483. package/.nyc_output/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  484. package/.nyc_output/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  485. package/.nyc_output/processinfo/0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json +0 -1
  486. package/.nyc_output/processinfo/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  487. package/.nyc_output/processinfo/20df4355-911a-4b16-a8ab-d3392e9f0a7f.json +0 -1
  488. package/.nyc_output/processinfo/257af0bb-96c3-465a-b5ef-a1df60078d5f.json +0 -1
  489. package/.nyc_output/processinfo/284aebfa-23fd-425f-9d72-e4b8904dc224.json +0 -1
  490. package/.nyc_output/processinfo/5cbee06e-be6e-468a-bd78-4793ee785fe4.json +0 -1
  491. package/.nyc_output/processinfo/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  492. package/.nyc_output/processinfo/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  493. package/.nyc_output/processinfo/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  494. package/lib/core/client/components/frame/KLabel.vue +0 -56
  495. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  496. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  497. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  498. package/lib/map/client/mixins/mixin.time.js +0 -73
  499. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  500. package/tests/core/account.test.js +0 -415
  501. package/tests/core/client.test.js.skip +0 -37
  502. package/tests/core/config/default.js +0 -97
  503. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  504. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  505. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  506. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  507. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  508. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  509. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  510. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  511. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  512. package/tests/core/data/logo.png +0 -0
  513. package/tests/core/hooks.test.js +0 -175
  514. package/tests/core/index.test.js +0 -418
  515. package/tests/core/notifications.test.js +0 -465
  516. package/tests/core/storage.test.js +0 -134
  517. package/tests/core/team.test.js +0 -610
  518. package/tests/core/utils.js +0 -59
  519. package/tests/map/alerts.test.js +0 -554
  520. package/tests/map/config/default.js +0 -112
  521. package/tests/map/config/layers.json +0 -37
  522. package/tests/map/daptiles.test.js +0 -41
  523. package/tests/map/data/DescribeCoverage.xml +0 -55
  524. package/tests/map/data/GetCoverage.tif +0 -0
  525. package/tests/map/data/adsb.observations.json +0 -132
  526. package/tests/map/data/dataset.grb.das +0 -55
  527. package/tests/map/data/dataset.grb.dds +0 -17
  528. package/tests/map/data/dataset.grb.dods +0 -0
  529. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  530. package/tests/map/data/subdataset.grb.dods +0 -0
  531. package/tests/map/data/vigicrues.observations.json +0 -47042
  532. package/tests/map/data/vigicrues.stations.json +0 -15422
  533. package/tests/map/data/zones.json +0 -1228
  534. package/tests/map/grid-sources.test.js +0 -304
  535. package/tests/map/hooks.test.js +0 -96
  536. package/tests/map/index.test.js +0 -333
@@ -36,12 +36,6 @@ export default {
36
36
  mixins.baseEditor(['form']),
37
37
  mixins.refsResolver(['form'])
38
38
  ],
39
- watch: {
40
- '$route' (to, from) {
41
- // React to route changes but reusing the same component as this one is generic
42
- this.refresh()
43
- }
44
- },
45
39
  methods: {
46
40
  onFieldChanged (field, value) {
47
41
  this.$emit('field-changed', field, value)
@@ -8,7 +8,6 @@
8
8
  @closed="$emit('closed')">
9
9
  <div slot="modal-content">
10
10
  <k-form :class="{ 'light-dimmed': applyInProgress }" ref="form" :schema="schema" @field-changed="onFieldChanged" />
11
- <q-spinner-cube color="primary" class="fixed-center" v-if="applyInProgress" size="4em" />
12
11
  </div>
13
12
  </k-modal>
14
13
  </template>
@@ -34,9 +33,10 @@ export default {
34
33
  ],
35
34
  computed: {
36
35
  buttons () {
37
- const buttons = [{
38
- id: 'apply-button', label: this.applyButton, renderer: 'form-button', handler: () => this.apply()
39
- }]
36
+ const buttons = [
37
+ { id: 'cancel-button', label: 'CANCEL', renderer: 'form-button', outline: true, handler: () => this.closeModal() },
38
+ { id: 'apply-button', label: this.applyButton, renderer: 'form-button', handler: () => this.apply() }
39
+ ]
40
40
  if (this.clearButton !== '') {
41
41
  buttons.push({
42
42
  id: 'clear-button', label: this.clearButton, renderer: 'form-button', outline: 'true', handler: () => this.clear()
@@ -0,0 +1,49 @@
1
+ <template>
2
+ <div>
3
+ <q-list>
4
+ <!--
5
+ Edit link
6
+ -->
7
+ <q-item id="edit-settings" @click="editSettings" clickable v-ripple>
8
+ <q-item-section avatar><q-icon name="las la-cog"/></q-item-section>
9
+ <q-item-section>{{$t('SETTINGS')}}</q-item-section>
10
+ </q-item>
11
+ </q-list>
12
+ <!--
13
+ Create editor
14
+ -->
15
+ <k-modal-editor
16
+ id="editor"
17
+ ref="editor"
18
+ service="settings"
19
+ objectId="settings"
20
+ :schema-properties="schemaFilter"
21
+ @applied="onSettingsEdited" />
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+
27
+ export default {
28
+ name: 'k-settings-editor',
29
+ data () {
30
+ return {
31
+ // Keep only properties declared in application mapping from the default editor schema
32
+ schemaFilter: Object.keys(this.$api.getService('settings').getSettingsMapping())
33
+ }
34
+ },
35
+ methods: {
36
+ editSettings () {
37
+ this.$refs.editor.openModal()
38
+ this.$emit('triggered')
39
+ },
40
+ onSettingsEdited () {
41
+ this.$refs.editor.closeModal()
42
+ }
43
+ },
44
+ beforeCreate () {
45
+ // Load the required components
46
+ this.$options.components['k-modal-editor'] = this.$load('editor/KModalEditor')
47
+ }
48
+ }
49
+ </script>
@@ -87,12 +87,6 @@ export default {
87
87
  autoProcessQueue () {
88
88
  return _.get(this.properties, 'field.autoProcessQueue', true)
89
89
  },
90
- storageService () {
91
- return this.$api.getService(this.properties.service || 'storage')
92
- },
93
- resourcesService () {
94
- return _.get(this.properties, 'field.resourcesService', '')
95
- },
96
90
  isObject () {
97
91
  return (this.properties.type === 'object')
98
92
  },
@@ -100,16 +94,22 @@ export default {
100
94
  if (this.isMultiple()) return []
101
95
  return (this.isObject() ? {} : '')
102
96
  },
103
- fill (value, object) {
104
- // Keep trak of object ID if any because it is required to access the files
105
- if (object) this.objectId = object._id
97
+ async fill (value, object) {
98
+ // Keep trak of object ID if any because it might be required to build the storage path
99
+ if (object) {
100
+ this.resource = object._id
101
+ }
106
102
  this.model = value
107
103
  if (this.isMultiple()) {
108
104
  this.files = this.model
109
105
  } else {
110
106
  this.files = (!_.isEmpty(this.model) ? [this.model] : [])
111
107
  }
112
- if (!this.readOnly) this.$refs.uploader.initialize(this.files)
108
+ if (!this.readOnly) {
109
+ // We need to force a refresh so that the prop is correctly updated by Vuejs in child component
110
+ await this.$nextTick()
111
+ this.$refs.uploader.initialize(this.files)
112
+ }
113
113
  },
114
114
  async apply (object, field) {
115
115
  // If not processing uploads on-the-fly upload when the form is being submitted on update
@@ -23,23 +23,23 @@
23
23
  >
24
24
  <!-- Content -->
25
25
  <template v-slot:default>
26
- <div class="row items-baseline">
26
+ <div class="row items-end">
27
27
  <template v-for="(chip, index) in chips">
28
- <q-chip
29
- :id="'chip-' + index"
30
- class="chip"
31
- :key="chipValue(chip) + '-' + index"
32
- :icon="chipIcon(chip)"
33
- :color="chipColor(chip)"
34
- @remove="onChipRemoved(chip)"
35
- @click="onChipClicked(chip)"
36
- clickable
37
- removable
38
- outline
39
- dense
40
- >
41
- {{chip.value}}
42
- </q-chip>
28
+ <div :key="chipValue(chip) + '-' + index" class="q-pb-sm">
29
+ <q-chip
30
+ :id="'chip-' + index"
31
+ class="chip"
32
+ :icon="chipIcon(chip)"
33
+ :color="chipColor(chip)"
34
+ :label="chipValue(chip)"
35
+ @remove="onChipRemoved(chip)"
36
+ @click="onChipClicked(chip)"
37
+ :clickable="Boolean(icon)"
38
+ removable
39
+ outline
40
+ dense
41
+ square />
42
+ </div>
43
43
  </template>
44
44
  <q-input class="q-pl-sm col-grow" :for="properties.name + '-field'" autofocus type="text" v-model="input" :after="inputActions" @keyup.enter="onChipAdded()" />
45
45
  </div>
@@ -70,7 +70,10 @@ export default {
70
70
  computed: {
71
71
  inputActions () {
72
72
  const actions = []
73
- if (_.findIndex(this.chips, { value: this.input }) === -1) {
73
+ const index = (this.icon
74
+ ? _.findIndex(this.chips, { value: this.input })
75
+ : _.findIndex(this.chips, this.input))
76
+ if (index === -1) {
74
77
  actions.push({
75
78
  icon: 'send',
76
79
  content: true,
@@ -87,6 +90,7 @@ export default {
87
90
  },
88
91
  data () {
89
92
  return {
93
+ icon: _.get(this.properties, 'field.icon', true),
90
94
  input: '',
91
95
  chips: []
92
96
  }
@@ -100,31 +104,32 @@ export default {
100
104
  this.chips = this.model.slice()
101
105
  },
102
106
  chipIcon (chip) {
103
- return getIconName(chip)
107
+ return (this.icon ? getIconName(chip) : undefined)
104
108
  },
105
109
  chipColor (chip) {
106
- return _.get(chip, 'icon.color', 'dark')
110
+ return (this.icon ? _.get(chip, 'icon.color', 'dark') : 'dark')
107
111
  },
108
112
  chipValue (chip) {
109
- return chip.value || chip.name
113
+ return (this.icon ? chip.value || chip.name : chip)
110
114
  },
111
115
  onChipAdded () {
112
- const chip = {
116
+ const chip = (this.icon ? {
113
117
  value: this.input,
114
118
  icon: {
115
119
  name: _.get(this.properties.field, 'icon.name', ''),
116
120
  color: _.get(this.properties.field, 'icon.color', 'dark')
117
121
  }
118
- }
122
+ } : this.input)
119
123
  this.chips.push(chip)
120
124
  this.input = ''
121
125
  this.updateModel()
122
126
  },
123
127
  onChipRemoved (oldChip) {
124
- this.chips = this.chips.filter(chip => chip.value !== oldChip.value)
128
+ this.chips = this.chips.filter(chip => (this.icon ? chip.value !== oldChip.value : chip !== oldChip))
125
129
  this.updateModel()
126
130
  },
127
131
  onChipClicked (chip) {
132
+ if (!this.icon) return
128
133
  this.selectedChip = chip
129
134
  this.$refs.iconChooser.open(chip.icon)
130
135
  },
@@ -1,30 +1,32 @@
1
1
  <template>
2
- <div v-if="readOnly" :id="properties.name + '-field'">
3
- <div :style="`width: 50px; height: 18px; border-radius: 3px; background-color: ${model};`" />
2
+ <div>
3
+ <div v-if="readOnly" :id="properties.name + '-field'">
4
+ <k-spot :color="model" width="50px" height="18px" border-radius="3px" />
5
+ </div>
6
+ <q-field v-else
7
+ :for="properties.name + '-field'"
8
+ :label="label"
9
+ :value="model"
10
+ :error-message="errorLabel"
11
+ :error="hasError"
12
+ :disabled="disabled"
13
+ clearable
14
+ bottom-slots
15
+ @click.native="picker = true"
16
+ @clear="model=''">
17
+ <!-- control -->
18
+ <template v-slot:control>
19
+ <k-spot :id="properties.name + '-field'" :color="model" width="50px" height="18px" border-radius="3px" />
20
+ <q-dialog v-model="picker">
21
+ <q-color no-header format-model="hex" v-model="model" @changed="picker = false"/>
22
+ </q-dialog>
23
+ </template>
24
+ <!-- Helper -->
25
+ <template v-if="helper" v-slot:hint>
26
+ <span v-html="helper"></span>
27
+ </template>
28
+ </q-field>
4
29
  </div>
5
- <q-field v-else
6
- :for="properties.name + '-field'"
7
- :label="label"
8
- :value="model"
9
- :error-message="errorLabel"
10
- :error="hasError"
11
- :disabled="disabled"
12
- clearable
13
- bottom-slots
14
- @click.native="picker = true"
15
- @clear="model=''">
16
- <!-- control -->
17
- <template v-slot:control>
18
- <div :style="`width: 50px; height: 18px; border-radius: 3px; background-color: ${model};`" />
19
- <q-dialog v-model="picker">
20
- <q-color no-header format-model="hex" v-model="model" @changed="picker = false"/>
21
- </q-dialog>
22
- </template>
23
- <!-- Helper -->
24
- <template v-if="helper" v-slot:hint>
25
- <span v-html="helper"></span>
26
- </template>
27
- </q-field>
28
30
  </template>
29
31
 
30
32
  <script>
@@ -46,6 +48,9 @@ export default {
46
48
  emptyModel () {
47
49
  return ''
48
50
  }
51
+ },
52
+ created () {
53
+ this.$options.components['k-spot'] = this.$load('frame/KSpot')
49
54
  }
50
55
  }
51
56
  </script>
@@ -11,7 +11,6 @@
11
11
  :ref="field.name"
12
12
  :required="field.required"
13
13
  :properties="field"
14
- :display="display"
15
14
  @field-changed="onFieldChanged"
16
15
  />
17
16
  </slot>
@@ -31,7 +30,6 @@
31
30
  :ref="field.name"
32
31
  :required="field.required"
33
32
  :properties="field"
34
- :display="display"
35
33
  @field-changed="onFieldChanged" />
36
34
  </slot>
37
35
  <slot v-if="field.group === group" :name="'after-' + field.name"/>
@@ -73,16 +71,6 @@ export default {
73
71
  clearOnCreate: {
74
72
  type: Boolean,
75
73
  default: true
76
- },
77
- display: {
78
- type: Object,
79
- default: () => {
80
- return {
81
- icon: false,
82
- label: false,
83
- labelWidth: 3
84
- }
85
- }
86
74
  }
87
75
  },
88
76
  data () {
@@ -31,6 +31,7 @@
31
31
  <!-- Content -->
32
32
  <template v-slot:default>
33
33
  <q-icon
34
+ class="q-pt-xs"
34
35
  size="sm"
35
36
  id="choosed-icon"
36
37
  :name="iconName"
@@ -47,7 +47,7 @@
47
47
  </q-item-section>
48
48
  <q-item-section>
49
49
  <q-item-label>{{ getLabel(scope.opt) }}</q-item-label>
50
- <q-item-label caption>{{ scope.opt.description }}</q-item-label>
50
+ <q-item-label caption>{{ getDescription(scope.opt) }}</q-item-label>
51
51
  </q-item-section>
52
52
  </q-item>
53
53
  </template>
@@ -78,7 +78,11 @@ export default {
78
78
  },
79
79
  getLabel (item) {
80
80
  const service = _.find(this.properties.services, { service: item.service })
81
- return _.get(item, service.field)
81
+ return _.get(item, service.field, 'name')
82
+ },
83
+ getDescription (item) {
84
+ const service = _.find(this.properties.services, { service: item.service })
85
+ return _.get(item, service.description, 'description')
82
86
  },
83
87
  getIcon (item) {
84
88
  return _.get(item, 'icon.name', _.get(item, 'icon', ''))
@@ -103,15 +107,16 @@ export default {
103
107
  return _.get(item1, item1.field) === _.get(item2, item2.field) && item1.service === item2.service
104
108
  })
105
109
  } else this.options = results
106
- this.$refs.select.updateInputValue('')
107
110
  })
108
111
  },
109
112
  onSelected (value) {
110
113
  if (value) {
114
+ // FIXME: ???
111
115
  if (this.properties.multiselect) this.model = this.items
112
116
  else this.model = this.items
113
117
  } else this.model = this.emptyModel()
114
118
  this.options = []
119
+ this.$refs.select.updateInputValue('')
115
120
  this.onChanged()
116
121
  }
117
122
  }
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <div v-if="readOnly" :id="properties.name + '-field'">
3
+ <q-chip dense />
4
+ </div>
5
+ <q-field v-else
6
+ :for="properties.name + '-field'"
7
+ :value="model"
8
+ :label="label"
9
+ @input="onChanged"
10
+ borderless
11
+ :error-message="errorLabel"
12
+ :error="hasError"
13
+ :disabled="disabled"
14
+ bottom-slots
15
+ >
16
+ <!-- Content -->
17
+ <template v-slot:default>
18
+ <q-option-group
19
+ :id="properties.name + '-field'"
20
+ v-model="model"
21
+ :options="roles()"
22
+ inline />
23
+ </template>
24
+ <!-- Helper -->
25
+ <template v-if="helper" v-slot:hint>
26
+ <span v-html="helper"></span>
27
+ </template>
28
+ </q-field>
29
+ </template>
30
+
31
+ <script>
32
+ import _ from 'lodash'
33
+ import mixins from '../../mixins'
34
+ import { RoleNames } from '../../../common/permissions'
35
+ import { QOptionGroup } from 'quasar'
36
+
37
+ export default {
38
+ name: 'k-role-field',
39
+ components: {
40
+ QOptionGroup
41
+ },
42
+ mixins: [mixins.baseField],
43
+ methods: {
44
+ roles () {
45
+ return _.map(RoleNames, role => { return { label: this.$t(_.upperCase(role)), value: role } })
46
+ },
47
+ emptyModel () {
48
+ return RoleNames[0]
49
+ },
50
+ isEmpty () {
51
+ // Can't actually be
52
+ return false
53
+ }
54
+ }
55
+ }
56
+ </script>
@@ -18,6 +18,7 @@
18
18
  @input='onChanged'
19
19
  emit-value
20
20
  map-options
21
+ :clearable="clearable"
21
22
  :error="hasError"
22
23
  :error-message="errorLabel"
23
24
  :disabled="disabled"
@@ -49,6 +50,9 @@ export default {
49
50
  name: 'k-select-field',
50
51
  mixins: [mixins.baseField],
51
52
  computed: {
53
+ clearable () {
54
+ return _.get(this.properties, 'field.clearable', true)
55
+ },
52
56
  multiple () {
53
57
  return _.get(this.properties, 'field.multiple', false)
54
58
  },
@@ -72,7 +76,18 @@ export default {
72
76
  },
73
77
  methods: {
74
78
  getId (option) {
75
- return _.kebabCase(option.value)
79
+ let id = option.value
80
+ // Complex object ?
81
+ if (typeof id === 'object') {
82
+ // Extract value property or use label if none
83
+ const valueField = _.get(this.properties, 'field.valueField')
84
+ if (valueField) id = _.get(id, valueField)
85
+ else id = option.label
86
+ } else {
87
+ // Ensure string not eg number
88
+ id = id.toString()
89
+ }
90
+ return _.kebabCase(id)
76
91
  },
77
92
  emptyModel () {
78
93
  const multiple = _.get(this.properties, 'field.multiple', false)
@@ -5,7 +5,7 @@
5
5
  -->
6
6
  <template v-for="field in fields">
7
7
  <div v-if="!field.group" :key="field.name" class="row items-center"
8
- v-bind:class="{'k-view-row': options.separators }"
8
+ v-bind:class="{ 'k-view-row': separators }"
9
9
  >
10
10
  <!-- Field label -->
11
11
  <span class="col-xs-5 col-sm-4 col-3 text-caption">
@@ -16,7 +16,6 @@
16
16
  :is="field.componentKey"
17
17
  v-bind="$props"
18
18
  :properties="field"
19
- :display="options"
20
19
  :readOnly="true" />
21
20
  </div>
22
21
  </template>
@@ -27,7 +26,7 @@
27
26
  <q-expansion-item :key="group" icon="las la-file-alt" :group="group" :label="$t(group)">
28
27
  <template v-for="field in fields">
29
28
  <div v-if="field.group === group" :key="field.group + field.name" class="row items-center"
30
- v-bind:class="{'k-view-row': options.separators }"
29
+ v-bind:class="{ 'k-view-row': separators }"
31
30
  >
32
31
  <!-- Field label -->
33
32
  <span class="col-xs-5 col-sm-4 col-3 text-caption">
@@ -38,7 +37,6 @@
38
37
  :is="field.componentKey"
39
38
  v-bind="$props"
40
39
  :properties="field"
41
- :display="options"
42
40
  :readOnly="true" />
43
41
  </div>
44
42
  </template>
@@ -61,16 +59,9 @@ export default {
61
59
  type: Object,
62
60
  default: null
63
61
  },
64
- options: {
65
- type: Object,
66
- default: () => {
67
- return {
68
- icon: false,
69
- label: false,
70
- labelWidth: 3,
71
- separators: false
72
- }
73
- }
62
+ separators: {
63
+ type: Boolean,
64
+ default: false
74
65
  }
75
66
  },
76
67
  data () {
@@ -4,17 +4,20 @@
4
4
  -->
5
5
  <q-btn v-if="renderer === 'button'"
6
6
  :id="id"
7
- :label="$q.screen.gt.xs ? computedLabel : ''"
8
7
  no-caps
8
+ no-wrap
9
9
  :icon="computedIcon"
10
10
  :color="computedColor"
11
11
  :size="size"
12
- :flat="true"
12
+ flat
13
13
  :round="label===''"
14
14
  :rounded="label!==''"
15
15
  :dense="dense"
16
- :disabled="disabled"
16
+ :disable="disabled"
17
17
  @click="onClicked(arguments[0])">
18
+ <div v-if="computedLabel" class="ellipsis q-pl-md">
19
+ {{ computedLabel }}
20
+ </div>
18
21
  <!-- tooltip -->
19
22
  <q-tooltip v-if="computedTooltip">
20
23
  {{ computedTooltip }}
@@ -32,14 +35,17 @@
32
35
  -->
33
36
  <q-btn v-else-if="renderer === 'form-button'"
34
37
  :id="id"
35
- :label="computedLabel"
38
+ no-wrap
36
39
  color="primary"
37
40
  :outline="outline"
38
41
  :size="size"
39
42
  :dense="dense"
40
- :disabled="disabled"
43
+ :disable="disabled"
41
44
  :loading="loading"
42
45
  @click="onClicked(arguments[0])">
46
+ <div class="ellipsis">
47
+ {{ computedLabel }}
48
+ </div>
43
49
  </q-btn>
44
50
  <!--
45
51
  Item renderer
@@ -50,7 +56,7 @@
50
56
  :dense="dense"
51
57
  :disabled="disabled"
52
58
  @click="onClicked(arguments[0])">
53
- <q-item-section avatar>
59
+ <q-item-section v-if="computedIcon || badge" avatar>
54
60
  <q-icon :dense="dense" :name="computedIcon" :color="computedColor" />
55
61
  <!-- badge -->
56
62
  <q-badge v-if="badge" v-bind="badge" :label="computedBadgeLabel">
@@ -138,7 +144,7 @@ export default {
138
144
  },
139
145
  toggle: {
140
146
  type: Object,
141
- default: () => null
147
+ default: () => {}
142
148
  },
143
149
  label: {
144
150
  type: String,
@@ -204,23 +210,23 @@ export default {
204
210
  },
205
211
  computedLabel () {
206
212
  // Check also for translation key or already translated message
207
- if (this.isToggled && this.toggle.label) {
213
+ if (this.isToggled && _.has(this.toggle, 'label')) {
208
214
  return (this.$i18n.i18next.exists(this.toggle.label) ? this.$t(this.toggle.label) : this.toggle.label)
209
215
  } else {
210
216
  return (this.$i18n.i18next.exists(this.label) ? this.$t(this.label) : this.label)
211
217
  }
212
218
  },
213
219
  computedIcon () {
214
- if (this.isToggled && this.toggle.icon) return this.toggle.icon
220
+ if (this.isToggled && _.has(this.toggle, 'icon')) return this.toggle.icon
215
221
  return this.icon
216
222
  },
217
223
  computedColor () {
218
- if (this.isToggled) return this.toggle.color || 'accent'
224
+ if (this.isToggled) return _.get(this.toggle, 'color', 'accent')
219
225
  return this.color
220
226
  },
221
227
  computedTooltip () {
222
228
  // Check also for translation key or already translated message
223
- if (this.isToggled && this.toggle.tooltip) {
229
+ if (this.isToggled && _.has(this.toggle, 'tooltip')) {
224
230
  return (this.$i18n.i18next.exists(this.toggle.tooltip) ? this.$t(this.toggle.tooltip) : this.toggle.tooltip)
225
231
  } else {
226
232
  return (this.$i18n.i18next.exists(this.tooltip) ? this.$t(this.tooltip) : this.tooltip)
@@ -228,7 +234,7 @@ export default {
228
234
  },
229
235
  computedBadgeLabel () {
230
236
  // Check also for translation key or already translated message
231
- if (this.badge && this.badge.label) {
237
+ if (this.badge && _.has(this.badge, 'label')) {
232
238
  return (this.$i18n.i18next.exists(this.badge.label) ? this.$t(this.badge.label) : this.badge.label)
233
239
  } else {
234
240
  // Take care that changing this to null or '' breaks the display in Quasar
@@ -3,18 +3,18 @@
3
3
  <q-skeleton v-if="skeleton" type="QAvatar" :size="size" />
4
4
  <q-avatar v-if="avatar" :size="size">
5
5
  <img :src="avatar">
6
- <q-tooltip>
6
+ <q-tooltip v-if="name">
7
7
  {{ name }}
8
8
  </q-tooltip>
9
9
  </q-avatar>
10
10
  <q-avatar v-else-if="icon" :size="size" :color="color" text-color="white" :icon="icon">
11
- <q-tooltip>
11
+ <q-tooltip v-if="name">
12
12
  {{ name }}
13
13
  </q-tooltip>
14
14
  </q-avatar>
15
15
  <q-avatar v-else-if="initials" :size="size" color="primary" text-color="white">
16
16
  {{ initials }}
17
- <q-tooltip>
17
+ <q-tooltip v-if="name">
18
18
  {{ name }}
19
19
  </q-tooltip>
20
20
  </q-avatar>