@kalisio/kdk 1.4.2 → 1.6.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 (410) hide show
  1. package/.nyc_output/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
  2. package/.nyc_output/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
  3. package/.nyc_output/{2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json → 27401f21-8ccf-42fa-8230-4232189d86b3.json} +0 -0
  4. package/.nyc_output/{81d21e46-766a-46bc-b1b7-143ca577347a.json → 52278ef5-c337-4724-97be-e2e4416847c5.json} +0 -0
  5. package/.nyc_output/{aaf3ebbb-f895-4d7b-9255-bc5dee832570.json → 5dd49b8a-4c84-42f9-a3d5-712247a84775.json} +0 -0
  6. package/.nyc_output/{dbeb2602-0ac2-4e66-978b-0d29548359ca.json → 612b4859-9645-45c1-a41e-1fae420518c4.json} +0 -0
  7. package/.nyc_output/{e47d1e4c-2fff-4dcb-908f-d3081162547c.json → bab87fe9-d99a-4759-99e6-3fc4622eeca0.json} +0 -0
  8. package/.nyc_output/processinfo/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
  9. package/.nyc_output/processinfo/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
  10. package/.nyc_output/processinfo/27401f21-8ccf-42fa-8230-4232189d86b3.json +1 -0
  11. package/.nyc_output/processinfo/52278ef5-c337-4724-97be-e2e4416847c5.json +1 -0
  12. package/.nyc_output/processinfo/5dd49b8a-4c84-42f9-a3d5-712247a84775.json +1 -0
  13. package/.nyc_output/processinfo/612b4859-9645-45c1-a41e-1fae420518c4.json +1 -0
  14. package/.nyc_output/processinfo/bab87fe9-d99a-4759-99e6-3fc4622eeca0.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +69 -10
  17. package/coverage/core/api/application.js.html +500 -422
  18. package/coverage/core/api/authentication.js.html +119 -119
  19. package/coverage/core/api/db.js.html +172 -172
  20. package/coverage/core/api/hooks/hooks.account.js.html +45 -45
  21. package/coverage/core/api/hooks/hooks.authentication.js.html +71 -71
  22. package/coverage/core/api/hooks/hooks.authorisations.js.html +368 -353
  23. package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
  24. package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
  25. package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
  26. package/coverage/core/api/hooks/hooks.model.js.html +269 -269
  27. package/coverage/core/api/hooks/hooks.organisations.js.html +190 -190
  28. package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
  29. package/coverage/core/api/hooks/hooks.query.js.html +277 -211
  30. package/coverage/core/api/hooks/hooks.service.js.html +82 -82
  31. package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
  32. package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
  33. package/coverage/core/api/hooks/hooks.users.js.html +263 -263
  34. package/coverage/core/api/hooks/index.html +172 -172
  35. package/coverage/core/api/hooks/index.js.html +24 -24
  36. package/coverage/core/api/index.html +76 -76
  37. package/coverage/core/api/index.js.html +30 -30
  38. package/coverage/core/api/marshall.js.html +57 -57
  39. package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
  40. package/coverage/core/api/models/index.html +50 -50
  41. package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
  42. package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
  43. package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
  44. package/coverage/core/api/oauth2-handler.js.html +18 -18
  45. package/coverage/core/api/oauth2-verifier.js.html +38 -38
  46. package/coverage/core/api/services/account/account.hooks.js.html +16 -16
  47. package/coverage/core/api/services/account/account.service.js.html +104 -104
  48. package/coverage/core/api/services/account/index.html +32 -32
  49. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  50. package/coverage/core/api/services/authorisations/authorisations.service.js.html +156 -132
  51. package/coverage/core/api/services/authorisations/index.html +28 -28
  52. package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
  53. package/coverage/core/api/services/databases/databases.service.js.html +12 -12
  54. package/coverage/core/api/services/databases/index.html +24 -24
  55. package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
  56. package/coverage/core/api/services/devices/devices.service.js.html +121 -121
  57. package/coverage/core/api/services/devices/index.html +28 -28
  58. package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
  59. package/coverage/core/api/services/groups/index.html +13 -13
  60. package/coverage/core/api/services/index.html +21 -21
  61. package/coverage/core/api/services/index.js.html +118 -118
  62. package/coverage/core/api/services/mailer/index.html +24 -24
  63. package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
  64. package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
  65. package/coverage/core/api/services/organisations/index.html +24 -24
  66. package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
  67. package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
  68. package/coverage/core/api/services/pusher/index.html +34 -34
  69. package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
  70. package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
  71. package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
  72. package/coverage/core/api/services/storage/index.html +21 -21
  73. package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
  74. package/coverage/core/api/services/tags/index.html +21 -21
  75. package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
  76. package/coverage/core/api/services/users/index.html +21 -21
  77. package/coverage/core/api/services/users/users.hooks.js.html +33 -33
  78. package/coverage/core/common/errors.js.html +1 -1
  79. package/coverage/core/common/index.html +42 -27
  80. package/coverage/core/common/index.js.html +16 -16
  81. package/coverage/core/common/permissions.js.html +320 -290
  82. package/coverage/index.html +181 -181
  83. package/coverage/lcov-report/core/api/application.js.html +500 -422
  84. package/coverage/lcov-report/core/api/authentication.js.html +119 -119
  85. package/coverage/lcov-report/core/api/db.js.html +172 -172
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +45 -45
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +71 -71
  88. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +368 -353
  89. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
  90. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
  91. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
  92. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
  93. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +190 -190
  94. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
  95. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +277 -211
  96. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
  97. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
  98. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
  99. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +263 -263
  100. package/coverage/lcov-report/core/api/hooks/index.html +172 -172
  101. package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
  102. package/coverage/lcov-report/core/api/index.html +76 -76
  103. package/coverage/lcov-report/core/api/index.js.html +30 -30
  104. package/coverage/lcov-report/core/api/marshall.js.html +57 -57
  105. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
  106. package/coverage/lcov-report/core/api/models/index.html +50 -50
  107. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
  108. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
  109. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
  110. package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
  111. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
  112. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
  113. package/coverage/lcov-report/core/api/services/account/account.service.js.html +104 -104
  114. package/coverage/lcov-report/core/api/services/account/index.html +32 -32
  115. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
  116. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +156 -132
  117. package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
  118. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
  119. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
  120. package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
  121. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
  122. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
  123. package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
  124. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
  125. package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
  126. package/coverage/lcov-report/core/api/services/index.html +21 -21
  127. package/coverage/lcov-report/core/api/services/index.js.html +118 -118
  128. package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
  129. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
  130. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
  131. package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
  132. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
  133. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
  134. package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
  135. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
  136. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
  137. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
  138. package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
  139. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
  140. package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
  141. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
  142. package/coverage/lcov-report/core/api/services/users/index.html +21 -21
  143. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
  144. package/coverage/lcov-report/core/common/errors.js.html +1 -1
  145. package/coverage/lcov-report/core/common/index.html +42 -27
  146. package/coverage/lcov-report/core/common/index.js.html +16 -16
  147. package/coverage/lcov-report/core/common/permissions.js.html +320 -290
  148. package/coverage/lcov-report/index.html +181 -181
  149. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
  150. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +25 -7
  151. package/coverage/lcov-report/map/api/hooks/index.html +7 -7
  152. package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
  153. package/coverage/lcov-report/map/api/index.html +1 -1
  154. package/coverage/lcov-report/map/api/index.js.html +1 -1
  155. package/coverage/lcov-report/map/api/marshall.js.html +1 -1
  156. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
  157. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
  158. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +14 -5
  159. package/coverage/lcov-report/map/api/models/index.html +7 -7
  160. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
  161. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
  162. package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
  163. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
  164. package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
  165. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  166. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  167. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +1 -1
  168. package/coverage/lcov-report/map/api/services/features/index.html +1 -1
  169. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  170. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
  171. package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
  172. package/coverage/lcov-report/map/api/services/index.html +1 -1
  173. package/coverage/lcov-report/map/api/services/index.js.html +1 -1
  174. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
  175. package/coverage/lcov-report/map/common/errors.js.html +1 -1
  176. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
  177. package/coverage/lcov-report/map/common/grid.js.html +1 -1
  178. package/coverage/lcov-report/map/common/index.html +1 -1
  179. package/coverage/lcov-report/map/common/index.js.html +1 -1
  180. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
  181. package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
  182. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
  183. package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
  184. package/coverage/lcov-report/map/common/permissions.js.html +1 -1
  185. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
  186. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  187. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
  188. package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
  189. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
  190. package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
  191. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  192. package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
  193. package/coverage/lcov.info +3683 -3825
  194. package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
  195. package/coverage/map/api/hooks/hooks.query.js.html +25 -7
  196. package/coverage/map/api/hooks/index.html +7 -7
  197. package/coverage/map/api/hooks/index.js.html +1 -1
  198. package/coverage/map/api/index.html +1 -1
  199. package/coverage/map/api/index.js.html +1 -1
  200. package/coverage/map/api/marshall.js.html +1 -1
  201. package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
  202. package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
  203. package/coverage/map/api/models/features.model.mongodb.js.html +14 -5
  204. package/coverage/map/api/models/index.html +7 -7
  205. package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
  206. package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
  207. package/coverage/map/api/services/alerts/index.html +1 -1
  208. package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
  209. package/coverage/map/api/services/catalog/index.html +1 -1
  210. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  211. package/coverage/map/api/services/daptiles/index.html +1 -1
  212. package/coverage/map/api/services/features/features.hooks.js.html +1 -1
  213. package/coverage/map/api/services/features/index.html +1 -1
  214. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
  215. package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
  216. package/coverage/map/api/services/geocoder/index.html +1 -1
  217. package/coverage/map/api/services/index.html +1 -1
  218. package/coverage/map/api/services/index.js.html +1 -1
  219. package/coverage/map/common/dynamic-grid-source.js.html +1 -1
  220. package/coverage/map/common/errors.js.html +1 -1
  221. package/coverage/map/common/geotiff-grid-source.js.html +1 -1
  222. package/coverage/map/common/grid.js.html +1 -1
  223. package/coverage/map/common/index.html +1 -1
  224. package/coverage/map/common/index.js.html +1 -1
  225. package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
  226. package/coverage/map/common/moment-utils.js.html +1 -1
  227. package/coverage/map/common/opendap-grid-source.js.html +1 -1
  228. package/coverage/map/common/opendap-utils.js.html +1 -1
  229. package/coverage/map/common/permissions.js.html +1 -1
  230. package/coverage/map/common/time-based-grid-source.js.html +1 -1
  231. package/coverage/map/common/tms-utils.js.html +1 -1
  232. package/coverage/map/common/wcs-grid-source.js.html +1 -1
  233. package/coverage/map/common/wcs-utils.js.html +1 -1
  234. package/coverage/map/common/weacast-grid-source.js.html +1 -1
  235. package/coverage/map/common/wfs-utils.js.html +1 -1
  236. package/coverage/map/common/wms-utils.js.html +1 -1
  237. package/coverage/map/common/wmts-utils.js.html +1 -1
  238. package/extras/tours/map/navigation-bar.js +49 -1
  239. package/lib/core/api/application.js +35 -9
  240. package/lib/core/api/application.js.map +1 -1
  241. package/lib/core/api/hooks/hooks.authorisations.js +8 -1
  242. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  243. package/lib/core/api/hooks/hooks.query.js +135 -100
  244. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  245. package/lib/core/api/services/authorisations/authorisations.service.js +13 -1
  246. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  247. package/lib/core/api/services/pusher/pusher.service.js +40 -16
  248. package/lib/core/api/services/pusher/pusher.service.js.map +1 -1
  249. package/lib/core/client/components/collection/KColumn.vue +29 -28
  250. package/lib/core/client/components/collection/KFilter.vue +97 -72
  251. package/lib/core/client/components/editor/KModalEditor.vue +3 -4
  252. package/lib/core/client/components/editor/KSettingsEditor.vue +6 -2
  253. package/lib/core/client/components/form/KFileField.vue +14 -36
  254. package/lib/core/client/components/form/KRoleField.vue +5 -2
  255. package/lib/core/client/components/form/KTextField.vue +12 -2
  256. package/lib/core/client/components/form/KUnitField.vue +57 -0
  257. package/lib/core/client/components/form/KUrlField.vue +1 -1
  258. package/lib/core/client/components/frame/KAction.vue +1 -2
  259. package/lib/core/client/components/frame/KModal.vue +66 -20
  260. package/lib/core/client/components/frame/KScrollArea.vue +65 -0
  261. package/lib/core/client/components/frame/index.js +6 -1
  262. package/lib/core/client/components/frame/index.js.map +1 -1
  263. package/lib/core/client/components/input/KColorChooser.vue +3 -5
  264. package/lib/core/client/components/input/KIconChooser.vue +38 -40
  265. package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
  266. package/lib/core/client/components/layout/KAbout.vue +47 -49
  267. package/lib/core/client/components/team/KAddMember.vue +1 -1
  268. package/lib/core/client/components/team/KChangeRole.vue +11 -14
  269. package/lib/core/client/components/team/KGroupCard.vue +12 -5
  270. package/lib/core/client/components/team/KGroupsActivity.vue +1 -1
  271. package/lib/core/client/components/team/KJoinGroup.vue +22 -22
  272. package/lib/core/client/components/team/KMemberCard.vue +19 -4
  273. package/lib/core/client/components/viewer/KModalViewer.vue +10 -9
  274. package/lib/core/client/i18n/core_en.json +72 -8
  275. package/lib/core/client/i18n/core_fr.json +66 -8
  276. package/lib/core/client/index.js +31 -0
  277. package/lib/core/client/index.js.map +1 -1
  278. package/lib/core/client/layout.js +8 -1
  279. package/lib/core/client/layout.js.map +1 -1
  280. package/lib/core/client/mixins/mixin.base-widget.js +5 -3
  281. package/lib/core/client/mixins/mixin.base-widget.js.map +1 -1
  282. package/lib/core/client/reader.js +85 -0
  283. package/lib/core/client/reader.js.map +1 -0
  284. package/lib/core/client/readers/index.js +30 -0
  285. package/lib/core/client/readers/index.js.map +1 -0
  286. package/lib/core/client/readers/reader.csv.js +54 -0
  287. package/lib/core/client/readers/reader.csv.js.map +1 -0
  288. package/lib/core/client/readers/reader.json.js +49 -0
  289. package/lib/core/client/readers/reader.json.js.map +1 -0
  290. package/lib/core/client/services/index.js +14 -3
  291. package/lib/core/client/services/index.js.map +1 -1
  292. package/lib/core/client/services/local-settings.service.js +6 -4
  293. package/lib/core/client/services/local-settings.service.js.map +1 -1
  294. package/lib/core/client/time.js +4 -3
  295. package/lib/core/client/time.js.map +1 -1
  296. package/lib/core/client/units.js +195 -0
  297. package/lib/core/client/units.js.map +1 -0
  298. package/lib/core/common/permissions.js +44 -34
  299. package/lib/core/common/permissions.js.map +1 -1
  300. package/lib/core/common/schemas/settings.update.json +72 -0
  301. package/lib/map/api/hooks/hooks.query.js +7 -2
  302. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  303. package/lib/map/api/models/features.model.mongodb.js +3 -0
  304. package/lib/map/api/models/features.model.mongodb.js.map +1 -1
  305. package/lib/map/client/components/KCaptureToolbar.vue +151 -0
  306. package/lib/map/client/components/KColorLegend.vue +16 -4
  307. package/lib/map/client/components/KFeaturesChart.vue +10 -11
  308. package/lib/map/client/components/KFeaturesFilter.vue +40 -39
  309. package/lib/map/client/components/KFeaturesTable.vue +15 -16
  310. package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
  311. package/lib/map/client/components/KLayerStyleEditor.vue +3 -2
  312. package/lib/map/client/components/KLayerStyleForm.vue +38 -27
  313. package/lib/map/client/components/KMeasureTool.vue +337 -0
  314. package/lib/map/client/components/KTimeline.vue +5 -9
  315. package/lib/map/client/components/catalog/KAddLayer.vue +3 -2
  316. package/lib/map/client/components/catalog/KCatalog.vue +26 -7
  317. package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
  318. package/lib/map/client/components/catalog/KLayerCategories.vue +3 -2
  319. package/lib/map/client/components/catalog/KLayersSelector.vue +8 -6
  320. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +1 -1
  321. package/lib/map/client/components/widget/KInformationBox.vue +8 -17
  322. package/lib/map/client/components/widget/KMapillaryViewer.vue +5 -1
  323. package/lib/map/client/components/widget/KTimeSeries.vue +92 -9
  324. package/lib/map/client/i18n/map_en.json +51 -20
  325. package/lib/map/client/i18n/map_fr.json +51 -20
  326. package/lib/map/client/init.js +7 -1
  327. package/lib/map/client/init.js.map +1 -1
  328. package/lib/map/client/leaflet/MaskLayer.js +9 -0
  329. package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
  330. package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
  331. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  332. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +16 -21
  333. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  334. package/lib/map/client/mixins/globe/mixin.popup.js +7 -1
  335. package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
  336. package/lib/map/client/mixins/globe/mixin.tooltip.js +7 -1
  337. package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
  338. package/lib/map/client/mixins/map/mixin.base-map.js +54 -9
  339. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  340. package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
  341. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  342. package/lib/map/client/mixins/map/mixin.file-layers.js +51 -97
  343. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  344. package/lib/map/client/mixins/map/mixin.geojson-layers.js +43 -11
  345. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  346. package/lib/map/client/mixins/map/mixin.popup.js +7 -1
  347. package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
  348. package/lib/map/client/mixins/map/mixin.style.js +1 -1
  349. package/lib/map/client/mixins/map/mixin.style.js.map +1 -1
  350. package/lib/map/client/mixins/map/mixin.tooltip.js +7 -1
  351. package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
  352. package/lib/map/client/mixins/mixin.activity.js +2 -0
  353. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  354. package/lib/map/client/mixins/mixin.context.js +26 -3
  355. package/lib/map/client/mixins/mixin.context.js.map +1 -1
  356. package/lib/map/client/mixins/mixin.feature-service.js +3 -3
  357. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  358. package/lib/map/client/mixins/mixin.infobox.js +4 -0
  359. package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
  360. package/lib/map/client/mixins/mixin.weacast.js +7 -5
  361. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  362. package/lib/map/client/readers/index.js +54 -0
  363. package/lib/map/client/readers/index.js.map +1 -0
  364. package/lib/map/client/readers/reader.geojson.js +87 -0
  365. package/lib/map/client/readers/reader.geojson.js.map +1 -0
  366. package/lib/map/client/readers/reader.gpx.js +52 -0
  367. package/lib/map/client/readers/reader.gpx.js.map +1 -0
  368. package/lib/map/client/readers/reader.kml.js +52 -0
  369. package/lib/map/client/readers/reader.kml.js.map +1 -0
  370. package/lib/map/client/readers/reader.shp.js +116 -0
  371. package/lib/map/client/readers/reader.shp.js.map +1 -0
  372. package/lib/map/client/utils.js +0 -7
  373. package/lib/map/client/utils.js.map +1 -1
  374. package/lib/test/client/core/account.js +1 -1
  375. package/lib/test/client/core/account.js.map +1 -1
  376. package/lib/test/client/core/runner.js +1 -2
  377. package/lib/test/client/core/runner.js.map +1 -1
  378. package/lib/test/client/core/screens.js +1 -1
  379. package/lib/test/client/core/screens.js.map +1 -1
  380. package/lib/test/client/core/utils.js +2 -2
  381. package/lib/test/client/core/utils.js.map +1 -1
  382. package/lib/test/client/map/catalog.js +50 -49
  383. package/lib/test/client/map/catalog.js.map +1 -1
  384. package/package.json +3 -3
  385. package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
  386. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
  387. package/.nyc_output/processinfo/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
  388. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +0 -1
  389. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +0 -1
  390. package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
  391. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +0 -1
  392. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
  393. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +0 -1
  394. package/extras/testcafe/Dockerfile +0 -48
  395. package/extras/testcafe/docker-entrypoint.sh +0 -27
  396. package/extras/testcafe/page-models/core/account.js +0 -75
  397. package/extras/testcafe/page-models/core/base-collection.js +0 -41
  398. package/extras/testcafe/page-models/core/base-page.js +0 -25
  399. package/extras/testcafe/page-models/core/groups.js +0 -36
  400. package/extras/testcafe/page-models/core/index.js +0 -140
  401. package/extras/testcafe/page-models/core/layout.js +0 -145
  402. package/extras/testcafe/page-models/core/members.js +0 -98
  403. package/extras/testcafe/page-models/core/organisations.js +0 -76
  404. package/extras/testcafe/page-models/core/screens.js +0 -99
  405. package/extras/testcafe/page-models/core/tags.js +0 -21
  406. package/extras/testcafe/page-models/map/add-layer.js +0 -51
  407. package/extras/testcafe/page-models/map/catalog.js +0 -132
  408. package/extras/testcafe/page-models/map/index.js +0 -36
  409. package/extras/testcafe/page-models/map/map-activity.js +0 -42
  410. package/extras/testcafe/page-models/map/timeline.js +0 -67
