@kalisio/kdk 1.3.6 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/.nyc_output/{0d403586-0c7c-4336-94d1-a49e9f02a905.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
  2. package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
  3. package/.nyc_output/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  4. package/.nyc_output/{21dd57bd-48c5-41c8-8800-252db32a9366.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
  5. package/.nyc_output/{3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
  6. package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
  7. package/.nyc_output/processinfo/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
  8. package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
  9. package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
  10. package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
  11. package/.nyc_output/processinfo/index.json +1 -1
  12. package/CHANGELOG.md +167 -79
  13. package/README.md +1 -1
  14. package/coverage/core/api/application.js.html +436 -436
  15. package/coverage/core/api/authentication.js.html +119 -119
  16. package/coverage/core/api/db.js.html +201 -201
  17. package/coverage/core/api/hooks/hooks.account.js.html +48 -48
  18. package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
  19. package/coverage/core/api/hooks/hooks.authorisations.js.html +369 -378
  20. package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
  21. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  22. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  23. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  24. package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
  25. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  26. package/coverage/core/api/hooks/hooks.query.js.html +234 -198
  27. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  28. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  29. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  30. package/coverage/core/api/hooks/hooks.users.js.html +304 -256
  31. package/coverage/core/api/hooks/index.html +172 -172
  32. package/coverage/core/api/hooks/index.js.html +24 -24
  33. package/coverage/core/api/index.html +75 -75
  34. package/coverage/core/api/index.js.html +26 -26
  35. package/coverage/core/api/marshall.js.html +57 -57
  36. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  37. package/coverage/core/api/models/index.html +50 -50
  38. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  39. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  40. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  41. package/coverage/core/api/oauth2-handler.js.html +18 -18
  42. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  43. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  44. package/coverage/core/api/services/account/account.service.js.html +108 -108
  45. package/coverage/core/api/services/account/index.html +32 -32
  46. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  47. package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -129
  48. package/coverage/core/api/services/authorisations/index.html +28 -28
  49. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  50. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  51. package/coverage/core/api/services/databases/index.html +24 -24
  52. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  53. package/coverage/core/api/services/devices/devices.service.js.html +121 -121
  54. package/coverage/core/api/services/devices/index.html +28 -28
  55. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  56. package/coverage/core/api/services/groups/index.html +13 -13
  57. package/coverage/core/api/services/index.html +21 -21
  58. package/coverage/core/api/services/index.js.html +137 -137
  59. package/coverage/core/api/services/mailer/index.html +24 -24
  60. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  61. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  62. package/coverage/core/api/services/organisations/index.html +24 -24
  63. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  64. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  65. package/coverage/core/api/services/pusher/index.html +34 -34
  66. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  67. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  68. package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
  69. package/coverage/core/api/services/storage/index.html +21 -21
  70. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  71. package/coverage/core/api/services/tags/index.html +21 -21
  72. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  73. package/coverage/core/api/services/users/index.html +21 -21
  74. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  75. package/coverage/core/common/errors.js.html +1 -1
  76. package/coverage/core/common/index.html +42 -27
  77. package/coverage/core/common/index.js.html +16 -16
  78. package/coverage/core/common/permissions.js.html +325 -265
  79. package/coverage/index.html +182 -182
  80. package/coverage/lcov-report/core/api/application.js.html +436 -436
  81. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  82. package/coverage/lcov-report/core/api/db.js.html +201 -201
  83. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
  84. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
  85. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +369 -378
  86. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
  87. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  88. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  89. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  90. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
  91. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  92. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +234 -198
  93. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  94. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  95. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  96. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +304 -256
  97. package/coverage/lcov-report/core/api/hooks/index.html +172 -172
  98. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  99. package/coverage/lcov-report/core/api/index.html +75 -75
  100. package/coverage/lcov-report/core/api/index.js.html +26 -26
  101. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  102. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  103. package/coverage/lcov-report/core/api/models/index.html +50 -50
  104. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  105. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  106. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  107. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  108. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  109. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  110. package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
  111. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  112. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  113. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -129
  114. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  115. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  116. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  117. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  118. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  119. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
  120. package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
  121. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  122. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  123. package/coverage/lcov-report/core/api/services/index.html +21 -21
  124. package/coverage/lcov-report/core/api/services/index.js.html +137 -137
  125. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  126. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  127. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  128. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  129. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  130. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  131. package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
  132. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  133. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  134. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
  135. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  136. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  137. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  138. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  139. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  140. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  141. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  142. package/coverage/lcov-report/core/common/index.html +42 -27
  143. package/coverage/lcov-report/core/common/index.js.html +16 -16
  144. package/coverage/lcov-report/core/common/permissions.js.html +325 -265
  145. package/coverage/lcov-report/index.html +182 -182
  146. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  147. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +118 -37
  148. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  149. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  150. package/coverage/lcov-report/map/api/index.html +1 -1
  151. package/coverage/lcov-report/map/api/index.js.html +1 -1
  152. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  153. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  154. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  155. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
  156. package/coverage/lcov-report/map/api/models/index.html +1 -1
  157. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  158. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  159. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  160. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  161. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  162. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  163. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  164. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +2 -2
  165. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  166. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  167. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  168. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/index.html +1 -1
  170. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  171. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  172. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  173. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  174. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  175. package/coverage/lcov-report/map/common/index.html +12 -12
  176. package/coverage/lcov-report/map/common/index.js.html +1 -1
  177. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  178. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  179. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  180. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  181. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  182. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  183. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  184. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  185. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  186. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
  188. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  189. package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
  190. package/coverage/lcov.info +3742 -3949
  191. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  192. package/coverage/map/api/hooks/hooks.query.js.html +118 -37
  193. package/coverage/map/api/hooks/index.html +7 -7
  194. package/coverage/map/api/hooks/index.js.html +1 -1
  195. package/coverage/map/api/index.html +1 -1
  196. package/coverage/map/api/index.js.html +1 -1
  197. package/coverage/map/api/marshall.js.html +1 -1
  198. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  199. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  200. package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
  201. package/coverage/map/api/models/index.html +1 -1
  202. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  203. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  204. package/coverage/map/api/services/alerts/index.html +1 -1
  205. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  206. package/coverage/map/api/services/catalog/index.html +1 -1
  207. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  208. package/coverage/map/api/services/daptiles/index.html +1 -1
  209. package/coverage/map/api/services/features/features.hooks.js.html +2 -2
  210. package/coverage/map/api/services/features/index.html +1 -1
  211. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  212. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  213. package/coverage/map/api/services/geocoder/index.html +1 -1
  214. package/coverage/map/api/services/index.html +1 -1
  215. package/coverage/map/api/services/index.js.html +1 -1
  216. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  217. package/coverage/map/common/errors.js.html +1 -1
  218. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  219. package/coverage/map/common/grid.js.html +1 -1
  220. package/coverage/map/common/index.html +12 -12
  221. package/coverage/map/common/index.js.html +1 -1
  222. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  223. package/coverage/map/common/moment-utils.js.html +1 -1
  224. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  225. package/coverage/map/common/opendap-utils.js.html +1 -1
  226. package/coverage/map/common/permissions.js.html +1 -1
  227. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  228. package/coverage/map/common/tms-utils.js.html +1 -1
  229. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  230. package/coverage/map/common/wcs-utils.js.html +1 -1
  231. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  232. package/coverage/map/common/wfs-utils.js.html +8 -5
  233. package/coverage/map/common/wms-utils.js.html +1 -1
  234. package/coverage/map/common/wmts-utils.js.html +71 -11
  235. package/extras/icons/kanban.png +0 -0
  236. package/extras/tours/core/add-member.js +10 -1
  237. package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
  238. package/extras/tours/core/groups.js +8 -2
  239. package/extras/tours/core/members.js +11 -21
  240. package/extras/tours/core/tags.js +7 -1
  241. package/extras/tours/map/catalog-categories.js +4 -4
  242. package/extras/tours/map/catalog-panel.js +16 -16
  243. package/extras/tours/map/favorite-views.js +3 -3
  244. package/lib/core/api/hooks/hooks.authorisations.js +149 -140
  245. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  246. package/lib/core/api/hooks/hooks.organisations.js +1 -23
  247. package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
  248. package/lib/core/api/hooks/hooks.query.js +22 -0
  249. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  250. package/lib/core/api/hooks/hooks.users.js +34 -18
  251. package/lib/core/api/hooks/hooks.users.js.map +1 -1
  252. package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
  253. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  254. package/lib/core/client/api.js +1 -0
  255. package/lib/core/client/api.js.map +1 -1
  256. package/lib/core/client/components/account/KAccountDZ.vue +3 -4
  257. package/lib/core/client/components/account/KAccountDevices.vue +5 -6
  258. package/lib/core/client/components/account/KDeviceCard.vue +2 -1
  259. package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
  260. package/lib/core/client/components/collection/KBoard.vue +26 -155
  261. package/lib/core/client/components/collection/KCard.vue +144 -42
  262. package/lib/core/client/components/collection/KCardSection.vue +52 -0
  263. package/lib/core/client/components/collection/KColumn.vue +181 -0
  264. package/lib/core/client/components/collection/KGrid.vue +13 -18
  265. package/lib/core/client/components/collection/KHistory.vue +61 -89
  266. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  267. package/lib/core/client/components/collection/KItem.vue +21 -2
  268. package/lib/core/client/components/collection/KList.vue +9 -12
  269. package/lib/core/client/components/collection/KTable.vue +33 -39
  270. package/lib/core/client/components/collection/index.js +6 -1
  271. package/lib/core/client/components/collection/index.js.map +1 -1
  272. package/lib/core/client/components/editor/KEditor.vue +0 -6
  273. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  274. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  275. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  276. package/lib/core/client/components/form/KChipsField.vue +28 -23
  277. package/lib/core/client/components/form/KColorField.vue +30 -25
  278. package/lib/core/client/components/form/KFileField.vue +11 -40
  279. package/lib/core/client/components/form/KForm.vue +0 -12
  280. package/lib/core/client/components/form/KIconField.vue +1 -0
  281. package/lib/core/client/components/form/KItemField.vue +6 -2
  282. package/lib/core/client/components/form/KRoleField.vue +56 -0
  283. package/lib/core/client/components/form/KSelectField.vue +16 -1
  284. package/lib/core/client/components/form/KView.vue +5 -14
  285. package/lib/core/client/components/frame/KAction.vue +18 -12
  286. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  287. package/lib/core/client/components/frame/KChart.vue +60 -0
  288. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  289. package/lib/core/client/components/frame/KContent.vue +1 -1
  290. package/lib/core/client/components/frame/KModal.vue +30 -44
  291. package/lib/core/client/components/frame/KPanel.vue +1 -1
  292. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  293. package/lib/core/client/components/frame/KSpot.vue +31 -0
  294. package/lib/core/client/components/frame/KStamp.vue +62 -0
  295. package/lib/core/client/components/frame/index.js +56 -1
  296. package/lib/core/client/components/frame/index.js.map +1 -1
  297. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  298. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  299. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  300. package/lib/core/client/components/input/KUploader.vue +14 -5
  301. package/lib/core/client/components/layout/KAbout.vue +9 -3
  302. package/lib/core/client/components/layout/KFab.vue +1 -1
  303. package/lib/core/client/components/layout/KPage.vue +44 -19
  304. package/lib/core/client/components/layout/KTour.vue +2 -2
  305. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  306. package/lib/core/client/components/layout/KWindow.vue +1 -1
  307. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  308. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  309. package/lib/core/client/components/menu/KMenu.vue +103 -0
  310. package/lib/core/client/components/team/KAddMember.vue +17 -9
  311. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  312. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  313. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  314. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  315. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  316. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  317. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  318. package/lib/core/client/components/team/KTagCard.vue +26 -26
  319. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  320. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  321. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  322. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  323. package/lib/core/client/i18n/core_en.json +138 -94
  324. package/lib/core/client/i18n/core_fr.json +61 -17
  325. package/lib/core/client/index.js +46 -14
  326. package/lib/core/client/index.js.map +1 -1
  327. package/lib/core/client/layout.js +8 -1
  328. package/lib/core/client/layout.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/reader.js +54 -0
  350. package/lib/core/client/reader.js.map +1 -0
  351. package/lib/core/client/readers/index.js +30 -0
  352. package/lib/core/client/readers/index.js.map +1 -0
  353. package/lib/core/client/readers/reader.csv.js +43 -0
  354. package/lib/core/client/readers/reader.csv.js.map +1 -0
  355. package/lib/core/client/readers/reader.json.js +38 -0
  356. package/lib/core/client/readers/reader.json.js.map +1 -0
  357. package/lib/core/client/services/index.js +23 -0
  358. package/lib/core/client/services/index.js.map +1 -1
  359. package/lib/core/client/services/local-settings.service.js +4 -0
  360. package/lib/core/client/services/local-settings.service.js.map +1 -1
  361. package/lib/core/client/time.js +131 -0
  362. package/lib/core/client/time.js.map +1 -0
  363. package/lib/core/common/permissions.js +65 -23
  364. package/lib/core/common/permissions.js.map +1 -1
  365. package/lib/core/common/schemas/groups.create.json +1 -1
  366. package/lib/core/common/schemas/groups.update.json +1 -1
  367. package/lib/core/common/schemas/organisations.create.json +1 -1
  368. package/lib/core/common/schemas/organisations.update.json +2 -2
  369. package/lib/core/common/schemas/settings.update.json +139 -0
  370. package/lib/core/common/schemas/tags.update.json +9 -1
  371. package/lib/map/api/hooks/hooks.query.js +55 -29
  372. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  373. package/lib/map/api/services/features/features.hooks.js +1 -1
  374. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  375. package/lib/map/client/components/KCaptureToolbar.vue +156 -0
  376. package/lib/map/client/components/KColorLegend.vue +25 -23
  377. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  378. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  379. package/lib/map/client/components/KFeaturesFilter.vue +18 -8
  380. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  381. package/lib/map/client/components/KLayerEditionToolbar.vue +51 -0
  382. package/lib/map/client/components/KLayerStyleEditor.vue +12 -5
  383. package/lib/map/client/components/KLayerStyleForm.vue +44 -33
  384. package/lib/map/client/components/KLocationInput.vue +126 -65
  385. package/lib/map/client/components/KLocationMap.vue +199 -84
  386. package/lib/map/client/components/KMeasureTool.vue +340 -0
  387. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  388. package/lib/map/client/components/KTimeline.vue +41 -37
  389. package/lib/map/client/components/KUrlLegend.vue +21 -19
  390. package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
  391. package/lib/map/client/components/catalog/KCatalog.vue +14 -2
  392. package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
  393. package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
  394. package/lib/map/client/components/catalog/KImportLayer.vue +33 -40
  395. package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
  396. package/lib/map/client/components/catalog/KLayersSelector.vue +44 -42
  397. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  398. package/lib/map/client/components/form/KLocationField.vue +1 -1
  399. package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
  400. package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
  401. package/lib/map/client/components/widget/KInformationBox.vue +10 -16
  402. package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
  403. package/lib/map/client/components/widget/KTimeSeries.vue +119 -31
  404. package/lib/map/client/i18n/map_en.json +105 -20
  405. package/lib/map/client/i18n/map_fr.json +107 -23
  406. package/lib/map/client/init.js +24 -7
  407. package/lib/map/client/init.js.map +1 -1
  408. package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
  409. package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
  410. package/lib/map/client/leaflet/MaskLayer.js +73 -0
  411. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  412. package/lib/map/client/mixins/globe/mixin.base-globe.js +7 -6
  413. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  414. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  415. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  416. package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
  417. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  418. package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
  419. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  420. package/lib/map/client/mixins/index.js +8 -13
  421. package/lib/map/client/mixins/index.js.map +1 -1
  422. package/lib/map/client/mixins/map/mixin.base-map.js +71 -8
  423. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  424. package/lib/map/client/mixins/map/mixin.canvas-layers.js +276 -51
  425. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  426. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  427. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  428. package/lib/map/client/mixins/map/mixin.file-layers.js +46 -93
  429. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  430. package/lib/map/client/mixins/map/mixin.geojson-layers.js +22 -11
  431. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  432. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  433. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  434. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  435. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  436. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  437. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  438. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  439. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  440. package/lib/map/client/mixins/map/mixin.popup.js +4 -0
  441. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  442. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  443. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  444. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  445. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  446. package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
  447. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  448. package/lib/map/client/mixins/mixin.activity.js +62 -68
  449. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  450. package/lib/map/client/mixins/mixin.context.js +26 -3
  451. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  452. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  453. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  454. package/lib/map/client/mixins/mixin.feature-service.js +9 -7
  455. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  456. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  457. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  458. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  459. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  460. package/lib/map/client/pixi-utils.js +9 -0
  461. package/lib/map/client/pixi-utils.js.map +1 -1
  462. package/lib/map/client/readers/index.js +42 -0
  463. package/lib/map/client/readers/index.js.map +1 -0
  464. package/lib/map/client/readers/reader.geojson.js +59 -0
  465. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  466. package/lib/map/client/readers/reader.gpx.js +41 -0
  467. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  468. package/lib/map/client/readers/reader.kml.js +41 -0
  469. package/lib/map/client/readers/reader.kml.js.map +1 -0
  470. package/lib/map/client/utils.js +52 -1
  471. package/lib/map/client/utils.js.map +1 -1
  472. package/lib/map/common/wfs-utils.js +1 -1
  473. package/lib/map/common/wfs-utils.js.map +1 -1
  474. package/lib/map/common/wmts-utils.js +31 -7
  475. package/lib/map/common/wmts-utils.js.map +1 -1
  476. package/lib/test/client/core/account.js +100 -0
  477. package/lib/test/client/core/account.js.map +1 -0
  478. package/lib/test/client/core/api.js +400 -0
  479. package/lib/test/client/core/api.js.map +1 -0
  480. package/lib/test/client/core/collection.js +109 -0
  481. package/lib/test/client/core/collection.js.map +1 -0
  482. package/lib/test/client/core/index.js +90 -0
  483. package/lib/test/client/core/index.js.map +1 -0
  484. package/lib/test/client/core/layout.js +221 -0
  485. package/lib/test/client/core/layout.js.map +1 -0
  486. package/lib/test/client/core/runner.js +203 -0
  487. package/lib/test/client/core/runner.js.map +1 -0
  488. package/lib/test/client/core/screens.js +68 -0
  489. package/lib/test/client/core/screens.js.map +1 -0
  490. package/lib/test/client/core/utils.js +304 -0
  491. package/lib/test/client/core/utils.js.map +1 -0
  492. package/lib/test/client/index.js +20 -0
  493. package/lib/test/client/index.js.map +1 -0
  494. package/lib/test/client/map/catalog.js +192 -0
  495. package/lib/test/client/map/catalog.js.map +1 -0
  496. package/lib/test/client/map/controls.js +54 -0
  497. package/lib/test/client/map/controls.js.map +1 -0
  498. package/lib/test/client/map/index.js +30 -0
  499. package/lib/test/client/map/index.js.map +1 -0
  500. package/package.json +18 -9
  501. package/test.client.js +1 -0
  502. package/tests/core/test-log-2021-09-02.log +47 -0
  503. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  504. package/tests/map/test-log-2021-09-02.log +3 -0
  505. package/.nyc_output/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
  506. package/.nyc_output/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
  507. package/.nyc_output/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
  508. package/.nyc_output/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
  509. package/.nyc_output/processinfo/0d403586-0c7c-4336-94d1-a49e9f02a905.json +0 -1
  510. package/.nyc_output/processinfo/21dd57bd-48c5-41c8-8800-252db32a9366.json +0 -1
  511. package/.nyc_output/processinfo/3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json +0 -1
  512. package/.nyc_output/processinfo/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
  513. package/.nyc_output/processinfo/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
  514. package/.nyc_output/processinfo/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
  515. package/.nyc_output/processinfo/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
  516. package/extras/testcafe/Dockerfile +0 -48
  517. package/extras/testcafe/docker-entrypoint.sh +0 -27
  518. package/extras/testcafe/page-models/core/account.js +0 -75
  519. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  520. package/extras/testcafe/page-models/core/base-page.js +0 -25
  521. package/extras/testcafe/page-models/core/groups.js +0 -36
  522. package/extras/testcafe/page-models/core/index.js +0 -140
  523. package/extras/testcafe/page-models/core/layout.js +0 -145
  524. package/extras/testcafe/page-models/core/members.js +0 -98
  525. package/extras/testcafe/page-models/core/organisations.js +0 -76
  526. package/extras/testcafe/page-models/core/screens.js +0 -99
  527. package/extras/testcafe/page-models/core/tags.js +0 -21
  528. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  529. package/extras/testcafe/page-models/map/catalog.js +0 -132
  530. package/extras/testcafe/page-models/map/index.js +0 -36
  531. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  532. package/extras/testcafe/page-models/map/timeline.js +0 -67
  533. package/lib/core/client/components/frame/KLabel.vue +0 -56
  534. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  535. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  536. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  537. package/lib/map/client/mixins/mixin.time.js +0 -73
  538. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  539. package/tests/core/account.test.js +0 -423
  540. package/tests/core/client.test.js.skip +0 -37
  541. package/tests/core/config/default.js +0 -96
  542. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  543. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  544. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  545. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  546. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  547. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  548. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  549. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  550. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  551. package/tests/core/data/logo.png +0 -0
  552. package/tests/core/hooks.test.js +0 -175
  553. package/tests/core/index.test.js +0 -432
  554. package/tests/core/notifications.test.js +0 -465
  555. package/tests/core/storage.test.js +0 -134
  556. package/tests/core/team.test.js +0 -610
  557. package/tests/core/utils.js +0 -62
  558. package/tests/map/alerts.test.js +0 -554
  559. package/tests/map/config/default.js +0 -112
  560. package/tests/map/config/layers.json +0 -37
  561. package/tests/map/daptiles.test.js +0 -41
  562. package/tests/map/data/DescribeCoverage.xml +0 -55
  563. package/tests/map/data/GetCoverage.tif +0 -0
  564. package/tests/map/data/adsb.observations.json +0 -132
  565. package/tests/map/data/dataset.grb.das +0 -55
  566. package/tests/map/data/dataset.grb.dds +0 -17
  567. package/tests/map/data/dataset.grb.dods +0 -0
  568. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  569. package/tests/map/data/subdataset.grb.dods +0 -0
  570. package/tests/map/data/vigicrues.observations.json +0 -47042
  571. package/tests/map/data/vigicrues.stations.json +0 -15422
  572. package/tests/map/data/zones.json +0 -1228
  573. package/tests/map/forecast-data/gfs-world/u-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
  574. package/tests/map/forecast-data/gfs-world/v-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
  575. package/tests/map/grid-sources.test.js +0 -304
  576. package/tests/map/hooks.test.js +0 -96
  577. package/tests/map/index.test.js +0 -333
@@ -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>
@@ -32,7 +32,10 @@ import centroid from '@turf/centroid'
32
32
  import chroma from 'chroma-js'
33
33
  import Chart from 'chart.js'
34
34
  import 'chartjs-plugin-annotation'
35
+ import Papa from 'papaparse'
35
36
  import { getTimeInterval } from '../../utils'
37
+ import { downloadAsBlob } from '../../../../core/client/utils'
38
+ import { Time } from '../../../../core/client/time'
36
39
  import { baseWidget } from '../../../../core/client/mixins'
37
40
 
38
41
  export default {
@@ -100,6 +103,10 @@ export default {
100
103
  hasVariable (name, properties) {
101
104
  return (properties[name] && Array.isArray(properties[name]))
102
105
  },
106
+ getSelectedRunTime () {
107
+ // Set default run as latest
108
+ return this.runTime || _.last(this.runTimes)
109
+ },
103
110
  setupTimeTicks () {
104
111
  if (!this.times || !this.graphWidth) return
105
112
  // Choose the right step size to ensure we have almost 100px between hour ticks
@@ -144,9 +151,27 @@ export default {
144
151
  this.timeRange = null
145
152
  }
146
153
  },
154
+ setupAvailableRunTimes () {
155
+ this.runTimes = []
156
+ // FIXME: to be used when all issues are correctly fixed in weacast
157
+
158
+ /*
159
+ const runTime = this.probedLocation.runTime
160
+
161
+ this.probedVariables.forEach(variable => {
162
+ // Check if we are targetting a specific level
163
+ const name = (this.kActivity.selectedLevel ? `${variable.name}-${this.kActivity.selectedLevel}` : variable.name)
164
+
165
+ if (runTime && runTime[name]) this.runTimes.push(runTime[name])
166
+ })
167
+ // Make union of all available run times
168
+ this.runTimes = _.union(...this.runTimes).map(time => moment.utc(time)).sort((a, b) => a - b)
169
+ */
170
+ },
147
171
  setupAvailableDatasets () {
148
172
  this.datasets = []
149
173
  const time = this.probedLocation.time || this.probedLocation.forecastTime
174
+ const runTime = this.probedLocation.runTime
150
175
  const properties = this.probedLocation.properties
151
176
  // Generate a color palette in case the variables does not provide it
152
177
  const colors = _.shuffle(chroma.scale('Spectral').colors(this.probedVariables.length))
@@ -157,11 +182,19 @@ export default {
157
182
  const label = this.$t(variable.label) || variable.label
158
183
  // Aggregated variable available for feature ?
159
184
  if (this.hasVariable(name, properties)) {
185
+ // Build data structure as expected by visualisation
186
+ let values = properties[name].map((value, index) => ({ x: time[name][index], y: value }))
187
+ // Keep only selected value if multiple are provided for the same time (eg different forecasts)
188
+ if (!_.isEmpty(_.get(runTime, name)) && this.getSelectedRunTime()) {
189
+ values = values.filter((value, index) => (runTime[name][index] === this.getSelectedRunTime().toISOString()))
190
+ } else values = _.uniqBy(values, 'x')
191
+ // Then transform to date object as expected by visualisation
192
+ values = values.map((value) => Object.assign(value, { x: new Date(value.x) })).filter(this.filter)
160
193
  this.datasets.push(_.merge({
161
194
  label: `${label} (${unit})`,
162
195
  borderColor: colors[index],
163
196
  backgroundColor: colors[index],
164
- data: properties[name].map((value, index) => ({ x: new Date(time[name][index]), y: value })).filter(this.filter),
197
+ data: values,
165
198
  yAxisID: unit
166
199
  }, _.omit(variable.chartjs, 'yAxis')))
167
200
  }
@@ -275,13 +308,14 @@ export default {
275
308
  // Setup the graph
276
309
  this.setupAvailableTimes()
277
310
  this.setupTimeTicks()
311
+ this.setupAvailableRunTimes()
278
312
  this.setupAvailableDatasets()
279
313
  this.setupAvailableYAxes()
280
314
 
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')
315
+ const date = _.get(Time.getCurrentFormattedTime(), 'date.short')
316
+ const time = _.get(Time.getCurrentFormattedTime(), 'time.long')
317
+ const dateFormat = _.get(Time.getFormat(), 'date.short')
318
+ const timeFormat = _.get(Time.getFormat(), 'time.long')
285
319
 
286
320
  this.config = {
287
321
  type: 'line',
@@ -333,7 +367,7 @@ export default {
333
367
  }
334
368
  }
335
369
  // Is current time visible in data time range ?
336
- const currentTime = moment.utc(this.kActivity.currentFormattedTime.iso)
370
+ const currentTime = moment.utc(Time.getCurrentFormattedTime().iso)
337
371
  if (this.timeRange && currentTime.isBetween(...this.timeRange)) {
338
372
  this.config.options.annotation = {
339
373
  drawTime: 'afterDatasetsDraw',
@@ -380,6 +414,14 @@ export default {
380
414
  onUpdateSpan (span) {
381
415
  this.$store.set('timeseries.span', span)
382
416
  },
417
+ onUpdateRun (runTime) {
418
+ this.runTime = runTime
419
+ // Update tooltip action
420
+ const action = _.find(this.actions, { id: 'run-options' })
421
+ action.tooltip = this.$t('KTimeSeries.RUN') + ' (' + Time.format(this.getSelectedRunTime(), 'date.short') +
422
+ ' - ' + Time.format(this.getSelectedRunTime(), 'time.short') + ')'
423
+ this.setupGraph()
424
+ },
383
425
  updateProbedLocationHighlight () {
384
426
  if (!this.probedLocation) return
385
427
  const windDirection = (this.kActivity.selectedLevel ? `windDirection-${this.kActivity.selectedLevel}` : 'windDirection')
@@ -396,6 +438,20 @@ export default {
396
438
  onCenterOn () {
397
439
  this.kActivity.centerOnSelection()
398
440
  },
441
+ onExportSeries () {
442
+ const json = this.times.map(time => {
443
+ const row = {
444
+ [this.$t('KTimeSeries.TIME_LABEL')]: time.toISOString()
445
+ }
446
+ this.datasets.forEach(dataset => {
447
+ const value = _.find(dataset.data, item => item.x.toISOString() === time.toISOString())
448
+ row[dataset.label] = value ? value.y : null
449
+ })
450
+ return row
451
+ })
452
+ const csv = Papa.unparse(json)
453
+ downloadAsBlob(csv, this.$t('KTimeSeries.SERIES_EXPORT_FILE'), 'text/csv;charset=utf-8;')
454
+ },
399
455
  updateProbedLocationName () {
400
456
  this.probedLocationName = ''
401
457
  if (!this.probedLocation) return
@@ -403,6 +459,38 @@ export default {
403
459
  if (name) this.probedLocationName = name
404
460
  },
405
461
  async refresh () {
462
+ // Select the current span as default option in UX
463
+ const span = this.$store.get('timeseries.span')
464
+ const spanOptions = [
465
+ { badge: '3H', value: 180 },
466
+ { badge: '6H', value: 360 },
467
+ { badge: '12H', value: 720 },
468
+ { badge: '24H', value: 1440 },
469
+ { badge: '48H', value: 2880 },
470
+ { badge: '72H', value: 4320 },
471
+ { badge: '96H', value: 5760 }
472
+ ]
473
+ spanOptions.forEach(option => {
474
+ if (option.value === span) {
475
+ option.default = true
476
+ }
477
+ })
478
+ // Registers the base actions
479
+ this.actions = [
480
+ { id: 'center-view', icon: 'las la-eye', tooltip: 'KTimeSeries.CENTER_ON', handler: this.onCenterOn },
481
+ { id: 'export-feature', icon: 'las la-file-download', tooltip: this.$t('KTimeSeries.EXPORT_SERIES'), handler: this.onExportSeries },
482
+ {
483
+ component: 'input/KOptionsChooser',
484
+ id: 'timespan-options',
485
+ icon: 'las la-history',
486
+ tooltip: 'KTimeSeries.SPAN',
487
+ options: spanOptions,
488
+ on: { event: 'option-chosen', listener: this.onUpdateSpan }
489
+ }
490
+ ]
491
+ // Clear previous run timle setup if any
492
+ this.runTime = null
493
+ // Then manage selection
406
494
  this.kActivity.addSelectionHighlight('time-series')
407
495
  this.kActivity.centerOnSelection()
408
496
  // Update timeseries data if required
@@ -429,46 +517,46 @@ export default {
429
517
  (name ? ` (${name})` : ` (${longitude.toFixed(2)}°, ${latitude.toFixed(2)}°)`))
430
518
  }
431
519
  this.updateProbedLocationName()
432
- this.setupGraph()
520
+ await this.setupGraph()
433
521
  this.updateProbedLocationHighlight()
522
+
523
+ // When forecast data are available allow to select wich run to use
524
+ if (this.runTimes && (this.runTimes.length > 1)) {
525
+ // Select latest runTime as default option
526
+ const runOptions = this.runTimes.map(runTime => ({
527
+ label: Time.format(runTime, 'date.short') + ' - ' + Time.format(runTime, 'time.short'),
528
+ value: runTime
529
+ }))
530
+ _.last(runOptions).default = true
531
+ // Registers the action
532
+ this.actions.push({
533
+ component: 'input/KOptionsChooser',
534
+ id: 'run-options',
535
+ icon: 'las la-clock',
536
+ tooltip: this.$t('KTimeSeries.RUN') + ' (' + Time.format(this.getSelectedRunTime(), 'date.short') +
537
+ ' - ' + Time.format(this.getSelectedRunTime(), 'time.short') + ')',
538
+ options: runOptions,
539
+ on: { event: 'option-chosen', listener: this.onUpdateRun }
540
+ })
541
+ }
434
542
  }
435
543
  },
436
544
  created () {
437
545
  // Load the required components
438
546
  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
- ]
547
+ this.$options.components['k-stamp'] = this.$load('frame/KStamp')
460
548
  // Refresh the component
461
549
  this.refresh()
462
550
  },
463
551
  mounted () {
464
- this.kActivity.$on('current-time-changed', this.refresh)
552
+ this.$events.$on('time-current-time-changed', this.refresh)
465
553
  this.$events.$on('time-format-changed', this.refresh)
466
554
  this.$events.$on('timeseries-span-changed', this.refresh)
467
555
  this.kActivity.$on('forecast-model-changed', this.refresh)
468
556
  this.kActivity.$on('forecast-level-changed', this.refresh)
469
557
  },
470
558
  beforeDestroy () {
471
- this.kActivity.$off('current-time-changed', this.refresh)
559
+ this.$events.$off('time-current-time-changed', this.refresh)
472
560
  this.$events.$off('time-format-changed', this.refresh)
473
561
  this.$events.$off('timeseries-span-changed', this.refresh)
474
562
  this.kActivity.$off('forecast-model-changed', this.refresh)
@@ -11,7 +11,10 @@
11
11
  "ALERTS_LIMIT": "Too much alerts to display all of them",
12
12
  "FILE_IMPORT_ERROR": "File import has failed",
13
13
  "CANNOT_CHECK_ALERT_MISSING_SERVICE": "Last check failed due to unavailable service",
14
- "CANNOT_CHECK_ALERT_MISSING_DATA": "Last check failed due to unavailable data"
14
+ "CANNOT_CHECK_ALERT_MISSING_DATA": "Last check failed due to unavailable data",
15
+ "INVALID_GEOJSON_FILE": "{{file}} is not a valid GeoJSON file",
16
+ "INVALID_GPX_FILE": "{{file}} is not a valid GPX file",
17
+ "INVALID_KML_FILE": "{{file}} is not a valid KML file"
15
18
  },
16
19
  "mixins": {
17
20
  "navigator": {
@@ -63,7 +66,10 @@
63
66
  "SEARCH_LOCATION": "Search a location",
64
67
  "ADD_FAVORITE": "Add to favorite views",
65
68
  "SYNCHRONIZE_TIMELINE_LABEL": "Synchronize with timeline",
66
- "TOOLS": "Tools"
69
+ "TOOLS": "Tools",
70
+ "SAVE_LAYER_EDITION_CHANGES": "Save edition changes",
71
+ "DISCARD_LAYER_EDITION_CHANGES": "Discard edition changes",
72
+ "CAPTURE_VIEW": "Capture the view"
67
73
  },
68
74
  "timeseries": {
69
75
  "FORECAST_PROBE": "Forecast"
@@ -199,7 +205,31 @@
199
205
  "LAYER_CATEGORY_NAME_FIELD_LABEL": "Enter the name of this category",
200
206
  "LAYER_CATEGORY_ICON_FIELD_LABEL": "Select an icon for this category",
201
207
  "LAYER_CATEGORY_LAYERS_FIELD_LABEL": "Select the layers in this category",
202
- "LAYER_CATEGORY_EXCLUSIVE_FIELD_LABEL": "Make selection exclusive within this category"
208
+ "LAYER_CATEGORY_EXCLUSIVE_FIELD_LABEL": "Make selection exclusive within this category",
209
+ "UPDATE_SETTINGS_TITLE": "Your settings",
210
+ "TIME_FORMAT_SETTINGS": "Time/Date format",
211
+ "TIME_FORMAT_SHORT_TIME_FIELD_LABEL": "Short time format",
212
+ "TIME_FORMAT_SHORT_TIME_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
213
+ "TIME_FORMAT_LONG_TIME_FIELD_LABEL": "Long time format",
214
+ "TIME_FORMAT_LONG_TIME_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
215
+ "TIME_FORMAT_SHORT_DATE_FIELD_LABEL": "Short date format",
216
+ "TIME_FORMAT_SHORT_DATE_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
217
+ "TIME_FORMAT_LONG_DATE_FIELD_LABEL": "Long date format",
218
+ "TIME_FORMAT_LONG_DATE_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
219
+ "TIME_FORMAT_SHORT_YEAR_FIELD_LABEL": "Short year format",
220
+ "TIME_FORMAT_SHORT_YEAR_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
221
+ "TIME_FORMAT_LONG_YEAR_FIELD_LABEL": "Long year format",
222
+ "TIME_FORMAT_LONG_YEAR_FIELD_HELPER": "<a target='_blank' href='https://momentjs.com/docs/#/displaying/format/'>&#x1F6C8;</a>",
223
+ "TIME_FORMAT_UTC_FIELD_LABEL": "UTC time display mode",
224
+ "MAP_SETTINGS": "Map parameters",
225
+ "RESTORE_VIEW_FIELD_LABEL": "Save current extent",
226
+ "RESTORE_LAYERS_FIELD_LABEL": "Save active layers",
227
+ "LOCATION_FORMAT_LABEL": "Location format",
228
+ "LOCATION_FORMAT_HELPER": "<a target='_blank' href='https://github.com/nerik/formatcoords#formatting'>&#x1F6C8;</a>",
229
+ "TIMELINE_SETTINGS": "Timeline parameters",
230
+ "TIMELINE_STEP": "Timeline step (in minutes)",
231
+ "TIMESERIES_SETTINGS": "Timeseries parameters",
232
+ "TIMESERIES_SPAN": "Timeseries span (in hours)"
203
233
  },
204
234
  "tours": {
205
235
  "navigation-bar": {
@@ -223,7 +253,7 @@
223
253
  "TOGGLE_CATALOG_LABEL": "Open the catalog with this button."
224
254
  },
225
255
  "favorite-views": {
226
- "FAVORITE_VIEWS_LIST_LABEL": "View the list of your favorite views.",
256
+ "FAVORITE_VIEWS_LIST_LABEL": "When you have defined some favorite views they are listed here, otherwise you can directly create your first one.",
227
257
  "FAVORITE_VIEWS_LIST_ACTIONS_LABEL": "Sort your views by name or update time and seek for a target one.",
228
258
  "FAVORITE_VIEW_ACTIONS_LABEL": "Remove a view by using this button.",
229
259
  "ADD_FAVORITE_VIEW_LABEL": "Add a new views using this button.",
@@ -243,7 +273,7 @@
243
273
  "METEO_LAYERS_LABEL": "Each layer will then target data of a specific meteorological element from this model.",
244
274
  "MANAGE_LAYER_CATEGORIES_LABEL": "You can manage the categories of your own data layers.",
245
275
  "MANAGE_LAYER_CATEGORIES_LINK_LABEL": "How to manage the categories",
246
- "CATEGORIES_LIST_LABEL": "View the list of your categories.",
276
+ "CATEGORIES_LIST_LABEL": "When you have defined some categories they are listed here, otherwise you can directly create your first one.",
247
277
  "CATEGORIES_LIST_ACTIONS_LABEL": "Sort your categories by name or update time and seek for a target one.",
248
278
  "CATEGORY_ACTIONS_LABEL": "Update or remove a category by using these buttons.",
249
279
  "ADD_CATEGORY_LABEL": "Add a new category using this button.",
@@ -281,9 +311,9 @@
281
311
  "SERVICE_LAYER_LABEL": "Select the target OGC service layer to connect to.",
282
312
  "LAYER_NAME_LABEL": "Enter the name of your new data layer.",
283
313
  "LAYER_DESCRIPTION_LABEL": "Then provide a description for your new data layer.",
284
- "LAYER_FEATURE_ID_LABEL": "Choose an identifier to uniquely identify the features of your layer.",
314
+ "LAYER_FEATURE_ID_LABEL": "Last, choose an identifier to uniquely identify the features of your layer.",
285
315
  "LAYER_STYLE_LABEL": "Select the style to be used for your layer.",
286
- "LAYER_SCHEMA_LABEL": "Last, select the data schema of your features (JSON schema file).",
316
+ "LAYER_SCHEMA_LABEL": "Select the data schema of your features (JSON schema file).",
287
317
  "IMPORT_LAYER_LABEL": "Import existing data as a new data layer.",
288
318
  "IMPORT_LAYER_LINK_LABEL": "How to import map data",
289
319
  "IMPORT_NEW_LAYER_LABEL": "Confirm the creation of your new layer and the map will be centered on your new layer.",
@@ -302,19 +332,26 @@
302
332
  },
303
333
  "KOwsLayerField": {
304
334
  "UNABLE_TO_DESCRIBE_FEATURE_TYPE": "Failed fetching layer's description.",
305
- "UNSUPPORTED_LAYER_CRS": "The projection used by this layer is not supported."
335
+ "UNSUPPORTED_LAYER_CRS": "The projection used by this layer is not supported.",
336
+ "UNSUPPORTED_LAYER_FORMAT": "The data format used by this layer is not supported."
306
337
  },
307
338
  "KLocationField": {
308
339
  "SEARCH": "$t(SEARCH)",
309
340
  "NO_RESULTS": "$t(EMPTY)"
310
341
  },
311
342
  "KLocationMap": {
312
- "RESTORE_BUTTON": "Restore position",
313
- "RECENTER_BUTTON": "Recenter map"
343
+ "DRAW_LINE": "Draw a line",
344
+ "DRAW_POLYGON": "Draw a polygon",
345
+ "LOCATE_BUTTON": "Locate me",
346
+ "RECENTER_BUTTON": "Recenter map",
347
+ "CLOSE_BUTTON": "Close map"
314
348
  },
315
349
  "KLocationInput": {
316
- "GEOLOCATE": "My position",
317
- "LOCATION_MAP": "Location map"
350
+ "SEARCH_LOCATION": "Seek for an address",
351
+ "GEOLOCATE": "Locate me",
352
+ "MY_LOCATION": "My location",
353
+ "LOCATION_MAP": "Pick on a map",
354
+ "DRAW_MAP": "Draw on a map"
318
355
  },
319
356
  "KPositionIndicator": {
320
357
  "PLACEHOLDER": "Navigate the see the coordinates",
@@ -326,16 +363,23 @@
326
363
  "KTimeSeries": {
327
364
  "NO_DATA_AVAILABLE": "No data available",
328
365
  "CENTER_ON": "Center the view on the probed location",
329
- "SPAN": "Timeseries span"
366
+ "SPAN": "Timeseries span",
367
+ "RUN": "Forecast run",
368
+ "TIME_LABEL": "Time",
369
+ "EXPORT_SERIES": "Export data",
370
+ "SERIES_EXPORT_FILE": "Series.csv"
330
371
  },
331
372
  "KCatalogPanel": {
332
373
  "BASE_LAYERS": "Base Layers",
333
374
  "TERRAIN_LAYERS": "Terrain layers",
334
375
  "OVERLAY_LAYERS": "My layers",
335
376
  "MEASURE_LAYERS": "Measure layers",
377
+ "INFRASTRUCTURE_LAYERS": "Infrastructures",
378
+ "ADMINISTRATIVE_LAYERS": "Administrative",
336
379
  "METEO_LAYERS": "Meteo forecasts",
337
380
  "BUSINESS_LAYERS": "Business layers",
338
- "CAPTURED_LAYERS": "Captured views"
381
+ "CAPTURED_LAYERS": "Captured views",
382
+ "DEMOGRAPHY_LAYERS": "Demography layers"
339
383
  },
340
384
  "KFeaturesFilter": {
341
385
  "TITLE": "Data filter for layer {{layer}}",
@@ -376,9 +420,10 @@
376
420
  },
377
421
  "KLayerStyleForm": {
378
422
  "BASE": "Base properties",
379
- "DEFAULT_VISIBILITY": "Visibilité par défaut",
423
+ "DEFAULT_VISIBILITY": "Visible by default",
380
424
  "MIN_ZOOM": "Visible from level",
381
425
  "MAX_ZOOM": "Visible until level",
426
+ "SELECTABLE": "Selectable",
382
427
  "LAYER_OPACITY": "Transparent layer",
383
428
  "OPACITY": "Opacity",
384
429
  "POINTS": "Markers",
@@ -452,19 +497,23 @@
452
497
  },
453
498
  "KFavoriteViews": {
454
499
  "FAVORITE_VIEWS_LABEL": "Favorite views",
455
- "SORT_VIEWS": "Sort views",
500
+ "SORT": "Sort views",
456
501
  "CREATE_VIEW": "Create a new view",
457
- "SAVE_BUTTON": "Save",
502
+ "ADD_BUTTON": "Add",
503
+ "BACK_BUTTON": "Back",
458
504
  "VIEW_LIST": "Back to list",
459
505
  "REMOVE_VIEW": "$t(REMOVE)"
460
506
  },
461
507
  "KLayerCategories": {
462
508
  "LAYER_CATEGORIES_LABEL": "Manage my categories",
509
+ "ADD_TITLE": "Add a new layer category",
510
+ "UPDATE_TITLE": "Update a layer category",
463
511
  "TITLE": "Manage layer categories",
464
- "SORT_CATEGORIES": "Sort categories",
512
+ "SORT": "Sort categories",
465
513
  "CREATE_CATEGORY": "Create a new category",
466
- "ADD_BUTTON": "OK",
467
- "EDIT_BUTTON": "OK",
514
+ "BACK_BUTTON": "Back",
515
+ "ADD_BUTTON": "Add",
516
+ "EDIT_BUTTON": "Update",
468
517
  "CATEGORY_LIST": "Back to list",
469
518
  "EDIT_CATEGORY": "$t(EDIT)",
470
519
  "REMOVE_CATEGORY": "$t(REMOVE)"
@@ -501,5 +550,41 @@
501
550
  "FEATURE_ID_FIELD_LABEL": "$t(KAddLayer.FEATURE_ID_FIELD_LABEL)",
502
551
  "CATEGORY_FIELD_LABEL": "$t(KAddLayer.CATEGORY_FIELD_LABEL)",
503
552
  "CREATE_BUTTON": "Create"
553
+ },
554
+ "KLayerEditionToolbar": {
555
+ "ADD_POLYGON_FEATURES": "Add polygon features",
556
+ "ADD_RECTANGLE_FEATURES": "Add rectangle features",
557
+ "ADD_LINE_FEATURES": "Add linear features",
558
+ "ADD_POINT_FEATURES": "Add point features",
559
+ "EDIT_GEOMETRY": "Edit feature geometry",
560
+ "EDIT_PROPERTIES": "Edit feature properties",
561
+ "DRAG_FEATURES": "Move features",
562
+ "REMOVE_FEATURES": "Remove features"
563
+ },
564
+ "KCaptureToolbar": {
565
+ "SD_LABEL": "Standard Definition",
566
+ "SD_DESCRIPTION": "4:3, 640 x 480",
567
+ "HD_LABEL": "High Definition",
568
+ "HD_DESCRIPTION": "16:9, 1280 x 720",
569
+ "FHD_LABEL": "Full HD",
570
+ "FHD_DESCRIPTION": "16:9, 1920 x 1080",
571
+ "QHD_LABEL": "Quad HD",
572
+ "QHD_DESCRIPTION": "16:9, 2560 x 1440",
573
+ "2K_LABEL": "2K",
574
+ "2K_DESCRIPTION": "1:1.77, 2048 x 1080",
575
+ "4K_LABEL": "4K or Ultra HD",
576
+ "4K_DESCRIPTION": "1:1.9, 3840 x 2160",
577
+ "8K_LABEL": "8K or Full Ultra HD",
578
+ "8K_DESCRIPTION": "16∶9, 7680 x 4320",
579
+ "CAPTURE_ACTION": "Capture view",
580
+ "CAPTURING_VIEW": "Waiting for capturing view"
581
+ },
582
+ "KMeasureTool": {
583
+ "TOOL_BUTTON_LABEL": "Display the measure tool",
584
+ "CLEAR": "Clear all measurements",
585
+ "MEASURE_DISTANCE": "Measure a distance",
586
+ "MEASURE_AREA": "Measure an area",
587
+ "DISPLAY_MEASURE_VALUE": "Display measure values",
588
+ "CLICK_TO_CHANGE_UNIT": "Click to change unit"
504
589
  }
505
590
  }