@kalisio/kdk 1.3.5 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +1 -0
  2. package/.nyc_output/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json} +0 -0
  3. package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 81d21e46-766a-46bc-b1b7-143ca577347a.json} +0 -0
  4. package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  5. package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → aaf3ebbb-f895-4d7b-9255-bc5dee832570.json} +0 -0
  6. package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → dbeb2602-0ac2-4e66-978b-0d29548359ca.json} +0 -0
  7. package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e47d1e4c-2fff-4dcb-908f-d3081162547c.json} +0 -0
  8. package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → 2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json} +1 -1
  9. package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +1 -0
  10. package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +1 -0
  11. package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
  12. package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +1 -0
  13. package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +1 -0
  14. package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +1 -0
  15. package/.nyc_output/processinfo/index.json +1 -1
  16. package/CHANGELOG.md +189 -67
  17. package/README.md +1 -1
  18. package/coverage/core/api/application.js.html +145 -145
  19. package/coverage/core/api/authentication.js.html +37 -37
  20. package/coverage/core/api/db.js.html +74 -74
  21. package/coverage/core/api/hooks/hooks.account.js.html +15 -15
  22. package/coverage/core/api/hooks/hooks.authentication.js.html +16 -16
  23. package/coverage/core/api/hooks/hooks.authorisations.js.html +112 -121
  24. package/coverage/core/api/hooks/hooks.devices.js.html +5 -5
  25. package/coverage/core/api/hooks/hooks.groups.js.html +3 -3
  26. package/coverage/core/api/hooks/hooks.logger.js.html +7 -7
  27. package/coverage/core/api/hooks/hooks.model.js.html +149 -149
  28. package/coverage/core/api/hooks/hooks.organisations.js.html +13 -61
  29. package/coverage/core/api/hooks/hooks.pusher.js.html +7 -7
  30. package/coverage/core/api/hooks/hooks.query.js.html +68 -32
  31. package/coverage/core/api/hooks/hooks.service.js.html +15 -15
  32. package/coverage/core/api/hooks/hooks.storage.js.html +5 -5
  33. package/coverage/core/api/hooks/hooks.tags.js.html +7 -7
  34. package/coverage/core/api/hooks/hooks.users.js.html +111 -63
  35. package/coverage/core/api/hooks/index.html +72 -72
  36. package/coverage/core/api/hooks/index.js.html +15 -15
  37. package/coverage/core/api/index.html +35 -35
  38. package/coverage/core/api/index.js.html +13 -13
  39. package/coverage/core/api/marshall.js.html +81 -81
  40. package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
  41. package/coverage/core/api/models/index.html +1 -1
  42. package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
  43. package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
  44. package/coverage/core/api/models/users.model.mongodb.js.html +7 -7
  45. package/coverage/core/api/oauth2-handler.js.html +3 -3
  46. package/coverage/core/api/oauth2-verifier.js.html +5 -5
  47. package/coverage/core/api/services/account/account.hooks.js.html +1 -1
  48. package/coverage/core/api/services/account/account.service.js.html +34 -34
  49. package/coverage/core/api/services/account/index.html +17 -17
  50. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  51. package/coverage/core/api/services/authorisations/authorisations.service.js.html +40 -37
  52. package/coverage/core/api/services/authorisations/index.html +17 -17
  53. package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
  54. package/coverage/core/api/services/databases/databases.service.js.html +1 -1
  55. package/coverage/core/api/services/databases/index.html +1 -1
  56. package/coverage/core/api/services/devices/devices.hooks.js.html +1 -1
  57. package/coverage/core/api/services/devices/devices.service.js.html +1 -1
  58. package/coverage/core/api/services/devices/index.html +1 -1
  59. package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
  60. package/coverage/core/api/services/groups/index.html +1 -1
  61. package/coverage/core/api/services/index.html +5 -5
  62. package/coverage/core/api/services/index.js.html +40 -40
  63. package/coverage/core/api/services/mailer/index.html +1 -1
  64. package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
  65. package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
  66. package/coverage/core/api/services/organisations/index.html +1 -1
  67. package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
  68. package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
  69. package/coverage/core/api/services/pusher/index.html +1 -1
  70. package/coverage/core/api/services/pusher/pusher.channels.js.html +1 -1
  71. package/coverage/core/api/services/pusher/pusher.hooks.js.html +1 -1
  72. package/coverage/core/api/services/pusher/pusher.service.js.html +1 -1
  73. package/coverage/core/api/services/storage/index.html +1 -1
  74. package/coverage/core/api/services/storage/storage.hooks.js.html +4 -4
  75. package/coverage/core/api/services/tags/index.html +1 -1
  76. package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
  77. package/coverage/core/api/services/users/index.html +1 -1
  78. package/coverage/core/api/services/users/users.hooks.js.html +12 -12
  79. package/coverage/core/common/index.html +32 -32
  80. package/coverage/core/common/index.js.html +27 -27
  81. package/coverage/core/common/permissions.js.html +135 -75
  82. package/coverage/index.html +157 -157
  83. package/coverage/lcov-report/core/api/application.js.html +145 -145
  84. package/coverage/lcov-report/core/api/authentication.js.html +37 -37
  85. package/coverage/lcov-report/core/api/db.js.html +74 -74
  86. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +15 -15
  87. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +16 -16
  88. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +112 -121
  89. package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +5 -5
  90. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +3 -3
  91. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +7 -7
  92. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +149 -149
  93. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +13 -61
  94. package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +7 -7
  95. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +68 -32
  96. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +15 -15
  97. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +5 -5
  98. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +7 -7
  99. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +111 -63
  100. package/coverage/lcov-report/core/api/hooks/index.html +72 -72
  101. package/coverage/lcov-report/core/api/hooks/index.js.html +15 -15
  102. package/coverage/lcov-report/core/api/index.html +35 -35
  103. package/coverage/lcov-report/core/api/index.js.html +13 -13
  104. package/coverage/lcov-report/core/api/marshall.js.html +81 -81
  105. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
  106. package/coverage/lcov-report/core/api/models/index.html +1 -1
  107. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
  108. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
  109. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +7 -7
  110. package/coverage/lcov-report/core/api/oauth2-handler.js.html +3 -3
  111. package/coverage/lcov-report/core/api/oauth2-verifier.js.html +5 -5
  112. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
  113. package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
  114. package/coverage/lcov-report/core/api/services/account/index.html +17 -17
  115. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
  116. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +40 -37
  117. package/coverage/lcov-report/core/api/services/authorisations/index.html +17 -17
  118. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
  119. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
  120. package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
  121. package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +1 -1
  122. package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +1 -1
  123. package/coverage/lcov-report/core/api/services/devices/index.html +1 -1
  124. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
  125. package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
  126. package/coverage/lcov-report/core/api/services/index.html +5 -5
  127. package/coverage/lcov-report/core/api/services/index.js.html +40 -40
  128. package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
  129. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
  130. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
  131. package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
  132. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
  133. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
  134. package/coverage/lcov-report/core/api/services/pusher/index.html +1 -1
  135. package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +1 -1
  136. package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +1 -1
  137. package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +1 -1
  138. package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
  139. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +4 -4
  140. package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
  141. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
  142. package/coverage/lcov-report/core/api/services/users/index.html +1 -1
  143. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +12 -12
  144. package/coverage/lcov-report/core/common/index.html +32 -32
  145. package/coverage/lcov-report/core/common/index.js.html +27 -27
  146. package/coverage/lcov-report/core/common/permissions.js.html +135 -75
  147. package/coverage/lcov-report/index.html +157 -157
  148. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +55 -55
  149. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +337 -274
  150. package/coverage/lcov-report/map/api/hooks/index.html +43 -43
  151. package/coverage/lcov-report/map/api/hooks/index.js.html +12 -12
  152. package/coverage/lcov-report/map/api/index.html +31 -31
  153. package/coverage/lcov-report/map/api/index.js.html +24 -24
  154. package/coverage/lcov-report/map/api/marshall.js.html +39 -39
  155. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +20 -20
  156. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +22 -22
  157. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +24 -24
  158. package/coverage/lcov-report/map/api/models/index.html +43 -43
  159. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +21 -21
  160. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +156 -156
  161. package/coverage/lcov-report/map/api/services/alerts/index.html +30 -30
  162. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +19 -19
  163. package/coverage/lcov-report/map/api/services/catalog/index.html +17 -17
  164. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
  165. package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
  166. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +20 -20
  167. package/coverage/lcov-report/map/api/services/features/index.html +21 -21
  168. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  169. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +99 -99
  170. package/coverage/lcov-report/map/api/services/geocoder/index.html +28 -28
  171. package/coverage/lcov-report/map/api/services/index.html +21 -21
  172. package/coverage/lcov-report/map/api/services/index.js.html +71 -71
  173. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
  174. package/coverage/lcov-report/map/common/errors.js.html +9 -9
  175. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +120 -120
  176. package/coverage/lcov-report/map/common/grid.js.html +268 -268
  177. package/coverage/lcov-report/map/common/index.html +149 -149
  178. package/coverage/lcov-report/map/common/index.js.html +31 -31
  179. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +71 -71
  180. package/coverage/lcov-report/map/common/moment-utils.js.html +14 -14
  181. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +280 -280
  182. package/coverage/lcov-report/map/common/opendap-utils.js.html +220 -220
  183. package/coverage/lcov-report/map/common/permissions.js.html +21 -21
  184. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +51 -51
  185. package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
  186. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +99 -99
  187. package/coverage/lcov-report/map/common/wcs-utils.js.html +66 -66
  188. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +196 -196
  189. package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
  190. package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
  191. package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
  192. package/coverage/lcov.info +3588 -3659
  193. package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
  194. package/coverage/map/api/hooks/hooks.query.js.html +337 -274
  195. package/coverage/map/api/hooks/index.html +43 -43
  196. package/coverage/map/api/hooks/index.js.html +12 -12
  197. package/coverage/map/api/index.html +31 -31
  198. package/coverage/map/api/index.js.html +24 -24
  199. package/coverage/map/api/marshall.js.html +39 -39
  200. package/coverage/map/api/models/alerts.model.mongodb.js.html +20 -20
  201. package/coverage/map/api/models/catalog.model.mongodb.js.html +22 -22
  202. package/coverage/map/api/models/features.model.mongodb.js.html +24 -24
  203. package/coverage/map/api/models/index.html +43 -43
  204. package/coverage/map/api/services/alerts/alerts.hooks.js.html +21 -21
  205. package/coverage/map/api/services/alerts/alerts.service.js.html +156 -156
  206. package/coverage/map/api/services/alerts/index.html +30 -30
  207. package/coverage/map/api/services/catalog/catalog.hooks.js.html +19 -19
  208. package/coverage/map/api/services/catalog/index.html +17 -17
  209. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
  210. package/coverage/map/api/services/daptiles/index.html +1 -1
  211. package/coverage/map/api/services/features/features.hooks.js.html +20 -20
  212. package/coverage/map/api/services/features/index.html +21 -21
  213. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
  214. package/coverage/map/api/services/geocoder/geocoder.service.js.html +99 -99
  215. package/coverage/map/api/services/geocoder/index.html +28 -28
  216. package/coverage/map/api/services/index.html +21 -21
  217. package/coverage/map/api/services/index.js.html +71 -71
  218. package/coverage/map/common/dynamic-grid-source.js.html +68 -68
  219. package/coverage/map/common/errors.js.html +9 -9
  220. package/coverage/map/common/geotiff-grid-source.js.html +120 -120
  221. package/coverage/map/common/grid.js.html +268 -268
  222. package/coverage/map/common/index.html +149 -149
  223. package/coverage/map/common/index.js.html +31 -31
  224. package/coverage/map/common/meteo-model-grid-source.js.html +71 -71
  225. package/coverage/map/common/moment-utils.js.html +14 -14
  226. package/coverage/map/common/opendap-grid-source.js.html +280 -280
  227. package/coverage/map/common/opendap-utils.js.html +220 -220
  228. package/coverage/map/common/permissions.js.html +21 -21
  229. package/coverage/map/common/time-based-grid-source.js.html +51 -51
  230. package/coverage/map/common/tms-utils.js.html +1 -1
  231. package/coverage/map/common/wcs-grid-source.js.html +99 -99
  232. package/coverage/map/common/wcs-utils.js.html +66 -66
  233. package/coverage/map/common/weacast-grid-source.js.html +196 -196
  234. package/coverage/map/common/wfs-utils.js.html +8 -5
  235. package/coverage/map/common/wms-utils.js.html +1 -1
  236. package/coverage/map/common/wmts-utils.js.html +71 -11
  237. package/extras/icons/kanban.png +0 -0
  238. package/extras/testcafe/page-models/map/catalog.js +2 -2
  239. package/extras/tours/core/add-member.js +10 -1
  240. package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
  241. package/extras/tours/core/groups.js +8 -2
  242. package/extras/tours/core/members.js +11 -21
  243. package/extras/tours/core/tags.js +7 -1
  244. package/extras/tours/map/catalog-categories.js +4 -4
  245. package/extras/tours/map/catalog-panel.js +16 -16
  246. package/extras/tours/map/favorite-views.js +3 -3
  247. package/lib/core/api/hooks/hooks.authorisations.js +149 -140
  248. package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
  249. package/lib/core/api/hooks/hooks.organisations.js +1 -23
  250. package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
  251. package/lib/core/api/hooks/hooks.query.js +22 -0
  252. package/lib/core/api/hooks/hooks.query.js.map +1 -1
  253. package/lib/core/api/hooks/hooks.users.js +34 -18
  254. package/lib/core/api/hooks/hooks.users.js.map +1 -1
  255. package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
  256. package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
  257. package/lib/core/client/api.js +1 -0
  258. package/lib/core/client/api.js.map +1 -1
  259. package/lib/core/client/components/account/KAccountDZ.vue +3 -4
  260. package/lib/core/client/components/account/KAccountDevices.vue +5 -6
  261. package/lib/core/client/components/account/KDeviceCard.vue +2 -1
  262. package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
  263. package/lib/core/client/components/collection/KBoard.vue +26 -155
  264. package/lib/core/client/components/collection/KCard.vue +144 -42
  265. package/lib/core/client/components/collection/KCardSection.vue +52 -0
  266. package/lib/core/client/components/collection/KColumn.vue +181 -0
  267. package/lib/core/client/components/collection/KGrid.vue +13 -18
  268. package/lib/core/client/components/collection/KHistory.vue +61 -89
  269. package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
  270. package/lib/core/client/components/collection/KItem.vue +21 -2
  271. package/lib/core/client/components/collection/KList.vue +9 -12
  272. package/lib/core/client/components/collection/KTable.vue +33 -39
  273. package/lib/core/client/components/collection/index.js +6 -1
  274. package/lib/core/client/components/collection/index.js.map +1 -1
  275. package/lib/core/client/components/editor/KEditor.vue +0 -6
  276. package/lib/core/client/components/editor/KModalEditor.vue +4 -4
  277. package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
  278. package/lib/core/client/components/form/KAttachmentField.vue +10 -10
  279. package/lib/core/client/components/form/KChipsField.vue +28 -23
  280. package/lib/core/client/components/form/KColorField.vue +30 -25
  281. package/lib/core/client/components/form/KForm.vue +0 -12
  282. package/lib/core/client/components/form/KIconField.vue +1 -0
  283. package/lib/core/client/components/form/KItemField.vue +8 -4
  284. package/lib/core/client/components/form/KRoleField.vue +56 -0
  285. package/lib/core/client/components/form/KSelectField.vue +16 -1
  286. package/lib/core/client/components/form/KView.vue +5 -14
  287. package/lib/core/client/components/frame/KAction.vue +18 -12
  288. package/lib/core/client/components/frame/KAvatar.vue +3 -3
  289. package/lib/core/client/components/frame/KChart.vue +60 -0
  290. package/lib/core/client/components/frame/KChipsPane.vue +80 -0
  291. package/lib/core/client/components/frame/KContent.vue +1 -1
  292. package/lib/core/client/components/frame/KModal.vue +30 -44
  293. package/lib/core/client/components/frame/KPanel.vue +1 -1
  294. package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
  295. package/lib/core/client/components/frame/KSpot.vue +31 -0
  296. package/lib/core/client/components/frame/KStamp.vue +62 -0
  297. package/lib/core/client/components/frame/index.js +56 -1
  298. package/lib/core/client/components/frame/index.js.map +1 -1
  299. package/lib/core/client/components/input/KColorChooser.vue +16 -8
  300. package/lib/core/client/components/input/KIconChooser.vue +2 -1
  301. package/lib/core/client/components/input/KUploader.vue +14 -5
  302. package/lib/core/client/components/layout/KAbout.vue +9 -3
  303. package/lib/core/client/components/layout/KFab.vue +1 -1
  304. package/lib/core/client/components/layout/KPage.vue +44 -19
  305. package/lib/core/client/components/layout/KTour.vue +2 -2
  306. package/lib/core/client/components/layout/KWelcome.vue +13 -12
  307. package/lib/core/client/components/layout/KWindow.vue +1 -1
  308. package/lib/core/client/components/media/KImageViewer.vue +9 -7
  309. package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
  310. package/lib/core/client/components/menu/KMenu.vue +103 -0
  311. package/lib/core/client/components/team/KAddMember.vue +17 -9
  312. package/lib/core/client/components/team/KChangeRole.vue +5 -7
  313. package/lib/core/client/components/team/KGroupCard.vue +34 -51
  314. package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
  315. package/lib/core/client/components/team/KJoinGroup.vue +5 -7
  316. package/lib/core/client/components/team/KMemberCard.vue +104 -63
  317. package/lib/core/client/components/team/KMembersActivity.vue +9 -2
  318. package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
  319. package/lib/core/client/components/team/KTagCard.vue +26 -26
  320. package/lib/core/client/components/team/KTagsActivity.vue +9 -2
  321. package/lib/core/client/components/time/KTimeRange.vue +144 -0
  322. package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
  323. package/lib/core/client/components/viewer/KViewer.vue +0 -6
  324. package/lib/core/client/i18n/core_en.json +133 -93
  325. package/lib/core/client/i18n/core_fr.json +56 -16
  326. package/lib/core/client/index.js +28 -14
  327. package/lib/core/client/index.js.map +1 -1
  328. package/lib/core/client/mixins/mixin.authorisation.js +28 -18
  329. package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
  330. package/lib/core/client/mixins/mixin.base-collection.js +57 -9
  331. package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
  332. package/lib/core/client/mixins/mixin.base-context.js +1 -1
  333. package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
  334. package/lib/core/client/mixins/mixin.base-editor.js +26 -16
  335. package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
  336. package/lib/core/client/mixins/mixin.base-field.js +0 -4
  337. package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
  338. package/lib/core/client/mixins/mixin.base-item.js +29 -14
  339. package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
  340. package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
  341. package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
  342. package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
  343. package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
  344. package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
  345. package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
  346. package/lib/core/client/mixins/mixin.service.js +5 -33
  347. package/lib/core/client/mixins/mixin.service.js.map +1 -1
  348. package/lib/core/client/services/index.js +23 -0
  349. package/lib/core/client/services/index.js.map +1 -1
  350. package/lib/core/client/services/local-settings.service.js +4 -0
  351. package/lib/core/client/services/local-settings.service.js.map +1 -1
  352. package/lib/core/client/time.js +131 -0
  353. package/lib/core/client/time.js.map +1 -0
  354. package/lib/core/common/permissions.js +65 -23
  355. package/lib/core/common/permissions.js.map +1 -1
  356. package/lib/core/common/schemas/groups.create.json +1 -1
  357. package/lib/core/common/schemas/groups.update.json +1 -1
  358. package/lib/core/common/schemas/organisations.create.json +1 -1
  359. package/lib/core/common/schemas/organisations.update.json +2 -2
  360. package/lib/core/common/schemas/settings.update.json +139 -0
  361. package/lib/core/common/schemas/tags.update.json +9 -1
  362. package/lib/map/api/hooks/hooks.query.js +48 -27
  363. package/lib/map/api/hooks/hooks.query.js.map +1 -1
  364. package/lib/map/api/services/features/features.hooks.js +1 -1
  365. package/lib/map/api/services/features/features.hooks.js.map +1 -1
  366. package/lib/map/client/components/KColorLegend.vue +25 -23
  367. package/lib/map/client/components/KFavoriteViews.vue +71 -35
  368. package/lib/map/client/components/KFeaturesChart.vue +11 -9
  369. package/lib/map/client/components/KFeaturesFilter.vue +15 -7
  370. package/lib/map/client/components/KFeaturesTable.vue +27 -2
  371. package/lib/map/client/components/KLayerEditionToolbar.vue +43 -0
  372. package/lib/map/client/components/KLayerStyleEditor.vue +10 -4
  373. package/lib/map/client/components/KLayerStyleForm.vue +14 -11
  374. package/lib/map/client/components/KLocationInput.vue +126 -65
  375. package/lib/map/client/components/KLocationMap.vue +199 -84
  376. package/lib/map/client/components/KPositionIndicator.vue +1 -0
  377. package/lib/map/client/components/KTimeline.vue +41 -36
  378. package/lib/map/client/components/KUrlLegend.vue +21 -19
  379. package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
  380. package/lib/map/client/components/catalog/KCatalog.vue +14 -2
  381. package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
  382. package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
  383. package/lib/map/client/components/catalog/KImportLayer.vue +28 -8
  384. package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
  385. package/lib/map/client/components/catalog/KLayersSelector.vue +42 -42
  386. package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
  387. package/lib/map/client/components/form/KLocationField.vue +1 -1
  388. package/lib/map/client/components/form/KOwsLayerField.vue +21 -2
  389. package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
  390. package/lib/map/client/components/widget/KInformationBox.vue +10 -16
  391. package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
  392. package/lib/map/client/components/widget/KTimeSeries.vue +39 -29
  393. package/lib/map/client/i18n/map_en.json +65 -17
  394. package/lib/map/client/i18n/map_fr.json +67 -20
  395. package/lib/map/client/init.js +18 -6
  396. package/lib/map/client/init.js.map +1 -1
  397. package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
  398. package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
  399. package/lib/map/client/leaflet/GradientPath.js.map +1 -1
  400. package/lib/map/client/leaflet/MaskLayer.js +64 -0
  401. package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
  402. package/lib/map/client/mixins/globe/mixin.base-globe.js +4 -1
  403. package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
  404. package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
  405. package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
  406. package/lib/map/client/mixins/index.js +8 -13
  407. package/lib/map/client/mixins/index.js.map +1 -1
  408. package/lib/map/client/mixins/map/mixin.base-map.js +30 -6
  409. package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
  410. package/lib/map/client/mixins/map/mixin.canvas-layers.js +274 -51
  411. package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
  412. package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
  413. package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
  414. package/lib/map/client/mixins/map/mixin.file-layers.js +25 -18
  415. package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
  416. package/lib/map/client/mixins/map/mixin.geojson-layers.js +18 -10
  417. package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
  418. package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
  419. package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
  420. package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
  421. package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
  422. package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
  423. package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
  424. package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
  425. package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
  426. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
  427. package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
  428. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
  429. package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
  430. package/lib/map/client/mixins/mixin.activity.js +60 -68
  431. package/lib/map/client/mixins/mixin.activity.js.map +1 -1
  432. package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
  433. package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
  434. package/lib/map/client/mixins/mixin.feature-service.js +7 -5
  435. package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
  436. package/lib/map/client/mixins/mixin.weacast.js +6 -4
  437. package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
  438. package/lib/map/client/pixi-utils.js +9 -0
  439. package/lib/map/client/pixi-utils.js.map +1 -1
  440. package/lib/map/client/utils.js +50 -0
  441. package/lib/map/client/utils.js.map +1 -1
  442. package/lib/map/common/wfs-utils.js +1 -1
  443. package/lib/map/common/wfs-utils.js.map +1 -1
  444. package/lib/map/common/wmts-utils.js +31 -7
  445. package/lib/map/common/wmts-utils.js.map +1 -1
  446. package/lib/test/client/core/account.js +100 -0
  447. package/lib/test/client/core/account.js.map +1 -0
  448. package/lib/test/client/core/api.js +400 -0
  449. package/lib/test/client/core/api.js.map +1 -0
  450. package/lib/test/client/core/collection.js +109 -0
  451. package/lib/test/client/core/collection.js.map +1 -0
  452. package/lib/test/client/core/index.js +90 -0
  453. package/lib/test/client/core/index.js.map +1 -0
  454. package/lib/test/client/core/layout.js +221 -0
  455. package/lib/test/client/core/layout.js.map +1 -0
  456. package/lib/test/client/core/runner.js +204 -0
  457. package/lib/test/client/core/runner.js.map +1 -0
  458. package/lib/test/client/core/screens.js +68 -0
  459. package/lib/test/client/core/screens.js.map +1 -0
  460. package/lib/test/client/core/utils.js +304 -0
  461. package/lib/test/client/core/utils.js.map +1 -0
  462. package/lib/test/client/index.js +20 -0
  463. package/lib/test/client/index.js.map +1 -0
  464. package/lib/test/client/map/catalog.js +191 -0
  465. package/lib/test/client/map/catalog.js.map +1 -0
  466. package/lib/test/client/map/controls.js +54 -0
  467. package/lib/test/client/map/controls.js.map +1 -0
  468. package/lib/test/client/map/index.js +30 -0
  469. package/lib/test/client/map/index.js.map +1 -0
  470. package/package.json +17 -9
  471. package/test.client.js +1 -0
  472. package/tests/core/test-log-2021-07-15.log +71 -0
  473. package/tests/core/test-log-2021-09-02.log +47 -0
  474. package/tests/map/test-log-%DATE%.logYYYY-07-DD +12 -0
  475. package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
  476. package/tests/map/test-log-2021-07-12.log +12 -0
  477. package/tests/map/test-log-2021-07-15.log +5 -0
  478. package/tests/map/test-log-2021-09-02.log +3 -0
  479. package/.nyc_output/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  480. package/.nyc_output/2bece194-92f7-4971-a688-10604044a7fa.json +0 -1
  481. package/.nyc_output/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  482. package/.nyc_output/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  483. package/.nyc_output/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  484. package/.nyc_output/processinfo/0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json +0 -1
  485. package/.nyc_output/processinfo/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
  486. package/.nyc_output/processinfo/20df4355-911a-4b16-a8ab-d3392e9f0a7f.json +0 -1
  487. package/.nyc_output/processinfo/257af0bb-96c3-465a-b5ef-a1df60078d5f.json +0 -1
  488. package/.nyc_output/processinfo/284aebfa-23fd-425f-9d72-e4b8904dc224.json +0 -1
  489. package/.nyc_output/processinfo/5cbee06e-be6e-468a-bd78-4793ee785fe4.json +0 -1
  490. package/.nyc_output/processinfo/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
  491. package/.nyc_output/processinfo/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
  492. package/.nyc_output/processinfo/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
  493. package/lib/core/client/components/frame/KLabel.vue +0 -56
  494. package/lib/core/client/components/team/KTagsPane.vue +0 -35
  495. package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
  496. package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
  497. package/lib/map/client/mixins/mixin.time.js +0 -73
  498. package/lib/map/client/mixins/mixin.time.js.map +0 -1
  499. package/tests/core/account.test.js +0 -415
  500. package/tests/core/client.test.js.skip +0 -37
  501. package/tests/core/config/default.js +0 -97
  502. package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
  503. package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
  504. package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
  505. package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
  506. package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
  507. package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
  508. package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
  509. package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
  510. package/tests/core/data/10k_most_common_passwords.txt +0 -10000
  511. package/tests/core/data/logo.png +0 -0
  512. package/tests/core/hooks.test.js +0 -175
  513. package/tests/core/index.test.js +0 -418
  514. package/tests/core/notifications.test.js +0 -465
  515. package/tests/core/storage.test.js +0 -134
  516. package/tests/core/team.test.js +0 -610
  517. package/tests/core/utils.js +0 -59
  518. package/tests/map/alerts.test.js +0 -554
  519. package/tests/map/config/default.js +0 -112
  520. package/tests/map/config/layers.json +0 -37
  521. package/tests/map/daptiles.test.js +0 -41
  522. package/tests/map/data/DescribeCoverage.xml +0 -55
  523. package/tests/map/data/GetCoverage.tif +0 -0
  524. package/tests/map/data/adsb.observations.json +0 -132
  525. package/tests/map/data/dataset.grb.das +0 -55
  526. package/tests/map/data/dataset.grb.dds +0 -17
  527. package/tests/map/data/dataset.grb.dods +0 -0
  528. package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
  529. package/tests/map/data/subdataset.grb.dods +0 -0
  530. package/tests/map/data/vigicrues.observations.json +0 -47042
  531. package/tests/map/data/vigicrues.stations.json +0 -15422
  532. package/tests/map/data/zones.json +0 -1228
  533. package/tests/map/grid-sources.test.js +0 -304
  534. package/tests/map/hooks.test.js +0 -96
  535. package/tests/map/index.test.js +0 -333