@@ -89,6 +89,18 @@ Object.keys(_time).forEach(function (key) {
89
89
  });
90
90
  });
91
91
 
92
+ var _units = require('./units');
93
+
94
+ Object.keys(_units).forEach(function (key) {
95
+ if (key === "default" || key === "__esModule") return;
96
+ Object.defineProperty(exports, key, {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _units[key];
100
+ }
101
+ });
102
+ });
103
+
92
104
  var _filter = require('./filter');
93
105
 
94
106
  Object.keys(_filter).forEach(function (key) {
@@ -101,6 +113,18 @@ Object.keys(_filter).forEach(function (key) {
101
113
  });
102
114
  });
103
115
 
116
+ var _reader = require('./reader');
117
+
118
+ Object.keys(_reader).forEach(function (key) {
119
+ if (key === "default" || key === "__esModule") return;
120
+ Object.defineProperty(exports, key, {
121
+ enumerable: true,
122
+ get: function () {
123
+ return _reader[key];
124
+ }
125
+ });
126
+ });
127
+
104
128
  var _sorter = require('./sorter');
105
129
 
106
130
  Object.keys(_sorter).forEach(function (key) {
@@ -170,6 +194,8 @@ var _hooks = require('./hooks');
170
194
 
171
195
  var hooks = _interopRequireWildcard(_hooks);
172
196
 
197
+ var _readers = require('./readers');
198
+
173
199
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
174
200
 
175
201
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -192,6 +218,7 @@ function init() {
192
218
  _loglevel2.default.debug('Initializing core');
193
219
  // Initialize singletons that might be used globally first
194
220
  _time.Time.initialize();
221
+ _units.Units.initialize();
195
222
  // Then services
196
223
  api.configure(_services2.default);
197
224
  // Last, create the models listened by the main layout/pages components
@@ -218,6 +245,10 @@ function init() {
218
245
  }
219
246
  });
220
247
 
248
+ // Register default readers
249
+ _reader.Reader.register('.json', _readers.JSONReader);
250
+ _reader.Reader.register('.csv', _readers.CSVReader);
251
+
221
252
  // -----------------------------------------------------------------------
222
253
  // | After this we should only have specific cordova initialisation code |
223
254
  // -----------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../core/client/index.js"],"names":["init","utils","mixins","hooks","api","logger","debug","Time","initialize","configure","services","Layout","Filter","Sorter","Search","Store","set","content","mode","undefined","filter","visible","current","widgets","actions","users","getService","on","user","_id","get","patch","Platform","is","cordova","document","addEventListener","_","window","device","error","notifier","PushNotification","android","vibrate","sound","forceShow","ios","alert","badge","windows","data","registrationId","devicesService","update","uuid","toast","message","timeout","response"],"mappings":"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","file":"index.js","sourcesContent":["import logger from 'loglevel'\r\nimport { Platform } from 'quasar'\r\nimport { Store } from './store'\r\nimport { Layout } from './layout'\r\nimport { Time } from './time'\r\nimport { Filter } from './filter'\r\nimport { Sorter } from './sorter'\r\nimport { Search } from './search'\r\nimport services from './services'\r\nimport * as utils from './utils'\r\nimport * as mixins from './mixins'\r\nimport * as hooks from './hooks'\r\n\r\n// We faced a bug in babel so that transform-runtime with export * from 'x' generates import statements in transpiled code\r\n// Tracked here : https://github.com/babel/babel/issues/2877\r\n// We tested the workaround given here https://github.com/babel/babel/issues/2877#issuecomment-270700000 with success so far\r\n\r\n// FIXME: we don't build vue component anymore, they are processed by webpack in the application template\r\n// export * from './components'\r\n\r\nexport * from './events'\r\nexport * from './api'\r\nexport * from './services'\r\nexport * from './store'\r\nexport * from './layout'\r\nexport * from './theme'\r\nexport * from './time'\r\nexport * from './filter'\r\nexport * from './sorter'\r\nexport * from './search'\r\nexport * from './guards'\r\nexport * from '../common'\r\nexport { utils }\r\nexport { mixins }\r\nexport { hooks }\r\n\r\nexport default function init () {\r\n const api = this\r\n\r\n logger.debug('Initializing core')\r\n // Initialize singletons that might be used globally first\r\n Time.initialize()\r\n // Then services\r\n api.configure(services)\r\n // Last, create the models listened by the main layout/pages components\r\n // You must use the patch method on the store to update those models\r\n // It is generally done by activity based componentq or through a local settings service\r\n Layout.initialize()\r\n Filter.initialize(api)\r\n Sorter.initialize()\r\n Search.initialize(api)\r\n Store.set('topPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('leftPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('rightPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('bottomPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('page', { content: null, mode: undefined, filter: {} })\r\n Store.set('window', { current: '', widgets: [], filter: {} })\r\n Store.set('fab', { actions: [], filter: {} })\r\n\r\n // Listen to the 'patched' event on the users\r\n const users = api.getService('users')\r\n users.on('patched', user => {\r\n // Check whether we need to update the current user\r\n if (user._id === Store.get('user._id')) {\r\n Store.patch('user', user)\r\n }\r\n })\r\n\r\n // -----------------------------------------------------------------------\r\n // | After this we should only have specific cordova initialisation code |\r\n // -----------------------------------------------------------------------\r\n if (!Platform.is.cordova) return\r\n\r\n /* NOT SURE IF THIS IS REQUIRED\r\n let permissionsPlugin = cordova.plugins.permissions\r\n const notificationPermissions = [\r\n permissionsPlugin.INTERNET,\r\n permissionsPlugin.ACCESS_NETWORK_STATE,\r\n permissionsPlugin.WAKE_LOCK,\r\n permissionsPlugin.VIBRATE\r\n ]\r\n\r\n function permissionsError() {\r\n const message = 'Required permissions for push notifications are missing or have been rejected, the application will not work as expected'\r\n logger.error(message)\r\n utils.toast({\r\n message,\r\n timeout: 10000\r\n })\r\n }\r\n function permissionsCheckSuccess(status) {\r\n // Request again if not given\r\n if (!status.hasPermission) {\r\n permissionsPlugin.requestPermissions(notificationPermissions, status => { if (!status.hasPermission) permissionsError() }, permissionsError)\r\n }\r\n }\r\n */\r\n\r\n document.addEventListener('deviceready', _ => {\r\n // Check for permissions, will launch permission request on failure\r\n // NOT SURE IF THIS IS REQUIRED\r\n // permissionsPlugin.hasPermission(notificationPermissions, permissionsCheckSuccess, null)\r\n if (!window.device) {\r\n logger.error('Unable to reach device information')\r\n return\r\n }\r\n\r\n const notifier = window.PushNotification.init({\r\n android: { vibrate: true, sound: true, forceShow: true },\r\n ios: { alert: true, badge: true, sound: true },\r\n windows: { }\r\n })\r\n notifier.on('registration', async (data) => {\r\n logger.debug('Push registrationID changed: ' + data.registrationId)\r\n // Store the registrationId\r\n window.device.registrationId = data.registrationId\r\n // update the user device\r\n const user = Store.get('user')\r\n if (user && window.device && window.device.registrationId) {\r\n const devicesService = api.getService('devices')\r\n const device = await devicesService.update(window.device.registrationId, window.device)\r\n logger.debug(`device ${device.uuid} updated with the id ${device.registrationId}`)\r\n }\r\n })\r\n notifier.on('notification', (data) => {\r\n // data.message,\r\n // data.title,\r\n // data.count,\r\n // data.sound,\r\n // data.image,\r\n // data.additionalData\r\n })\r\n notifier.on('error', (error) => {\r\n logger.error(error)\r\n utils.toast({\r\n message: error.message,\r\n timeout: 10000\r\n })\r\n })\r\n api.on('authenticated', async response => {\r\n const devicesService = api.getService('devices')\r\n // Only possible if registration ID already retrieved\r\n if (window.device && window.device.registrationId) {\r\n const device = await devicesService.update(window.device.registrationId, window.device)\r\n logger.debug(`device ${device.uuid} registered with the id ${device.registrationId}`)\r\n }\r\n })\r\n }, false)\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../core/client/index.js"],"names":["init","utils","mixins","hooks","api","logger","debug","Time","initialize","Units","configure","services","Layout","Filter","Sorter","Search","Store","set","content","mode","undefined","filter","visible","current","widgets","actions","users","getService","on","user","_id","get","patch","Reader","register","JSONReader","CSVReader","Platform","is","cordova","document","addEventListener","_","window","device","error","notifier","PushNotification","android","vibrate","sound","forceShow","ios","alert","badge","windows","data","registrationId","devicesService","update","uuid","toast","message","timeout","response"],"mappings":"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","file":"index.js","sourcesContent":["import logger from 'loglevel'\r\nimport { Platform } from 'quasar'\r\nimport { Store } from './store'\r\nimport { Layout } from './layout'\r\nimport { Time } from './time'\r\nimport { Units } from './units'\r\nimport { Reader } from './reader'\r\nimport { Filter } from './filter'\r\nimport { Sorter } from './sorter'\r\nimport { Search } from './search'\r\nimport services from './services'\r\nimport * as utils from './utils'\r\nimport * as mixins from './mixins'\r\nimport * as hooks from './hooks'\r\nimport { CSVReader, JSONReader } from './readers'\r\n\r\n// We faced a bug in babel so that transform-runtime with export * from 'x' generates import statements in transpiled code\r\n// Tracked here : https://github.com/babel/babel/issues/2877\r\n// We tested the workaround given here https://github.com/babel/babel/issues/2877#issuecomment-270700000 with success so far\r\n\r\n// FIXME: we don't build vue component anymore, they are processed by webpack in the application template\r\n// export * from './components'\r\n\r\nexport * from './events'\r\nexport * from './api'\r\nexport * from './services'\r\nexport * from './store'\r\nexport * from './layout'\r\nexport * from './theme'\r\nexport * from './time'\r\nexport * from './units'\r\nexport * from './filter'\r\nexport * from './reader'\r\nexport * from './sorter'\r\nexport * from './search'\r\nexport * from './guards'\r\nexport * from '../common'\r\nexport { utils }\r\nexport { mixins }\r\nexport { hooks }\r\n\r\nexport default function init () {\r\n const api = this\r\n\r\n logger.debug('Initializing core')\r\n // Initialize singletons that might be used globally first\r\n Time.initialize()\r\n Units.initialize()\r\n // Then services\r\n api.configure(services)\r\n // Last, create the models listened by the main layout/pages components\r\n // You must use the patch method on the store to update those models\r\n // It is generally done by activity based componentq or through a local settings service\r\n Layout.initialize()\r\n Filter.initialize(api)\r\n Sorter.initialize()\r\n Search.initialize(api)\r\n Store.set('topPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('leftPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('rightPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('bottomPane', { content: null, mode: undefined, filter: {}, visible: false })\r\n Store.set('page', { content: null, mode: undefined, filter: {} })\r\n Store.set('window', { current: '', widgets: [], filter: {} })\r\n Store.set('fab', { actions: [], filter: {} })\r\n\r\n // Listen to the 'patched' event on the users\r\n const users = api.getService('users')\r\n users.on('patched', user => {\r\n // Check whether we need to update the current user\r\n if (user._id === Store.get('user._id')) {\r\n Store.patch('user', user)\r\n }\r\n })\r\n\r\n // Register default readers\r\n Reader.register('.json', JSONReader)\r\n Reader.register('.csv', CSVReader)\r\n\r\n // -----------------------------------------------------------------------\r\n // | After this we should only have specific cordova initialisation code |\r\n // -----------------------------------------------------------------------\r\n if (!Platform.is.cordova) return\r\n\r\n /* NOT SURE IF THIS IS REQUIRED\r\n let permissionsPlugin = cordova.plugins.permissions\r\n const notificationPermissions = [\r\n permissionsPlugin.INTERNET,\r\n permissionsPlugin.ACCESS_NETWORK_STATE,\r\n permissionsPlugin.WAKE_LOCK,\r\n permissionsPlugin.VIBRATE\r\n ]\r\n\r\n function permissionsError() {\r\n const message = 'Required permissions for push notifications are missing or have been rejected, the application will not work as expected'\r\n logger.error(message)\r\n utils.toast({\r\n message,\r\n timeout: 10000\r\n })\r\n }\r\n function permissionsCheckSuccess(status) {\r\n // Request again if not given\r\n if (!status.hasPermission) {\r\n permissionsPlugin.requestPermissions(notificationPermissions, status => { if (!status.hasPermission) permissionsError() }, permissionsError)\r\n }\r\n }\r\n */\r\n\r\n document.addEventListener('deviceready', _ => {\r\n // Check for permissions, will launch permission request on failure\r\n // NOT SURE IF THIS IS REQUIRED\r\n // permissionsPlugin.hasPermission(notificationPermissions, permissionsCheckSuccess, null)\r\n if (!window.device) {\r\n logger.error('Unable to reach device information')\r\n return\r\n }\r\n\r\n const notifier = window.PushNotification.init({\r\n android: { vibrate: true, sound: true, forceShow: true },\r\n ios: { alert: true, badge: true, sound: true },\r\n windows: { }\r\n })\r\n notifier.on('registration', async (data) => {\r\n logger.debug('Push registrationID changed: ' + data.registrationId)\r\n // Store the registrationId\r\n window.device.registrationId = data.registrationId\r\n // update the user device\r\n const user = Store.get('user')\r\n if (user && window.device && window.device.registrationId) {\r\n const devicesService = api.getService('devices')\r\n const device = await devicesService.update(window.device.registrationId, window.device)\r\n logger.debug(`device ${device.uuid} updated with the id ${device.registrationId}`)\r\n }\r\n })\r\n notifier.on('notification', (data) => {\r\n // data.message,\r\n // data.title,\r\n // data.count,\r\n // data.sound,\r\n // data.image,\r\n // data.additionalData\r\n })\r\n notifier.on('error', (error) => {\r\n logger.error(error)\r\n utils.toast({\r\n message: error.message,\r\n timeout: 10000\r\n })\r\n })\r\n api.on('authenticated', async response => {\r\n const devicesService = api.getService('devices')\r\n // Only possible if registration ID already retrieved\r\n if (window.device && window.device.registrationId) {\r\n const device = await devicesService.update(window.device.registrationId, window.device)\r\n logger.debug(`device ${device.uuid} registered with the id ${device.registrationId}`)\r\n }\r\n })\r\n }, false)\r\n}\r\n"]}
@@ -78,8 +78,8 @@ const Layout = exports.Layout = {
78
78
  const isArray = Array.isArray(content);
79
79
  const modes = _lodash2.default.keys(content);
80
80
  let filteredContent = content;
81
- // Recurse ?
82
81
  if (!isArray) {
82
+ // Recurse ?
83
83
  if (filteredContent.content) {
84
84
  filteredContent.content = this.filterContent(filteredContent.content, filter);
85
85
  } else {
@@ -89,6 +89,13 @@ const Layout = exports.Layout = {
89
89
  });
90
90
  }
91
91
  filteredContent = [filteredContent];
92
+ } else {
93
+ filteredContent.forEach(item => {
94
+ // Recurse ?
95
+ if (item.content) {
96
+ item.content = this.filterContent(item.content, filter);
97
+ }
98
+ });
92
99
  }
93
100
  // Apply filtering
94
101
  filteredContent = filteredContent.filter((0, _sift2.default)(filter));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../core/client/layout.js"],"names":["components","handlers","Layout","initialize","forEach","component","Store","set","content","mode","undefined","filter","visible","getHeader","get","setHeader","patch","setHeaderMode","setHeaderVisible","clearHeader","getFooter","setFooter","setFooterMode","setFooterVisible","clearFooter","validateMode","modes","_","keys","isEmpty","includes","filterContent","isArray","Array","filteredContent","contentForMode","getComponents","context","processedComponents","isVisible","componentName","componentKey","kebabCase","path","basename","uid","push","bindParam","param","startsWith","substring","bindParams","params","isNil","map","mapValues","value","key","generateHandler","name","isNot","args","result","handler","bindHandler","h","reduce","logger","debug","bindProperties","item","i","length","forOwn","bindContent","flatMapDeep","binding","bind","props"],"mappings":"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","file":"layout.js","sourcesContent":["import _ from 'lodash'\r\nimport path from 'path'\r\nimport logger from 'loglevel'\r\nimport sift from 'sift'\r\nimport { uid } from 'quasar'\r\nimport { Store } from './store'\r\n\r\nconst components = ['header', 'footer']\r\nconst handlers = ['handler', 'visible', 'on.listener']\r\n\r\n// Export singleton\r\nexport const Layout = {\r\n initialize () {\r\n components.forEach(component => {\r\n Store.set(component, { content: null, mode: undefined, filter: {}, visible: false })\r\n })\r\n },\r\n getHeader () {\r\n return Store.get(components[0])\r\n },\r\n setHeader (content, mode, filter, visible) {\r\n Store.patch(components[0], { content, mode, filter, visible })\r\n },\r\n setHeaderMode (mode) {\r\n Store.patch(components[0], { mode })\r\n },\r\n setHeaderVisible (visible) {\r\n Store.patch(components[0], { visible })\r\n },\r\n clearHeader () {\r\n Store.patch(components[0], { content: null, mode: undefined, visible: false })\r\n },\r\n getFooter () {\r\n return Store.get(components[1])\r\n },\r\n setFooter (content, mode, filter, visible) {\r\n Store.patch(components[1], { content, mode, filter, visible })\r\n },\r\n setFooterMode (mode) {\r\n Store.patch(components[1], { mode })\r\n },\r\n setFooterVisible (visible) {\r\n Store.patch(components[1], { visible })\r\n },\r\n clearFooter () {\r\n Store.patch(components[1], { content: null, mode: undefined, visible: false })\r\n },\r\n validateMode (content, mode) {\r\n const modes = _.keys(content)\r\n if (_.isEmpty(modes)) return undefined\r\n if (modes.includes(mode)) return mode\r\n return modes[0]\r\n },\r\n filterContent (content, filter) {\r\n // Handle array and object case\r\n const isArray = Array.isArray(content)\r\n const modes = _.keys(content)\r\n let filteredContent = content\r\n // Recurse ?\r\n if (!isArray) {\r\n if (filteredContent.content) {\r\n filteredContent.content = this.filterContent(filteredContent.content, filter)\r\n } else {\r\n modes.forEach(mode => {\r\n const contentForMode = filteredContent[mode]\r\n filteredContent[mode] = this.filterContent(contentForMode, filter)\r\n })\r\n }\r\n filteredContent = [filteredContent]\r\n }\r\n // Apply filtering\r\n filteredContent = filteredContent.filter(sift(filter))\r\n return (isArray ? filteredContent : filteredContent[0])\r\n },\r\n getComponents (content, mode, context) {\r\n let components = []\r\n\r\n // Get component config for given mode if any\r\n if (Array.isArray(content)) {\r\n components = content\r\n } else {\r\n mode = this.validateMode(content, mode)\r\n components = _.get(content, mode)\r\n }\r\n // Apply filtering\r\n // components = this.filterContent(components, filter)\r\n const processedComponents = []\r\n // Then create component objects\r\n _.forEach(components, (component) => {\r\n let isVisible = _.get(component, 'visible', true)\r\n // Can be a functional call\r\n if (typeof isVisible === 'function') {\r\n isVisible = isVisible(context)\r\n }\r\n // If not a functional call the target property can be a reactive one\r\n // so that we \"bind\" it to the component instead of \"filter\" the component here\r\n component.isVisible = isVisible\r\n // Define the component key\r\n const componentName = _.get(component, 'component', 'frame/KAction')\r\n const componentKey = _.kebabCase(path.basename(componentName))\r\n // Clone the component and add the required props\r\n component.componentName = componentName\r\n component.componentKey = componentKey\r\n component.uid = uid()\r\n processedComponents.push(component)\r\n })\r\n return processedComponents\r\n },\r\n bindParam (param, context) {\r\n return (typeof param === 'string') ? (param.startsWith(':') ? _.get(context, param.substring(1)) : param) : param\r\n },\r\n bindParams (params, context) {\r\n // A parameter like :xxx means xxx is a property of the component, not a static value\r\n // In that case remove trailing : and get property value dynamically\r\n if (_.isNil(params)) {\r\n return params\r\n } else if (Array.isArray(params)) {\r\n return params.map(param => this.bindParams(param, context))\r\n } else if (typeof params === 'object') {\r\n return _.mapValues(params, (value, key) => this.bindParams(value, context))\r\n } else {\r\n return this.bindParam(params, context)\r\n }\r\n },\r\n generateHandler (context, name, params) {\r\n // When the handler can be a simple getter, eg is visible use case,\r\n // we allow a property value instead of a function and a logical NOT\r\n const isNot = name.startsWith('!')\r\n if (isNot) name = name.substring(1)\r\n return (...args) => {\r\n let result\r\n const handler = _.get(context, name)\r\n // Function call or property value read ?\r\n if (typeof handler === 'function') {\r\n // Provided parameters or simply forward arguments ?\r\n result = (params ? handler(...this.bindParams(params, context)) : handler(...args))\r\n } else {\r\n result = handler\r\n }\r\n // Logical NOT to be performed ?\r\n return (isNot ? !result : result)\r\n }\r\n },\r\n bindHandler (component, path, context) {\r\n const handler = _.get(component, path)\r\n // Could be an array if multiple handlers to be called\r\n if (Array.isArray(handler)) {\r\n // Process all array elements, manage the case where the handler is simply a function/property name\r\n const handlers = handler.map(h => this.generateHandler(context, h.name || h, h.params))\r\n // In that specific case the result is a boolean AND operation\r\n _.set(component, path, (...args) => handlers.reduce((result, h) => result && h(...args), true))\r\n } else if (handler && typeof handler === 'object') {\r\n // Could be a structure with name and possibly params specified\r\n if (handler.name) {\r\n _.set(component, path, this.generateHandler(context, handler.name, handler.params))\r\n } else {\r\n logger.debug(`Invalid handler binding for ${handler}: you must provide the name to the function to be called`)\r\n }\r\n } else if (typeof handler === 'string') { // Or only name if no params are specified\r\n _.set(component, path, this.generateHandler(context, handler))\r\n }\r\n // Get back processed handler function\r\n return _.get(component, path)\r\n },\r\n bindProperties (item, context) {\r\n if (typeof item === 'string') {\r\n if (item.startsWith(':')) return _.get(context, item.substring(1))\r\n } else if (Array.isArray(item)) {\r\n for (let i = 0; i < item.length; i++) {\r\n item[i] = this.bindProperties(item[i], context)\r\n }\r\n } else if (typeof item === 'object') {\r\n _.forOwn(item, (value, key) => {\r\n // Skip 'reserved' property\r\n if ((key !== 'content') && (key !== 'bind')) item[key] = this.bindProperties(value, context)\r\n })\r\n }\r\n return item\r\n },\r\n // Perform binding between a configuration object and a given context object\r\n bindContent (content, context) {\r\n const components = _.flatMapDeep(content)\r\n _.forEach(components, (component) => {\r\n // Process component handlers\r\n handlers.forEach(handler => this.bindHandler(component, handler, context))\r\n // Then process component props\r\n // FIXME: don't know why but this generic binding function does not seem to work\r\n // It should allow to wrote any property like { label: ':xxx' } and bind it\r\n // to a component property from the context like we do for handler\r\n // this.bindProperties(component, context)\r\n // The only way to make it work is to add props at the root level\r\n const binding = component.bind ? component.bind : null\r\n if (binding) component.props = _.get(context, binding)\r\n // Recursively bind the props/handlers on the sub content object\r\n if (component.content) this.bindContent(component.content, context)\r\n })\r\n return content\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../core/client/layout.js"],"names":["components","handlers","Layout","initialize","forEach","component","Store","set","content","mode","undefined","filter","visible","getHeader","get","setHeader","patch","setHeaderMode","setHeaderVisible","clearHeader","getFooter","setFooter","setFooterMode","setFooterVisible","clearFooter","validateMode","modes","_","keys","isEmpty","includes","filterContent","isArray","Array","filteredContent","contentForMode","item","getComponents","context","processedComponents","isVisible","componentName","componentKey","kebabCase","path","basename","uid","push","bindParam","param","startsWith","substring","bindParams","params","isNil","map","mapValues","value","key","generateHandler","name","isNot","args","result","handler","bindHandler","h","reduce","logger","debug","bindProperties","i","length","forOwn","bindContent","flatMapDeep","binding","bind","props"],"mappings":"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","file":"layout.js","sourcesContent":["import _ from 'lodash'\r\nimport path from 'path'\r\nimport logger from 'loglevel'\r\nimport sift from 'sift'\r\nimport { uid } from 'quasar'\r\nimport { Store } from './store'\r\n\r\nconst components = ['header', 'footer']\r\nconst handlers = ['handler', 'visible', 'on.listener']\r\n\r\n// Export singleton\r\nexport const Layout = {\r\n initialize () {\r\n components.forEach(component => {\r\n Store.set(component, { content: null, mode: undefined, filter: {}, visible: false })\r\n })\r\n },\r\n getHeader () {\r\n return Store.get(components[0])\r\n },\r\n setHeader (content, mode, filter, visible) {\r\n Store.patch(components[0], { content, mode, filter, visible })\r\n },\r\n setHeaderMode (mode) {\r\n Store.patch(components[0], { mode })\r\n },\r\n setHeaderVisible (visible) {\r\n Store.patch(components[0], { visible })\r\n },\r\n clearHeader () {\r\n Store.patch(components[0], { content: null, mode: undefined, visible: false })\r\n },\r\n getFooter () {\r\n return Store.get(components[1])\r\n },\r\n setFooter (content, mode, filter, visible) {\r\n Store.patch(components[1], { content, mode, filter, visible })\r\n },\r\n setFooterMode (mode) {\r\n Store.patch(components[1], { mode })\r\n },\r\n setFooterVisible (visible) {\r\n Store.patch(components[1], { visible })\r\n },\r\n clearFooter () {\r\n Store.patch(components[1], { content: null, mode: undefined, visible: false })\r\n },\r\n validateMode (content, mode) {\r\n const modes = _.keys(content)\r\n if (_.isEmpty(modes)) return undefined\r\n if (modes.includes(mode)) return mode\r\n return modes[0]\r\n },\r\n filterContent (content, filter) {\r\n // Handle array and object case\r\n const isArray = Array.isArray(content)\r\n const modes = _.keys(content)\r\n let filteredContent = content\r\n if (!isArray) {\r\n // Recurse ?\r\n if (filteredContent.content) {\r\n filteredContent.content = this.filterContent(filteredContent.content, filter)\r\n } else {\r\n modes.forEach(mode => {\r\n const contentForMode = filteredContent[mode]\r\n filteredContent[mode] = this.filterContent(contentForMode, filter)\r\n })\r\n }\r\n filteredContent = [filteredContent]\r\n } else {\r\n filteredContent.forEach(item => {\r\n // Recurse ?\r\n if (item.content) {\r\n item.content = this.filterContent(item.content, filter)\r\n }\r\n })\r\n }\r\n // Apply filtering\r\n filteredContent = filteredContent.filter(sift(filter))\r\n return (isArray ? filteredContent : filteredContent[0])\r\n },\r\n getComponents (content, mode, context) {\r\n let components = []\r\n\r\n // Get component config for given mode if any\r\n if (Array.isArray(content)) {\r\n components = content\r\n } else {\r\n mode = this.validateMode(content, mode)\r\n components = _.get(content, mode)\r\n }\r\n // Apply filtering\r\n // components = this.filterContent(components, filter)\r\n const processedComponents = []\r\n // Then create component objects\r\n _.forEach(components, (component) => {\r\n let isVisible = _.get(component, 'visible', true)\r\n // Can be a functional call\r\n if (typeof isVisible === 'function') {\r\n isVisible = isVisible(context)\r\n }\r\n // If not a functional call the target property can be a reactive one\r\n // so that we \"bind\" it to the component instead of \"filter\" the component here\r\n component.isVisible = isVisible\r\n // Define the component key\r\n const componentName = _.get(component, 'component', 'frame/KAction')\r\n const componentKey = _.kebabCase(path.basename(componentName))\r\n // Clone the component and add the required props\r\n component.componentName = componentName\r\n component.componentKey = componentKey\r\n component.uid = uid()\r\n processedComponents.push(component)\r\n })\r\n return processedComponents\r\n },\r\n bindParam (param, context) {\r\n return (typeof param === 'string') ? (param.startsWith(':') ? _.get(context, param.substring(1)) : param) : param\r\n },\r\n bindParams (params, context) {\r\n // A parameter like :xxx means xxx is a property of the component, not a static value\r\n // In that case remove trailing : and get property value dynamically\r\n if (_.isNil(params)) {\r\n return params\r\n } else if (Array.isArray(params)) {\r\n return params.map(param => this.bindParams(param, context))\r\n } else if (typeof params === 'object') {\r\n return _.mapValues(params, (value, key) => this.bindParams(value, context))\r\n } else {\r\n return this.bindParam(params, context)\r\n }\r\n },\r\n generateHandler (context, name, params) {\r\n // When the handler can be a simple getter, eg is visible use case,\r\n // we allow a property value instead of a function and a logical NOT\r\n const isNot = name.startsWith('!')\r\n if (isNot) name = name.substring(1)\r\n return (...args) => {\r\n let result\r\n const handler = _.get(context, name)\r\n // Function call or property value read ?\r\n if (typeof handler === 'function') {\r\n // Provided parameters or simply forward arguments ?\r\n result = (params ? handler(...this.bindParams(params, context)) : handler(...args))\r\n } else {\r\n result = handler\r\n }\r\n // Logical NOT to be performed ?\r\n return (isNot ? !result : result)\r\n }\r\n },\r\n bindHandler (component, path, context) {\r\n const handler = _.get(component, path)\r\n // Could be an array if multiple handlers to be called\r\n if (Array.isArray(handler)) {\r\n // Process all array elements, manage the case where the handler is simply a function/property name\r\n const handlers = handler.map(h => this.generateHandler(context, h.name || h, h.params))\r\n // In that specific case the result is a boolean AND operation\r\n _.set(component, path, (...args) => handlers.reduce((result, h) => result && h(...args), true))\r\n } else if (handler && typeof handler === 'object') {\r\n // Could be a structure with name and possibly params specified\r\n if (handler.name) {\r\n _.set(component, path, this.generateHandler(context, handler.name, handler.params))\r\n } else {\r\n logger.debug(`Invalid handler binding for ${handler}: you must provide the name to the function to be called`)\r\n }\r\n } else if (typeof handler === 'string') { // Or only name if no params are specified\r\n _.set(component, path, this.generateHandler(context, handler))\r\n }\r\n // Get back processed handler function\r\n return _.get(component, path)\r\n },\r\n bindProperties (item, context) {\r\n if (typeof item === 'string') {\r\n if (item.startsWith(':')) return _.get(context, item.substring(1))\r\n } else if (Array.isArray(item)) {\r\n for (let i = 0; i < item.length; i++) {\r\n item[i] = this.bindProperties(item[i], context)\r\n }\r\n } else if (typeof item === 'object') {\r\n _.forOwn(item, (value, key) => {\r\n // Skip 'reserved' property\r\n if ((key !== 'content') && (key !== 'bind')) item[key] = this.bindProperties(value, context)\r\n })\r\n }\r\n return item\r\n },\r\n // Perform binding between a configuration object and a given context object\r\n bindContent (content, context) {\r\n const components = _.flatMapDeep(content)\r\n _.forEach(components, (component) => {\r\n // Process component handlers\r\n handlers.forEach(handler => this.bindHandler(component, handler, context))\r\n // Then process component props\r\n // FIXME: don't know why but this generic binding function does not seem to work\r\n // It should allow to wrote any property like { label: ':xxx' } and bind it\r\n // to a component property from the context like we do for handler\r\n // this.bindProperties(component, context)\r\n // The only way to make it work is to add props at the root level\r\n const binding = component.bind ? component.bind : null\r\n if (binding) component.props = _.get(context, binding)\r\n // Recursively bind the props/handlers on the sub content object\r\n if (component.content) this.bindContent(component.content, context)\r\n })\r\n return content\r\n }\r\n}\r\n"]}
@@ -15,12 +15,14 @@ const baseWidgetMixin = {
15
15
  },
16
16
  data() {
17
17
  return {
18
- widgetHeight: '30vh'
18
+ widgetHeight: 0
19
19
  };
20
20
  },
21
- methods: {
21
+ computed: {
22
22
  widgetStyle() {
23
- if (this.mode === 'minimized') return 'height: ' + this.widgetHeight;else return 'height: 100vh';
23
+ const screenHeight = this.$q.screen.height;
24
+ this.widgetHeight = this.mode === 'maximized' ? screenHeight : screenHeight * 0.3; // 30vh
25
+ return `height: ${this.widgetHeight}px`;
24
26
  }
25
27
  }
26
28
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../core/client/mixins/mixin.base-widget.js"],"names":["baseWidgetMixin","props","mode","type","String","default","validator","value","includes","data","widgetHeight","methods","widgetStyle"],"mappings":";;;;;AAAA,MAAMA,kBAAkB;AACtBC,SAAO;AACLC,UAAM;AACJC,YAAMC,MADF;AAEJC,eAAS,WAFL;AAGJC,iBAAYC,KAAD,IAAW;AACpB,eAAO,CAAC,WAAD,EAAc,WAAd,EAA2BC,QAA3B,CAAoCD,KAApC,CAAP;AACD;AALG;AADD,GADe;AAUtBE,SAAQ;AACN,WAAO;AACLC,oBAAc;AADT,KAAP;AAGD,GAdqB;AAetBC,WAAS;AACPC,kBAAe;AACb,UAAI,KAAKV,IAAL,KAAc,WAAlB,EAA+B,OAAO,aAAa,KAAKQ,YAAzB,CAA/B,KACK,OAAO,eAAP;AACN;AAJM;AAfa,CAAxB;;kBAuBeV,e","file":"mixin.base-widget.js","sourcesContent":["const baseWidgetMixin = {\r\n props: {\r\n mode: {\r\n type: String,\r\n default: 'minimized',\r\n validator: (value) => {\r\n return ['minimized', 'maximized'].includes(value)\r\n }\r\n }\r\n },\r\n data () {\r\n return {\r\n widgetHeight: '30vh'\r\n }\r\n },\r\n methods: {\r\n widgetStyle () {\r\n if (this.mode === 'minimized') return 'height: ' + this.widgetHeight\r\n else return 'height: 100vh'\r\n }\r\n }\r\n}\r\n\r\nexport default baseWidgetMixin\r\n"]}
1
+ {"version":3,"sources":["../../../../core/client/mixins/mixin.base-widget.js"],"names":["baseWidgetMixin","props","mode","type","String","default","validator","value","includes","data","widgetHeight","computed","widgetStyle","screenHeight","$q","screen","height"],"mappings":";;;;;AAAA,MAAMA,kBAAkB;AACtBC,SAAO;AACLC,UAAM;AACJC,YAAMC,MADF;AAEJC,eAAS,WAFL;AAGJC,iBAAYC,KAAD,IAAW;AACpB,eAAO,CAAC,WAAD,EAAc,WAAd,EAA2BC,QAA3B,CAAoCD,KAApC,CAAP;AACD;AALG;AADD,GADe;AAUtBE,SAAQ;AACN,WAAO;AACLC,oBAAc;AADT,KAAP;AAGD,GAdqB;AAetBC,YAAU;AACRC,kBAAe;AACb,YAAMC,eAAe,KAAKC,EAAL,CAAQC,MAAR,CAAeC,MAApC;AACA,WAAKN,YAAL,GAAoB,KAAKR,IAAL,KAAc,WAAd,GAA4BW,YAA5B,GAA2CA,eAAe,GAA9E,CAFa,CAEqE;AAClF,aAAQ,WAAU,KAAKH,YAAa,IAApC;AACD;AALO;AAfY,CAAxB;;kBAwBeV,e","file":"mixin.base-widget.js","sourcesContent":["const baseWidgetMixin = {\r\n props: {\r\n mode: {\r\n type: String,\r\n default: 'minimized',\r\n validator: (value) => {\r\n return ['minimized', 'maximized'].includes(value)\r\n }\r\n }\r\n },\r\n data () {\r\n return {\r\n widgetHeight: 0\r\n }\r\n },\r\n computed: {\r\n widgetStyle () {\r\n const screenHeight = this.$q.screen.height\r\n this.widgetHeight = this.mode === 'maximized' ? screenHeight : screenHeight * 0.3 // 30vh\r\n return `height: ${this.widgetHeight}px`\r\n }\r\n }\r\n}\r\n\r\nexport default baseWidgetMixin\r\n"]}
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Reader = undefined;
7
+
8
+ var _path = require('path');
9
+
10
+ var _path2 = _interopRequireDefault(_path);
11
+
12
+ var _i18next = require('i18next');
13
+
14
+ var _i18next2 = _interopRequireDefault(_i18next);
15
+
16
+ var _events = require('./events');
17
+
18
+ var _quasar = require('quasar');
19
+
20
+ var _lodash = require('lodash');
21
+
22
+ var _lodash2 = _interopRequireDefault(_lodash);
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
27
+
28
+ // Export singleton
29
+ const Reader = exports.Reader = {
30
+ readers: {},
31
+ register(mimeType, reader) {
32
+ this.readers[mimeType] = reader;
33
+ reader.mimeType = mimeType;
34
+ },
35
+ filter(filelist) {
36
+ const acceptedFiles = [];
37
+ const additionnalFiles = [];
38
+ // iterate though the files and sort the files
39
+ for (let i = 0; i < filelist.length; ++i) {
40
+ const file = filelist[i];
41
+ const fileExt = _path2.default.extname(file.name);
42
+ let reader = this.readers[fileExt];
43
+ if (reader) {
44
+ acceptedFiles.push({ reader: fileExt, name: file.name, files: [file] });
45
+ } else {
46
+ reader = _lodash2.default.find(this.readers, reader => reader.getAdditionalFiles().includes(fileExt));
47
+ if (reader) {
48
+ additionnalFiles.push({ reader: reader.mimeType, file });
49
+ } else {
50
+ const error = { message: _i18next2.default.t('errors.UNSUPPORTED_FILE_FORMAT', { file: file.name }) };
51
+ _events.Events.$emit('error', error);
52
+ }
53
+ }
54
+ }
55
+ // process the additional files
56
+ _lodash2.default.forEach(additionnalFiles, additionnalFile => {
57
+ const group = _lodash2.default.find(acceptedFiles, acceptedFile => acceptedFile.reader === additionnalFile.reader);
58
+ if (group) group.files.push(additionnalFile.file);else {
59
+ const error = { message: _i18next2.default.t('errors.UNSUPPORTED_FILE_FORMAT', { file: additionnalFile.name }) };
60
+ _events.Events.$emit('error', error);
61
+ }
62
+ });
63
+ return acceptedFiles;
64
+ },
65
+ read(file, options) {
66
+ var _this = this;
67
+
68
+ return _asyncToGenerator(function* () {
69
+ const reader = _this.readers[file.reader];
70
+ _quasar.Loading.show({ message: _i18next2.default.t('reader.READING_FILE', { file: file.name }) });
71
+ try {
72
+ const content = yield reader.read(file.files, options);
73
+ _quasar.Loading.hide();
74
+ return content;
75
+ } catch (error) {
76
+ _quasar.Loading.hide();
77
+ _events.Events.$emit('error', error);
78
+ }
79
+ })();
80
+ },
81
+ getSupportedFormats() {
82
+ return Object.keys(this.readers);
83
+ }
84
+ };
85
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../core/client/reader.js"],"names":["Reader","readers","register","mimeType","reader","filter","filelist","acceptedFiles","additionnalFiles","i","length","file","fileExt","path","extname","name","push","files","_","find","getAdditionalFiles","includes","error","message","i18next","t","Events","$emit","forEach","additionnalFile","group","acceptedFile","read","options","Loading","show","content","hide","getSupportedFormats","Object","keys"],"mappings":";;;;;;;AAAA;;;;AACA;;;;AACA;;AACA;;AACA;;;;;;;;AAEA;AACO,MAAMA,0BAAS;AACpBC,WAAS,EADW;AAEpBC,WAAUC,QAAV,EAAoBC,MAApB,EAA4B;AAC1B,SAAKH,OAAL,CAAaE,QAAb,IAAyBC,MAAzB;AACAA,WAAOD,QAAP,GAAkBA,QAAlB;AACD,GALmB;AAMpBE,SAAQC,QAAR,EAAkB;AAChB,UAAMC,gBAAgB,EAAtB;AACA,UAAMC,mBAAmB,EAAzB;AACA;AACA,SAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIH,SAASI,MAA7B,EAAqC,EAAED,CAAvC,EAA0C;AACxC,YAAME,OAAOL,SAASG,CAAT,CAAb;AACA,YAAMG,UAAUC,eAAKC,OAAL,CAAaH,KAAKI,IAAlB,CAAhB;AACA,UAAIX,SAAS,KAAKH,OAAL,CAAaW,OAAb,CAAb;AACA,UAAIR,MAAJ,EAAY;AACVG,sBAAcS,IAAd,CAAmB,EAAEZ,QAAQQ,OAAV,EAAmBG,MAAMJ,KAAKI,IAA9B,EAAoCE,OAAO,CAACN,IAAD,CAA3C,EAAnB;AACD,OAFD,MAEO;AACLP,iBAASc,iBAAEC,IAAF,CAAO,KAAKlB,OAAZ,EAAqBG,UAAUA,OAAOgB,kBAAP,GAA4BC,QAA5B,CAAqCT,OAArC,CAA/B,CAAT;AACA,YAAIR,MAAJ,EAAY;AACVI,2BAAiBQ,IAAjB,CAAsB,EAAEZ,QAAQA,OAAOD,QAAjB,EAA2BQ,IAA3B,EAAtB;AACD,SAFD,MAEO;AACL,gBAAMW,QAAQ,EAAEC,SAASC,kBAAQC,CAAR,CAAU,gCAAV,EAA4C,EAAEd,MAAMA,KAAKI,IAAb,EAA5C,CAAX,EAAd;AACAW,yBAAOC,KAAP,CAAa,OAAb,EAAsBL,KAAtB;AACD;AACF;AACF;AACD;AACAJ,qBAAEU,OAAF,CAAUpB,gBAAV,EAA4BqB,mBAAmB;AAC7C,YAAMC,QAAQZ,iBAAEC,IAAF,CAAOZ,aAAP,EAAsBwB,gBAAgBA,aAAa3B,MAAb,KAAwByB,gBAAgBzB,MAA9E,CAAd;AACA,UAAI0B,KAAJ,EAAWA,MAAMb,KAAN,CAAYD,IAAZ,CAAiBa,gBAAgBlB,IAAjC,EAAX,KACK;AACH,cAAMW,QAAQ,EAAEC,SAASC,kBAAQC,CAAR,CAAU,gCAAV,EAA4C,EAAEd,MAAMkB,gBAAgBd,IAAxB,EAA5C,CAAX,EAAd;AACAW,uBAAOC,KAAP,CAAa,OAAb,EAAsBL,KAAtB;AACD;AACF,KAPD;AAQA,WAAOf,aAAP;AACD,GApCmB;AAqCdyB,MAAN,CAAYrB,IAAZ,EAAkBsB,OAAlB,EAA2B;AAAA;;AAAA;AACzB,YAAM7B,SAAS,MAAKH,OAAL,CAAaU,KAAKP,MAAlB,CAAf;AACA8B,sBAAQC,IAAR,CAAa,EAAEZ,SAASC,kBAAQC,CAAR,CAAU,qBAAV,EAAiC,EAAEd,MAAMA,KAAKI,IAAb,EAAjC,CAAX,EAAb;AACA,UAAI;AACF,cAAMqB,UAAU,MAAMhC,OAAO4B,IAAP,CAAYrB,KAAKM,KAAjB,EAAwBgB,OAAxB,CAAtB;AACAC,wBAAQG,IAAR;AACA,eAAOD,OAAP;AACD,OAJD,CAIE,OAAOd,KAAP,EAAc;AACdY,wBAAQG,IAAR;AACAX,uBAAOC,KAAP,CAAa,OAAb,EAAsBL,KAAtB;AACD;AAVwB;AAW1B,GAhDmB;AAiDpBgB,wBAAuB;AACrB,WAAOC,OAAOC,IAAP,CAAY,KAAKvC,OAAjB,CAAP;AACD;AAnDmB,CAAf","file":"reader.js","sourcesContent":["import path from 'path'\r\nimport i18next from 'i18next'\r\nimport { Events } from './events'\r\nimport { Loading } from 'quasar'\r\nimport _ from 'lodash'\r\n\r\n// Export singleton\r\nexport const Reader = {\r\n readers: {},\r\n register (mimeType, reader) {\r\n this.readers[mimeType] = reader\r\n reader.mimeType = mimeType\r\n },\r\n filter (filelist) {\r\n const acceptedFiles = []\r\n const additionnalFiles = []\r\n // iterate though the files and sort the files\r\n for (let i = 0; i < filelist.length; ++i) {\r\n const file = filelist[i]\r\n const fileExt = path.extname(file.name)\r\n let reader = this.readers[fileExt]\r\n if (reader) {\r\n acceptedFiles.push({ reader: fileExt, name: file.name, files: [file] })\r\n } else {\r\n reader = _.find(this.readers, reader => reader.getAdditionalFiles().includes(fileExt))\r\n if (reader) {\r\n additionnalFiles.push({ reader: reader.mimeType, file })\r\n } else {\r\n const error = { message: i18next.t('errors.UNSUPPORTED_FILE_FORMAT', { file: file.name }) }\r\n Events.$emit('error', error)\r\n }\r\n }\r\n }\r\n // process the additional files\r\n _.forEach(additionnalFiles, additionnalFile => {\r\n const group = _.find(acceptedFiles, acceptedFile => acceptedFile.reader === additionnalFile.reader)\r\n if (group) group.files.push(additionnalFile.file)\r\n else {\r\n const error = { message: i18next.t('errors.UNSUPPORTED_FILE_FORMAT', { file: additionnalFile.name }) }\r\n Events.$emit('error', error)\r\n }\r\n })\r\n return acceptedFiles\r\n },\r\n async read (file, options) {\r\n const reader = this.readers[file.reader]\r\n Loading.show({ message: i18next.t('reader.READING_FILE', { file: file.name }) })\r\n try {\r\n const content = await reader.read(file.files, options)\r\n Loading.hide()\r\n return content\r\n } catch (error) {\r\n Loading.hide()\r\n Events.$emit('error', error)\r\n }\r\n },\r\n getSupportedFormats () {\r\n return Object.keys(this.readers)\r\n }\r\n}\r\n"]}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _reader = require('./reader.json');
8
+
9
+ Object.keys(_reader).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ Object.defineProperty(exports, key, {
12
+ enumerable: true,
13
+ get: function () {
14
+ return _reader[key];
15
+ }
16
+ });
17
+ });
18
+
19
+ var _reader2 = require('./reader.csv');
20
+
21
+ Object.keys(_reader2).forEach(function (key) {
22
+ if (key === "default" || key === "__esModule") return;
23
+ Object.defineProperty(exports, key, {
24
+ enumerable: true,
25
+ get: function () {
26
+ return _reader2[key];
27
+ }
28
+ });
29
+ });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../core/client/readers/index.js"],"names":[],"mappings":";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","file":"index.js","sourcesContent":["export * from './reader.json'\r\nexport * from './reader.csv'\r\n"]}
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CSVReader = undefined;
7
+
8
+ var _loglevel = require('loglevel');
9
+
10
+ var _loglevel2 = _interopRequireDefault(_loglevel);
11
+
12
+ var _i18next = require('i18next');
13
+
14
+ var _i18next2 = _interopRequireDefault(_i18next);
15
+
16
+ var _papaparse = require('papaparse');
17
+
18
+ var _papaparse2 = _interopRequireDefault(_papaparse);
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ const CSVReader = exports.CSVReader = {
23
+ read(files, options) {
24
+ if (files.length !== 1) {
25
+ _loglevel2.default.debug('invlaid \'fields\' arguments');
26
+ return;
27
+ }
28
+ const file = files[0];
29
+ _loglevel2.default.debug(`reading CSV file ${file.name}`);
30
+ return new Promise((resolve, reject) => {
31
+ const reader = new FileReader();
32
+ reader.onloadend = () => {
33
+ let content = reader.result;
34
+ const papaParseOptions = Object.assign({ skipEmptyLines: true }, options);
35
+ content = _papaparse2.default.parse(content, papaParseOptions);
36
+ if (content.errors.length > 0) {
37
+ _loglevel2.default.debug(content.errors);
38
+ reject(new Error(_i18next2.default.t('errors.INVALID_CSV_FILE', { file: file.name }), { errors: content.errors }));
39
+ return;
40
+ }
41
+ resolve(content);
42
+ };
43
+ reader.onerror = error => {
44
+ _loglevel2.default.debug(error);
45
+ reject(new Error(_i18next2.default.t('errors.CANNOT_READ_FILE', { file: file.name }), { errors: error }));
46
+ };
47
+ reader.readAsText(file);
48
+ });
49
+ },
50
+ getAdditionalFiles() {
51
+ return [];
52
+ }
53
+ };
54
+ //# sourceMappingURL=reader.csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../core/client/readers/reader.csv.js"],"names":["CSVReader","read","files","options","length","logger","debug","file","name","Promise","resolve","reject","reader","FileReader","onloadend","content","result","papaParseOptions","Object","assign","skipEmptyLines","Papa","parse","errors","Error","i18next","t","onerror","error","readAsText","getAdditionalFiles"],"mappings":";;;;;;;AAAA;;;;AACA;;;;AACA;;;;;;AAEO,MAAMA,gCAAY;AACvBC,OAAMC,KAAN,EAAaC,OAAb,EAAsB;AACpB,QAAID,MAAME,MAAN,KAAiB,CAArB,EAAwB;AACtBC,yBAAOC,KAAP,CAAa,8BAAb;AACA;AACD;AACD,UAAMC,OAAOL,MAAM,CAAN,CAAb;AACAG,uBAAOC,KAAP,CAAc,oBAAmBC,KAAKC,IAAK,EAA3C;AACA,WAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,YAAMC,SAAS,IAAIC,UAAJ,EAAf;AACAD,aAAOE,SAAP,GAAmB,MAAM;AACvB,YAAIC,UAAUH,OAAOI,MAArB;AACA,cAAMC,mBAAmBC,OAAOC,MAAP,CAAc,EAAEC,gBAAgB,IAAlB,EAAd,EAAwCjB,OAAxC,CAAzB;AACAY,kBAAUM,oBAAKC,KAAL,CAAWP,OAAX,EAAoBE,gBAApB,CAAV;AACA,YAAIF,QAAQQ,MAAR,CAAenB,MAAf,GAAwB,CAA5B,EAA+B;AAC7BC,6BAAOC,KAAP,CAAaS,QAAQQ,MAArB;AACAZ,iBAAO,IAAIa,KAAJ,CAAUC,kBAAQC,CAAR,CAAU,yBAAV,EAAqC,EAAEnB,MAAMA,KAAKC,IAAb,EAArC,CAAV,EAAqE,EAAEe,QAAQR,QAAQQ,MAAlB,EAArE,CAAP;AACA;AACD;AACDb,gBAAQK,OAAR;AACD,OAVD;AAWAH,aAAOe,OAAP,GAAkBC,KAAD,IAAW;AAC1BvB,2BAAOC,KAAP,CAAasB,KAAb;AACAjB,eAAO,IAAIa,KAAJ,CAAUC,kBAAQC,CAAR,CAAU,yBAAV,EAAqC,EAAEnB,MAAMA,KAAKC,IAAb,EAArC,CAAV,EAAqE,EAAEe,QAAQK,KAAV,EAArE,CAAP;AACD,OAHD;AAIAhB,aAAOiB,UAAP,CAAkBtB,IAAlB;AACD,KAlBM,CAAP;AAmBD,GA3BsB;AA4BvBuB,uBAAsB;AACpB,WAAO,EAAP;AACD;AA9BsB,CAAlB","file":"reader.csv.js","sourcesContent":["import logger from 'loglevel'\r\nimport i18next from 'i18next'\r\nimport Papa from 'papaparse'\r\n\r\nexport const CSVReader = {\r\n read (files, options) {\r\n if (files.length !== 1) {\r\n logger.debug('invlaid \\'fields\\' arguments')\r\n return\r\n }\r\n const file = files[0]\r\n logger.debug(`reading CSV file ${file.name}`)\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onloadend = () => {\r\n let content = reader.result\r\n const papaParseOptions = Object.assign({ skipEmptyLines: true }, options)\r\n content = Papa.parse(content, papaParseOptions)\r\n if (content.errors.length > 0) {\r\n logger.debug(content.errors)\r\n reject(new Error(i18next.t('errors.INVALID_CSV_FILE', { file: file.name }), { errors: content.errors }))\r\n return\r\n }\r\n resolve(content)\r\n }\r\n reader.onerror = (error) => {\r\n logger.debug(error)\r\n reject(new Error(i18next.t('errors.CANNOT_READ_FILE', { file: file.name }), { errors: error }))\r\n }\r\n reader.readAsText(file)\r\n })\r\n },\r\n getAdditionalFiles () {\r\n return []\r\n }\r\n}\r\n"]}
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.JSONReader = undefined;
7
+
8
+ var _loglevel = require('loglevel');
9
+
10
+ var _loglevel2 = _interopRequireDefault(_loglevel);
11
+
12
+ var _i18next = require('i18next');
13
+
14
+ var _i18next2 = _interopRequireDefault(_i18next);
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ const JSONReader = exports.JSONReader = {
19
+ read(files, options) {
20
+ if (files.length !== 1) {
21
+ _loglevel2.default.debug('invlaid \'fields\' arguments');
22
+ return;
23
+ }
24
+ const file = files[0];
25
+ _loglevel2.default.debug(`reading JSON file ${file.name}`);
26
+ return new Promise((resolve, reject) => {
27
+ const reader = new FileReader();
28
+ reader.onloadend = () => {
29
+ let content = reader.result;
30
+ try {
31
+ content = JSON.parse(content);
32
+ } catch (error) {
33
+ _loglevel2.default.debug(error);
34
+ reject(new Error(_i18next2.default.t('errors.INVALID_JSON_FILE', { file }), { errors: error }));
35
+ }
36
+ resolve(content);
37
+ };
38
+ reader.onerror = error => {
39
+ _loglevel2.default.debug(error);
40
+ reject(new Error(_i18next2.default.t('errors.CANNOT_READ_FILE', { file }), { errors: error }));
41
+ };
42
+ reader.readAsText(file);
43
+ });
44
+ },
45
+ getAdditionalFiles() {
46
+ return [];
47
+ }
48
+ };
49
+ //# sourceMappingURL=reader.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../core/client/readers/reader.json.js"],"names":["JSONReader","read","files","options","length","logger","debug","file","name","Promise","resolve","reject","reader","FileReader","onloadend","content","result","JSON","parse","error","Error","i18next","t","errors","onerror","readAsText","getAdditionalFiles"],"mappings":";;;;;;;AAAA;;;;AACA;;;;;;AAEO,MAAMA,kCAAa;AACxBC,OAAMC,KAAN,EAAaC,OAAb,EAAsB;AACpB,QAAID,MAAME,MAAN,KAAiB,CAArB,EAAwB;AACtBC,yBAAOC,KAAP,CAAa,8BAAb;AACA;AACD;AACD,UAAMC,OAAOL,MAAM,CAAN,CAAb;AACAG,uBAAOC,KAAP,CAAc,qBAAoBC,KAAKC,IAAK,EAA5C;AACA,WAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,YAAMC,SAAS,IAAIC,UAAJ,EAAf;AACAD,aAAOE,SAAP,GAAmB,MAAM;AACvB,YAAIC,UAAUH,OAAOI,MAArB;AACA,YAAI;AACFD,oBAAUE,KAAKC,KAAL,CAAWH,OAAX,CAAV;AACD,SAFD,CAEE,OAAOI,KAAP,EAAc;AACdd,6BAAOC,KAAP,CAAaa,KAAb;AACAR,iBAAO,IAAIS,KAAJ,CAAUC,kBAAQC,CAAR,CAAU,0BAAV,EAAsC,EAAEf,IAAF,EAAtC,CAAV,EAA2D,EAAEgB,QAAQJ,KAAV,EAA3D,CAAP;AACD;AACDT,gBAAQK,OAAR;AACD,OATD;AAUAH,aAAOY,OAAP,GAAkBL,KAAD,IAAW;AAC1Bd,2BAAOC,KAAP,CAAaa,KAAb;AACAR,eAAO,IAAIS,KAAJ,CAAUC,kBAAQC,CAAR,CAAU,yBAAV,EAAqC,EAAEf,IAAF,EAArC,CAAV,EAA0D,EAAEgB,QAAQJ,KAAV,EAA1D,CAAP;AACD,OAHD;AAIAP,aAAOa,UAAP,CAAkBlB,IAAlB;AACD,KAjBM,CAAP;AAkBD,GA1BuB;AA2BxBmB,uBAAsB;AACpB,WAAO,EAAP;AACD;AA7BuB,CAAnB","file":"reader.json.js","sourcesContent":["import logger from 'loglevel'\r\nimport i18next from 'i18next'\r\n\r\nexport const JSONReader = {\r\n read (files, options) {\r\n if (files.length !== 1) {\r\n logger.debug('invlaid \\'fields\\' arguments')\r\n return\r\n }\r\n const file = files[0]\r\n logger.debug(`reading JSON file ${file.name}`)\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onloadend = () => {\r\n let content = reader.result\r\n try {\r\n content = JSON.parse(content)\r\n } catch (error) {\r\n logger.debug(error)\r\n reject(new Error(i18next.t('errors.INVALID_JSON_FILE', { file }), { errors: error }))\r\n }\r\n resolve(content)\r\n }\r\n reader.onerror = (error) => {\r\n logger.debug(error)\r\n reject(new Error(i18next.t('errors.CANNOT_READ_FILE', { file }), { errors: error }))\r\n }\r\n reader.readAsText(file)\r\n })\r\n },\r\n getAdditionalFiles () {\r\n return []\r\n }\r\n}\r\n"]}
@@ -6,6 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.LocalSettingsService = undefined;
7
7
  exports.default = init;
