@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
@@ -1,62 +1,59 @@
1
1
  <template>
2
- <q-list dense>
2
+ <div>
3
3
  <slot name="header" />
4
4
  <div v-if="layers.length > 0">
5
5
  <template v-for="layer in layers">
6
- <q-item
7
- :id="layer.name"
8
- :key="layer.name"
9
- :active="layer.isVisible"
10
- :disable="layer.isDisabled"
11
- :clickable="!layer.isDisabled"
12
- active-class="text-accent text-weight-bolder"
13
- class="cursor-pointer"
14
- dense>
15
- <q-item-section avatar @click="onLayerClicked(layer)">
16
- <q-icon v-if="!layer.iconUrl" :name="layerIcon(layer)"></q-icon>
17
- <img v-else :src="layer.iconUrl" width="32" />
18
- <!-- badge -->
6
+ <div :key="getId(layer)" :id="getId(layer)" class="row items-center justify-between q-pl-md q-pr-sm no-span">
7
+ <!-- Layer name -->
8
+ <div v-bind:class="{
9
+ 'text-primary text-weight-bold': layer.isVisible,
10
+ 'text-grey-6': layer.isDisabled
11
+ }">
12
+ {{ layer.label || layer.name }}
19
13
  <q-badge v-if="layer.badge" v-bind="layer.badge">
20
14
  <q-icon v-if="layer.badge.icon" v-bind="layer.badge.icon" />
21
15
  </q-badge>
22
- </q-item-section>
23
- <!-- item label -->
24
- <q-item-section @click="onLayerClicked(layer)">
25
- <q-item-label lines="1">
26
- {{ layer.label || layer.name }}
27
- </q-item-label>
28
- <q-item-label v-if="options.description" caption lines="2">
29
- {{ layer.description }}
30
- </q-item-label>
31
- <q-item-label v-if="layer.isDisabled" caption lines="2">
32
- {{ $t('KLayersSelector.LAYER_DISABLED') }}
33
- </q-item-label>
34
- </q-item-section>
35
- <!-- actions -->
36
- <q-item-section side>
37
- <k-panel :id="`${layer.name}-actions`" :content="layer.actions" :context="layer" :filter="{ id: { $nin: ['toggle'] } }" action-renderer="item" />
38
- </q-item-section>
39
- <!-- tooltip -->
40
- <q-tooltip v-if="(layer.tooltip || layer.description) && $q.platform.is.desktop" :delay="1000"
41
- anchor="center left" self="center right" :offset="[20, 0]">
42
- {{ layer.tooltip || layer.description }}
43
- </q-tooltip>
44
- </q-item>
16
+ <q-tooltip
17
+ v-if="(layer.tooltip || layer.description) && $q.platform.is.desktop" :delay="1000"
18
+ anchor="center left"
19
+ self="center right"
20
+ :offset="[20, 0]">
21
+ {{ layer.tooltip || layer.description }}
22
+ </q-tooltip>
23
+ </div>
24
+ <q-space />
25
+ <q-icon name="las la-exclamation-circle" size="md" color="warning" v-if="layer.isDisabled">
26
+ <q-tooltip>{{ $t('KLayersSelector.LAYER_DISABLED') }}</q-tooltip>
27
+ </q-icon>
28
+ <!-- Layer toggle -->
29
+ <q-toggle :value="layer.isVisible" :disable="layer.isDisabled" @input="onLayerClicked(layer)"/>
30
+ <!-- Layer actions -->
31
+ <k-panel
32
+ :id="`${layer.name}-actions`"
33
+ :content="layer.actions"
34
+ :context="layer"
35
+ :filter="{ id: { $nin: ['toggle'] } }"
36
+ action-renderer="item" />
37
+ </div>
45
38
  </template>
46
39
  </div>
47
- <div v-else-if="!options.hideIfEmpty">
48
- <k-label class="q-pb-md" :text="$t('KLayersSelector.NO_LAYER_AVAILABLE')" alignement="center-top" direction="horizontal" />
40
+ <div v-else-if="!options.hideIfEmpty" class="row justify-center q-pb-sm">
41
+ <k-stamp icon="las la-exclamation-circle" icon-size="sm" :text="$t('KLayersSelector.NO_LAYER_AVAILABLE')" direction="horizontal" />
49
42
  </div>
50
43
  <slot name="footer" />
51
- </q-list>
44
+ </div>
52
45
  </template>
53
46
 
