@kalisio/kdk 1.3.6 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/{0d403586-0c7c-4336-94d1-a49e9f02a905.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
- package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
- package/.nyc_output/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/{21dd57bd-48c5-41c8-8800-252db32a9366.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
- package/.nyc_output/{3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
- package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
- package/.nyc_output/processinfo/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
- package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
- package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +167 -79
- package/README.md +1 -1
- package/coverage/core/api/application.js.html +436 -436
- package/coverage/core/api/authentication.js.html +119 -119
- package/coverage/core/api/db.js.html +201 -201
- package/coverage/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/core/api/hooks/hooks.authorisations.js.html +369 -378
- package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/core/api/hooks/hooks.query.js.html +234 -198
- package/coverage/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/core/api/hooks/hooks.users.js.html +304 -256
- package/coverage/core/api/hooks/index.html +172 -172
- package/coverage/core/api/hooks/index.js.html +24 -24
- package/coverage/core/api/index.html +75 -75
- package/coverage/core/api/index.js.html +26 -26
- package/coverage/core/api/marshall.js.html +57 -57
- package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/core/api/models/index.html +50 -50
- package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/core/api/oauth2-handler.js.html +18 -18
- package/coverage/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/core/api/services/account/account.service.js.html +108 -108
- package/coverage/core/api/services/account/index.html +32 -32
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -129
- package/coverage/core/api/services/authorisations/index.html +28 -28
- package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/core/api/services/databases/index.html +24 -24
- package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/core/api/services/devices/index.html +28 -28
- package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/core/api/services/groups/index.html +13 -13
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +137 -137
- package/coverage/core/api/services/mailer/index.html +24 -24
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/core/api/services/organisations/index.html +24 -24
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/core/api/services/pusher/index.html +34 -34
- package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/core/api/services/storage/index.html +21 -21
- package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/core/api/services/users/index.html +21 -21
- package/coverage/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +16 -16
- package/coverage/core/common/permissions.js.html +325 -265
- package/coverage/index.html +182 -182
- package/coverage/lcov-report/core/api/application.js.html +436 -436
- package/coverage/lcov-report/core/api/authentication.js.html +119 -119
- package/coverage/lcov-report/core/api/db.js.html +201 -201
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +369 -378
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +234 -198
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +304 -256
- package/coverage/lcov-report/core/api/hooks/index.html +172 -172
- package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
- package/coverage/lcov-report/core/api/index.html +75 -75
- package/coverage/lcov-report/core/api/index.js.html +26 -26
- package/coverage/lcov-report/core/api/marshall.js.html +57 -57
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/models/index.html +50 -50
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
- package/coverage/lcov-report/core/api/services/account/index.html +32 -32
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -129
- package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +137 -137
- package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/lcov-report/core/api/services/users/index.html +21 -21
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +16 -16
- package/coverage/lcov-report/core/common/permissions.js.html +325 -265
- package/coverage/lcov-report/index.html +182 -182
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +118 -37
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +2 -2
- package/coverage/lcov-report/map/api/services/features/index.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.js.html +1 -1
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +12 -12
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
- package/coverage/lcov.info +3742 -3949
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +118 -37
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +1 -1
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/map/api/services/catalog/index.html +1 -1
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +2 -2
- package/coverage/map/api/services/features/index.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/map/api/services/geocoder/index.html +1 -1
- package/coverage/map/api/services/index.html +1 -1
- package/coverage/map/api/services/index.js.html +1 -1
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +12 -12
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +8 -5
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +71 -11
- package/extras/icons/kanban.png +0 -0
- package/extras/tours/core/add-member.js +10 -1
- package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
- package/extras/tours/core/groups.js +8 -2
- package/extras/tours/core/members.js +11 -21
- package/extras/tours/core/tags.js +7 -1
- package/extras/tours/map/catalog-categories.js +4 -4
- package/extras/tours/map/catalog-panel.js +16 -16
- package/extras/tours/map/favorite-views.js +3 -3
- package/lib/core/api/hooks/hooks.authorisations.js +149 -140
- package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.organisations.js +1 -23
- package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.query.js +22 -0
- package/lib/core/api/hooks/hooks.query.js.map +1 -1
- package/lib/core/api/hooks/hooks.users.js +34 -18
- package/lib/core/api/hooks/hooks.users.js.map +1 -1
- package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
- package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
- package/lib/core/client/api.js +1 -0
- package/lib/core/client/api.js.map +1 -1
- package/lib/core/client/components/account/KAccountDZ.vue +3 -4
- package/lib/core/client/components/account/KAccountDevices.vue +5 -6
- package/lib/core/client/components/account/KDeviceCard.vue +2 -1
- package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
- package/lib/core/client/components/collection/KBoard.vue +26 -155
- package/lib/core/client/components/collection/KCard.vue +144 -42
- package/lib/core/client/components/collection/KCardSection.vue +52 -0
- package/lib/core/client/components/collection/KColumn.vue +181 -0
- package/lib/core/client/components/collection/KGrid.vue +13 -18
- package/lib/core/client/components/collection/KHistory.vue +61 -89
- package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
- package/lib/core/client/components/collection/KItem.vue +21 -2
- package/lib/core/client/components/collection/KList.vue +9 -12
- package/lib/core/client/components/collection/KTable.vue +33 -39
- package/lib/core/client/components/collection/index.js +6 -1
- package/lib/core/client/components/collection/index.js.map +1 -1
- package/lib/core/client/components/editor/KEditor.vue +0 -6
- package/lib/core/client/components/editor/KModalEditor.vue +4 -4
- package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
- package/lib/core/client/components/form/KAttachmentField.vue +10 -10
- package/lib/core/client/components/form/KChipsField.vue +28 -23
- package/lib/core/client/components/form/KColorField.vue +30 -25
- package/lib/core/client/components/form/KFileField.vue +11 -40
- package/lib/core/client/components/form/KForm.vue +0 -12
- package/lib/core/client/components/form/KIconField.vue +1 -0
- package/lib/core/client/components/form/KItemField.vue +6 -2
- package/lib/core/client/components/form/KRoleField.vue +56 -0
- package/lib/core/client/components/form/KSelectField.vue +16 -1
- package/lib/core/client/components/form/KView.vue +5 -14
- package/lib/core/client/components/frame/KAction.vue +18 -12
- package/lib/core/client/components/frame/KAvatar.vue +3 -3
- package/lib/core/client/components/frame/KChart.vue +60 -0
- package/lib/core/client/components/frame/KChipsPane.vue +80 -0
- package/lib/core/client/components/frame/KContent.vue +1 -1
- package/lib/core/client/components/frame/KModal.vue +30 -44
- package/lib/core/client/components/frame/KPanel.vue +1 -1
- package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
- package/lib/core/client/components/frame/KSpot.vue +31 -0
- package/lib/core/client/components/frame/KStamp.vue +62 -0
- package/lib/core/client/components/frame/index.js +56 -1
- package/lib/core/client/components/frame/index.js.map +1 -1
- package/lib/core/client/components/input/KColorChooser.vue +16 -8
- package/lib/core/client/components/input/KIconChooser.vue +2 -1
- package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
- package/lib/core/client/components/input/KUploader.vue +14 -5
- package/lib/core/client/components/layout/KAbout.vue +9 -3
- package/lib/core/client/components/layout/KFab.vue +1 -1
- package/lib/core/client/components/layout/KPage.vue +44 -19
- package/lib/core/client/components/layout/KTour.vue +2 -2
- package/lib/core/client/components/layout/KWelcome.vue +13 -12
- package/lib/core/client/components/layout/KWindow.vue +1 -1
- package/lib/core/client/components/media/KImageViewer.vue +9 -7
- package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
- package/lib/core/client/components/menu/KMenu.vue +103 -0
- package/lib/core/client/components/team/KAddMember.vue +17 -9
- package/lib/core/client/components/team/KChangeRole.vue +5 -7
- package/lib/core/client/components/team/KGroupCard.vue +34 -51
- package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
- package/lib/core/client/components/team/KJoinGroup.vue +5 -7
- package/lib/core/client/components/team/KMemberCard.vue +104 -63
- package/lib/core/client/components/team/KMembersActivity.vue +9 -2
- package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
- package/lib/core/client/components/team/KTagCard.vue +26 -26
- package/lib/core/client/components/team/KTagsActivity.vue +9 -2
- package/lib/core/client/components/time/KTimeRange.vue +144 -0
- package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
- package/lib/core/client/components/viewer/KViewer.vue +0 -6
- package/lib/core/client/i18n/core_en.json +138 -94
- package/lib/core/client/i18n/core_fr.json +61 -17
- package/lib/core/client/index.js +46 -14
- package/lib/core/client/index.js.map +1 -1
- package/lib/core/client/layout.js +8 -1
- package/lib/core/client/layout.js.map +1 -1
- package/lib/core/client/mixins/mixin.authorisation.js +28 -18
- package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-collection.js +57 -9
- package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-context.js +1 -1
- package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-editor.js +26 -16
- package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-field.js +0 -4
- package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-item.js +29 -14
- package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
- package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
- package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
- package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
- package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.service.js +5 -33
- package/lib/core/client/mixins/mixin.service.js.map +1 -1
- package/lib/core/client/reader.js +54 -0
- package/lib/core/client/reader.js.map +1 -0
- package/lib/core/client/readers/index.js +30 -0
- package/lib/core/client/readers/index.js.map +1 -0
- package/lib/core/client/readers/reader.csv.js +43 -0
- package/lib/core/client/readers/reader.csv.js.map +1 -0
- package/lib/core/client/readers/reader.json.js +38 -0
- package/lib/core/client/readers/reader.json.js.map +1 -0
- package/lib/core/client/services/index.js +23 -0
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/services/local-settings.service.js +4 -0
- package/lib/core/client/services/local-settings.service.js.map +1 -1
- package/lib/core/client/time.js +131 -0
- package/lib/core/client/time.js.map +1 -0
- package/lib/core/common/permissions.js +65 -23
- package/lib/core/common/permissions.js.map +1 -1
- package/lib/core/common/schemas/groups.create.json +1 -1
- package/lib/core/common/schemas/groups.update.json +1 -1
- package/lib/core/common/schemas/organisations.create.json +1 -1
- package/lib/core/common/schemas/organisations.update.json +2 -2
- package/lib/core/common/schemas/settings.update.json +139 -0
- package/lib/core/common/schemas/tags.update.json +9 -1
- package/lib/map/api/hooks/hooks.query.js +55 -29
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/api/services/features/features.hooks.js +1 -1
- package/lib/map/api/services/features/features.hooks.js.map +1 -1
- package/lib/map/client/components/KCaptureToolbar.vue +156 -0
- package/lib/map/client/components/KColorLegend.vue +25 -23
- package/lib/map/client/components/KFavoriteViews.vue +71 -35
- package/lib/map/client/components/KFeaturesChart.vue +11 -9
- package/lib/map/client/components/KFeaturesFilter.vue +18 -8
- package/lib/map/client/components/KFeaturesTable.vue +27 -2
- package/lib/map/client/components/KLayerEditionToolbar.vue +51 -0
- package/lib/map/client/components/KLayerStyleEditor.vue +12 -5
- package/lib/map/client/components/KLayerStyleForm.vue +44 -33
- package/lib/map/client/components/KLocationInput.vue +126 -65
- package/lib/map/client/components/KLocationMap.vue +199 -84
- package/lib/map/client/components/KMeasureTool.vue +340 -0
- package/lib/map/client/components/KPositionIndicator.vue +1 -0
- package/lib/map/client/components/KTimeline.vue +41 -37
- package/lib/map/client/components/KUrlLegend.vue +21 -19
- package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
- package/lib/map/client/components/catalog/KCatalog.vue +14 -2
- package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
- package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
- package/lib/map/client/components/catalog/KImportLayer.vue +33 -40
- package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
- package/lib/map/client/components/catalog/KLayersSelector.vue +44 -42
- package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
- package/lib/map/client/components/form/KLocationField.vue +1 -1
- package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
- package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
- package/lib/map/client/components/widget/KInformationBox.vue +10 -16
- package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
- package/lib/map/client/components/widget/KTimeSeries.vue +119 -31
- package/lib/map/client/i18n/map_en.json +105 -20
- package/lib/map/client/i18n/map_fr.json +107 -23
- package/lib/map/client/init.js +24 -7
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
- package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +73 -0
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
- package/lib/map/client/mixins/globe/mixin.base-globe.js +7 -6
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
- package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/index.js +8 -13
- package/lib/map/client/mixins/index.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +71 -8
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +276 -51
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
- package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +46 -93
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +22 -11
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
- package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.popup.js +4 -0
- package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +62 -68
- package/lib/map/client/mixins/mixin.activity.js.map +1 -1
- package/lib/map/client/mixins/mixin.context.js +26 -3
- package/lib/map/client/mixins/mixin.context.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
- package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-service.js +9 -7
- package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
- package/lib/map/client/mixins/mixin.infobox.js +4 -0
- package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
- package/lib/map/client/mixins/mixin.weacast.js +6 -4
- package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
- package/lib/map/client/pixi-utils.js +9 -0
- package/lib/map/client/pixi-utils.js.map +1 -1
- package/lib/map/client/readers/index.js +42 -0
- package/lib/map/client/readers/index.js.map +1 -0
- package/lib/map/client/readers/reader.geojson.js +59 -0
- package/lib/map/client/readers/reader.geojson.js.map +1 -0
- package/lib/map/client/readers/reader.gpx.js +41 -0
- package/lib/map/client/readers/reader.gpx.js.map +1 -0
- package/lib/map/client/readers/reader.kml.js +41 -0
- package/lib/map/client/readers/reader.kml.js.map +1 -0
- package/lib/map/client/utils.js +52 -1
- package/lib/map/client/utils.js.map +1 -1
- package/lib/map/common/wfs-utils.js +1 -1
- package/lib/map/common/wfs-utils.js.map +1 -1
- package/lib/map/common/wmts-utils.js +31 -7
- package/lib/map/common/wmts-utils.js.map +1 -1
- package/lib/test/client/core/account.js +100 -0
- package/lib/test/client/core/account.js.map +1 -0
- package/lib/test/client/core/api.js +400 -0
- package/lib/test/client/core/api.js.map +1 -0
- package/lib/test/client/core/collection.js +109 -0
- package/lib/test/client/core/collection.js.map +1 -0
- package/lib/test/client/core/index.js +90 -0
- package/lib/test/client/core/index.js.map +1 -0
- package/lib/test/client/core/layout.js +221 -0
- package/lib/test/client/core/layout.js.map +1 -0
- package/lib/test/client/core/runner.js +203 -0
- package/lib/test/client/core/runner.js.map +1 -0
- package/lib/test/client/core/screens.js +68 -0
- package/lib/test/client/core/screens.js.map +1 -0
- package/lib/test/client/core/utils.js +304 -0
- package/lib/test/client/core/utils.js.map +1 -0
- package/lib/test/client/index.js +20 -0
- package/lib/test/client/index.js.map +1 -0
- package/lib/test/client/map/catalog.js +192 -0
- package/lib/test/client/map/catalog.js.map +1 -0
- package/lib/test/client/map/controls.js +54 -0
- package/lib/test/client/map/controls.js.map +1 -0
- package/lib/test/client/map/index.js +30 -0
- package/lib/test/client/map/index.js.map +1 -0
- package/package.json +18 -9
- package/test.client.js +1 -0
- package/tests/core/test-log-2021-09-02.log +47 -0
- package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
- package/tests/map/test-log-2021-09-02.log +3 -0
- package/.nyc_output/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
- package/.nyc_output/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
- package/.nyc_output/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
- package/.nyc_output/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
- package/.nyc_output/processinfo/0d403586-0c7c-4336-94d1-a49e9f02a905.json +0 -1
- package/.nyc_output/processinfo/21dd57bd-48c5-41c8-8800-252db32a9366.json +0 -1
- package/.nyc_output/processinfo/3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json +0 -1
- package/.nyc_output/processinfo/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
- package/.nyc_output/processinfo/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
- package/.nyc_output/processinfo/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
- package/.nyc_output/processinfo/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
- package/extras/testcafe/Dockerfile +0 -48
- package/extras/testcafe/docker-entrypoint.sh +0 -27
- package/extras/testcafe/page-models/core/account.js +0 -75
- package/extras/testcafe/page-models/core/base-collection.js +0 -41
- package/extras/testcafe/page-models/core/base-page.js +0 -25
- package/extras/testcafe/page-models/core/groups.js +0 -36
- package/extras/testcafe/page-models/core/index.js +0 -140
- package/extras/testcafe/page-models/core/layout.js +0 -145
- package/extras/testcafe/page-models/core/members.js +0 -98
- package/extras/testcafe/page-models/core/organisations.js +0 -76
- package/extras/testcafe/page-models/core/screens.js +0 -99
- package/extras/testcafe/page-models/core/tags.js +0 -21
- package/extras/testcafe/page-models/map/add-layer.js +0 -51
- package/extras/testcafe/page-models/map/catalog.js +0 -132
- package/extras/testcafe/page-models/map/index.js +0 -36
- package/extras/testcafe/page-models/map/map-activity.js +0 -42
- package/extras/testcafe/page-models/map/timeline.js +0 -67
- package/lib/core/client/components/frame/KLabel.vue +0 -56
- package/lib/core/client/components/team/KTagsPane.vue +0 -35
- package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
- package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
- package/lib/map/client/mixins/mixin.time.js +0 -73
- package/lib/map/client/mixins/mixin.time.js.map +0 -1
- package/tests/core/account.test.js +0 -423
- package/tests/core/client.test.js.skip +0 -37
- package/tests/core/config/default.js +0 -96
- package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
- package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
- package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
- package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
- package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
- package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
- package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
- package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
- package/tests/core/data/10k_most_common_passwords.txt +0 -10000
- package/tests/core/data/logo.png +0 -0
- package/tests/core/hooks.test.js +0 -175
- package/tests/core/index.test.js +0 -432
- package/tests/core/notifications.test.js +0 -465
- package/tests/core/storage.test.js +0 -134
- package/tests/core/team.test.js +0 -610
- package/tests/core/utils.js +0 -62
- package/tests/map/alerts.test.js +0 -554
- package/tests/map/config/default.js +0 -112
- package/tests/map/config/layers.json +0 -37
- package/tests/map/daptiles.test.js +0 -41
- package/tests/map/data/DescribeCoverage.xml +0 -55
- package/tests/map/data/GetCoverage.tif +0 -0
- package/tests/map/data/adsb.observations.json +0 -132
- package/tests/map/data/dataset.grb.das +0 -55
- package/tests/map/data/dataset.grb.dds +0 -17
- package/tests/map/data/dataset.grb.dods +0 -0
- package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
- package/tests/map/data/subdataset.grb.dods +0 -0
- package/tests/map/data/vigicrues.observations.json +0 -47042
- package/tests/map/data/vigicrues.stations.json +0 -15422
- package/tests/map/data/zones.json +0 -1228
- package/tests/map/forecast-data/gfs-world/u-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
- package/tests/map/forecast-data/gfs-world/v-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
- package/tests/map/grid-sources.test.js +0 -304
- package/tests/map/hooks.test.js +0 -96
- package/tests/map/index.test.js +0 -333
|
@@ -4,121 +4,74 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
-
var _lodash = require('lodash');
|
|
8
|
-
|
|
9
|
-
var _lodash2 = _interopRequireDefault(_lodash);
|
|
10
|
-
|
|
11
|
-
var _leaflet = require('leaflet');
|
|
12
|
-
|
|
13
|
-
var _leaflet2 = _interopRequireDefault(_leaflet);
|
|
14
|
-
|
|
15
7
|
var _path = require('path');
|
|
16
8
|
|
|
17
9
|
var _path2 = _interopRequireDefault(_path);
|
|
18
10
|
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
var _loglevel2 = _interopRequireDefault(_loglevel);
|
|
22
|
-
|
|
23
|
-
var _togeojson = require('togeojson');
|
|
24
|
-
|
|
25
|
-
var _togeojson2 = _interopRequireDefault(_togeojson);
|
|
26
|
-
|
|
27
|
-
var _leafletFilelayer = require('leaflet-filelayer');
|
|
28
|
-
|
|
29
|
-
var _leafletFilelayer2 = _interopRequireDefault(_leafletFilelayer);
|
|
30
|
-
|
|
31
|
-
var _quasar = require('quasar');
|
|
32
|
-
|
|
33
|
-
var _utils = require('../../utils');
|
|
11
|
+
var _client = require('../../../../core/client');
|
|
34
12
|
|
|
35
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
14
|
|
|
37
15
|
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"); }); }; }
|
|
38
16
|
|
|
39
|
-
(0, _leafletFilelayer2.default)(null, _leaflet2.default, _togeojson2.default);
|
|
40
|
-
|
|
41
17
|
exports.default = {
|
|
18
|
+
methods: {
|
|
19
|
+
importFiles(files) {
|
|
20
|
+
var _this = this;
|
|
21
|
+
|
|
22
|
+
return _asyncToGenerator(function* () {
|
|
23
|
+
for (let i = 0; i < files.length; ++i) {
|
|
24
|
+
const file = files.item(i);
|
|
25
|
+
try {
|
|
26
|
+
const content = yield _client.Reader.read(file);
|
|
27
|
+
const name = _path2.default.basename(file.name, _path2.default.extname(file.name));
|
|
28
|
+
yield _this.addGeoJsonLayer({ name, description: file.name }, content);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
// nothing to do
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
})();
|
|
34
|
+
}
|
|
35
|
+
},
|
|
42
36
|
mounted() {
|
|
43
|
-
var
|
|
37
|
+
var _this2 = this;
|
|
44
38
|
|
|
45
39
|
this.$on('map-ready', () => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
40
|
+
// Create a dummy dropFileInput element to enable puppeteer
|
|
41
|
+
const container = document.getElementById('q-app');
|
|
42
|
+
const dropFileInput = document.createElement('input');
|
|
43
|
+
dropFileInput.setAttribute('id', 'dropFileInput');
|
|
44
|
+
dropFileInput.type = 'file';
|
|
45
|
+
dropFileInput.style.display = 'none';
|
|
46
|
+
dropFileInput.addEventListener('change', (() => {
|
|
47
|
+
var _ref = _asyncToGenerator(function* (event) {
|
|
48
|
+
yield _this2.importFiles(event.target.files);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return function (_x) {
|
|
52
|
+
return _ref.apply(this, arguments);
|
|
53
|
+
};
|
|
54
|
+
})());
|
|
55
|
+
container.appendChild(dropFileInput);
|
|
56
|
+
// Setup drag & drop
|
|
62
57
|
this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false);
|
|
63
58
|
this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false);
|
|
64
59
|
this.map._container.addEventListener('dragover', event => {
|
|
65
60
|
event.stopPropagation();
|
|
66
61
|
event.preventDefault();
|
|
67
62
|
}, false);
|
|
68
|
-
this.map._container.addEventListener('drop',
|
|
69
|
-
event
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}, false);
|
|
75
|
-
|
|
76
|
-
this.loader.on('data:loaded', (() => {
|
|
77
|
-
var _ref = _asyncToGenerator(function* (event) {
|
|
78
|
-
const name = event.filename ? _path2.default.basename(event.filename, _path2.default.extname(event.filename)) : _this.$t('mixins.fileLayers.IMPORTED_DATA_NAME');
|
|
79
|
-
const engine = {
|
|
80
|
-
type: 'geoJson',
|
|
81
|
-
isVisible: true,
|
|
82
|
-
realtime: true
|
|
83
|
-
};
|
|
84
|
-
const layer = {
|
|
85
|
-
name,
|
|
86
|
-
type: 'OverlayLayer',
|
|
87
|
-
icon: 'insert_drive_file',
|
|
88
|
-
scope: 'user',
|
|
89
|
-
featureId: '_id',
|
|
90
|
-
leaflet: engine,
|
|
91
|
-
// Avoid sharing reference to the same object although options are similar
|
|
92
|
-
// otherwise updating one will automatically update the other one
|
|
93
|
-
cesium: Object.assign({}, engine)
|
|
94
|
-
};
|
|
95
|
-
const geoJson = event.layer.toGeoJSON();
|
|
96
|
-
// Generate schema for properties
|
|
97
|
-
const schema = (0, _utils.generatePropertiesSchema)(geoJson, name);
|
|
98
|
-
_lodash2.default.set(layer, 'schema', { name, content: schema });
|
|
99
|
-
// Generate temporary IDs for features
|
|
100
|
-
const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson];
|
|
101
|
-
features.forEach(function (feature) {
|
|
102
|
-
feature._id = (0, _quasar.uid)().toString();
|
|
103
|
-
});
|
|
104
|
-
// Create an empty layer used as a container
|
|
105
|
-
yield _this.addLayer(layer);
|
|
106
|
-
// Set data
|
|
107
|
-
yield _this.updateLayer(name, geoJson);
|
|
108
|
-
// Zoom to it
|
|
109
|
-
_this.zoomToLayer(name);
|
|
63
|
+
this.map._container.addEventListener('drop', (() => {
|
|
64
|
+
var _ref2 = _asyncToGenerator(function* (event) {
|
|
65
|
+
event.stopPropagation();
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
yield _this2.importFiles(event.dataTransfer.files);
|
|
68
|
+
_this2.map.scrollWheelZoom.enable();
|
|
110
69
|
});
|
|
111
70
|
|
|
112
|
-
return function (
|
|
113
|
-
return
|
|
71
|
+
return function (_x2) {
|
|
72
|
+
return _ref2.apply(this, arguments);
|
|
114
73
|
};
|
|
115
|
-
})());
|
|
116
|
-
this.loader.on('data:error', event => {
|
|
117
|
-
_loglevel2.default.error(event.error);
|
|
118
|
-
this.$events.$emit('error', {
|
|
119
|
-
message: this.$t('errors.FILE_IMPORT_ERROR')
|
|
120
|
-
});
|
|
121
|
-
});
|
|
74
|
+
})(), false);
|
|
122
75
|
});
|
|
123
76
|
}
|
|
124
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.file-layers.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.file-layers.js"],"names":["methods","importFiles","files","i","length","file","item","content","Reader","read","name","path","basename","extname","addGeoJsonLayer","description","error","mounted","$on","container","document","getElementById","dropFileInput","createElement","setAttribute","type","style","display","addEventListener","event","target","appendChild","map","_container","scrollWheelZoom","disable","enable","stopPropagation","preventDefault","dataTransfer"],"mappings":";;;;;;AAAA;;;;AACA;;;;;;kBAEe;AACbA,WAAS;AACDC,eAAN,CAAmBC,KAAnB,EAA0B;AAAA;;AAAA;AACxB,aAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAID,MAAME,MAA1B,EAAkC,EAAED,CAApC,EAAuC;AACrC,gBAAME,OAAOH,MAAMI,IAAN,CAAWH,CAAX,CAAb;AACA,cAAI;AACF,kBAAMI,UAAU,MAAMC,eAAOC,IAAP,CAAYJ,IAAZ,CAAtB;AACA,kBAAMK,OAAOC,eAAKC,QAAL,CAAcP,KAAKK,IAAnB,EAAyBC,eAAKE,OAAL,CAAaR,KAAKK,IAAlB,CAAzB,CAAb;AACA,kBAAM,MAAKI,eAAL,CAAqB,EAAEJ,IAAF,EAAQK,aAAaV,KAAKK,IAA1B,EAArB,EAAuDH,OAAvD,CAAN;AACD,WAJD,CAIE,OAAOS,KAAP,EAAc;AACd;AACD;AACF;AAVuB;AAWzB;AAZM,GADI;AAebC,YAAW;AAAA;;AACT,SAAKC,GAAL,CAAS,WAAT,EAAsB,MAAM;AAC1B;AACA,YAAMC,YAAYC,SAASC,cAAT,CAAwB,OAAxB,CAAlB;AACA,YAAMC,gBAAgBF,SAASG,aAAT,CAAuB,OAAvB,CAAtB;AACAD,oBAAcE,YAAd,CAA2B,IAA3B,EAAiC,eAAjC;AACAF,oBAAcG,IAAd,GAAqB,MAArB;AACAH,oBAAcI,KAAd,CAAoBC,OAApB,GAA8B,MAA9B;AACAL,oBAAcM,gBAAd,CAA+B,QAA/B;AAAA,qCAAyC,WAAOC,KAAP,EAAiB;AACxD,gBAAM,OAAK5B,WAAL,CAAiB4B,MAAMC,MAAN,CAAa5B,KAA9B,CAAN;AACD,SAFD;;AAAA;AAAA;AAAA;AAAA;AAGAiB,gBAAUY,WAAV,CAAsBT,aAAtB;AACA;AACA,WAAKU,GAAL,CAASC,UAAT,CAAoBL,gBAApB,CAAqC,WAArC,EAAkD,MAAM,KAAKI,GAAL,CAASE,eAAT,CAAyBC,OAAzB,EAAxD,EAA4F,KAA5F;AACA,WAAKH,GAAL,CAASC,UAAT,CAAoBL,gBAApB,CAAqC,WAArC,EAAkD,MAAM,KAAKI,GAAL,CAASE,eAAT,CAAyBE,MAAzB,EAAxD,EAA2F,KAA3F;AACA,WAAKJ,GAAL,CAASC,UAAT,CAAoBL,gBAApB,CAAqC,UAArC,EAAiDC,SAAS;AACxDA,cAAMQ,eAAN;AACAR,cAAMS,cAAN;AACD,OAHD,EAGG,KAHH;AAIA,WAAKN,GAAL,CAASC,UAAT,CAAoBL,gBAApB,CAAqC,MAArC;AAAA,sCAA6C,WAAOC,KAAP,EAAiB;AAC5DA,gBAAMQ,eAAN;AACAR,gBAAMS,cAAN;AACA,gBAAM,OAAKrC,WAAL,CAAiB4B,MAAMU,YAAN,CAAmBrC,KAApC,CAAN;AACA,iBAAK8B,GAAL,CAASE,eAAT,CAAyBE,MAAzB;AACD,SALD;;AAAA;AAAA;AAAA;AAAA,YAKG,KALH;AAMD,KAxBD;AAyBD;AAzCY,C","file":"mixin.file-layers.js","sourcesContent":["import path from 'path'\r\nimport { Reader } from '../../../../core/client'\r\n\r\nexport default {\r\n methods: {\r\n async importFiles (files) {\r\n for (let i = 0; i < files.length; ++i) {\r\n const file = files.item(i)\r\n try {\r\n const content = await Reader.read(file)\r\n const name = path.basename(file.name, path.extname(file.name))\r\n await this.addGeoJsonLayer({ name, description: file.name }, content)\r\n } catch (error) {\r\n // nothing to do\r\n }\r\n }\r\n }\r\n },\r\n mounted () {\r\n this.$on('map-ready', () => {\r\n // Create a dummy dropFileInput element to enable puppeteer\r\n const container = document.getElementById('q-app')\r\n const dropFileInput = document.createElement('input')\r\n dropFileInput.setAttribute('id', 'dropFileInput')\r\n dropFileInput.type = 'file'\r\n dropFileInput.style.display = 'none'\r\n dropFileInput.addEventListener('change', async (event) => {\r\n await this.importFiles(event.target.files)\r\n })\r\n container.appendChild(dropFileInput)\r\n // Setup drag & drop\r\n this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false)\r\n this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false)\r\n this.map._container.addEventListener('dragover', event => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n }, false)\r\n this.map._container.addEventListener('drop', async (event) => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n await this.importFiles(event.dataTransfer.files)\r\n this.map.scrollWheelZoom.enable()\r\n }, false)\r\n })\r\n }\r\n}\r\n"]}
|
|
@@ -12,10 +12,6 @@ var _lodash = require('lodash');
|
|
|
12
12
|
|
|
13
13
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
14
14
|
|
|
15
|
-
var _moment = require('moment');
|
|
16
|
-
|
|
17
|
-
var _moment2 = _interopRequireDefault(_moment);
|
|
18
|
-
|
|
19
15
|
var _sift = require('sift');
|
|
20
16
|
|
|
21
17
|
var _sift2 = _interopRequireDefault(_sift);
|
|
@@ -26,8 +22,12 @@ var _loglevel2 = _interopRequireDefault(_loglevel);
|
|
|
26
22
|
|
|
27
23
|
require('leaflet-realtime');
|
|
28
24
|
|
|
25
|
+
var _time = require('../../../../core/client/time');
|
|
26
|
+
|
|
29
27
|
var _GradientPath = require('../../leaflet/GradientPath');
|
|
30
28
|
|
|
29
|
+
var _MaskLayer = require('../../leaflet/MaskLayer');
|
|
30
|
+
|
|
31
31
|
var _TiledFeatureLayer = require('../../leaflet/TiledFeatureLayer');
|
|
32
32
|
|
|
33
33
|
var _utils = require('../../utils');
|
|
@@ -61,6 +61,11 @@ _leaflet2.default.GeoJSON.geometryToLayer = function (geojson, options) {
|
|
|
61
61
|
return new _GradientPath.GradientPath(geojson, options.style(geojson));
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
if (geometry && properties && properties.mask) {
|
|
65
|
+
if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {
|
|
66
|
+
return new _MaskLayer.MaskLayer(geojson, options.style(geojson));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
64
69
|
return geometryToLayer(geojson, options);
|
|
65
70
|
};
|
|
66
71
|
|
|
@@ -85,7 +90,7 @@ exports.default = {
|
|
|
85
90
|
leafletOptions.updateFeature = function (feature, oldLayer) {
|
|
86
91
|
// A new feature is coming, create it
|
|
87
92
|
if (!oldLayer) return;
|
|
88
|
-
// An existing one is found, simply update styling, etc.
|
|
93
|
+
// An existing one is found, simply update styling, properties, etc.
|
|
89
94
|
leafletOptions.onEachFeature(feature, oldLayer);
|
|
90
95
|
if (oldLayer.setStyle) {
|
|
91
96
|
// Some vector layers can be used for points, eg circleMarker,
|
|
@@ -98,6 +103,9 @@ exports.default = {
|
|
|
98
103
|
oldLayer.setStyle(leafletOptions.style(feature));
|
|
99
104
|
}
|
|
100
105
|
}
|
|
106
|
+
const oldProperties = _lodash2.default.get(oldLayer, 'feature.properties');
|
|
107
|
+
const properties = _lodash2.default.get(feature, 'properties');
|
|
108
|
+
if (oldProperties && properties) Object.assign(properties, oldProperties);
|
|
101
109
|
if (oldLayer.setIcon) {
|
|
102
110
|
// FIXME: updating icon in place requires to recreate it anyway, so for now we recreate the whole marker
|
|
103
111
|
// oldLayer.setIcon(_.get(leafletOptions.pointToLayer(feature, oldLayer.getLatLng()), 'options.icon'))
|
|
@@ -106,7 +114,10 @@ exports.default = {
|
|
|
106
114
|
// And coordinates if not static
|
|
107
115
|
const staticGeometry = _lodash2.default.get(leafletOptions, 'staticGeometry', false);
|
|
108
116
|
if (staticGeometry) return oldLayer;
|
|
109
|
-
|
|
117
|
+
// The feature is changing its geometry type, recreate it
|
|
118
|
+
const oldType = _lodash2.default.get(oldLayer, 'feature.geometry.type');
|
|
119
|
+
const type = _lodash2.default.get(feature, 'geometry.type');
|
|
120
|
+
if (type !== oldType) return;
|
|
110
121
|
const coordinates = feature.geometry.coordinates;
|
|
111
122
|
// FIXME: support others geometry types ?
|
|
112
123
|
switch (type) {
|
|
@@ -162,7 +173,7 @@ exports.default = {
|
|
|
162
173
|
try {
|
|
163
174
|
// Update only the first time or when required according to data update interval
|
|
164
175
|
if (!lastUpdateTime || !_this.shouldSkipFeaturesUpdate(lastUpdateTime, options)) {
|
|
165
|
-
lastUpdateTime =
|
|
176
|
+
lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
166
177
|
successCallback((yield _this.getFeatures(options)));
|
|
167
178
|
}
|
|
168
179
|
} catch (error) {
|
|
@@ -193,7 +204,7 @@ exports.default = {
|
|
|
193
204
|
const searchParams = Object.assign({
|
|
194
205
|
OUTPUTFORMAT: options.wfs.outputFormat, // request as geojson
|
|
195
206
|
SRSNAME: 'EPSG:4326', // result in 4326
|
|
196
|
-
BBOX: `${query.south},${query.west},${query.north},${query.east},EPSG
|
|
207
|
+
BBOX: `${query.south},${query.west},${query.north},${query.east},urn:ogc:def:crs:EPSG::4326` // request bbox
|
|
197
208
|
}, options.wfs.searchParams);
|
|
198
209
|
return wfs.GetFeature(options.wfs.url, options.wfs.version, options.wfs.layer, searchParams, { xml2json: false });
|
|
199
210
|
};
|
|
@@ -205,7 +216,7 @@ exports.default = {
|
|
|
205
216
|
_lodash2.default.set(leafletOptions, 'source', (() => {
|
|
206
217
|
var _ref4 = _asyncToGenerator(function* (successCallback, errorCallback) {
|
|
207
218
|
try {
|
|
208
|
-
const sourceToFetch = sourceCompiler({ time:
|
|
219
|
+
const sourceToFetch = sourceCompiler({ time: _time.Time.getCurrentTime() });
|
|
209
220
|
if (!lastFetchedSource || lastFetchedSource !== sourceToFetch) {
|
|
210
221
|
lastFetchedSource = sourceToFetch;
|
|
211
222
|
successCallback((yield (0, _utils.fetchGeoJson)(sourceToFetch)));
|
|
@@ -452,10 +463,10 @@ exports.default = {
|
|
|
452
463
|
},
|
|
453
464
|
created() {
|
|
454
465
|
this.registerLeafletConstructor(this.createLeafletGeoJsonLayer);
|
|
455
|
-
this.$on('current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
466
|
+
this.$events.$on('time-current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
456
467
|
},
|
|
457
468
|
beforeDestroy() {
|
|
458
|
-
this.$off('current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
469
|
+
this.$events.$off('time-current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
459
470
|
}
|
|
460
471
|
};
|
|
461
472
|
module.exports = exports['default'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.geojson-layers.js"],"names":["wfs","geometryToLayer","L","GeoJSON","geojson","options","geometry","properties","geodesic","type","Geodesic","coordsToLatLngs","coordinates","Object","assign","steps","style","layer","fill","createCircle","coordsToLatLng","radius","gradient","GradientPath","methods","processRealtimeGeoJsonLayerOptions","leafletOptions","leaflet","id","_","get","set","feature","container","createLeafletLayer","has","updateFeature","oldLayer","onEachFeature","setStyle","setIcon","staticGeometry","setLatLng","setData","setLatLngs","service","tiled","removeMissing","successCallback","errorCallback","featureSource","baseQuery","getFeatures","merge","probeService","initialized","lastUpdateTime","getProbeFeatures","error","shouldSkipFeaturesUpdate","currentTime","clone","moment","utc","query","searchParams","OUTPUTFORMAT","outputFormat","SRSNAME","BBOX","south","west","north","east","GetFeature","url","version","xml2json","sourceCompiler","template","lastFetchedSource","sourceToFetch","time","processGeoJsonLayerOptions","dataSource","isNil","features","data","processClusterLayerOptions","cluster","createLeafletGeoJsonLayer","activityOptions","engine","realtime","layerStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","geoJsonOptions","getGeoJsonOptions","keys","forEach","key","layerStyle","convertFromSimpleStyleSpec","tiledLayer","TiledFeatureLayer","setup","on","addTo","removeFrom","$emit","leafletLayer","once","toGeoJSON","values","_features","clearLayers","_onNewData","addLayer","geoJsonLayer","update","timeDimension","source","logger","geojsonOptions","LeafletEvents","Feature","onLeafletFeature","getPopup","unbindPopup","generateStyle","wasOpen","isPopupOpen","bindPopup","Popup","openPopup","getTooltip","unbindTooltip","isTooltipOpen","bindTooltip","Tooltip","openTooltip","pointToLayer","latlng","updateLayer","name","geoJson","remove","getLeafletLayerByName","getLayers","find","_container","filter","getLayer","getFeatureId","toGeoJson","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","$or","$exists","variables","isVisible","geoJsonlayer","redraw","created","registerLeafletConstructor","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport moment from 'moment'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport 'leaflet-realtime'\r\nimport { GradientPath } from '../../leaflet/GradientPath'\r\nimport { TiledFeatureLayer } from '../../leaflet/TiledFeatureLayer'\r\nimport { fetchGeoJson, LeafletEvents, bindLeafletEvents, unbindLeafletEvents } from '../../utils'\r\nimport * as wfs from '../../../common/wfs-utils'\r\n\r\n// Override default Leaflet GeoJson utility to manage some specific use cases\r\nconst geometryToLayer = L.GeoJSON.geometryToLayer\r\nL.GeoJSON.geometryToLayer = function (geojson, options) {\r\n const geometry = geojson.geometry\r\n const properties = geojson.properties\r\n if (geometry && properties && properties.geodesic) {\r\n if (geometry.type === 'LineString') {\r\n return new L.Geodesic([L.GeoJSON.coordsToLatLngs(geometry.coordinates, 0)],\r\n Object.assign({ steps: 100 }, options.style(geojson)))\r\n } else if (geometry.type === 'Point') {\r\n const layer = new L.Geodesic([], Object.assign({ fill: true, steps: 360 }, options.style(geojson)))\r\n layer.createCircle(L.GeoJSON.coordsToLatLng(geometry.coordinates), properties.radius)\r\n return layer\r\n }\r\n }\r\n if (geometry && properties && properties.gradient) {\r\n if (geometry.type === 'LineString') {\r\n return new GradientPath(geojson, options.style(geojson))\r\n }\r\n }\r\n return geometryToLayer(geojson, options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n processRealtimeGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Alter type as required by the plugin\r\n leafletOptions.type = 'realtime'\r\n // We first need to create an underlying container or setup Id function\r\n const id = _.get(options, 'featureId', _.get(leafletOptions, 'id', '_id'))\r\n if (id) _.set(leafletOptions, 'getFeatureId', (feature) => _.get(feature, 'properties.' + id, _.get(feature, id)))\r\n const container = _.get(leafletOptions, 'container')\r\n // If container given and not already instanciated, do it\r\n if (typeof container === 'string') {\r\n leafletOptions.container = this.createLeafletLayer({ type: container })\r\n }\r\n // Custom update function to ensure dynamic styling works as expected\r\n if (!_.has(leafletOptions, 'updateFeature')) {\r\n leafletOptions.updateFeature = function (feature, oldLayer) {\r\n // A new feature is coming, create it\r\n if (!oldLayer) return\r\n // An existing one is found, simply update styling, etc.\r\n leafletOptions.onEachFeature(feature, oldLayer)\r\n if (oldLayer.setStyle) {\r\n // Some vector layers can be used for points, eg circleMarker,\r\n // in this case we use marker styling instead of lines/polygons styling\r\n if (feature.geometry.type === 'Point') {\r\n // FIXME: updating style in place does not seem to work, so for now we recreate the whole marker\r\n // oldLayer.setStyle(leafletOptions.pointToLayer(feature))\r\n return\r\n } else {\r\n oldLayer.setStyle(leafletOptions.style(feature))\r\n }\r\n }\r\n if (oldLayer.setIcon) {\r\n // FIXME: updating icon in place requires to recreate it anyway, so for now we recreate the whole marker\r\n // oldLayer.setIcon(_.get(leafletOptions.pointToLayer(feature, oldLayer.getLatLng()), 'options.icon'))\r\n return\r\n }\r\n // And coordinates if not static\r\n const staticGeometry = _.get(leafletOptions, 'staticGeometry', false)\r\n if (staticGeometry) return oldLayer\r\n const type = feature.geometry.type\r\n const coordinates = feature.geometry.coordinates\r\n // FIXME: support others geometry types ?\r\n switch (type) {\r\n case 'Point':\r\n oldLayer.setLatLng(L.GeoJSON.coordsToLatLngs(coordinates))\r\n break\r\n case 'LineString':\r\n case 'MultiLineString':\r\n // Support Gradient Path\r\n if (typeof oldLayer.setData === 'function') oldLayer.setData(feature)\r\n else oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'LineString' ? 0 : 1))\r\n break\r\n case 'Polygon':\r\n case 'MultiPolygon':\r\n oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'Polygon' ? 1 : 2))\r\n break\r\n }\r\n return oldLayer\r\n }\r\n }\r\n // Check for feature service layers\r\n if (options.service) {\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n // Tell realtime plugin how to update/load data\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Fetching is managed by tiles but even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (baseQuery) => this.getFeatures(_.merge({ baseQuery }, options))\r\n } else {\r\n leafletOptions.removeMissing = !options.probeService\r\n let initialized = !options.probeService // If no probe reference, nothing to be initialized\r\n let lastUpdateTime\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n // If the probe location is given by another service use it on initialization\r\n if (!initialized) {\r\n try {\r\n // Use probes as reference\r\n successCallback(await this.getProbeFeatures(options))\r\n initialized = true\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n }\r\n try {\r\n // Update only the first time or when required according to data update interval\r\n if (!lastUpdateTime || !this.shouldSkipFeaturesUpdate(lastUpdateTime, options)) {\r\n lastUpdateTime = (this.currentTime ? this.currentTime.clone() : moment.utc())\r\n successCallback(await this.getFeatures(options))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n }\r\n } else if (options.wfs) {\r\n // Features are fetched from a WFS connection\r\n _.set(leafletOptions, 'start', false)\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (query) => {\r\n const searchParams = Object.assign({\r\n OUTPUTFORMAT: options.wfs.outputFormat, // request as geojson\r\n SRSNAME: 'EPSG:4326', // result in 4326\r\n BBOX: `${query.south},${query.west},${query.north},${query.east},EPSG:4326` // request bbox\r\n }, options.wfs.searchParams)\r\n return wfs.GetFeature(options.wfs.url, options.wfs.version, options.wfs.layer, searchParams, { xml2json: false })\r\n }\r\n } else {\r\n }\r\n } else if (_.has(leafletOptions, 'sourceTemplate')) {\r\n const sourceCompiler = _.template(_.get(leafletOptions, 'sourceTemplate'))\r\n let lastFetchedSource\r\n // Tell realtime plugin how to update/load data\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n try {\r\n const sourceToFetch = sourceCompiler({ time: this.currentTime || moment.utc() })\r\n if (!lastFetchedSource || (lastFetchedSource !== sourceToFetch)) {\r\n lastFetchedSource = sourceToFetch\r\n successCallback(await fetchGeoJson(sourceToFetch))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n } else if (!_.has(leafletOptions, 'source')) {\r\n _.set(leafletOptions, 'start', false)\r\n // Even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n }\r\n },\r\n async processGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n const dataSource = _.get(leafletOptions, 'source')\r\n if (_.isNil(dataSource)) {\r\n // Empty valid GeoJson\r\n _.set(leafletOptions, 'source', { type: 'FeatureCollection', features: [] })\r\n } else if (typeof dataSource === 'string') { // URL ? If so load data\r\n let data\r\n // Check for feature service layers\r\n if (options.service) {\r\n data = await this.getFeatures(options)\r\n } else { // Otherwise standard HTTP\r\n data = await fetchGeoJson(dataSource)\r\n }\r\n _.set(leafletOptions, 'source', data)\r\n }\r\n },\r\n processClusterLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n leafletOptions.container = this.createLeafletLayer(Object.assign({ type: 'markerClusterGroup' }, leafletOptions.cluster))\r\n },\r\n async createLeafletGeoJsonLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Check for valid type\r\n if (leafletOptions.type !== 'geoJson') return\r\n\r\n try {\r\n // If not explicitely disable use defaults for clustering\r\n if (!_.has(leafletOptions, 'cluster') && this.activityOptions.engine.cluster) {\r\n // Merge existing config or create a new one on layer\r\n if (leafletOptions.cluster) Object.assign(leafletOptions.cluster, this.activityOptions.engine.cluster)\r\n else leafletOptions.cluster = Object.assign({}, this.activityOptions.engine.cluster)\r\n }\r\n // Specific case of clustered layer where we first need to create an underlying group\r\n if (leafletOptions.cluster) {\r\n this.processClusterLayerOptions(options)\r\n }\r\n // Specific case of realtime layer\r\n if (leafletOptions.realtime) {\r\n this.processRealtimeGeoJsonLayerOptions(options)\r\n } else {\r\n await this.processGeoJsonLayerOptions(options)\r\n }\r\n // Optimize templating by creating compilers up-front\r\n const layerStyleTemplate = _.get(leafletOptions, 'template')\r\n if (layerStyleTemplate) {\r\n // We allow to template style properties according to feature, because it can be slow you have to specify a subset of properties\r\n leafletOptions.template = layerStyleTemplate.map(property => ({\r\n property, compiler: _.template(_.get(leafletOptions, property))\r\n }))\r\n }\r\n const popupTemplate = _.get(leafletOptions, 'popup.template')\r\n if (popupTemplate) {\r\n leafletOptions.popup.compiler = _.template(popupTemplate)\r\n }\r\n const tooltipTemplate = _.get(leafletOptions, 'tooltip.template')\r\n if (tooltipTemplate) {\r\n leafletOptions.tooltip.compiler = _.template(tooltipTemplate)\r\n }\r\n // Merge generic GeoJson options and layer options\r\n const geoJsonOptions = this.getGeoJsonOptions(options)\r\n Object.keys(geoJsonOptions).forEach(key => {\r\n // If layer provided do not override\r\n if (!_.has(leafletOptions, key)) _.set(leafletOptions, key, _.get(geoJsonOptions, key))\r\n })\r\n leafletOptions.layerStyle = this.convertFromSimpleStyleSpec(leafletOptions)\r\n let layer = this.createLeafletLayer(options)\r\n\r\n // Specific case of realtime layer where the underlying container also need to be added to map\r\n if (leafletOptions.realtime) {\r\n // Build associated tile layer and bind required events\r\n if (leafletOptions.tiled) {\r\n const tiledLayer = new TiledFeatureLayer(leafletOptions)\r\n tiledLayer.setup(this, options)\r\n layer.tiledLayer = tiledLayer\r\n layer.on('add', () => tiledLayer.addTo(this.map))\r\n layer.on('remove', () => tiledLayer.removeFrom(this.map))\r\n }\r\n // Bind event\r\n layer.on('update', (data) => this.$emit('layer-updated', Object.assign({ layer: options, leafletLayer: layer }, data)))\r\n if (leafletOptions.container) layer.once('add', () => leafletOptions.container.addTo(this.map))\r\n // Add FeatureGroup interface so that layer edition works as well\r\n layer.toGeoJSON = () => ({ type: 'FeatureCollection', features: _.values(layer._features) })\r\n layer.clearLayers = () => layer._onNewData(true, { type: 'FeatureCollection', features: [] })\r\n layer.addLayer = (geoJsonLayer) => layer._onNewData(true, geoJsonLayer.toGeoJSON())\r\n // We launch a first update to initialize data\r\n layer.update()\r\n } else {\r\n // Specific case of clustered layer where the group is added instead of the geojson layer\r\n if (leafletOptions.cluster && leafletOptions.container) {\r\n leafletOptions.container.addLayer(layer)\r\n layer = leafletOptions.container\r\n }\r\n }\r\n // Specific case of time dimension layer where we embed the underlying geojson layer\r\n if (leafletOptions.timeDimension) {\r\n layer = this.createLeafletLayer(Object.assign({ type: 'timeDimension.layer.geoJson', source: layer }, leafletOptions.timeDimension))\r\n }\r\n return layer\r\n } catch (error) {\r\n logger.error(error)\r\n return null\r\n }\r\n },\r\n getGeoJsonOptions (options = {}) {\r\n const geojsonOptions = {\r\n onEachFeature: (feature, layer) => {\r\n // Need to restone event listeners as context has changed\r\n unbindLeafletEvents(layer, LeafletEvents.Feature)\r\n // Check for custom onEachFeature function\r\n if (typeof this.onLeafletFeature === 'function') this.onLeafletFeature(feature, layer, options)\r\n // Then for tooltip/popup\r\n // First remove previous popup if any\r\n if (layer.getPopup()) layer.unbindPopup()\r\n const popup = this.generateStyle('popup', feature, layer, options)\r\n if (popup) {\r\n // Because we build a new popup we need to restore previous state\r\n const wasOpen = (layer.getPopup() && layer.isPopupOpen())\r\n layer.bindPopup(popup)\r\n bindLeafletEvents(layer.getPopup(), LeafletEvents.Popup, this, options)\r\n if (wasOpen) layer.openPopup()\r\n }\r\n // First remove previous tooltip if any\r\n if (layer.getTooltip()) layer.unbindTooltip()\r\n const tooltip = this.generateStyle('tooltip', feature, layer, options)\r\n if (tooltip) {\r\n // Because we build a new tooltip we need to restore previous state\r\n const wasOpen = (layer.getTooltip() && layer.isTooltipOpen())\r\n layer.bindTooltip(tooltip)\r\n bindLeafletEvents(layer.getTooltip(), LeafletEvents.Tooltip, this, options)\r\n if (wasOpen) layer.openTooltip()\r\n }\r\n bindLeafletEvents(layer, LeafletEvents.Feature, this, options)\r\n },\r\n style: (feature) => {\r\n return this.generateStyle('featureStyle', feature, options)\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n return this.generateStyle('markerStyle', feature, latlng, options)\r\n }\r\n }\r\n\r\n return geojsonOptions\r\n },\r\n updateLayer (name, geoJson, remove) {\r\n // Retrieve the layer\r\n let layer = this.getLeafletLayerByName(name)\r\n if (!layer) return // Cannot update invisible layer\r\n // Check if clustering on top of a realtime layer, in this case we have a top-level container\r\n let container\r\n if (typeof layer.getLayers === 'function') {\r\n container = layer\r\n layer = container.getLayers().find(layer => layer._container === container)\r\n }\r\n /* By default leaflet-realtime only performs add with manual update\r\n (see https://github.com/perliedman/leaflet-realtime/issues/136)\r\n but we'd like to perform similarly to automated updates\r\n */\r\n if (remove && (typeof layer.remove === 'function')) {\r\n let features = (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson])\r\n // Filter features to ensure some have not been already removed\r\n // FIXME: indeed it seems to causes a bug with clustering, see https://github.com/kalisio/kdk/issues/140\r\n features = features.filter(feature => layer.getLayer(layer.options.getFeatureId(feature)))\r\n layer.remove(features)\r\n } else if (typeof layer._onNewData === 'function') {\r\n layer._onNewData(layer.options.removeMissing, geoJson || this.toGeoJson(name))\r\n }\r\n },\r\n onCurrentTimeChangedGeoJsonLayers (time) {\r\n const geoJsonlayers = _.values(this.layers).filter(sift({\r\n 'leaflet.type': 'geoJson',\r\n 'leaflet.realtime': true,\r\n $or: [ // Supported by template URL or time-based features\r\n { 'leaflet.sourceTemplate': { $exists: true } },\r\n { service: { $exists: true }, variables: { $exists: true } }\r\n ],\r\n isVisible: true\r\n }))\r\n geoJsonlayers.forEach(async geoJsonlayer => {\r\n // Retrieve the layer\r\n const layer = this.getLeafletLayerByName(geoJsonlayer.name)\r\n // Then update\r\n if (layer.tiledLayer) layer.tiledLayer.redraw()\r\n else layer.update()\r\n })\r\n }\r\n },\r\n created () {\r\n this.registerLeafletConstructor(this.createLeafletGeoJsonLayer)\r\n this.$on('current-time-changed', this.onCurrentTimeChangedGeoJsonLayers)\r\n },\r\n beforeDestroy () {\r\n this.$off('current-time-changed', this.onCurrentTimeChangedHeatmapLayers)\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.geojson-layers.js"],"names":["wfs","geometryToLayer","L","GeoJSON","geojson","options","geometry","properties","geodesic","type","Geodesic","coordsToLatLngs","coordinates","Object","assign","steps","style","layer","fill","createCircle","coordsToLatLng","radius","gradient","GradientPath","mask","MaskLayer","methods","processRealtimeGeoJsonLayerOptions","leafletOptions","leaflet","id","_","get","set","feature","container","createLeafletLayer","has","updateFeature","oldLayer","onEachFeature","setStyle","oldProperties","setIcon","staticGeometry","oldType","setLatLng","setData","setLatLngs","service","tiled","removeMissing","successCallback","errorCallback","featureSource","baseQuery","getFeatures","merge","probeService","initialized","lastUpdateTime","getProbeFeatures","error","shouldSkipFeaturesUpdate","Time","getCurrentTime","clone","query","searchParams","OUTPUTFORMAT","outputFormat","SRSNAME","BBOX","south","west","north","east","GetFeature","url","version","xml2json","sourceCompiler","template","lastFetchedSource","sourceToFetch","time","processGeoJsonLayerOptions","dataSource","isNil","features","data","processClusterLayerOptions","cluster","createLeafletGeoJsonLayer","activityOptions","engine","realtime","layerStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","geoJsonOptions","getGeoJsonOptions","keys","forEach","key","layerStyle","convertFromSimpleStyleSpec","tiledLayer","TiledFeatureLayer","setup","on","addTo","removeFrom","$emit","leafletLayer","once","toGeoJSON","values","_features","clearLayers","_onNewData","addLayer","geoJsonLayer","update","timeDimension","source","logger","geojsonOptions","LeafletEvents","Feature","onLeafletFeature","getPopup","unbindPopup","generateStyle","wasOpen","isPopupOpen","bindPopup","Popup","openPopup","getTooltip","unbindTooltip","isTooltipOpen","bindTooltip","Tooltip","openTooltip","pointToLayer","latlng","updateLayer","name","geoJson","remove","getLeafletLayerByName","getLayers","find","_container","filter","getLayer","getFeatureId","toGeoJson","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","$or","$exists","variables","isVisible","geoJsonlayer","redraw","created","registerLeafletConstructor","$events","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport 'leaflet-realtime'\r\nimport { Time } from '../../../../core/client/time'\r\nimport { GradientPath } from '../../leaflet/GradientPath'\r\nimport { MaskLayer } from '../../leaflet/MaskLayer'\r\nimport { TiledFeatureLayer } from '../../leaflet/TiledFeatureLayer'\r\nimport { fetchGeoJson, LeafletEvents, bindLeafletEvents, unbindLeafletEvents } from '../../utils'\r\nimport * as wfs from '../../../common/wfs-utils'\r\n\r\n// Override default Leaflet GeoJson utility to manage some specific use cases\r\nconst geometryToLayer = L.GeoJSON.geometryToLayer\r\nL.GeoJSON.geometryToLayer = function (geojson, options) {\r\n const geometry = geojson.geometry\r\n const properties = geojson.properties\r\n if (geometry && properties && properties.geodesic) {\r\n if (geometry.type === 'LineString') {\r\n return new L.Geodesic([L.GeoJSON.coordsToLatLngs(geometry.coordinates, 0)],\r\n Object.assign({ steps: 100 }, options.style(geojson)))\r\n } else if (geometry.type === 'Point') {\r\n const layer = new L.Geodesic([], Object.assign({ fill: true, steps: 360 }, options.style(geojson)))\r\n layer.createCircle(L.GeoJSON.coordsToLatLng(geometry.coordinates), properties.radius)\r\n return layer\r\n }\r\n }\r\n if (geometry && properties && properties.gradient) {\r\n if (geometry.type === 'LineString') {\r\n return new GradientPath(geojson, options.style(geojson))\r\n }\r\n }\r\n if (geometry && properties && properties.mask) {\r\n if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\r\n return new MaskLayer(geojson, options.style(geojson))\r\n }\r\n }\r\n return geometryToLayer(geojson, options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n processRealtimeGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Alter type as required by the plugin\r\n leafletOptions.type = 'realtime'\r\n // We first need to create an underlying container or setup Id function\r\n const id = _.get(options, 'featureId', _.get(leafletOptions, 'id', '_id'))\r\n if (id) _.set(leafletOptions, 'getFeatureId', (feature) => _.get(feature, 'properties.' + id, _.get(feature, id)))\r\n const container = _.get(leafletOptions, 'container')\r\n // If container given and not already instanciated, do it\r\n if (typeof container === 'string') {\r\n leafletOptions.container = this.createLeafletLayer({ type: container })\r\n }\r\n // Custom update function to ensure dynamic styling works as expected\r\n if (!_.has(leafletOptions, 'updateFeature')) {\r\n leafletOptions.updateFeature = function (feature, oldLayer) {\r\n // A new feature is coming, create it\r\n if (!oldLayer) return\r\n // An existing one is found, simply update styling, properties, etc.\r\n leafletOptions.onEachFeature(feature, oldLayer)\r\n if (oldLayer.setStyle) {\r\n // Some vector layers can be used for points, eg circleMarker,\r\n // in this case we use marker styling instead of lines/polygons styling\r\n if (feature.geometry.type === 'Point') {\r\n // FIXME: updating style in place does not seem to work, so for now we recreate the whole marker\r\n // oldLayer.setStyle(leafletOptions.pointToLayer(feature))\r\n return\r\n } else {\r\n oldLayer.setStyle(leafletOptions.style(feature))\r\n }\r\n }\r\n const oldProperties = _.get(oldLayer, 'feature.properties')\r\n const properties = _.get(feature, 'properties')\r\n if (oldProperties && properties) Object.assign(properties, oldProperties)\r\n if (oldLayer.setIcon) {\r\n // FIXME: updating icon in place requires to recreate it anyway, so for now we recreate the whole marker\r\n // oldLayer.setIcon(_.get(leafletOptions.pointToLayer(feature, oldLayer.getLatLng()), 'options.icon'))\r\n return\r\n }\r\n // And coordinates if not static\r\n const staticGeometry = _.get(leafletOptions, 'staticGeometry', false)\r\n if (staticGeometry) return oldLayer\r\n // The feature is changing its geometry type, recreate it\r\n const oldType = _.get(oldLayer, 'feature.geometry.type')\r\n const type = _.get(feature, 'geometry.type')\r\n if (type !== oldType) return\r\n const coordinates = feature.geometry.coordinates\r\n // FIXME: support others geometry types ?\r\n switch (type) {\r\n case 'Point':\r\n oldLayer.setLatLng(L.GeoJSON.coordsToLatLngs(coordinates))\r\n break\r\n case 'LineString':\r\n case 'MultiLineString':\r\n // Support Gradient Path\r\n if (typeof oldLayer.setData === 'function') oldLayer.setData(feature)\r\n else oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'LineString' ? 0 : 1))\r\n break\r\n case 'Polygon':\r\n case 'MultiPolygon':\r\n oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'Polygon' ? 1 : 2))\r\n break\r\n }\r\n return oldLayer\r\n }\r\n }\r\n // Check for feature service layers\r\n if (options.service) {\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n // Tell realtime plugin how to update/load data\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Fetching is managed by tiles but even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (baseQuery) => this.getFeatures(_.merge({ baseQuery }, options))\r\n } else {\r\n leafletOptions.removeMissing = !options.probeService\r\n let initialized = !options.probeService // If no probe reference, nothing to be initialized\r\n let lastUpdateTime\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n // If the probe location is given by another service use it on initialization\r\n if (!initialized) {\r\n try {\r\n // Use probes as reference\r\n successCallback(await this.getProbeFeatures(options))\r\n initialized = true\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n }\r\n try {\r\n // Update only the first time or when required according to data update interval\r\n if (!lastUpdateTime || !this.shouldSkipFeaturesUpdate(lastUpdateTime, options)) {\r\n lastUpdateTime = Time.getCurrentTime().clone()\r\n successCallback(await this.getFeatures(options))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n }\r\n } else if (options.wfs) {\r\n // Features are fetched from a WFS connection\r\n _.set(leafletOptions, 'start', false)\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (query) => {\r\n const searchParams = Object.assign({\r\n OUTPUTFORMAT: options.wfs.outputFormat, // request as geojson\r\n SRSNAME: 'EPSG:4326', // result in 4326\r\n BBOX: `${query.south},${query.west},${query.north},${query.east},urn:ogc:def:crs:EPSG::4326` // request bbox\r\n }, options.wfs.searchParams)\r\n return wfs.GetFeature(options.wfs.url, options.wfs.version, options.wfs.layer, searchParams, { xml2json: false })\r\n }\r\n } else {\r\n }\r\n } else if (_.has(leafletOptions, 'sourceTemplate')) {\r\n const sourceCompiler = _.template(_.get(leafletOptions, 'sourceTemplate'))\r\n let lastFetchedSource\r\n // Tell realtime plugin how to update/load data\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n try {\r\n const sourceToFetch = sourceCompiler({ time: Time.getCurrentTime() })\r\n if (!lastFetchedSource || (lastFetchedSource !== sourceToFetch)) {\r\n lastFetchedSource = sourceToFetch\r\n successCallback(await fetchGeoJson(sourceToFetch))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n } else if (!_.has(leafletOptions, 'source')) {\r\n _.set(leafletOptions, 'start', false)\r\n // Even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n }\r\n },\r\n async processGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n const dataSource = _.get(leafletOptions, 'source')\r\n if (_.isNil(dataSource)) {\r\n // Empty valid GeoJson\r\n _.set(leafletOptions, 'source', { type: 'FeatureCollection', features: [] })\r\n } else if (typeof dataSource === 'string') { // URL ? If so load data\r\n let data\r\n // Check for feature service layers\r\n if (options.service) {\r\n data = await this.getFeatures(options)\r\n } else { // Otherwise standard HTTP\r\n data = await fetchGeoJson(dataSource)\r\n }\r\n _.set(leafletOptions, 'source', data)\r\n }\r\n },\r\n processClusterLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n leafletOptions.container = this.createLeafletLayer(Object.assign({ type: 'markerClusterGroup' }, leafletOptions.cluster))\r\n },\r\n async createLeafletGeoJsonLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Check for valid type\r\n if (leafletOptions.type !== 'geoJson') return\r\n\r\n try {\r\n // If not explicitely disable use defaults for clustering\r\n if (!_.has(leafletOptions, 'cluster') && this.activityOptions.engine.cluster) {\r\n // Merge existing config or create a new one on layer\r\n if (leafletOptions.cluster) Object.assign(leafletOptions.cluster, this.activityOptions.engine.cluster)\r\n else leafletOptions.cluster = Object.assign({}, this.activityOptions.engine.cluster)\r\n }\r\n // Specific case of clustered layer where we first need to create an underlying group\r\n if (leafletOptions.cluster) {\r\n this.processClusterLayerOptions(options)\r\n }\r\n // Specific case of realtime layer\r\n if (leafletOptions.realtime) {\r\n this.processRealtimeGeoJsonLayerOptions(options)\r\n } else {\r\n await this.processGeoJsonLayerOptions(options)\r\n }\r\n // Optimize templating by creating compilers up-front\r\n const layerStyleTemplate = _.get(leafletOptions, 'template')\r\n if (layerStyleTemplate) {\r\n // We allow to template style properties according to feature, because it can be slow you have to specify a subset of properties\r\n leafletOptions.template = layerStyleTemplate.map(property => ({\r\n property, compiler: _.template(_.get(leafletOptions, property))\r\n }))\r\n }\r\n const popupTemplate = _.get(leafletOptions, 'popup.template')\r\n if (popupTemplate) {\r\n leafletOptions.popup.compiler = _.template(popupTemplate)\r\n }\r\n const tooltipTemplate = _.get(leafletOptions, 'tooltip.template')\r\n if (tooltipTemplate) {\r\n leafletOptions.tooltip.compiler = _.template(tooltipTemplate)\r\n }\r\n // Merge generic GeoJson options and layer options\r\n const geoJsonOptions = this.getGeoJsonOptions(options)\r\n Object.keys(geoJsonOptions).forEach(key => {\r\n // If layer provided do not override\r\n if (!_.has(leafletOptions, key)) _.set(leafletOptions, key, _.get(geoJsonOptions, key))\r\n })\r\n leafletOptions.layerStyle = this.convertFromSimpleStyleSpec(leafletOptions)\r\n let layer = this.createLeafletLayer(options)\r\n\r\n // Specific case of realtime layer where the underlying container also need to be added to map\r\n if (leafletOptions.realtime) {\r\n // Build associated tile layer and bind required events\r\n if (leafletOptions.tiled) {\r\n const tiledLayer = new TiledFeatureLayer(leafletOptions)\r\n tiledLayer.setup(this, options)\r\n layer.tiledLayer = tiledLayer\r\n layer.on('add', () => tiledLayer.addTo(this.map))\r\n layer.on('remove', () => tiledLayer.removeFrom(this.map))\r\n }\r\n // Bind event\r\n layer.on('update', (data) => this.$emit('layer-updated', Object.assign({ layer: options, leafletLayer: layer }, data)))\r\n if (leafletOptions.container) layer.once('add', () => leafletOptions.container.addTo(this.map))\r\n // Add FeatureGroup interface so that layer edition works as well\r\n layer.toGeoJSON = () => ({ type: 'FeatureCollection', features: _.values(layer._features) })\r\n layer.clearLayers = () => layer._onNewData(true, { type: 'FeatureCollection', features: [] })\r\n layer.addLayer = (geoJsonLayer) => layer._onNewData(true, geoJsonLayer.toGeoJSON())\r\n // We launch a first update to initialize data\r\n layer.update()\r\n } else {\r\n // Specific case of clustered layer where the group is added instead of the geojson layer\r\n if (leafletOptions.cluster && leafletOptions.container) {\r\n leafletOptions.container.addLayer(layer)\r\n layer = leafletOptions.container\r\n }\r\n }\r\n // Specific case of time dimension layer where we embed the underlying geojson layer\r\n if (leafletOptions.timeDimension) {\r\n layer = this.createLeafletLayer(Object.assign({ type: 'timeDimension.layer.geoJson', source: layer }, leafletOptions.timeDimension))\r\n }\r\n return layer\r\n } catch (error) {\r\n logger.error(error)\r\n return null\r\n }\r\n },\r\n getGeoJsonOptions (options = {}) {\r\n const geojsonOptions = {\r\n onEachFeature: (feature, layer) => {\r\n // Need to restone event listeners as context has changed\r\n unbindLeafletEvents(layer, LeafletEvents.Feature)\r\n // Check for custom onEachFeature function\r\n if (typeof this.onLeafletFeature === 'function') this.onLeafletFeature(feature, layer, options)\r\n // Then for tooltip/popup\r\n // First remove previous popup if any\r\n if (layer.getPopup()) layer.unbindPopup()\r\n const popup = this.generateStyle('popup', feature, layer, options)\r\n if (popup) {\r\n // Because we build a new popup we need to restore previous state\r\n const wasOpen = (layer.getPopup() && layer.isPopupOpen())\r\n layer.bindPopup(popup)\r\n bindLeafletEvents(layer.getPopup(), LeafletEvents.Popup, this, options)\r\n if (wasOpen) layer.openPopup()\r\n }\r\n // First remove previous tooltip if any\r\n if (layer.getTooltip()) layer.unbindTooltip()\r\n const tooltip = this.generateStyle('tooltip', feature, layer, options)\r\n if (tooltip) {\r\n // Because we build a new tooltip we need to restore previous state\r\n const wasOpen = (layer.getTooltip() && layer.isTooltipOpen())\r\n layer.bindTooltip(tooltip)\r\n bindLeafletEvents(layer.getTooltip(), LeafletEvents.Tooltip, this, options)\r\n if (wasOpen) layer.openTooltip()\r\n }\r\n bindLeafletEvents(layer, LeafletEvents.Feature, this, options)\r\n },\r\n style: (feature) => {\r\n return this.generateStyle('featureStyle', feature, options)\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n return this.generateStyle('markerStyle', feature, latlng, options)\r\n }\r\n }\r\n\r\n return geojsonOptions\r\n },\r\n updateLayer (name, geoJson, remove) {\r\n // Retrieve the layer\r\n let layer = this.getLeafletLayerByName(name)\r\n if (!layer) return // Cannot update invisible layer\r\n // Check if clustering on top of a realtime layer, in this case we have a top-level container\r\n let container\r\n if (typeof layer.getLayers === 'function') {\r\n container = layer\r\n layer = container.getLayers().find(layer => layer._container === container)\r\n }\r\n /* By default leaflet-realtime only performs add with manual update\r\n (see https://github.com/perliedman/leaflet-realtime/issues/136)\r\n but we'd like to perform similarly to automated updates\r\n */\r\n if (remove && (typeof layer.remove === 'function')) {\r\n let features = (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson])\r\n // Filter features to ensure some have not been already removed\r\n // FIXME: indeed it seems to causes a bug with clustering, see https://github.com/kalisio/kdk/issues/140\r\n features = features.filter(feature => layer.getLayer(layer.options.getFeatureId(feature)))\r\n layer.remove(features)\r\n } else if (typeof layer._onNewData === 'function') {\r\n layer._onNewData(layer.options.removeMissing, geoJson || this.toGeoJson(name))\r\n }\r\n },\r\n onCurrentTimeChangedGeoJsonLayers (time) {\r\n const geoJsonlayers = _.values(this.layers).filter(sift({\r\n 'leaflet.type': 'geoJson',\r\n 'leaflet.realtime': true,\r\n $or: [ // Supported by template URL or time-based features\r\n { 'leaflet.sourceTemplate': { $exists: true } },\r\n { service: { $exists: true }, variables: { $exists: true } }\r\n ],\r\n isVisible: true\r\n }))\r\n geoJsonlayers.forEach(async geoJsonlayer => {\r\n // Retrieve the layer\r\n const layer = this.getLeafletLayerByName(geoJsonlayer.name)\r\n // Then update\r\n if (layer.tiledLayer) layer.tiledLayer.redraw()\r\n else layer.update()\r\n })\r\n }\r\n },\r\n created () {\r\n this.registerLeafletConstructor(this.createLeafletGeoJsonLayer)\r\n this.$events.$on('time-current-time-changed', this.onCurrentTimeChangedGeoJsonLayers)\r\n },\r\n beforeDestroy () {\r\n this.$events.$off('time-current-time-changed', this.onCurrentTimeChangedHeatmapLayers)\r\n }\r\n}\r\n"]}
|
|
@@ -16,18 +16,20 @@ var _georaster = require('georaster');
|
|
|
16
16
|
|
|
17
17
|
var _georaster2 = _interopRequireDefault(_georaster);
|
|
18
18
|
|
|
19
|
-
var _chromaJs = require('chroma-js');
|
|
20
|
-
|
|
21
|
-
var _chromaJs2 = _interopRequireDefault(_chromaJs);
|
|
22
|
-
|
|
23
19
|
var _moment = require('moment');
|
|
24
20
|
|
|
25
21
|
var _moment2 = _interopRequireDefault(_moment);
|
|
26
22
|
|
|
23
|
+
var _chromaJs = require('chroma-js');
|
|
24
|
+
|
|
25
|
+
var _chromaJs2 = _interopRequireDefault(_chromaJs);
|
|
26
|
+
|
|
27
27
|
var _weacastLeaflet = require('weacast-leaflet');
|
|
28
28
|
|
|
29
29
|
var _client = require('weacast-core/client');
|
|
30
30
|
|
|
31
|
+
var _utils = require('../../utils');
|
|
32
|
+
|
|
31
33
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
34
|
|
|
33
35
|
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"); }); }; }
|
|
@@ -57,6 +59,7 @@ const GeorasterLayer = _leaflet2.default.Layer.extend({
|
|
|
57
59
|
return;
|
|
58
60
|
}
|
|
59
61
|
// Setup the colormap
|
|
62
|
+
this.colorMap = (0, _utils.buildColorMap)(this);
|
|
60
63
|
const scale = this.scale ? this.scale : '';
|
|
61
64
|
if (this.classes) {
|
|
62
65
|
this.colorMap = _chromaJs2.default.scale(scale).classes(this.classes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.georaster-layers.js"],"names":["GeorasterLayer","L","Layer","extend","initialize","options","Object","assign","currentTime","utc","colorMap","gridRenderer","GridRenderer","gridOverlay","mesh","setOptions","onAdd","map","addLayer","onRemove","removeLayer","setRaster","raster","clearRaster","scale","classes","chroma","domain","grid","Grid","bounds","xmin","ymin","xmax","ymax","origin","size","width","height","resolution","pixelWidth","pixelHeight","data","values","band","matrix","setColorMap","setGrid","redraw","fire","loadRaster","url","response","fetch","ok","arrayBuffer","georaster","setCurrentTime","datetime","interval","timelag","timestamp","valueOf","nearestTime","Math","floor","format","methods","createLeafletGeorasterLayer","leafletOptions","leaflet","type","_","get","nodata","georasterLayer","created","registerLeafletConstructor"],"mappings":";;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;AAEA,MAAMA,iBAAiBC,kBAAEC,KAAF,CAAQC,MAAR,CAAe;;AAEpCC,aAAYC,OAAZ,EAAqB;AACnBC,WAAOC,MAAP,CAAc,IAAd,EAAoBF,OAApB;AACA,SAAKG,WAAL,GAAmB,wBAASC,GAAT,EAAnB;AACA,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKC,YAAL,GAAoB,IAAIC,4BAAJ,EAApB;AACA,SAAKC,WAAL,GAAmB,KAAKF,YAAL,CAAkBP,UAAlB,CAA6BE,OAAOC,MAAP,CAAcF,OAAd,EAAuB,EAAES,MAAM,IAAR,EAAvB,CAA7B,CAAnB;AACAb,sBAAEc,UAAF,CAAa,IAAb,EAAmBV,WAAW,EAA9B;AACD,GATmC;;AAWpCW,QAAOC,GAAP,EAAY;AACVA,QAAIC,QAAJ,CAAa,KAAKL,WAAlB;AACD,GAbmC;;AAepCM,WAAUF,GAAV,EAAe;AACbA,QAAIG,WAAJ,CAAgB,KAAKP,WAArB;AACD,GAjBmC;;AAmBpCQ,YAAWC,MAAX,EAAmB;AACjB,QAAI,CAACA,MAAL,EAAa;AACX,WAAKC,WAAL;AACA;AACD;AACD;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.georaster-layers.js"],"names":["GeorasterLayer","L","Layer","extend","initialize","options","Object","assign","currentTime","utc","colorMap","gridRenderer","GridRenderer","gridOverlay","mesh","setOptions","onAdd","map","addLayer","onRemove","removeLayer","setRaster","raster","clearRaster","scale","classes","chroma","domain","grid","Grid","bounds","xmin","ymin","xmax","ymax","origin","size","width","height","resolution","pixelWidth","pixelHeight","data","values","band","matrix","setColorMap","setGrid","redraw","fire","loadRaster","url","response","fetch","ok","arrayBuffer","georaster","setCurrentTime","datetime","interval","timelag","timestamp","valueOf","nearestTime","Math","floor","format","methods","createLeafletGeorasterLayer","leafletOptions","leaflet","type","_","get","nodata","georasterLayer","created","registerLeafletConstructor"],"mappings":"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","file":"mixin.georaster-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport L from 'leaflet'\r\nimport parseGeoraster from 'georaster'\r\nimport moment from 'moment'\r\nimport chroma from 'chroma-js'\r\nimport { GridRenderer } from 'weacast-leaflet'\r\nimport { Grid } from 'weacast-core/client'\r\nimport { buildColorMap } from '../../utils'\r\n\r\nconst GeorasterLayer = L.Layer.extend({\r\n\r\n initialize (options) {\r\n Object.assign(this, options)\r\n this.currentTime = moment().utc()\r\n this.colorMap = null\r\n this.gridRenderer = new GridRenderer()\r\n this.gridOverlay = this.gridRenderer.initialize(Object.assign(options, { mesh: true }))\r\n L.setOptions(this, options || {})\r\n },\r\n\r\n onAdd (map) {\r\n map.addLayer(this.gridOverlay)\r\n },\r\n\r\n onRemove (map) {\r\n map.removeLayer(this.gridOverlay)\r\n },\r\n\r\n setRaster (raster) {\r\n if (!raster) {\r\n this.clearRaster()\r\n return\r\n }\r\n // Setup the colormap\r\n this.colorMap = buildColorMap(this)\r\n const scale = this.scale ? this.scale : ''\r\n if (this.classes) {\r\n this.colorMap = chroma.scale(scale).classes(this.classes)\r\n } else if (this.domain) {\r\n this.colorMap = chroma.scale(scale).domain(this.domain)\r\n }\r\n\r\n // Setup the grid\r\n const grid = new Grid({\r\n bounds: [raster.xmin, raster.ymin, raster.xmax, raster.ymax],\r\n origin: [raster.xmin, raster.ymax],\r\n size: [raster.width, raster.height],\r\n resolution: [raster.pixelWidth, raster.pixelHeight],\r\n data: raster.values[this.band],\r\n matrix: true\r\n })\r\n this.gridRenderer.setColorMap(this.colorMap)\r\n this.gridRenderer.setGrid(grid)\r\n this.gridOverlay.redraw()\r\n this.fire('data', raster)\r\n },\r\n\r\n clearRaster () {\r\n this.gridRenderer.setGrid(null)\r\n this.gridRenderer.setColorMap(null)\r\n this.colorMap = null\r\n },\r\n\r\n async loadRaster (url) {\r\n const response = await fetch(url)\r\n if (response.ok) {\r\n const arrayBuffer = await response.arrayBuffer()\r\n const georaster = await parseGeoraster(arrayBuffer)\r\n // Update the data\r\n this.setRaster(georaster)\r\n } else {\r\n this.clearRaster()\r\n }\r\n },\r\n\r\n async setCurrentTime (datetime) {\r\n if (!this.interval) return\r\n const timelag = this.timelag ? this.timelag : 0\r\n const timestamp = datetime.valueOf()\r\n const nearestTime = moment(Math.floor(timestamp / this.interval) * this.interval + timelag).utc()\r\n if (this.currentTime !== nearestTime) {\r\n // Store the time\r\n this.currentTime = nearestTime\r\n // Compute the url\r\n await this.loadRaster(this.currentTime.format(this.url))\r\n }\r\n }\r\n})\r\n\r\nexport default {\r\n methods: {\r\n async createLeafletGeorasterLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n\r\n // Check for valid type\r\n if (leafletOptions.type !== 'georaster') return\r\n\r\n // Copy options\r\n const colorMap = _.get(options, 'variables[0].chromajs', null)\r\n if (colorMap) Object.assign(leafletOptions, colorMap)\r\n const band = _.get(options, 'variables[0].band', 0)\r\n Object.assign(leafletOptions, { band })\r\n const nodata = _.get(options, 'variables[0].nodata', null)\r\n if (nodata) Object.assign(leafletOptions, { nodata })\r\n\r\n Object.assign(leafletOptions)\r\n this.georasterLayer = new GeorasterLayer(leafletOptions)\r\n return this.georasterLayer\r\n }\r\n },\r\n created () {\r\n this.registerLeafletConstructor(this.createLeafletGeorasterLayer)\r\n }\r\n}\r\n"]}
|
|
@@ -8,6 +8,8 @@ var _lodash = require('lodash');
|
|
|
8
8
|
|
|
9
9
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
10
10
|
|
|
11
|
+
var _time = require('../../../../core/client/time');
|
|
12
|
+
|
|
11
13
|
var _GSMaPLayer = require('../../leaflet/GSMaPLayer');
|
|
12
14
|
|
|
13
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -17,8 +19,6 @@ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, a
|
|
|
17
19
|
exports.default = {
|
|
18
20
|
methods: {
|
|
19
21
|
createLeafletGSMaPLayer(options) {
|
|
20
|
-
var _this = this;
|
|
21
|
-
|
|
22
22
|
return _asyncToGenerator(function* () {
|
|
23
23
|
const leafletOptions = options.leaflet || options;
|
|
24
24
|
// Check for valid type
|
|
@@ -29,7 +29,7 @@ exports.default = {
|
|
|
29
29
|
if (colorMap) Object.assign(leafletOptions, { chromajs: colorMap });
|
|
30
30
|
|
|
31
31
|
// Add current time to options
|
|
32
|
-
leafletOptions.time =
|
|
32
|
+
leafletOptions.time = _time.Time.getCurrentTime();
|
|
33
33
|
|
|
34
34
|
// Then create layer
|
|
35
35
|
return new _GSMaPLayer.GSMaPLayer(leafletOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.gsmap-layers.js"],"names":["methods","createLeafletGSMaPLayer","options","leafletOptions","leaflet","type","colorMap","_","get","Object","assign","chromajs","time","
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.gsmap-layers.js"],"names":["methods","createLeafletGSMaPLayer","options","leafletOptions","leaflet","type","colorMap","_","get","Object","assign","chromajs","time","Time","getCurrentTime","GSMaPLayer","created","registerLeafletConstructor"],"mappings":";;;;;;AAAA;;;;AACA;;AACA;;;;;;kBAEe;AACbA,WAAS;AACDC,2BAAN,CAA+BC,OAA/B,EAAwC;AAAA;AACtC,cAAMC,iBAAiBD,QAAQE,OAAR,IAAmBF,OAA1C;AACA;AACA,YAAIC,eAAeE,IAAf,KAAwB,YAA5B,EAA0C;;AAE1C;AACA,cAAMC,WAAWC,iBAAEC,GAAF,CAAMN,OAAN,EAAe,uBAAf,EAAwC,IAAxC,CAAjB;AACA,YAAII,QAAJ,EAAcG,OAAOC,MAAP,CAAcP,cAAd,EAA8B,EAAEQ,UAAUL,QAAZ,EAA9B;;AAEd;AACAH,uBAAeS,IAAf,GAAsBC,WAAKC,cAAL,EAAtB;;AAEA;AACA,eAAO,IAAIC,sBAAJ,CAAeZ,cAAf,CAAP;AAbsC;AAcvC;AAfM,GADI;AAkBba,YAAW;AACT;AACA,SAAKC,0BAAL,CAAgC,KAAKhB,uBAArC;AACD;AArBY,C","file":"mixin.gsmap-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport { Time } from '../../../../core/client/time'\r\nimport { GSMaPLayer } from '../../leaflet/GSMaPLayer'\r\n\r\nexport default {\r\n methods: {\r\n async createLeafletGSMaPLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Check for valid type\r\n if (leafletOptions.type !== 'gsmapLayer') return\r\n\r\n // Copy options\r\n const colorMap = _.get(options, 'variables[0].chromajs', null)\r\n if (colorMap) Object.assign(leafletOptions, { chromajs: colorMap })\r\n\r\n // Add current time to options\r\n leafletOptions.time = Time.getCurrentTime()\r\n\r\n // Then create layer\r\n return new GSMaPLayer(leafletOptions)\r\n }\r\n },\r\n created () {\r\n // Register the new layer constructor\r\n this.registerLeafletConstructor(this.createLeafletGSMaPLayer)\r\n }\r\n}\r\n"]}
|