8
8
 
9
+ var _lodash = require('lodash');
10
+
11
+ var _lodash2 = _interopRequireDefault(_lodash);
12
+
9
13
  var _localSettings = require('./local-settings.service');
10
14
 
11
15
  var _localSettings2 = _interopRequireDefault(_localSettings);
@@ -32,7 +36,7 @@ function init() {
32
36
  api.declareService('devices');
33
37
 
34
38
  // Setup service for settings edition
35
- api.createService('settings', Object.assign({
39
+ api.createService('settings', _lodash2.default.merge(_config2.default.settings || {}, {
36
40
  service: _localSettings2.default,
37
41
  propertyMapping: {
38
42
  shortTime: 'time.format.time.short',
@@ -43,11 +47,18 @@ function init() {
43
47
  longYear: 'time.format.year.long',
44
48
  utc: 'time.format.utc',
45
49
  timelineStep: 'time.step',
50
+ timelineInterval: 'time.interval',
46
51
  timeseriesSpan: 'timeseries.span',
47
52
  location: 'locationFormat',
48
53
  restoreView: 'restore.view',
49
- restoreLayers: 'restore.layers'
54
+ restoreLayers: 'restore.layers',
55
+ defaultLength: 'units.default.length',
56
+ defaultArea: 'units.default.area',
57
+ defaultVelocity: 'units.default.velocity',
58
+ defaultTemperature: 'units.default.temperature',
59
+ defaultAngle: 'units.default.angle',
60
+ defaultPrecision: 'units.default.precision'
50
61
  }
51
- }, _config2.default.settings || {})); // Default options can be overriden from app config
62
+ })); // Default options can be overriden from app config
52
63
  }
53
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../core/client/services/index.js"],"names":["init","LocalSettingsService","api","declareService","context","createService","Object","assign","service","propertyMapping","shortTime","longTime","shortDate","longDate","shortYear","longYear","utc","timelineStep","timeseriesSpan","location","restoreView","restoreLayers","config","settings"],"mappings":";;;;;;kBAKwBA,I;;AALxB;;;;AACA;;;;;;QAESC,oB,GAAAA,uB;AAEM,SAASD,IAAT,GAAiB;AAC9B,QAAME,MAAM,IAAZ;;AAEA;AACAA,MAAIC,cAAJ,CAAmB,OAAnB;AACAD,MAAIC,cAAJ,CAAmB,gBAAnB;AACAD,MAAIC,cAAJ,CAAmB,MAAnB,EAA2B,EAAEC,SAAS,IAAX,EAA3B;AACAF,MAAIC,cAAJ,CAAmB,eAAnB;AACAD,MAAIC,cAAJ,CAAmB,SAAnB,EAA8B,EAAEC,SAAS,IAAX,EAA9B;AACAF,MAAIC,cAAJ,CAAmB,QAAnB,EAA6B,EAAEC,SAAS,IAAX,EAA7B;AACAF,MAAIC,cAAJ,CAAmB,SAAnB,EAA8B,EAAEC,SAAS,IAAX,EAA9B;AACAF,MAAIC,cAAJ,CAAmB,SAAnB;AACAD,MAAIC,cAAJ,CAAmB,SAAnB;;AAEA;AACAD,MAAIG,aAAJ,CAAkB,UAAlB,EAA8BC,OAAOC,MAAP,CAAc;AAC1CC,aAASP,uBADiC;AAE1CQ,qBAAiB;AACfC,iBAAW,wBADI;AAEfC,gBAAU,uBAFK;AAGfC,iBAAW,wBAHI;AAIfC,gBAAU,uBAJK;AAKfC,iBAAW,wBALI;AAMfC,gBAAU,uBANK;AAOfC,WAAK,iBAPU;AAQfC,oBAAc,WARC;AASfC,sBAAgB,iBATD;AAUfC,gBAAU,gBAVK;AAWfC,mBAAa,cAXE;AAYfC,qBAAe;AAZA;AAFyB,GAAd,EAgB3BC,iBAAOC,QAAP,IAAmB,EAhBQ,CAA9B,EAf8B,CA+BH;AAC5B","file":"index.js","sourcesContent":["import LocalSettingsService from './local-settings.service'\r\nimport config from 'config'\r\n\r\nexport { LocalSettingsService }\r\n\r\nexport default function init () {\r\n const api = this\r\n\r\n // Declare the built-in services, others are optional\r\n api.declareService('users')\r\n api.declareService('authorisations')\r\n api.declareService('tags', { context: true })\r\n api.declareService('organisations')\r\n api.declareService('members', { context: true })\r\n api.declareService('groups', { context: true })\r\n api.declareService('storage', { context: true })\r\n api.declareService('account')\r\n api.declareService('devices')\r\n\r\n // Setup service for settings edition\r\n api.createService('settings', Object.assign({\r\n service: LocalSettingsService,\r\n propertyMapping: {\r\n shortTime: 'time.format.time.short',\r\n longTime: 'time.format.time.long',\r\n shortDate: 'time.format.date.short',\r\n longDate: 'time.format.date.long',\r\n shortYear: 'time.format.year.short',\r\n longYear: 'time.format.year.long',\r\n utc: 'time.format.utc',\r\n timelineStep: 'time.step',\r\n timeseriesSpan: 'timeseries.span',\r\n location: 'locationFormat',\r\n restoreView: 'restore.view',\r\n restoreLayers: 'restore.layers'\r\n }\r\n }, config.settings || {})) // Default options can be overriden from app config\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../core/client/services/index.js"],"names":["init","LocalSettingsService","api","declareService","context","createService","_","merge","config","settings","service","propertyMapping","shortTime","longTime","shortDate","longDate","shortYear","longYear","utc","timelineStep","timelineInterval","timeseriesSpan","location","restoreView","restoreLayers","defaultLength","defaultArea","defaultVelocity","defaultTemperature","defaultAngle","defaultPrecision"],"mappings":";;;;;;kBAMwBA,I;;AANxB;;;;AACA;;;;AACA;;;;;;QAESC,oB,GAAAA,uB;AAEM,SAASD,IAAT,GAAiB;AAC9B,QAAME,MAAM,IAAZ;;AAEA;AACAA,MAAIC,cAAJ,CAAmB,OAAnB;AACAD,MAAIC,cAAJ,CAAmB,gBAAnB;AACAD,MAAIC,cAAJ,CAAmB,MAAnB,EAA2B,EAAEC,SAAS,IAAX,EAA3B;AACAF,MAAIC,cAAJ,CAAmB,eAAnB;AACAD,MAAIC,cAAJ,CAAmB,SAAnB,EAA8B,EAAEC,SAAS,IAAX,EAA9B;AACAF,MAAIC,cAAJ,CAAmB,QAAnB,EAA6B,EAAEC,SAAS,IAAX,EAA7B;AACAF,MAAIC,cAAJ,CAAmB,SAAnB,EAA8B,EAAEC,SAAS,IAAX,EAA9B;AACAF,MAAIC,cAAJ,CAAmB,SAAnB;AACAD,MAAIC,cAAJ,CAAmB,SAAnB;;AAEA;AACAD,MAAIG,aAAJ,CAAkB,UAAlB,EAA8BC,iBAAEC,KAAF,CAAQC,iBAAOC,QAAP,IAAmB,EAA3B,EAA+B;AAC3DC,aAAST,uBADkD;AAE3DU,qBAAiB;AACfC,iBAAW,wBADI;AAEfC,gBAAU,uBAFK;AAGfC,iBAAW,wBAHI;AAIfC,gBAAU,uBAJK;AAKfC,iBAAW,wBALI;AAMfC,gBAAU,uBANK;AAOfC,WAAK,iBAPU;AAQfC,oBAAc,WARC;AASfC,wBAAkB,eATH;AAUfC,sBAAgB,iBAVD;AAWfC,gBAAU,gBAXK;AAYfC,mBAAa,cAZE;AAafC,qBAAe,gBAbA;AAcfC,qBAAe,sBAdA;AAefC,mBAAa,oBAfE;AAgBfC,uBAAiB,wBAhBF;AAiBfC,0BAAoB,2BAjBL;AAkBfC,oBAAc,qBAlBC;AAmBfC,wBAAkB;AAnBH;AAF0C,GAA/B,CAA9B,EAf8B,CAsC1B;AACL","file":"index.js","sourcesContent":["import _ from 'lodash'\r\nimport LocalSettingsService from './local-settings.service'\r\nimport config from 'config'\r\n\r\nexport { LocalSettingsService }\r\n\r\nexport default function init () {\r\n const api = this\r\n\r\n // Declare the built-in services, others are optional\r\n api.declareService('users')\r\n api.declareService('authorisations')\r\n api.declareService('tags', { context: true })\r\n api.declareService('organisations')\r\n api.declareService('members', { context: true })\r\n api.declareService('groups', { context: true })\r\n api.declareService('storage', { context: true })\r\n api.declareService('account')\r\n api.declareService('devices')\r\n\r\n // Setup service for settings edition\r\n api.createService('settings', _.merge(config.settings || {}, {\r\n service: LocalSettingsService,\r\n propertyMapping: {\r\n shortTime: 'time.format.time.short',\r\n longTime: 'time.format.time.long',\r\n shortDate: 'time.format.date.short',\r\n longDate: 'time.format.date.long',\r\n shortYear: 'time.format.year.short',\r\n longYear: 'time.format.year.long',\r\n utc: 'time.format.utc',\r\n timelineStep: 'time.step',\r\n timelineInterval: 'time.interval',\r\n timeseriesSpan: 'timeseries.span',\r\n location: 'locationFormat',\r\n restoreView: 'restore.view',\r\n restoreLayers: 'restore.layers',\r\n defaultLength: 'units.default.length',\r\n defaultArea: 'units.default.area',\r\n defaultVelocity: 'units.default.velocity',\r\n defaultTemperature: 'units.default.temperature',\r\n defaultAngle: 'units.default.angle',\r\n defaultPrecision: 'units.default.precision'\r\n }\r\n })) // Default options can be overriden from app config\r\n}\r\n"]}
@@ -16,7 +16,9 @@ exports.default = function (name, api, options) {
16
16
  return _asyncToGenerator(function* () {
17
17
  const data = {};
18
18
  _lodash2.default.forOwn(mapping, function (value, key) {
19
- _lodash2.default.set(data, key, _store.Store.get(value));
19
+ if (value) {
20
+ _lodash2.default.set(data, key, _store.Store.get(value));
21
+ }
20
22
  });
21
23
  return data;
22
24
  })();
@@ -30,7 +32,7 @@ exports.default = function (name, api, options) {
30
32
  return _store.Store.get(rootPath);
31
33
  });
32
34
  _lodash2.default.forOwn(data, function (value, key) {
33
- if (_lodash2.default.has(mapping, key)) {
35
+ if (_lodash2.default.get(mapping, key)) {
34
36
  _store.Store.set(mapping[key], value);
35
37
  }
36
38
  });
@@ -45,7 +47,7 @@ exports.default = function (name, api, options) {
45
47
  saveSettings() {
46
48
  const data = {};
47
49
  _lodash2.default.forOwn(mapping, (value, key) => {
48
- if (_store.Store.has(value)) {
50
+ if (value && _store.Store.has(value)) {
49
51
  _lodash2.default.set(data, key, _store.Store.get(value));
50
52
  }
51
53
  });
@@ -57,7 +59,7 @@ exports.default = function (name, api, options) {
57
59
  if (!settings) return;
58
60
  settings = JSON.parse(settings);
59
61
  _lodash2.default.forOwn(mapping, (value, key) => {
60
- if (_lodash2.default.has(settings, key)) {
62
+ if (value && _lodash2.default.has(settings, key)) {
61
63
  _store.Store.set(value, _lodash2.default.get(settings, key));
62
64
  }
63
65
  });