54
47
  <script>
55
48
  import _ from 'lodash'
49
+ import { QToggle } from 'quasar'
56
50
  import { utils } from '../../../../core/client'
57
51
 
58
52
  export default {
59
53
  name: 'k-layers-selector',
54
+ components: {
55
+ QToggle
56
+ },
60
57
  props: {
61
58
  layers: {
62
59
  type: Array,
@@ -68,6 +65,9 @@ export default {
68
65
  }
69
66
  },
70
67
  methods: {
68
+ getId (layer) {
69
+ return _.kebabCase(layer.name)
70
+ },
71
71
  layerIcon (layer) {
72
72
  return utils.getIconName(layer, 'icon')
73
73
  },
@@ -85,10 +85,10 @@ export default {
85
85
  this.toggleLayer(layer)
86
86
  }
87
87
  },
88
- created () {
88
+ beforeCreate () {
89
89
  // Loads the required components
90
90
  this.$options.components['k-panel'] = this.$load('frame/KPanel')
91
- this.$options.components['k-label'] = this.$load('frame/KLabel')
91
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
92
92
  }
93
93
  }
94
94
  </script>
@@ -33,8 +33,8 @@
33
33
  </template>
34
34
  </k-layers-selector>
35
35
  </div>
36
- <div v-else>
37
- <k-label :text="$t('KWeatherLayersSelector.NO_MODEL_AVAILABLE')" alignement="center-top" icon-size="36px" direction="vertical" />
36
+ <div v-else class="row justify-center q-pb-sm">
37
+ <k-stamp icon="las la-exclamation-circle" icon-size="sm" :text="$t('KWeatherLayersSelector.NO_MODEL_AVAILABLE')" direction="horizontal" />
38
38
  </div>
39
39
  </template>
40
40
 
@@ -128,7 +128,7 @@ export default {
128
128
  created () {
129
129
  // Loads the required components
130
130
  this.$options.components['k-layers-selector'] = this.$load('catalog/KLayersSelector')
131
- this.$options.components['k-label'] = this.$load('frame/KLabel')
131
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
132
132
  // Set the current forecast model
133
133
  this.model = this.forecastModel
134
134
  }
@@ -9,7 +9,7 @@
9
9
  >
10
10
  <!-- Content -->
11
11
  <template v-slot:default>
12
- <k-location-input v-model="model" class="full-width" />
12
+ <k-location-input id="location-input" v-model="model" v-bind="properties.field" class="full-width" />
13
13
  </template>
14
14
  <!--Helper -->
15
15
  <template v-if="helper" v-slot:hint>
@@ -11,10 +11,11 @@
11
11
  :error-message="errorLabel"
12
12
  :error="hasError"
13
13
  bottom-slots
14
- :options="availableLayers"
14
+ :options="filteredLayers"
15
15
  option-label="display"
16
16
  option-value="id"
17
17
  :loading="loading"
18
+ @filter="onFilter"
18
19
  @input="onUpdated">
19
20
  <!-- Options display -->
20
21
  <template v-slot:option="scope">
@@ -46,10 +47,16 @@ export default {
46
47
  data () {
47
48
  return {
48
49
  layer: '',
49
- loading: false
50
+ loading: false,
51
+ filter: ''
50
52
  }
51
53
  },
52
54
  computed: {
55
+ filteredLayers () {
56
+ return this.filter
57
+ ? this.availableLayers.filter(layer => layer.display.toLowerCase().includes(this.filter.toLowerCase()))
58
+ : this.availableLayers
59
+ },
53
60
  availableLayers () {
54
61
  // sort alphabetically layers per display
55
62
  return this.service ? _.map(this.service.availableLayers, (value, key) => value).sort((a, b) => {
@@ -66,6 +73,11 @@ export default {
66
73
  emptyModel () {
67
74
  return null
68
75
  },
76
+ onFilter (val, update, abort) {
77
+ update(() => {
78
+ this.filter = val.toLocaleLowerCase()
79
+ })
80
+ },
69
81
  async onUpdated (layer) {
70
82
  this.error = ''
71
83
  this.loading = true
@@ -199,6 +199,7 @@ export default {
199
199
  result.availableLayers = decoded.availableLayers
200
200
  result.version = this.findQueryParameter(url.searchParams, 'VERSION')
201
201
  if (!result.version) result.version = decoded.version
202
+ result.getTileUseKvpEncoding = decoded.getTileUseKvpEncoding
202
203
  // } else if (result.service === 'WCS') {
203
204
  } else if (result.protocol === 'TMS') {
204
205
  const decoded = await tms.discover(result.baseUrl, result.searchParams, caps)
@@ -3,11 +3,11 @@
3
3
  <div v-if="schema && properties" class="fit row">
4
4
  <k-panel id="information-box-actions" class="q-pa-sm" :content="actions" direction="vertical" />
5
5
  <q-scroll-area class="col fit" :thumb-style="thumbStyle" :bar-style="barStyle">
6
- <k-view class="q-pa-md" :schema="schema" :values="properties" :options="viewOptions" />
6
+ <k-view class="q-pa-md" :schema="schema" :values="properties" :separators="true" />
7
7
  </q-scroll-area>
8
8
  </div>
9
9
  <div v-else class="absolute-center">
10
- <k-label :text="$t('KInformationBox.NO_FEATURE_PROPERTIES')" icon-size="48px" />
10
+ <k-stamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KInformationBox.NO_FEATURE_PROPERTIES')" />
11
11
  </div>
12
12
  </div>
13
13
  </template>
@@ -37,20 +37,14 @@ export default {
37
37
  thumbStyle: {
38
38
  right: '4px',
39
39
  borderRadius: '5px',
40
- backgroundColor: colors.getBrand('secondary'),
41
- width: '5px',
42
- opacity: 0.75
40
+ backgroundColor: colors.getBrand('primary'),
41
+ width: '6px'
43
42
  },
44
43
  barStyle: {
45
44
  right: '2px',
46
- borderRadius: '9px',
47
- backgroundColor: colors.getBrand('primary'),
48
- width: '9px',
49
- opacity: 0.25
50
- },
51
- viewOptions: {
52
- labelWidth: 5,
53
- separators: true
45
+ borderRadius: '5px',
46
+ backgroundColor: colors.getBrand('accent'),
47
+ width: '10px'
54
48
  },
55
49
  schema: null,
56
50
  properties: null,
@@ -67,6 +61,8 @@ export default {
67
61
  this.properties = null
68
62
  this.schema = null
69
63
  if (this.feature && this.layer) {
64
+ this.kActivity.centerOnSelection()
65
+ this.kActivity.addSelectionHighlight('information-box')
70
66
  let schema
71
67
  // Is there any schema ?
72
68
  if (_.has(this.layer, 'schema.content')) {
@@ -91,8 +87,6 @@ export default {
91
87
  })
92
88
  this.schema = schema
93
89
  this.properties = properties
94
- this.kActivity.centerOnSelection()
95
- this.kActivity.addSelectionHighlight('information-box')
96
90
  }
97
91
  },
98
92
  onCenterOn () {
@@ -125,7 +119,7 @@ export default {
125
119
  // laod the required components
126
120
  this.$options.components['k-panel'] = this.$load('frame/KPanel')
127
121
  this.$options.components['k-view'] = this.$load('form/KView')
128
- this.$options.components['k-label'] = this.$load('frame/KLabel')
122
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
129
123
  // Registers the actions
130
124
  this.actions = {
131
125
  default: [
@@ -1,6 +1,5 @@
1
1
  <template>
2
2
  <div :style="widgetStyle()">
3
- <q-resize-observer @resize="onResized" />
4
3
  <div class="fit row">
5
4
  <k-panel id="mapillary-actions" class="q-pa-sm" :content="actions" direction="vertical" />
6
5
  <div class="col" id="mapillary-container"></div>
@@ -11,10 +10,11 @@
11
10
  <script>
12
11
  import _ from 'lodash'
13
12
  import L from 'leaflet'
14
- import moment from 'moment'
15
13
  import logger from 'loglevel'
16
- import * as Mapillary from 'mapillary-js'
17
- import 'mapillary-js/dist/mapillary.min.css'
14
+ import { Viewer } from 'mapillary-js'
15
+ import 'mapillary-js/dist/mapillary.css'
16
+ import distance from '@turf/distance'
17
+ import { point } from '@turf/helpers'
18
18
  import { baseWidget } from '../../../../core/client/mixins'
19
19
 
20
20
  export default {
@@ -37,14 +37,14 @@ export default {
37
37
  this.$store.set('selection.states.mapillary', {
38
38
  location: this.location,
39
39
  bearing: this.bearing,
40
- key: this.key
40
+ imageId: this.imageId
41
41
  })
42
42
  },
43
43
  restoreStates () {
44
44
  const states = this.$store.get('selection.states.mapillary')
45
45
  this.location = states.location
46
46
  this.bearing = states.bearing
47
- this.key = states.key
47
+ this.imageId = states.imageId
48
48
  },
49
49
  getMarkerFeature () {
50
50
  const lat = this.location ? this.location.lat : 0
@@ -64,76 +64,87 @@ export default {
64
64
  async refresh () {
65
65
  if (_.has(this.selection, 'states.mapillary')) {
66
66
  this.restoreStates()
67
- if (this.key) await this.moveToKey(this.key)
67
+ if (this.imageId) await this.refreshView()
68
68
  else if (this.location) await this.moveCloseTo(this.location.lat, this.location.lng)
69
69
  } else {
70
70
  const location = this.selection.location
71
71
  if (location) await this.moveCloseTo(location.lat, location.lng)
72
72
  }
73
73
  },
74
- async moveToKey (key) {
75
- try {
76
- await this.mapillaryViewer.moveToKey(key)
77
- this.onCenterOn()
78
- this.kActivity.addSelectionHighlight('mapillary', this.getMarkerFeature())
79
- } catch (error) {
80
- logger.error(error)
81
- this.$toast({ type: 'negative', message: this.$t('KMapillaryWidget.NO_IMAGE_FOUND') })
74
+ async moveCloseTo (lat, lon) {
75
+ // Query the images according a bbox that contains the given position
76
+ const buffer = 0.0002 // around 25m
77
+ const left = lon - buffer
78
+ const right = lon + buffer
79
+ const top = lat + buffer
80
+ const bottom = lat - buffer
81
+ const token = this.kActivity.mapillaryToken
82
+ const query = `https://graph.mapillary.com/images?fields=id,computed_geometry&bbox=${left},${bottom},${right},${top}&access_token=${token}&limit=50`
83
+ const response = await fetch(query)
84
+ if (response.status !== 200) {
85
+ throw new Error(`Impossible to fetch ${query}: ` + response.status)
86
+ }
87
+ const data = await response.json()
88
+ const imageCount = data.data.length
89
+ // If any results then search for the nearest image
90
+ if (imageCount > 0) {
91
+ const clickedPosition = point([lon, lat])
92
+ let minDist
93
+ _.forEach(data.data, image => {
94
+ const dist = distance(clickedPosition, image.computed_geometry)
95
+ if (!minDist || dist < minDist) {
96
+ minDist = dist
97
+ this.imageId = image.id
98
+ }
99
+ })
100
+ this.refreshView()
101
+ } else {
102
+ this.$toast({ type: 'negative', message: this.$t('KMapillaryWidget.NO_IMAGE_FOUND_CLOSE_TO') })
82
103
  }
83
104
  },
84
- async moveCloseTo (lat, lon) {
105
+ centerMap () {
106
+ if (this.location) this.kActivity.center(this.location.lng, this.location.lat)
107
+ },
108
+ async refreshView () {
109
+ this.kActivity.addSelectionHighlight('mapillary', this.getMarkerFeature())
85
110
  try {
86
- await this.mapillaryViewer.moveCloseTo(lat, lon)
87
- this.onCenterOn()
88
- this.kActivity.addSelectionHighlight('mapillary', this.getMarkerFeature())
111
+ await this.mapillaryViewer.moveTo(this.imageId)
89
112
  } catch (error) {
90
113
  logger.error(error)
91
- this.$toast({ type: 'negative', message: this.$t('KMapillaryWidget.NO_IMAGE_FOUND_CLOSE_TO') })
92
114
  }
93
115
  },
94
- setupViewerFilters () {
95
- // Not yet initialized ?
96
- if (!this.mapillaryViewer || !this.kActivity.mapillaryLayer) return
97
- // Update viewer filters
98
- const endTime = this.kActivity.currentTime || moment.utc()
99
- const startTime = endTime.clone().add(moment.duration(_.get(this.kActivity.mapillaryLayer, 'queryFrom', 'P-1Y'))) // 1 year back by default
100
- this.mapillaryViewer.setFilter(['all',
101
- ['>=', 'capturedAt', startTime.valueOf()],
102
- ['<=', 'capturedAt', endTime.valueOf()]
103
- ])
104
- },
105
- onCenterOn () {
106
- if (this.location) this.kActivity.center(this.location.lng, this.location.lat)
107
- },
108
- onResized (size) {
109
- if (this.mapillaryViewer) this.mapillaryViewer.resize()
116
+ onCurrentTimeChanged (time) {
117
+ this.setupViewerFilters()
110
118
  },
111
- async onNodeChanged (node) {
112
- this.location = L.latLng(node.latLon.lat, node.latLon.lon)
119
+ async onImageEvent (viewerImageEvent) {
120
+ const image = viewerImageEvent.image
121
+ this.imageId = image.id
122
+ this.location = image.lngLat
113
123
  this.bearing = await this.mapillaryViewer.getBearing()
124
+ this.centerMap()
114
125
  this.kActivity.updateSelectionHighlight('mapillary', this.getMarkerFeature())
115
- },
116
- onCurrentTimeChanged (time) {
117
- this.setupViewerFilters()
118
126
  }
119
127
  },
120
- created () {
128
+ beforeCreate () {
121
129
  // laod the required components
122
130
  this.$options.components['k-panel'] = this.$load('frame/KPanel')
131
+ },
132
+ created () {
123
133
  // Registers the actions
124
134
  this.actions = {
125
135
  default: [
126
- { id: 'center', icon: 'las la-eye', tooltip: this.$t('KMapillaryWidget.CENTER_ON'), handler: this.onCenterOn }
136
+ { id: 'center', icon: 'las la-eye', tooltip: this.$t('KMapillaryWidget.CENTER_ON'), handler: this.centerMap }
127
137
  ]
128
138
  }
129
139
  },
130
140
  mounted () {
131
141
  // Create the viewer
132
- this.mapillaryViewer = new Mapillary.Viewer('mapillary-container', this.kActivity.mapillaryClientID)
133
- this.setupViewerFilters()
142
+ this.mapillaryViewer = new Viewer({
143
+ container: 'mapillary-container',
144
+ accessToken: this.kActivity.mapillaryToken
145
+ })
134
146
  // Add event listeners
135
- this.mapillaryViewer.on(Mapillary.Viewer.nodechanged, this.onNodeChanged)
136
- this.kActivity.$on('current-time-changed', this.onCurrentTimeChanged)
147
+ this.mapillaryViewer.on('image', this.onImageEvent)
137
148
  // Configure the viewer
138
149
  this.location = undefined
139
150
  this.bearing = undefined
@@ -142,8 +153,7 @@ export default {
142
153
  },
143
154
  async beforeDestroy () {
144
155
  // Remove event listeners
145
- this.mapillaryViewer.off(Mapillary.Viewer.nodechanged, this.onNodeChanged)
146
- this.kActivity.$off('current-time-changed', this.onCurrentTimeChanged)
156
+ this.mapillaryViewer.off('image', this.onNodeChanged)
147
157
  // Remove the marker
148
158
  this.kActivity.removeSelectionHighlight('mapillary')
149
159
  // Save the states
@@ -18,7 +18,7 @@
18
18
  </div>
19
19
  </div>
20
20
  <div v-else class="absolute-center">
21
- <k-label :text="$t('KTimeSeries.NO_DATA_AVAILABLE')" icon-size="48px" />
21
+ <k-stamp icon="las la-exclamation-circle" icon-size="3rem" :text="$t('KTimeSeries.NO_DATA_AVAILABLE')" text-size="1rem" />
22
22
  </div>
23
23
  </div>
24
24
  </div>
@@ -33,6 +33,7 @@ import chroma from 'chroma-js'
33
33
  import Chart from 'chart.js'
34
34
  import 'chartjs-plugin-annotation'
35
35
  import { getTimeInterval } from '../../utils'
36
+ import { Time } from '../../../../core/client/time'
36
37
  import { baseWidget } from '../../../../core/client/mixins'
37
38
 
38
39
  export default {
@@ -278,10 +279,10 @@ export default {
278
279
  this.setupAvailableDatasets()
279
280
  this.setupAvailableYAxes()
280
281
 
281
- const date = _.get(this.kActivity.currentFormattedTime, 'date.short')
282
- const time = _.get(this.kActivity.currentFormattedTime, 'time.long')
283
- const dateFormat = _.get(this.kActivity.currentTimeFormat, 'date.short')
284
- const timeFormat = _.get(this.kActivity.currentTimeFormat, 'time.long')
282
+ const date = _.get(Time.getCurrentFormattedTime(), 'date.short')
283
+ const time = _.get(Time.getCurrentFormattedTime(), 'time.long')
284
+ const dateFormat = _.get(Time.getFormat(), 'date.short')
285
+ const timeFormat = _.get(Time.getFormat(), 'time.long')
285
286
 
286
287
  this.config = {
287
288
  type: 'line',
@@ -333,7 +334,7 @@ export default {
333
334
  }
334
335
  }
335
336
  // Is current time visible in data time range ?
336
- const currentTime = moment.utc(this.kActivity.currentFormattedTime.iso)
337
+ const currentTime = moment.utc(Time.getCurrentFormattedTime().iso)
337
338
  if (this.timeRange && currentTime.isBetween(...this.timeRange)) {
338
339
  this.config.options.annotation = {
339
340
  drawTime: 'afterDatasetsDraw',
@@ -403,6 +404,35 @@ export default {
403
404
  if (name) this.probedLocationName = name
404
405
  },
405
406
  async refresh () {
407
+ // Select the current span as default option in UX
408
+ const span = this.$store.get('timeseries.span')
409
+ const spanOptions = [
410
+ { badge: '3H', value: 180 },
411
+ { badge: '6H', value: 360 },
412
+ { badge: '12H', value: 720 },
413
+ { badge: '24H', value: 1440 },
414
+ { badge: '48H', value: 2880 },
415
+ { badge: '72H', value: 4320 },
416
+ { badge: '96H', value: 5760 }
417
+ ]
418
+ spanOptions.forEach(option => {
419
+ if (option.value === span) {
420
+ option.default = true
421
+ }
422
+ })
423
+ // Registers the actions
424
+ this.actions = [
425
+ { id: 'center-view', icon: 'las la-eye', tooltip: 'KTimeSeries.CENTER_ON', handler: this.onCenterOn },
426
+ {
427
+ component: 'input/KOptionsChooser',
428
+ id: 'timespan-options',
429
+ icon: 'las la-history',
430
+ tooltip: 'KTimeSeries.SPAN',
431
+ options: spanOptions,
432
+ on: { event: 'option-chosen', listener: this.onUpdateSpan }
433
+ }
434
+ ]
435
+ // Then manage selection
406
436
  this.kActivity.addSelectionHighlight('time-series')
407
437
  this.kActivity.centerOnSelection()
408
438
  // Update timeseries data if required
@@ -436,39 +466,19 @@ export default {
436
466
  created () {
437
467
  // Load the required components
438
468
  this.$options.components['k-panel'] = this.$load('frame/KPanel')
439
- this.$options.components['k-label'] = this.$load('frame/KLabel')
440
- // Registers the actions
441
- this.actions = [
442
- { id: 'center-view', icon: 'las la-eye', tooltip: 'KTimeSeries.CENTER_ON', handler: this.onCenterOn },
443
- {
444
- component: 'input/KOptionsChooser',
445
- id: 'timespan-options',
446
- icon: 'las la-history',
447
- tooltip: 'KTimeSeries.SPAN',
448
- options: [
449
- { badge: '3H', value: 180 },
450
- { badge: '6H', value: 360 },
451
- { badge: '12H', value: 720, default: true },
452
- { badge: '24H', value: 1440 },
453
- { badge: '48H', value: 2880 },
454
- { badge: '72H', value: 4320 },
455
- { badge: '96H', value: 5760 }
456
- ],
457
- on: { event: 'option-chosen', listener: this.onUpdateSpan }
458
- }
459
- ]
469
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
460
470
  // Refresh the component
461
471
  this.refresh()
462
472
  },
463
473
  mounted () {
464
- this.kActivity.$on('current-time-changed', this.refresh)
474
+ this.$events.$on('time-current-time-changed', this.refresh)
465
475
  this.$events.$on('time-format-changed', this.refresh)
466
476
  this.$events.$on('timeseries-span-changed', this.refresh)
467
477
  this.kActivity.$on('forecast-model-changed', this.refresh)
468
478
  this.kActivity.$on('forecast-level-changed', this.refresh)
469
479
  },
470
480
  beforeDestroy () {
471
- this.kActivity.$off('current-time-changed', this.refresh)
481
+ this.$events.$off('time-current-time-changed', this.refresh)
472
482
  this.$events.$off('time-format-changed', this.refresh)
473
483
  this.$events.$off('timeseries-span-changed', this.refresh)
474
484
  this.kActivity.$off('forecast-model-changed', this.refresh)