@@ -0,0 +1,304 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFromStore = exports.waitForImagesLoaded = exports.chooseIcon = exports.uploadFile = exports.type = exports.clickSelect = exports.clickXPath = exports.click = exports.countElements = exports.isElementVisible = exports.elementExists = undefined;
7
+
8
+ /* Helper function to check wether an element exists
9
+ * see: https://github.com/puppeteer/puppeteer/issues/545
10
+ */
11
+ let elementExists = exports.elementExists = (() => {
12
+ var _ref = _asyncToGenerator(function* (page, selector) {
13
+ const exists = !!(yield page.$(selector));
14
+ debug(`Element ${selector} ` + (exists ? 'exists' : 'does not exist'));
15
+ return exists;
16
+ });
17
+
18
+ return function elementExists(_x, _x2) {
19
+ return _ref.apply(this, arguments);
20
+ };
21
+ })();
22
+
23
+ /* Helper function to check wether an element is visible
24
+ * see: https://github.com/puppeteer/puppeteer/issues/545
25
+ */
26
+
27
+
28
+ let isElementVisible = exports.isElementVisible = (() => {
29
+ var _ref2 = _asyncToGenerator(function* (page, selector) {
30
+ debug(`Checking if element ${selector} is visible`);
31
+ return page.evaluate(function (selector) {
32
+ const element = document.querySelector(selector);
33
+ if (!element) return false;
34
+ const style = window.getComputedStyle(element);
35
+ const visible = style && style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0';
36
+ return visible;
37
+ }, selector);
38
+ });
39
+
40
+ return function isElementVisible(_x3, _x4) {
41
+ return _ref2.apply(this, arguments);
42
+ };
43
+ })();
44
+
45
+ /* Count the elements that match the given XPath expresion
46
+ */
47
+
48
+
49
+ let countElements = exports.countElements = (() => {
50
+ var _ref3 = _asyncToGenerator(function* (page, xpath) {
51
+ const elements = yield page.$x(xpath);
52
+ if (elements) return elements.length;
53
+ return 0;
54
+ });
55
+
56
+ return function countElements(_x5, _x6) {
57
+ return _ref3.apply(this, arguments);
58
+ };
59
+ })();
60
+
61
+ /* Helper function to click on a given selector
62
+ */
63
+
64
+
65
+ let click = exports.click = (() => {
66
+ var _ref4 = _asyncToGenerator(function* (page, selector, wait = 250) {
67
+ try {
68
+ yield page.waitForSelector(selector, { timeout: 2000 });
69
+ yield page.click(selector);
70
+ yield page.waitForTimeout(wait);
71
+ debug(`Clicked target ${selector}`);
72
+ } catch (error) {
73
+ console.error(`click ${selector} failed.`);
74
+ }
75
+ });
76
+
77
+ return function click(_x7, _x8) {
78
+ return _ref4.apply(this, arguments);
79
+ };
80
+ })();
81
+
82
+ /* Helper function to click on a given xpath
83
+ */
84
+
85
+
86
+ let clickXPath = exports.clickXPath = (() => {
87
+ var _ref5 = _asyncToGenerator(function* (page, xpath, wait = 250) {
88
+ try {
89
+ yield page.waitForXPath(xpath, { timeout: 2000 });
90
+ const elements = yield page.$x(xpath);
91
+ if (elements.length > 0) {
92
+ elements[0].click();
93
+ yield page.waitForTimeout(wait);
94
+ debug(`Clicked target ${xpath}`);
95
+ }
96
+ } catch (error) {
97
+ console.error(`click ${xpath} failed.`);
98
+ }
99
+ });
100
+
101
+ return function clickXPath(_x9, _x10) {
102
+ return _ref5.apply(this, arguments);
103
+ };
104
+ })();
105
+
106
+ /* Helper function to click on a given selector then select given entry
107
+ */
108
+
109
+
110
+ let clickSelect = exports.clickSelect = (() => {
111
+ var _ref6 = _asyncToGenerator(function* (page, selector, entry, wait = 250) {
112
+ try {
113
+ yield page.waitForSelector(selector, { timeout: 2000 });
114
+ yield page.click(selector);
115
+ debug(`Clicked target ${selector}`);
116
+ // We handle single/multiple selection
117
+ if (Array.isArray(entry)) {
118
+ for (let i = 0; i < entry.length; i++) {
119
+ yield page.waitForSelector(entry[i]);
120
+ yield page.click(entry[i]);
121
+ }
122
+ // In this case we need to close the selector
123
+ yield page.click(selector);
124
+ } else {
125
+ yield page.waitForSelector(entry);
126
+ yield page.click(entry);
127
+ }
128
+ yield page.waitForTimeout(wait);
129
+ debug(`Clicked entry ${selector}`);
130
+ } catch (error) {
131
+ console.error(`select ${entry} in ${selector} failed.`);
132
+ }
133
+ });
134
+
135
+ return function clickSelect(_x11, _x12, _x13) {
136
+ return _ref6.apply(this, arguments);
137
+ };
138
+ })();
139
+
140
+ /* Helper function to input a test on a given selector
141
+ * set enter to true to run the press 'Enter' key
142
+ */
143
+
144
+
145
+ let type = exports.type = (() => {
146
+ var _ref7 = _asyncToGenerator(function* (page, selector, text, enter = false, replace = false, wait = 250) {
147
+ try {
148
+ yield page.waitForSelector(selector, { timeout: 2000 });
149
+ if (replace) {
150
+ yield page.click(selector, { clickCount: 3 });
151
+ yield page.keyboard.press('Backspace');
152
+ } else {
153
+ yield page.click(selector);
154
+ }
155
+ yield page.type(selector, text);
156
+ if (enter) yield page.keyboard.press('Enter');
157
+ yield page.waitForTimeout(wait);
158
+ } catch (error) {
159
+ console.error(`type ${test} in ${selector} failed.`);
160
+ }
161
+ });
162
+
163
+ return function type(_x14, _x15, _x16) {
164
+ return _ref7.apply(this, arguments);
165
+ };
166
+ })();
167
+
168
+ /* Helper function to upload a file on a given selector
169
+ */
170
+
171
+
172
+ let uploadFile = exports.uploadFile = (() => {
173
+ var _ref8 = _asyncToGenerator(function* (page, selector, filePath, wait = 2000) {
174
+ try {
175
+ const element = yield page.$(selector, { timeout: 2000 });
176
+ yield element.uploadFile(filePath);
177
+ yield page.waitForTimeout(wait);
178
+ } catch (error) {
179
+ console.error(`upload ${filePath} in ${selector} failed.`);
180
+ }
181
+ });
182
+
183
+ return function uploadFile(_x17, _x18, _x19) {
184
+ return _ref8.apply(this, arguments);
185
+ };
186
+ })();
187
+
188
+ /* Select an icon within the icon chooser
189
+ */
190
+
191
+
192
+ let chooseIcon = exports.chooseIcon = (() => {
193
+ var _ref9 = _asyncToGenerator(function* (page, name, color, wait = 1000) {
194
+ const iconXpath = `//div[contains(@class, "q-dialog")]//i[contains(@class, "${name}")]`;
195
+ const icons = yield page.$x(iconXpath);
196
+ if (icons.length > 0) {
197
+ icons[0].click();
198
+ yield page.waitForTimeout(250);
199
+ }
200
+ const colorXpath = `//div[contains(@class, "q-dialog")]//button[contains(@class, "${color}")]`;
201
+ const colors = yield page.$x(colorXpath);
202
+ if (colors.length > 0) {
203
+ colors[0].click();
204
+ yield page.waitForTimeout(250);
205
+ }
206
+ yield click(page, '.q-dialog #choose-button', wait);
207
+ });
208
+
209
+ return function chooseIcon(_x20, _x21, _x22) {
210
+ return _ref9.apply(this, arguments);
211
+ };
212
+ })();
213
+
214
+ /* Helper function that wait until all images are loaded
215
+ */
216
+
217
+
218
+ let waitForImagesLoaded = exports.waitForImagesLoaded = (() => {
219
+ var _ref10 = _asyncToGenerator(function* (page) {
220
+ yield page.evaluate(function () {
221
+ const imageSelectors = Array.from(document.querySelectorAll('img'));
222
+ const imgPromises = [];
223
+ imageSelectors.forEach(function (img) {
224
+ if (img.complete) return;
225
+ imgPromises.push(new Promise(function (resolve, reject) {
226
+ img.addEventListener('load', resolve);
227
+ img.addEventListener('error', reject);
228
+ }));
229
+ });
230
+ return Promise.all(imgPromises);
231
+ });
232
+ });
233
+
234
+ return function waitForImagesLoaded(_x23) {
235
+ return _ref10.apply(this, arguments);
236
+ };
237
+ })();
238
+
239
+ /* Return the Store value corresponding to the given path
240
+ */
241
+
242
+
243
+ let getFromStore = exports.getFromStore = (() => {
244
+ var _ref11 = _asyncToGenerator(function* (page, path) {
245
+ return page.evaluate(function (path) {
246
+ return window.$store.get(path);
247
+ }, path);
248
+ });
249
+
250
+ return function getFromStore(_x24, _x25) {
251
+ return _ref11.apply(this, arguments);
252
+ };
253
+ })();
254
+
255
+ /* Given a reference screenshot key and a run screenshot key, this
256
+ * will perform screenshot comparison and return the diffRatio as
257
+ * a percentage of the number of mismatched pixels.
258
+ * see: https://github.com/mapbox/pixelmatch
259
+ * threshold is a value [0, 1], smaller values make the comparison more
260
+ * sensitive.
261
+ * diffFilename is the filename where the diff of the images will be written,
262
+ * if null, no diff will be written
263
+ */
264
+
265
+
266
+ exports.compareImages = compareImages;
267
+
268
+ var _debug = require('debug');
269
+
270
+ var _debug2 = _interopRequireDefault(_debug);
271
+
272
+ var _fs = require('fs');
273
+
274
+ var _fs2 = _interopRequireDefault(_fs);
275
+
276
+ var _pngjs = require('pngjs');
277
+
278
+ var _pngjs2 = _interopRequireDefault(_pngjs);
279
+
280
+ var _pixelmatch = require('pixelmatch');
281
+
282
+ var _pixelmatch2 = _interopRequireDefault(_pixelmatch);
283
+
284
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
285
+
286
+ 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"); }); }; }
287
+
288
+ const debug = (0, _debug2.default)('kdk:core:test:utils');function compareImages(image1, image2, threshold, diffFilename) {
289
+ const img1 = _pngjs2.default.PNG.sync.read(_fs2.default.readFileSync(image1));
290
+ const img2 = _pngjs2.default.PNG.sync.read(_fs2.default.readFileSync(image2));
291
+ const { width, height } = img1;
292
+ const diff = new _pngjs2.default.PNG({ width, height });
293
+ const options = {
294
+ alpha: 0.3,
295
+ diffColor: [255, 0, 0],
296
+ diffColorAlt: [0, 255, 0],
297
+ threshold: threshold
298
+ };
299
+ const numDiffs = (0, _pixelmatch2.default)(img1.data, img2.data, diff.data, width, height, options);
300
+ const diffRatio = 100.0 * (numDiffs / (width * height));
301
+ if (diffFilename) _fs2.default.writeFileSync(diffFilename, _pngjs2.default.PNG.sync.write(diff));
302
+ return { diffRatio, diff };
303
+ }
304
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/core/utils.js"],"names":["page","selector","exists","$","debug","elementExists","evaluate","element","document","querySelector","style","window","getComputedStyle","visible","display","visibility","opacity","isElementVisible","xpath","elements","$x","length","countElements","wait","waitForSelector","timeout","click","waitForTimeout","error","console","waitForXPath","clickXPath","entry","Array","isArray","i","clickSelect","text","enter","replace","clickCount","keyboard","press","type","test","filePath","uploadFile","name","color","iconXpath","icons","colorXpath","colors","chooseIcon","imageSelectors","from","querySelectorAll","imgPromises","forEach","img","complete","push","Promise","resolve","reject","addEventListener","all","waitForImagesLoaded","path","$store","get","getFromStore","compareImages","image1","image2","threshold","diffFilename","img1","png","PNG","sync","read","fs","readFileSync","img2","width","height","diff","options","alpha","diffColor","diffColorAlt","numDiffs","data","diffRatio","writeFileSync","write"],"mappings":"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","file":"utils.js","sourcesContent":["import makeDebug from 'debug'\r\nimport fs from 'fs'\r\nimport png from 'pngjs'\r\nimport pixelmatch from 'pixelmatch'\r\n\r\nconst debug = makeDebug('kdk:core:test:utils')\r\n\r\n/* Helper function to check wether an element exists\r\n * see: https://github.com/puppeteer/puppeteer/issues/545\r\n */\r\nexport async function elementExists (page, selector) {\r\n const exists = !!(await page.$(selector))\r\n debug(`Element ${selector} ` + (exists ? 'exists' : 'does not exist'))\r\n return exists\r\n}\r\n\r\n/* Helper function to check wether an element is visible\r\n * see: https://github.com/puppeteer/puppeteer/issues/545\r\n*/\r\nexport async function isElementVisible (page, selector) {\r\n debug(`Checking if element ${selector} is visible`)\r\n return page.evaluate((selector) => {\r\n const element = document.querySelector(selector)\r\n if (!element) return false\r\n const style = window.getComputedStyle(element)\r\n const visible = (style && style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0')\r\n return visible\r\n }, selector)\r\n}\r\n\r\n/* Count the elements that match the given XPath expresion\r\n */\r\nexport async function countElements (page, xpath) {\r\n const elements = await page.$x(xpath)\r\n if (elements) return elements.length\r\n return 0\r\n}\r\n\r\n/* Helper function to click on a given selector\r\n */\r\nexport async function click (page, selector, wait = 250) {\r\n try {\r\n await page.waitForSelector(selector, { timeout: 2000 })\r\n await page.click(selector)\r\n await page.waitForTimeout(wait)\r\n debug(`Clicked target ${selector}`)\r\n } catch (error) {\r\n console.error(`click ${selector} failed.`)\r\n }\r\n}\r\n\r\n/* Helper function to click on a given xpath\r\n */\r\nexport async function clickXPath (page, xpath, wait = 250) {\r\n try {\r\n await page.waitForXPath(xpath, { timeout: 2000 })\r\n const elements = await page.$x(xpath)\r\n if (elements.length > 0) {\r\n elements[0].click()\r\n await page.waitForTimeout(wait)\r\n debug(`Clicked target ${xpath}`)\r\n }\r\n } catch (error) {\r\n console.error(`click ${xpath} failed.`)\r\n }\r\n}\r\n\r\n/* Helper function to click on a given selector then select given entry\r\n */\r\nexport async function clickSelect (page, selector, entry, wait = 250) {\r\n try {\r\n await page.waitForSelector(selector, { timeout: 2000 })\r\n await page.click(selector)\r\n debug(`Clicked target ${selector}`)\r\n // We handle single/multiple selection\r\n if (Array.isArray(entry)) {\r\n for (let i = 0; i < entry.length; i++) {\r\n await page.waitForSelector(entry[i])\r\n await page.click(entry[i])\r\n }\r\n // In this case we need to close the selector\r\n await page.click(selector)\r\n } else {\r\n await page.waitForSelector(entry)\r\n await page.click(entry)\r\n }\r\n await page.waitForTimeout(wait)\r\n debug(`Clicked entry ${selector}`)\r\n } catch (error) {\r\n console.error(`select ${entry} in ${selector} failed.`)\r\n }\r\n}\r\n\r\n/* Helper function to input a test on a given selector\r\n * set enter to true to run the press 'Enter' key\r\n */\r\nexport async function type (page, selector, text, enter = false, replace = false, wait = 250) {\r\n try {\r\n await page.waitForSelector(selector, { timeout: 2000 })\r\n if (replace) {\r\n await page.click(selector, { clickCount: 3 })\r\n await page.keyboard.press('Backspace')\r\n } else {\r\n await page.click(selector)\r\n }\r\n await page.type(selector, text)\r\n if (enter) await page.keyboard.press('Enter')\r\n await page.waitForTimeout(wait)\r\n } catch (error) {\r\n console.error(`type ${test} in ${selector} failed.`)\r\n }\r\n}\r\n\r\n/* Helper function to upload a file on a given selector\r\n */\r\nexport async function uploadFile (page, selector, filePath, wait = 2000) {\r\n try {\r\n const element = await page.$(selector, { timeout: 2000 })\r\n await element.uploadFile(filePath)\r\n await page.waitForTimeout(wait)\r\n } catch (error) {\r\n console.error(`upload ${filePath} in ${selector} failed.`)\r\n }\r\n}\r\n\r\n/* Select an icon within the icon chooser\r\n */\r\nexport async function chooseIcon (page, name, color, wait = 1000) {\r\n const iconXpath = `//div[contains(@class, \"q-dialog\")]//i[contains(@class, \"${name}\")]`\r\n const icons = await page.$x(iconXpath)\r\n if (icons.length > 0) {\r\n icons[0].click()\r\n await page.waitForTimeout(250)\r\n }\r\n const colorXpath = `//div[contains(@class, \"q-dialog\")]//button[contains(@class, \"${color}\")]`\r\n const colors = await page.$x(colorXpath)\r\n if (colors.length > 0) {\r\n colors[0].click()\r\n await page.waitForTimeout(250)\r\n }\r\n await click(page, '.q-dialog #choose-button', wait)\r\n}\r\n\r\n/* Helper function that wait until all images are loaded\r\n */\r\nexport async function waitForImagesLoaded (page) {\r\n await page.evaluate(() => {\r\n const imageSelectors = Array.from(document.querySelectorAll('img'))\r\n const imgPromises = []\r\n imageSelectors.forEach((img) => {\r\n if (img.complete) return\r\n imgPromises.push(new Promise((resolve, reject) => {\r\n img.addEventListener('load', resolve)\r\n img.addEventListener('error', reject)\r\n }))\r\n })\r\n return Promise.all(imgPromises)\r\n })\r\n}\r\n\r\n/* Return the Store value corresponding to the given path\r\n */\r\nexport async function getFromStore (page, path) {\r\n return page.evaluate((path) => window.$store.get(path), path)\r\n}\r\n\r\n/* Given a reference screenshot key and a run screenshot key, this\r\n * will perform screenshot comparison and return the diffRatio as\r\n * a percentage of the number of mismatched pixels.\r\n * see: https://github.com/mapbox/pixelmatch\r\n * threshold is a value [0, 1], smaller values make the comparison more\r\n * sensitive.\r\n * diffFilename is the filename where the diff of the images will be written,\r\n * if null, no diff will be written\r\n */\r\nexport function compareImages (image1, image2, threshold, diffFilename) {\r\n const img1 = png.PNG.sync.read(fs.readFileSync(image1))\r\n const img2 = png.PNG.sync.read(fs.readFileSync(image2))\r\n const { width, height } = img1\r\n const diff = new png.PNG({ width, height })\r\n const options = {\r\n alpha: 0.3,\r\n diffColor: [255, 0, 0],\r\n diffColorAlt: [0, 255, 0],\r\n threshold: threshold\r\n }\r\n const numDiffs = pixelmatch(img1.data, img2.data, diff.data, width, height, options)\r\n const diffRatio = 100.0 * (numDiffs / (width * height))\r\n if (diffFilename) fs.writeFileSync(diffFilename, png.PNG.sync.write(diff))\r\n return { diffRatio, diff }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.map = exports.core = undefined;
7
+
8
+ var _core = require('./core');
9
+
10
+ var core = _interopRequireWildcard(_core);
11
+
12
+ var _map = require('./map');
13
+
14
+ var map = _interopRequireWildcard(_map);
15
+
16
+ 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; } }
17
+
18
+ exports.core = core;
19
+ exports.map = map;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../test/client/index.js"],"names":["core","map"],"mappings":";;;;;;;AAAA;;IAAYA,I;;AACZ;;IAAYC,G;;;;QAEHD,I,GAAAA,I;QAAMC,G,GAAAA,G","file":"index.js","sourcesContent":["import * as core from './core'\r\nimport * as map from './map'\r\n\r\nexport { core, map }"]}
@@ -0,0 +1,191 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createLayer = exports.connectLayer = exports.importLayer = exports.addLayer = exports.dropFile = exports.removeLayer = exports.clickLayer = exports.clickBaseLayer = exports.clickLayerCategory = exports.isLayerCategoryOpened = undefined;
7
+
8
+ let isLayerCategoryOpened = exports.isLayerCategoryOpened = (() => {
9
+ var _ref = _asyncToGenerator(function* (page, category) {
10
+ const selector = `#${category} .q-expansion-item__content`;
11
+ return core.isElementVisible(page, selector);
12
+ });
13
+
14
+ return function isLayerCategoryOpened(_x, _x2) {
15
+ return _ref.apply(this, arguments);
16
+ };
17
+ })();
18
+
19
+ let clickLayerCategory = exports.clickLayerCategory = (() => {
20
+ var _ref2 = _asyncToGenerator(function* (page, category, wait = 500) {
21
+ yield core.clickRightPaneAction(page, category, wait);
22
+ });
23
+
24
+ return function clickLayerCategory(_x3, _x4) {
25
+ return _ref2.apply(this, arguments);
26
+ };
27
+ })();
28
+
29
+ let clickBaseLayer = exports.clickBaseLayer = (() => {
30
+ var _ref3 = _asyncToGenerator(function* (page, layer, wait = 1000) {
31
+ const baseLayersCategoryId = getSystemLayerCategoryId('BASE_LAYERS');
32
+ const isCatalogOpened = yield core.isRightPaneVisible(page);
33
+ if (!isCatalogOpened) yield core.clickRightOpener(page);
34
+ const isCategoryOpened = yield isLayerCategoryOpened(page, baseLayersCategoryId);
35
+ if (!isCategoryOpened) yield clickLayerCategory(page, baseLayersCategoryId);
36
+ const selector = '#' + getSystemLayerId(layer);
37
+ yield core.click(page, selector);
38
+ if (!isCategoryOpened) yield clickLayerCategory(page, baseLayersCategoryId);
39
+ if (!isCatalogOpened) yield core.clickRightOpener(page);
40
+ yield core.waitForImagesLoaded(page);
41
+ yield page.waitForTimeout(wait);
42
+ });
43
+
44
+ return function clickBaseLayer(_x5, _x6) {
45
+ return _ref3.apply(this, arguments);
46
+ };
47
+ })();
48
+
49
+ let clickLayer = exports.clickLayer = (() => {
50
+ var _ref4 = _asyncToGenerator(function* (page, layer, category = null, wait = 1000) {
51
+ const isCatalogOpened = yield core.isRightPaneVisible(page);
52
+ if (!isCatalogOpened) yield core.clickRightOpener(page);
53
+ let isCategoryOpened;
54
+ if (category) {
55
+ isCategoryOpened = yield isLayerCategoryOpened(page, category);
56
+ if (!isCategoryOpened) yield clickLayerCategory(page, category);
57
+ }
58
+ yield core.click(page, `#${layer} .q-toggle`);
59
+ if (category) {
60
+ if (!isCategoryOpened) yield clickLayerCategory(page, category);
61
+ }
62
+ if (!isCatalogOpened) yield core.clickRightOpener(page);
63
+ yield core.waitForImagesLoaded(page);
64
+ yield page.waitForTimeout(wait);
65
+ });
66
+
67
+ return function clickLayer(_x7, _x8) {
68
+ return _ref4.apply(this, arguments);
69
+ };
70
+ })();
71
+
72
+ let removeLayer = exports.removeLayer = (() => {
73
+ var _ref5 = _asyncToGenerator(function* (page, layer, category = null, wait = 1000) {
74
+ const isCatalogOpened = yield core.isRightPaneVisible(page);
75
+ if (!isCatalogOpened) yield core.clickRightOpener(page);
76
+ let isCategoryOpened;
77
+ if (category) {
78
+ isCategoryOpened = yield isLayerCategoryOpened(page, category);
79
+ if (!isCategoryOpened) yield clickLayerCategory(page, category);
80
+ }
81
+ yield core.click(page, `#${layer} .q-btn`);
82
+ yield core.clickAction(page, 'remove');
83
+ yield core.click(page, '.q-dialog button:nth-child(2)', wait);
84
+ });
85
+
86
+ return function removeLayer(_x9, _x10) {
87
+ return _ref5.apply(this, arguments);
88
+ };
89
+ })();
90
+
91
+ let dropFile = exports.dropFile = (() => {
92
+ var _ref6 = _asyncToGenerator(function* (page, filePath, wait = 2000) {
93
+ const loaderSelector = '.leaflet-control-filelayer input[type="file"]';
94
+ const loader = yield page.$(loaderSelector);
95
+ yield loader.uploadFile(filePath);
96
+ yield page.waitForTimeout(wait);
97
+ });
98
+
99
+ return function dropFile(_x11, _x12) {
100
+ return _ref6.apply(this, arguments);
101
+ };
102
+ })();
103
+
104
+ let addLayer = exports.addLayer = (() => {
105
+ var _ref7 = _asyncToGenerator(function* (page) {
106
+ yield core.clickFab(page);
107
+ yield core.clickAction(page, 'add-layer');
108
+ yield page.waitForTimeout(1000);
109
+ });
110
+
111
+ return function addLayer(_x13) {
112
+ return _ref7.apply(this, arguments);
113
+ };
114
+ })();
115
+
116
+ let importLayer = exports.importLayer = (() => {
117
+ var _ref8 = _asyncToGenerator(function* (page, filePath, featureId, wait = 2000) {
118
+ yield addLayer(page);
119
+ yield core.uploadFile(page, '#file-field', filePath);
120
+ yield core.click(page, '#featureId-field', 500);
121
+ yield core.click(page, `#${featureId}`, 500);
122
+ yield core.clickAction(page, 'import-layer-action');
123
+ yield core.waitForImagesLoaded(page);
124
+ yield page.waitForTimeout(wait);
125
+ });
126
+
127
+ return function importLayer(_x14, _x15, _x16) {
128
+ return _ref8.apply(this, arguments);
129
+ };
130
+ })();
131
+
132
+ let connectLayer = exports.connectLayer = (() => {
133
+ var _ref9 = _asyncToGenerator(function* (page, service, layerId, wait = 2000) {
134
+ yield addLayer(page);
135
+ yield core.clickAction(page, 'connect-layer');
136
+ yield core.type(page, '#service-field', service, true, false, 5000);
137
+ yield core.click(page, '#layer-field', 500);
138
+ yield core.click(page, `#${layerId}`, 500);
139
+ yield core.clickAction(page, 'connect-layer-action', 2000);
140
+ yield core.waitForImagesLoaded(page);
141
+ yield page.waitForTimeout(wait);
142
+ });
143
+
144
+ return function connectLayer(_x17, _x18, _x19) {
145
+ return _ref9.apply(this, arguments);
146
+ };
147
+ })();
148
+
149
+ let createLayer = exports.createLayer = (() => {
150
+ var _ref10 = _asyncToGenerator(function* (page, layerName, schemaPath, featureId, wait = 2000) {
151
+ yield addLayer(page);
152
+ yield core.clickAction(page, 'create-layer');
153
+ yield core.type(page, '#name-field', layerName);
154
+ yield core.type(page, '#description-field', `${layerName} description`);
155
+ yield core.uploadFile(page, '#schema-field', schemaPath);
156
+ yield page.click(page, '#featureId-field', 500);
157
+ yield core.click(page, `#${featureId}`);
158
+ yield core.clickAction(page, 'create-layer-action', 1000);
159
+ yield page.waitForTimeout(wait);
160
+ });
161
+
162
+ return function createLayer(_x20, _x21, _x22, _x23) {
163
+ return _ref10.apply(this, arguments);
164
+ };
165
+ })();
166
+
167
+ exports.getSystemLayerCategoryId = getSystemLayerCategoryId;
168
+ exports.getSystemLayerId = getSystemLayerId;
169
+
170
+ var _lodash = require('lodash');
171
+
172
+ var _lodash2 = _interopRequireDefault(_lodash);
173
+
174
+ var _core = require('../core');
175
+
176
+ var core = _interopRequireWildcard(_core);
177
+
178
+ 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; } }
179
+
180
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
181
+
182
+ 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"); }); }; }
183
+
184
+ function getSystemLayerCategoryId(category) {
185
+ return 'k-catalog-panel-' + _lodash2.default.kebabCase(category);
186
+ }
187
+
188
+ function getSystemLayerId(layer) {
189
+ return 'layers-' + _lodash2.default.kebabCase(layer);
190
+ }
191
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/map/catalog.js"],"names":["page","category","selector","core","isElementVisible","isLayerCategoryOpened","wait","clickRightPaneAction","clickLayerCategory","layer","baseLayersCategoryId","getSystemLayerCategoryId","isCatalogOpened","isRightPaneVisible","clickRightOpener","isCategoryOpened","getSystemLayerId","click","waitForImagesLoaded","waitForTimeout","clickBaseLayer","clickLayer","clickAction","removeLayer","filePath","loaderSelector","loader","$","uploadFile","dropFile","clickFab","addLayer","featureId","importLayer","service","layerId","type","connectLayer","layerName","schemaPath","createLayer","_","kebabCase"],"mappings":"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","file":"catalog.js","sourcesContent":["import _ from 'lodash'\r\nimport * as core from '../core'\r\n\r\nexport function getSystemLayerCategoryId (category) {\r\n return 'k-catalog-panel-' + _.kebabCase(category)\r\n}\r\n\r\nexport function getSystemLayerId (layer) {\r\n return 'layers-' + _.kebabCase(layer)\r\n}\r\n\r\nexport async function isLayerCategoryOpened (page, category) {\r\n const selector = `#${category} .q-expansion-item__content`\r\n return core.isElementVisible(page, selector)\r\n}\r\n\r\nexport async function clickLayerCategory (page, category, wait = 500) {\r\n await core.clickRightPaneAction(page, category, wait)\r\n}\r\n\r\nexport async function clickBaseLayer (page, layer, wait = 1000) {\r\n const baseLayersCategoryId = getSystemLayerCategoryId('BASE_LAYERS')\r\n const isCatalogOpened = await core.isRightPaneVisible(page)\r\n if (!isCatalogOpened) await core.clickRightOpener(page)\r\n const isCategoryOpened = await isLayerCategoryOpened(page, baseLayersCategoryId)\r\n if (!isCategoryOpened) await clickLayerCategory(page, baseLayersCategoryId)\r\n const selector = '#' + getSystemLayerId(layer)\r\n await core.click(page, selector)\r\n if (!isCategoryOpened) await clickLayerCategory(page, baseLayersCategoryId)\r\n if (!isCatalogOpened) await core.clickRightOpener(page)\r\n await core.waitForImagesLoaded(page)\r\n await page.waitForTimeout(wait)\r\n}\r\n\r\nexport async function clickLayer (page, layer, category = null, wait = 1000) {\r\n const isCatalogOpened = await core.isRightPaneVisible(page)\r\n if (!isCatalogOpened) await core.clickRightOpener(page)\r\n let isCategoryOpened\r\n if (category) {\r\n isCategoryOpened = await isLayerCategoryOpened(page, category)\r\n if (!isCategoryOpened) await clickLayerCategory(page, category)\r\n }\r\n await core.click(page, `#${layer} .q-toggle`)\r\n if (category) {\r\n if (!isCategoryOpened) await clickLayerCategory(page, category)\r\n }\r\n if (!isCatalogOpened) await core.clickRightOpener(page)\r\n await core.waitForImagesLoaded(page)\r\n await page.waitForTimeout(wait)\r\n}\r\n\r\nexport async function removeLayer (page, layer, category = null, wait = 1000) {\r\n const isCatalogOpened = await core.isRightPaneVisible(page)\r\n if (!isCatalogOpened) await core.clickRightOpener(page)\r\n let isCategoryOpened\r\n if (category) {\r\n isCategoryOpened = await isLayerCategoryOpened(page, category)\r\n if (!isCategoryOpened) await clickLayerCategory(page, category)\r\n }\r\n await core.click(page, `#${layer} .q-btn`)\r\n await core.clickAction(page, 'remove')\r\n await core.click(page, '.q-dialog button:nth-child(2)', wait)\r\n}\r\n\r\nexport async function dropFile (page, filePath, wait = 2000) {\r\n const loaderSelector = '.leaflet-control-filelayer input[type=\"file\"]'\r\n const loader = await page.$(loaderSelector)\r\n await loader.uploadFile(filePath)\r\n await page.waitForTimeout(wait)\r\n}\r\n\r\nexport async function addLayer (page) {\r\n await core.clickFab(page)\r\n await core.clickAction(page, 'add-layer')\r\n await page.waitForTimeout(1000)\r\n}\r\n\r\nexport async function importLayer (page, filePath, featureId, wait = 2000) {\r\n await addLayer(page)\r\n await core.uploadFile(page, '#file-field', filePath)\r\n await core.click(page, '#featureId-field', 500)\r\n await core.click(page, `#${featureId}`, 500)\r\n await core.clickAction(page, 'import-layer-action')\r\n await core.waitForImagesLoaded(page)\r\n await page.waitForTimeout(wait)\r\n}\r\n\r\nexport async function connectLayer (page, service, layerId, wait = 2000) {\r\n await addLayer(page)\r\n await core.clickAction(page, 'connect-layer')\r\n await core.type(page, '#service-field', service, true, false, 5000)\r\n await core.click(page, '#layer-field', 500)\r\n await core.click(page, `#${layerId}`, 500)\r\n await core.clickAction(page, 'connect-layer-action', 2000)\r\n await core.waitForImagesLoaded(page)\r\n await page.waitForTimeout(wait)\r\n}\r\n\r\nexport async function createLayer (page, layerName, schemaPath, featureId, wait = 2000) {\r\n await addLayer(page)\r\n await core.clickAction(page, 'create-layer')\r\n await core.type(page, '#name-field', layerName)\r\n await core.type(page, '#description-field', `${layerName} description`)\r\n await core.uploadFile(page, '#schema-field', schemaPath)\r\n await page.click(page, '#featureId-field', 500)\r\n await core.click(page, `#${featureId}`)\r\n await core.clickAction(page, 'create-layer-action', 1000)\r\n await page.waitForTimeout(wait)\r\n}\r\n"]}
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.zoomToPosition = exports.zoomToExtent = undefined;
7
+
8
+ let zoomToExtent = exports.zoomToExtent = (() => {
9
+ var _ref = _asyncToGenerator(function* (page, bbox) {
10
+ const currentUrl = page.url();
11
+ const regexp = /\/-?[0-9.]*\/-?[0-9.]*\/-?[0-9.]*\/-?[0-9.]*/;
12
+ let newUrl = _lodash2.default.replace(currentUrl, regexp, '');
13
+ newUrl += `/${bbox[0]}/${bbox[1]}/${bbox[2]}/${bbox[3]}`;
14
+ // see https://stackoverflow.com/questions/62343404/puppeteer-page-goto-not-working-for-query-parameters
15
+ // and from the documentation: https://pptr.dev/#?product=Puppeteer&version=v10.2.0&show=api-pagegotourl-options
16
+ // NOTE page.goto either throws an error or returns a main resource response. The only exceptions are navigation to
17
+ // about:blank or navigation to the same URL with a different hash, which would succeed and return null.
18
+ yield page.goto(newUrl);
19
+ yield page.goto(newUrl);
20
+ });
21
+
22
+ return function zoomToExtent(_x, _x2) {
23
+ return _ref.apply(this, arguments);
24
+ };
25
+ })();
26
+
27
+ let zoomToPosition = exports.zoomToPosition = (() => {
28
+ var _ref2 = _asyncToGenerator(function* (page, latitude, longitude) {
29
+ const currentLocation = yield core.getFromStore(page, 'geolocation.position');
30
+ page.setGeolocation({ latitude, longitude });
31
+ yield core.clickTopPaneAction(page, 'locate-user');
32
+ yield core.waitForImagesLoaded(page);
33
+ page.setGeolocation(currentLocation);
34
+ });
35
+
36
+ return function zoomToPosition(_x3, _x4, _x5) {
37
+ return _ref2.apply(this, arguments);
38
+ };
39
+ })();
40
+
41
+ var _lodash = require('lodash');
42
+
43
+ var _lodash2 = _interopRequireDefault(_lodash);
44
+
45
+ var _core = require('../core');
46
+
47
+ var core = _interopRequireWildcard(_core);
48
+
49
+ 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; } }
50
+
51
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
52
+
53
+ 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"); }); }; }
54
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/map/controls.js"],"names":["page","bbox","currentUrl","url","regexp","newUrl","_","replace","goto","zoomToExtent","latitude","longitude","currentLocation","core","getFromStore","setGeolocation","clickTopPaneAction","waitForImagesLoaded","zoomToPosition"],"mappings":";;;;;;;;+BAGO,WAA6BA,IAA7B,EAAmCC,IAAnC,EAAyC;AAC9C,UAAMC,aAAaF,KAAKG,GAAL,EAAnB;AACA,UAAMC,SAAS,8CAAf;AACA,QAAIC,SAASC,iBAAEC,OAAF,CAAUL,UAAV,EAAsBE,MAAtB,EAA8B,EAA9B,CAAb;AACAC,cAAW,IAAGJ,KAAK,CAAL,CAAQ,IAAGA,KAAK,CAAL,CAAQ,IAAGA,KAAK,CAAL,CAAQ,IAAGA,KAAK,CAAL,CAAQ,EAAvD;AACA;AACA;AACA;AACA;AACA,UAAMD,KAAKQ,IAAL,CAAUH,MAAV,CAAN;AACA,UAAML,KAAKQ,IAAL,CAAUH,MAAV,CAAN;AACD,G;;kBAXqBI,Y;;;;;;gCAaf,WAA+BT,IAA/B,EAAqCU,QAArC,EAA+CC,SAA/C,EAA0D;AAC/D,UAAMC,kBAAkB,MAAMC,KAAKC,YAAL,CAAkBd,IAAlB,EAAwB,sBAAxB,CAA9B;AACAA,SAAKe,cAAL,CAAoB,EAAEL,QAAF,EAAYC,SAAZ,EAApB;AACA,UAAME,KAAKG,kBAAL,CAAwBhB,IAAxB,EAA8B,aAA9B,CAAN;AACA,UAAMa,KAAKI,mBAAL,CAAyBjB,IAAzB,CAAN;AACAA,SAAKe,cAAL,CAAoBH,eAApB;AACD,G;;kBANqBM,c;;;;;AAhBtB;;;;AACA;;IAAYL,I","file":"controls.js","sourcesContent":["import _ from 'lodash'\r\nimport * as core from '../core'\r\n\r\nexport async function zoomToExtent (page, bbox) {\r\n const currentUrl = page.url()\r\n const regexp = /\\/-?[0-9.]*\\/-?[0-9.]*\\/-?[0-9.]*\\/-?[0-9.]*/\r\n let newUrl = _.replace(currentUrl, regexp, '')\r\n newUrl += `/${bbox[0]}/${bbox[1]}/${bbox[2]}/${bbox[3]}`\r\n // see https://stackoverflow.com/questions/62343404/puppeteer-page-goto-not-working-for-query-parameters\r\n // and from the documentation: https://pptr.dev/#?product=Puppeteer&version=v10.2.0&show=api-pagegotourl-options\r\n // NOTE page.goto either throws an error or returns a main resource response. The only exceptions are navigation to\r\n // about:blank or navigation to the same URL with a different hash, which would succeed and return null.\r\n await page.goto(newUrl)\r\n await page.goto(newUrl)\r\n}\r\n\r\nexport async function zoomToPosition (page, latitude, longitude) {\r\n const currentLocation = await core.getFromStore(page, 'geolocation.position')\r\n page.setGeolocation({ latitude, longitude })\r\n await core.clickTopPaneAction(page, 'locate-user')\r\n await core.waitForImagesLoaded(page)\r\n page.setGeolocation(currentLocation)\r\n}\r\n"]}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _catalog = require('./catalog');
8
+
9
+ Object.keys(_catalog).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ Object.defineProperty(exports, key, {
12
+ enumerable: true,
13
+ get: function () {
14
+ return _catalog[key];
15
+ }
16
+ });
17
+ });
18
+
19
+ var _controls = require('./controls');
20
+
21
+ Object.keys(_controls).forEach(function (key) {
22
+ if (key === "default" || key === "__esModule") return;
23
+ Object.defineProperty(exports, key, {
24
+ enumerable: true,
25
+ get: function () {
26
+ return _controls[key];
27
+ }
28
+ });
29
+ });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../test/client/map/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 './catalog'\r\nexport * from './controls'\r\n"]}