@kalisio/kdk 1.4.2 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
- package/.nyc_output/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
- package/.nyc_output/{2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json → 27401f21-8ccf-42fa-8230-4232189d86b3.json} +0 -0
- package/.nyc_output/{81d21e46-766a-46bc-b1b7-143ca577347a.json → 52278ef5-c337-4724-97be-e2e4416847c5.json} +0 -0
- package/.nyc_output/{aaf3ebbb-f895-4d7b-9255-bc5dee832570.json → 5dd49b8a-4c84-42f9-a3d5-712247a84775.json} +0 -0
- package/.nyc_output/{dbeb2602-0ac2-4e66-978b-0d29548359ca.json → 612b4859-9645-45c1-a41e-1fae420518c4.json} +0 -0
- package/.nyc_output/{e47d1e4c-2fff-4dcb-908f-d3081162547c.json → bab87fe9-d99a-4759-99e6-3fc4622eeca0.json} +0 -0
- package/.nyc_output/processinfo/02a7a308-a8d7-4cc6-8e61-6066a0055a96.json +1 -0
- package/.nyc_output/processinfo/1900d596-5e87-433a-8fd6-fb7f7ded35ec.json +1 -0
- package/.nyc_output/processinfo/27401f21-8ccf-42fa-8230-4232189d86b3.json +1 -0
- package/.nyc_output/processinfo/52278ef5-c337-4724-97be-e2e4416847c5.json +1 -0
- package/.nyc_output/processinfo/5dd49b8a-4c84-42f9-a3d5-712247a84775.json +1 -0
- package/.nyc_output/processinfo/612b4859-9645-45c1-a41e-1fae420518c4.json +1 -0
- package/.nyc_output/processinfo/bab87fe9-d99a-4759-99e6-3fc4622eeca0.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +69 -10
- package/coverage/core/api/application.js.html +500 -422
- package/coverage/core/api/authentication.js.html +119 -119
- package/coverage/core/api/db.js.html +172 -172
- package/coverage/core/api/hooks/hooks.account.js.html +45 -45
- package/coverage/core/api/hooks/hooks.authentication.js.html +71 -71
- package/coverage/core/api/hooks/hooks.authorisations.js.html +368 -353
- 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 +190 -190
- package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/core/api/hooks/hooks.query.js.html +277 -211
- 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 +263 -263
- 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 +76 -76
- package/coverage/core/api/index.js.html +30 -30
- 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 +104 -104
- 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 +156 -132
- 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 +118 -118
- 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 +320 -290
- package/coverage/index.html +181 -181
- package/coverage/lcov-report/core/api/application.js.html +500 -422
- package/coverage/lcov-report/core/api/authentication.js.html +119 -119
- package/coverage/lcov-report/core/api/db.js.html +172 -172
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +45 -45
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +71 -71
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +368 -353
- 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 +190 -190
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +277 -211
- 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 +263 -263
- 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 +76 -76
- package/coverage/lcov-report/core/api/index.js.html +30 -30
- 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 +104 -104
- 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 +156 -132
- 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 +118 -118
- 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 +320 -290
- package/coverage/lcov-report/index.html +181 -181
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +25 -7
- 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 +14 -5
- package/coverage/lcov-report/map/api/models/index.html +7 -7
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
- package/coverage/lcov.info +3683 -3825
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +25 -7
- 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 +14 -5
- package/coverage/map/api/models/index.html +7 -7
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +1 -1
- package/extras/tours/map/navigation-bar.js +49 -1
- package/lib/core/api/application.js +35 -9
- package/lib/core/api/application.js.map +1 -1
- package/lib/core/api/hooks/hooks.authorisations.js +8 -1
- package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.query.js +135 -100
- package/lib/core/api/hooks/hooks.query.js.map +1 -1
- package/lib/core/api/services/authorisations/authorisations.service.js +13 -1
- package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
- package/lib/core/api/services/pusher/pusher.service.js +40 -16
- package/lib/core/api/services/pusher/pusher.service.js.map +1 -1
- package/lib/core/client/components/collection/KColumn.vue +29 -28
- package/lib/core/client/components/collection/KFilter.vue +97 -72
- package/lib/core/client/components/editor/KModalEditor.vue +3 -4
- package/lib/core/client/components/editor/KSettingsEditor.vue +6 -2
- package/lib/core/client/components/form/KFileField.vue +14 -36
- package/lib/core/client/components/form/KRoleField.vue +5 -2
- package/lib/core/client/components/form/KTextField.vue +12 -2
- package/lib/core/client/components/form/KUnitField.vue +57 -0
- package/lib/core/client/components/form/KUrlField.vue +1 -1
- package/lib/core/client/components/frame/KAction.vue +1 -2
- package/lib/core/client/components/frame/KModal.vue +66 -20
- package/lib/core/client/components/frame/KScrollArea.vue +65 -0
- package/lib/core/client/components/frame/index.js +6 -1
- package/lib/core/client/components/frame/index.js.map +1 -1
- package/lib/core/client/components/input/KColorChooser.vue +3 -5
- package/lib/core/client/components/input/KIconChooser.vue +38 -40
- package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
- package/lib/core/client/components/layout/KAbout.vue +47 -49
- package/lib/core/client/components/team/KAddMember.vue +1 -1
- package/lib/core/client/components/team/KChangeRole.vue +11 -14
- package/lib/core/client/components/team/KGroupCard.vue +12 -5
- package/lib/core/client/components/team/KGroupsActivity.vue +1 -1
- package/lib/core/client/components/team/KJoinGroup.vue +22 -22
- package/lib/core/client/components/team/KMemberCard.vue +19 -4
- package/lib/core/client/components/viewer/KModalViewer.vue +10 -9
- package/lib/core/client/i18n/core_en.json +72 -8
- package/lib/core/client/i18n/core_fr.json +66 -8
- package/lib/core/client/index.js +31 -0
- 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.base-widget.js +5 -3
- package/lib/core/client/mixins/mixin.base-widget.js.map +1 -1
- package/lib/core/client/reader.js +85 -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 +54 -0
- package/lib/core/client/readers/reader.csv.js.map +1 -0
- package/lib/core/client/readers/reader.json.js +49 -0
- package/lib/core/client/readers/reader.json.js.map +1 -0
- package/lib/core/client/services/index.js +14 -3
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/services/local-settings.service.js +6 -4
- package/lib/core/client/services/local-settings.service.js.map +1 -1
- package/lib/core/client/time.js +4 -3
- package/lib/core/client/time.js.map +1 -1
- package/lib/core/client/units.js +195 -0
- package/lib/core/client/units.js.map +1 -0
- package/lib/core/common/permissions.js +44 -34
- package/lib/core/common/permissions.js.map +1 -1
- package/lib/core/common/schemas/settings.update.json +72 -0
- package/lib/map/api/hooks/hooks.query.js +7 -2
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/api/models/features.model.mongodb.js +3 -0
- package/lib/map/api/models/features.model.mongodb.js.map +1 -1
- package/lib/map/client/components/KCaptureToolbar.vue +151 -0
- package/lib/map/client/components/KColorLegend.vue +16 -4
- package/lib/map/client/components/KFeaturesChart.vue +10 -11
- package/lib/map/client/components/KFeaturesFilter.vue +40 -39
- package/lib/map/client/components/KFeaturesTable.vue +15 -16
- package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
- package/lib/map/client/components/KLayerStyleEditor.vue +3 -2
- package/lib/map/client/components/KLayerStyleForm.vue +38 -27
- package/lib/map/client/components/KMeasureTool.vue +337 -0
- package/lib/map/client/components/KTimeline.vue +5 -9
- package/lib/map/client/components/catalog/KAddLayer.vue +3 -2
- package/lib/map/client/components/catalog/KCatalog.vue +26 -7
- package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
- package/lib/map/client/components/catalog/KLayerCategories.vue +3 -2
- package/lib/map/client/components/catalog/KLayersSelector.vue +8 -6
- package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +1 -1
- package/lib/map/client/components/widget/KInformationBox.vue +8 -17
- package/lib/map/client/components/widget/KMapillaryViewer.vue +5 -1
- package/lib/map/client/components/widget/KTimeSeries.vue +92 -9
- package/lib/map/client/i18n/map_en.json +51 -20
- package/lib/map/client/i18n/map_fr.json +51 -20
- package/lib/map/client/init.js +7 -1
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +9 -0
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +16 -21
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.popup.js +7 -1
- package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js +7 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +54 -9
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +51 -97
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +43 -11
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.popup.js +7 -1
- package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.style.js +1 -1
- package/lib/map/client/mixins/map/mixin.style.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js +7 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +2 -0
- 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-service.js +3 -3
- 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 +7 -5
- package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
- package/lib/map/client/readers/index.js +54 -0
- package/lib/map/client/readers/index.js.map +1 -0
- package/lib/map/client/readers/reader.geojson.js +87 -0
- package/lib/map/client/readers/reader.geojson.js.map +1 -0
- package/lib/map/client/readers/reader.gpx.js +52 -0
- package/lib/map/client/readers/reader.gpx.js.map +1 -0
- package/lib/map/client/readers/reader.kml.js +52 -0
- package/lib/map/client/readers/reader.kml.js.map +1 -0
- package/lib/map/client/readers/reader.shp.js +116 -0
- package/lib/map/client/readers/reader.shp.js.map +1 -0
- package/lib/map/client/utils.js +0 -7
- package/lib/map/client/utils.js.map +1 -1
- package/lib/test/client/core/account.js +1 -1
- package/lib/test/client/core/account.js.map +1 -1
- package/lib/test/client/core/runner.js +1 -2
- package/lib/test/client/core/runner.js.map +1 -1
- package/lib/test/client/core/screens.js +1 -1
- package/lib/test/client/core/screens.js.map +1 -1
- package/lib/test/client/core/utils.js +2 -2
- package/lib/test/client/core/utils.js.map +1 -1
- package/lib/test/client/map/catalog.js +50 -49
- package/lib/test/client/map/catalog.js.map +1 -1
- package/package.json +3 -3
- package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
- package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
- package/.nyc_output/processinfo/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +0 -1
- package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +0 -1
- package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +0 -1
- package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +0 -1
- package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +0 -1
- package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +0 -1
- package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.canvas-layers.js"],"names":["forwardEventBehindPane","e","pane","removed","node","target","display","style","document","elementFromPoint","clientX","clientY","ev","MouseEvent","type","stopped","dispatchEvent","_stopped","L","DomEvent","stop","KanvasLayer","Layer","Class","extend","initialize","options","_map","_canvas","_frame","_delegate","setOptions","clickableFeatures","mousePosition","highlighting","autoRedraw","tooltip","_tooltip","_tooltipContent","html","_getTooltipContent","feature","property","val","_","get","template","compiler","properties","delegate","del","setAutoRedraw","enable","needRedraw","Util","requestAnimFrame","drawLayer","redrawNow","frame","latLonToCanvas","coords","a","latLngToLayerPoint","latLng","lat","lon","b","DomUtil","getPosition","subtract","clearClickableFeatures","length","addClickableFeature","clickablePath","clickableStrokeWidth","highlightPath","undefined","highlightAsStroke","highlightStyle","push","click","path","strokeWidth","highlight","asStroke","hasClickableFeaturesAt","latlng","pt","lng","ctx","getContext","inFeature","save","lineWidth","isPointInStroke","x","y","isPointInPath","restore","getClickableFeaturesAt","indexes","forEach","index","_onLayerDidResize","resizeEvent","width","newSize","height","_onLayerDidMove","topLeft","containerPointToLayerPoint","setPosition","_onLayerClick","event","originalEvent","fire","Object","assign","clickThroughEnabled","_panes","overlayPane","_onLayerContextMenu","_onMouseMove","hoveringFeatures","hasLayer","closeTooltip","content","setLatLng","setContent","openTooltip","getEvents","events","resize","moveend","zoom","zoomAnimation","Browser","any3d","zoomanim","_animateZoom","pointerEventsEnabled","contextmenu","mousemove","onAdd","map","create","pointerEvents","size","getSize","animated","addClass","appendChild","on","onLayerDidMount","onRemove","onLayerWillUnmount","cancelAnimFrame","removeChild","off","addTo","addLayer","LatLonToMercator","latlon","Math","PI","log","tan","bounds","getBounds","getZoom","center","getCenter","corner","containerPointToLatLng","onDrawLayer","layer","canvas","highlightIndexes","globalAlpha","prop","stroke","fill","_setTransform","el","offset","scale","pos","Point","TRANSFORM","ie3d","getZoomScale","_latLngBoundsToNewLayerBounds","min","_getCenterOffset","_multiplyBy","_getMapPanePos","setTransform","kanvasLayer","methods","createLeafletCanvasLayer","layerOptions","leaflet","createLeafletLayer","setCanvasLayerDrawCode","draw","userData","setCanvasLayerUserData","setCanvasLayerAutoRedraw","drawCode","leafletLayer","getLeafletLayerByName","updateListeners","canvasLayer","listen","layerName","listenedLayers","state","listenedLayer","drawCalls","compatContext","d","Function","code","srcLayer","srcFeature","split","context","_features","call","has","values","info","now","Date","bind","canvasLayerDrawContext","clearRect","updateCanvasLayerDrawCode","newDrawCode","setCanvasLayerContext","created","canvasLayerDrawProxy","Proxy","window","receiver","proxy","vec2","pointA","pointB","len2","sqrt","scale2","value","norm2","len","CanvasDrawContext","registerLeafletConstructor","beforeDestroy"],"mappings":"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","file":"mixin.canvas-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport { CanvasDrawContext } from '../../canvas-draw-context'\r\nimport { bindLeafletEvents } from '../../utils'\r\nimport L from 'leaflet'\r\n\r\n// Helper function to forward events when click through is enabled\r\n// on canvas layers\r\nfunction forwardEventBehindPane (e, pane) {\r\n // backup original event target and display mode\r\n const removed = { node: e.target, display: e.target.style.display }\r\n // make event target hidden\r\n removed.node.style.display = 'none'\r\n // query element at position now that our canvas is hidden\r\n const target = document.elementFromPoint(e.clientX, e.clientY)\r\n\r\n if (target && target !== pane) {\r\n // synthetize a new event on the element\r\n const ev = new MouseEvent(e.type, e)\r\n const stopped = !target.dispatchEvent(ev)\r\n if (stopped || ev._stopped) L.DomEvent.stop(e)\r\n }\r\n\r\n // restore display mode on original event target\r\n removed.node.style.display = removed.display\r\n}\r\n\r\nL.KanvasLayer = (L.Layer ? L.Layer : L.Class).extend({\r\n // -- initialized is called on prototype\r\n initialize: function (options) {\r\n this._map = null\r\n this._canvas = null\r\n this._frame = null\r\n this._delegate = null\r\n L.setOptions(this, options)\r\n\r\n this.clickableFeatures = []\r\n this.mousePosition = null\r\n this.highlighting = false\r\n this.autoRedraw = false\r\n\r\n if (options.tooltip) {\r\n this._tooltip = L.tooltip({})\r\n this._tooltipContent = ''\r\n // html | property | template\r\n if (options.tooltip.html) {\r\n this._getTooltipContent = (feature) => { return options.tooltip.html }\r\n } else if (options.tooltip.property) {\r\n this._getTooltipContent = (feature) => {\r\n const val = _.get(feature, options.tooltip.property)\r\n return `${val}`\r\n }\r\n } else if (options.tooltip.template) {\r\n const compiler = _.template(options.tooltip.template)\r\n this._getTooltipContent = (feature) => {\r\n return compiler({ feature, properties: feature.properties })\r\n }\r\n }\r\n }\r\n },\r\n\r\n delegate: function (del) {\r\n this._delegate = del\r\n },\r\n\r\n setAutoRedraw: function (enable) {\r\n this.autoRedraw = enable\r\n if (enable && this._frame === null) this.needRedraw()\r\n },\r\n\r\n needRedraw: function () {\r\n if (this._frame !== null || this._canvas === null) return\r\n this._frame = L.Util.requestAnimFrame(this.drawLayer, this)\r\n },\r\n\r\n redrawNow: function () {\r\n const frame = this._frame\r\n const autoRedraw = this.autoRedraw\r\n this.autoRedraw = false\r\n this.drawLayer()\r\n this._frame = frame\r\n this.autoRedraw = autoRedraw\r\n },\r\n\r\n latLonToCanvas: function (coords) {\r\n const a = this._map.latLngToLayerPoint(L.latLng(coords.lat, coords.lon))\r\n const b = L.DomUtil.getPosition(this._canvas)\r\n return a.subtract(b)\r\n },\r\n\r\n clearClickableFeatures: function () {\r\n this.clickableFeatures.length = 0\r\n },\r\n\r\n addClickableFeature: function (feature, clickablePath, { clickableStrokeWidth = 0, highlightPath = undefined, highlightAsStroke = false, highlightStyle = {} }) {\r\n this.clickableFeatures.push({\r\n feature,\r\n click: { path: clickablePath, strokeWidth: clickableStrokeWidth }\r\n })\r\n if (highlightPath) {\r\n this.clickableFeatures[this.clickableFeatures.length - 1].highlight = {\r\n path: highlightPath,\r\n asStroke: highlightAsStroke,\r\n style: highlightStyle\r\n }\r\n }\r\n },\r\n\r\n hasClickableFeaturesAt: function (latlng) {\r\n if (!latlng || this.clickableFeatures.length === 0) return false\r\n\r\n const pt = this.latLonToCanvas({ lat: latlng.lat, lon: latlng.lng })\r\n const ctx = this._canvas.getContext('2d')\r\n let inFeature = false\r\n for (const feature of this.clickableFeatures) {\r\n ctx.save()\r\n if (feature.click.strokeWidth) {\r\n ctx.lineWidth = feature.click.strokeWidth\r\n inFeature = ctx.isPointInStroke(feature.click.path, pt.x, pt.y)\r\n } else {\r\n inFeature = ctx.isPointInPath(feature.click.path, pt.x, pt.y)\r\n }\r\n ctx.restore()\r\n if (inFeature) return true\r\n }\r\n return false\r\n },\r\n\r\n getClickableFeaturesAt: function (latlng) {\r\n if (!latlng || this.clickableFeatures.length === 0) return []\r\n\r\n const pt = this.latLonToCanvas({ lat: latlng.lat, lon: latlng.lng })\r\n\r\n const indexes = []\r\n const ctx = this._canvas.getContext('2d')\r\n this.clickableFeatures.forEach((feature, index) => {\r\n ctx.save()\r\n if (feature.click.strokeWidth) {\r\n ctx.lineWidth = feature.click.strokeWidth\r\n if (ctx.isPointInStroke(feature.click.path, pt.x, pt.y)) indexes.push(index)\r\n } else {\r\n if (ctx.isPointInPath(feature.click.path, pt.x, pt.y)) indexes.push(index)\r\n }\r\n ctx.restore()\r\n })\r\n return indexes\r\n },\r\n\r\n // -------------------------------------------------------------\r\n _onLayerDidResize: function (resizeEvent) {\r\n this._canvas.width = resizeEvent.newSize.x\r\n this._canvas.height = resizeEvent.newSize.y\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerDidMove: function () {\r\n var topLeft = this._map.containerPointToLayerPoint([0, 0])\r\n L.DomUtil.setPosition(this._canvas, topLeft)\r\n this.redrawNow()\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerClick: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length) {\r\n this.fire('click', Object.assign({}, event, { feature: this.clickableFeatures[indexes[0]].feature }))\r\n } else if (this.options.clickThroughEnabled) {\r\n // let click pass through our canvas when there's no hit\r\n const pane = this.options.pane ? this._map._panes[this.options.pane] : this._map._panes.overlayPane\r\n forwardEventBehindPane(event.originalEvent, pane)\r\n }\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerContextMenu: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length === 0) return\r\n this.fire('contextmenu', Object.assign({}, event, { feature: this.clickableFeatures[indexes[0]].feature }))\r\n },\r\n // -------------------------------------------------------------\r\n _onMouseMove: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n this.mousePosition = event.latlng\r\n\r\n let hoveringFeatures = false\r\n if (this._tooltip) {\r\n // User requires a tooltip, check if we need to close, update or open it\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length === 0 && this._map.hasLayer(this._tooltip)) {\r\n // Close tooltip\r\n this._map.closeTooltip(this._tooltip)\r\n this._tooltipContent = ''\r\n } else if (indexes.length) {\r\n // Open or update\r\n const content = this._getTooltipContent(this.clickableFeatures[indexes[0]].feature)\r\n if (content !== this._tooltipContent) {\r\n this._tooltip.setLatLng(event.latlng)\r\n this._tooltip.setContent(content)\r\n this._tooltipContent = content\r\n }\r\n if (!this._map.hasLayer(this._tooltip)) this._map.openTooltip(this._tooltip)\r\n hoveringFeatures = true\r\n }\r\n } else {\r\n hoveringFeatures = this.hasClickableFeaturesAt(event.latlng)\r\n }\r\n\r\n // Skip redraw when no feature hovered and we're not highlighting\r\n if (!hoveringFeatures && !this.highlighting) return\r\n this.needRedraw()\r\n },\r\n // -------------------------------------------------------------\r\n getEvents: function () {\r\n const events = {\r\n resize: this._onLayerDidResize,\r\n moveend: this._onLayerDidMove,\r\n zoom: this._onLayerDidMove\r\n }\r\n if (this._map.options.zoomAnimation && L.Browser.any3d) {\r\n events.zoomanim = this._animateZoom\r\n }\r\n if (this.options.pointerEventsEnabled) {\r\n events.click = this._onLayerClick\r\n events.contextmenu = this._onLayerContextMenu\r\n events.mousemove = this._onMouseMove\r\n }\r\n\r\n return events\r\n },\r\n // -------------------------------------------------------------\r\n onAdd: function (map) {\r\n this._map = map\r\n this._canvas = L.DomUtil.create('canvas', 'leaflet-layer')\r\n // disable pointer events if not explicitely enabled\r\n if (!this.options.pointerEventsEnabled) this._canvas.style.pointerEvents = 'none'\r\n\r\n var size = this._map.getSize()\r\n this._canvas.width = size.x\r\n this._canvas.height = size.y\r\n\r\n var topLeft = this._map.containerPointToLayerPoint([0, 0])\r\n L.DomUtil.setPosition(this._canvas, topLeft)\r\n\r\n var animated = this._map.options.zoomAnimation && L.Browser.any3d\r\n L.DomUtil.addClass(this._canvas, 'leaflet-zoom-' + (animated ? 'animated' : 'hide'))\r\n\r\n const pane = this.options.pane ? map._panes[this.options.pane] : map._panes.overlayPane\r\n pane.appendChild(this._canvas)\r\n\r\n map.on(this.getEvents(), this)\r\n\r\n var del = this._delegate || this\r\n del.onLayerDidMount && del.onLayerDidMount() // -- callback\r\n this.needRedraw()\r\n },\r\n\r\n // -------------------------------------------------------------\r\n onRemove: function (map) {\r\n var del = this._delegate || this\r\n del.onLayerWillUnmount && del.onLayerWillUnmount() // -- callback\r\n\r\n if (this._frame !== null) {\r\n L.Util.cancelAnimFrame(this._frame)\r\n }\r\n\r\n const pane = this.options.pane ? map._panes[this.options.pane] : map._panes.overlayPane\r\n pane.removeChild(this._canvas)\r\n\r\n map.off(this.getEvents(), this)\r\n\r\n this._canvas = null\r\n this._frame = null\r\n },\r\n\r\n // ---------- --------------------------------------------------\r\n addTo: function (map) {\r\n map.addLayer(this)\r\n return this\r\n },\r\n // --------------------------------------------------------------------------------\r\n LatLonToMercator: function (latlon) {\r\n return {\r\n x: latlon.lng * 6378137 * Math.PI / 180,\r\n y: Math.log(Math.tan((90 + latlon.lat) * Math.PI / 360)) * 6378137\r\n }\r\n },\r\n\r\n // ------------------------------------------------------------------------------\r\n drawLayer: function () {\r\n // -- todo make the viewInfo properties flat objects.\r\n var size = this._map.getSize()\r\n var bounds = this._map.getBounds()\r\n var zoom = this._map.getZoom()\r\n\r\n var center = this.LatLonToMercator(this._map.getCenter())\r\n var corner = this.LatLonToMercator(this._map.containerPointToLatLng(this._map.getSize()))\r\n\r\n var del = this._delegate || this\r\n del.onDrawLayer && del.onDrawLayer({\r\n layer: this,\r\n canvas: this._canvas,\r\n bounds: bounds,\r\n size: size,\r\n zoom: zoom,\r\n center: center,\r\n corner: corner\r\n })\r\n const highlightIndexes = this.getClickableFeaturesAt(this.mousePosition)\r\n this.highlighting = highlightIndexes.length > 0\r\n if (this.highlighting) {\r\n const ctx = this._canvas.getContext('2d')\r\n for (const index of highlightIndexes) {\r\n const feature = this.clickableFeatures[index]\r\n\r\n ctx.save()\r\n ctx.globalAlpha = 0.5\r\n for (const prop in feature.highlight.style) ctx[prop] = feature.highlight.style[prop]\r\n if (feature.highlight.asStroke) ctx.stroke(feature.highlight.path)\r\n else ctx.fill(feature.highlight.path)\r\n ctx.restore()\r\n }\r\n }\r\n\r\n this._frame = null\r\n // schedule a new draw if autoRedraw is enabled\r\n if (this.autoRedraw) this.needRedraw()\r\n },\r\n // -- L.DomUtil.setTransform from leaflet 1.0.0 to work on 0.0.7\r\n // ------------------------------------------------------------------------------\r\n _setTransform: function (el, offset, scale) {\r\n var pos = offset || new L.Point(0, 0)\r\n\r\n el.style[L.DomUtil.TRANSFORM] =\r\n (L.Browser.ie3d\r\n ? 'translate(' + pos.x + 'px,' + pos.y + 'px)'\r\n : 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n (scale ? ' scale(' + scale + ')' : '')\r\n },\r\n\r\n // ------------------------------------------------------------------------------\r\n _animateZoom: function (e) {\r\n var scale = this._map.getZoomScale(e.zoom)\r\n // -- different calc of animation zoom in leaflet 1.0.3 thanks @peterkarabinovic, @jduggan1\r\n var offset = L.Layer ? this._map._latLngBoundsToNewLayerBounds(this._map.getBounds(), e.zoom, e.center).min\r\n : this._map._getCenterOffset(e.center)._multiplyBy(-scale).subtract(this._map._getMapPanePos())\r\n\r\n L.DomUtil.setTransform(this._canvas, offset, scale)\r\n }\r\n})\r\n\r\nL.kanvasLayer = function (options) {\r\n return new L.KanvasLayer(options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n createLeafletCanvasLayer (options) {\r\n const layerOptions = options.leaflet || options\r\n\r\n // Check for valid type\r\n if (layerOptions.type !== 'kanvasLayer') return\r\n\r\n const layer = this.createLeafletLayer(options)\r\n this.setCanvasLayerDrawCode(layer, layerOptions.draw)\r\n if (layerOptions.userData) this.setCanvasLayerUserData(layer, layerOptions.userData)\r\n if (layerOptions.autoRedraw) this.setCanvasLayerAutoRedraw(layer, layerOptions.autoRedraw)\r\n bindLeafletEvents(layer, ['click', 'contextmenu'], this, options)\r\n return layer\r\n },\r\n\r\n setCanvasLayerDrawCode (layer, drawCode, autoRedraw = false) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n // helper function to manage listened layers states\r\n // since canvas layer draw stuff related to geojson layers\r\n // we listen to geojson layers 'update' event to mark our\r\n // canvas layer with needRedraw\r\n const updateListeners = (canvasLayer, listen) => {\r\n for (const layerName in canvasLayer.listenedLayers) {\r\n const state = canvasLayer.listenedLayers[layerName]\r\n if (state === listen) continue\r\n const listenedLayer = this.getLeafletLayerByName(layerName)\r\n if (!listenedLayer) continue\r\n if (listen) listenedLayer.on('update', canvasLayer.needRedraw, canvasLayer)\r\n else listenedLayer.off('update', canvasLayer.needRedraw, canvasLayer)\r\n canvasLayer.listenedLayers[layerName] = listen\r\n }\r\n }\r\n\r\n // disconnect from previous geojson layers\r\n updateListeners(leafletLayer, false)\r\n\r\n leafletLayer.listenedLayers = {}\r\n leafletLayer.drawCalls = []\r\n if (leafletLayer.userData === undefined) leafletLayer.userData = {}\r\n if (leafletLayer.compatContext === undefined) leafletLayer.compatContext = {}\r\n\r\n leafletLayer.clearClickableFeatures()\r\n\r\n for (const d of drawCode) {\r\n /* eslint no-new-func: 0 */\r\n const drawCode = Function(`\r\n// define visible variables\r\nconst ctx = this;\r\nwith(this.proxy) { ${d.code} }\r\n`)\r\n\r\n if (d.feature) {\r\n const [srcLayer, srcFeature] = d.feature.split('?')\r\n leafletLayer.drawCalls.push((context) => {\r\n const layer = this.getLeafletLayerByName(srcLayer)\r\n if (!layer) return\r\n const feature = layer._features ? layer._features[srcFeature] : undefined\r\n if (!feature) return\r\n context.feature = feature\r\n drawCode.call(context)\r\n })\r\n // we'll have to listen source geojson layer 'update' event\r\n if (!_.has(leafletLayer.listenedLayers, srcLayer)) leafletLayer.listenedLayers[srcLayer] = false\r\n } else if (d.layer) {\r\n leafletLayer.drawCalls.push((context) => {\r\n const layer = this.getLeafletLayerByName(d.layer)\r\n if (!layer) return\r\n for (const feature of Object.values(layer._features)) {\r\n context.feature = feature\r\n drawCode.call(context)\r\n }\r\n })\r\n // we'll have to listen source geojson layer 'update' event\r\n if (!_.has(leafletLayer.listenedLayers, d.layer)) leafletLayer.listenedLayers[d.layer] = false\r\n }\r\n }\r\n\r\n if (!leafletLayer.onDrawLayer) {\r\n // build draw function for the layer\r\n leafletLayer.onDrawLayer = (info) => {\r\n // update listener states\r\n updateListeners(leafletLayer, true)\r\n\r\n const ctx = info.canvas.getContext('2d')\r\n // build context for draw code\r\n // here we merge global canvas layer context,\r\n // user defined context and current state context\r\n const context = Object.assign(\r\n // current state context\r\n {\r\n canvas: ctx,\r\n now: Date.now(),\r\n zoom: info.zoom,\r\n latLonToCanvas: leafletLayer.latLonToCanvas.bind(leafletLayer),\r\n clearClickableFeatures: leafletLayer.clearClickableFeatures.bind(leafletLayer),\r\n addClickableFeature: leafletLayer.addClickableFeature.bind(leafletLayer),\r\n userData: leafletLayer.userData\r\n },\r\n leafletLayer.compatContext,\r\n // global context\r\n this.canvasLayerDrawContext)\r\n\r\n // draw\r\n ctx.save()\r\n ctx.clearRect(0, 0, info.canvas.width, info.canvas.height)\r\n for (const draw of leafletLayer.drawCalls) draw(context)\r\n ctx.restore()\r\n }\r\n }\r\n\r\n leafletLayer.setAutoRedraw(autoRedraw)\r\n leafletLayer.needRedraw()\r\n },\r\n\r\n setCanvasLayerUserData (layer, userData) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.userData = Object.assign(leafletLayer.userData, userData)\r\n leafletLayer.needRedraw()\r\n },\r\n\r\n setCanvasLayerAutoRedraw (layer, autoRedraw) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.setAutoRedraw(autoRedraw)\r\n },\r\n\r\n /* Compatibility methods */\r\n\r\n updateCanvasLayerDrawCode (layerName, newDrawCode, autoRedraw = false) {\r\n this.setCanvasLayerDrawCode(layerName, newDrawCode, autoRedraw)\r\n },\r\n\r\n setCanvasLayerContext (layerName, context) {\r\n const leafletLayer = this.getLeafletLayerByName(layerName)\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.compatContext = context\r\n leafletLayer.needRedraw()\r\n }\r\n },\r\n\r\n created () {\r\n // a proxy to limit access to variables not defined in draw code scope\r\n this.canvasLayerDrawProxy = new Proxy(window, {\r\n get: (target, prop, receiver) => { return undefined }\r\n })\r\n // the base context we'll make available in draw code\r\n this.canvasLayerDrawContext = Object.assign({\r\n proxy: this.canvasLayerDrawProxy,\r\n // log: console.log,\r\n // a few handy helpers for draw code\r\n vec2: (pointA, pointB) => { return { x: pointA.x - pointB.x, y: pointA.y - pointB.y } },\r\n len2: (vec2) => { return Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y) },\r\n scale2: (vec2, value) => { return { x: vec2.x * value, y: vec2.y * value } },\r\n norm2: (vec2) => {\r\n const len = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y)\r\n return { x: vec2.x / len, y: vec2.y / len }\r\n }\r\n }, CanvasDrawContext.get())\r\n\r\n this.registerLeafletConstructor(this.createLeafletCanvasLayer)\r\n },\r\n\r\n beforeDestroy () {\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.canvas-layers.js"],"names":["forwardEventBehindPane","e","pane","removed","node","target","display","style","document","elementFromPoint","clientX","clientY","ev","MouseEvent","type","stopped","dispatchEvent","_stopped","L","DomEvent","stop","KanvasLayer","Layer","Class","extend","initialize","options","_map","_canvas","_frame","_delegate","setOptions","clickableFeatures","mousePosition","highlighting","autoRedraw","tooltip","_tooltip","_tooltipContent","html","_getTooltipContent","feature","property","val","_","get","template","compiler","properties","delegate","del","setAutoRedraw","enable","needRedraw","Util","requestAnimFrame","drawLayer","redrawNow","frame","latLonToCanvas","coords","a","latLngToLayerPoint","latLng","lat","lon","b","DomUtil","getPosition","subtract","clearClickableFeatures","length","addClickableFeature","clickablePath","clickableStrokeWidth","highlightPath","undefined","highlightAsStroke","highlightStyle","push","click","path","strokeWidth","highlight","asStroke","hasClickableFeaturesAt","latlng","pt","lng","ctx","getContext","inFeature","save","lineWidth","isPointInStroke","x","y","isPointInPath","restore","getClickableFeaturesAt","indexes","forEach","index","_onLayerDidResize","resizeEvent","width","newSize","height","_onLayerDidMove","topLeft","containerPointToLayerPoint","setPosition","_onLayerClick","event","originalEvent","fire","Object","assign","clickThroughEnabled","_panes","overlayPane","_onLayerContextMenu","_onMouseMove","hoveringFeatures","hasLayer","closeTooltip","content","setLatLng","setContent","openTooltip","getEvents","events","resize","moveend","zoom","zoomAnimation","Browser","any3d","zoomanim","_animateZoom","pointerEventsEnabled","contextmenu","mousemove","onAdd","map","create","pointerEvents","size","getSize","animated","addClass","appendChild","on","onLayerDidMount","onRemove","onLayerWillUnmount","cancelAnimFrame","removeChild","off","addTo","addLayer","LatLonToMercator","latlon","Math","PI","log","tan","bounds","getBounds","getZoom","center","getCenter","corner","containerPointToLatLng","onDrawLayer","layer","canvas","highlightIndexes","globalAlpha","prop","stroke","fill","_setTransform","el","offset","scale","pos","Point","TRANSFORM","ie3d","getZoomScale","_latLngBoundsToNewLayerBounds","min","_getCenterOffset","_multiplyBy","_getMapPanePos","setTransform","kanvasLayer","methods","createLeafletCanvasLayer","layerOptions","leaflet","createLeafletLayer","setCanvasLayerDrawCode","draw","userData","setCanvasLayerUserData","setCanvasLayerAutoRedraw","drawCode","leafletLayer","getLeafletLayerByName","updateListeners","canvasLayer","listen","layerName","listenedLayers","state","listenedLayer","drawCalls","compatContext","d","Function","code","srcLayer","srcFeature","split","context","_features","call","has","values","info","now","Date","bind","canvasLayerDrawContext","clearRect","updateCanvasLayerDrawCode","newDrawCode","setCanvasLayerContext","created","canvasLayerDrawProxy","Proxy","window","receiver","proxy","vec2","pointA","pointB","len2","sqrt","scale2","value","norm2","len","CanvasDrawContext","registerLeafletConstructor","beforeDestroy"],"mappings":"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","file":"mixin.canvas-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport { CanvasDrawContext } from '../../canvas-draw-context'\r\nimport { bindLeafletEvents } from '../../utils'\r\nimport L from 'leaflet'\r\n\r\n// Helper function to forward events when click through is enabled\r\n// on canvas layers\r\nfunction forwardEventBehindPane (e, pane) {\r\n // backup original event target and display mode\r\n const removed = { node: e.target, display: e.target.style.display }\r\n // make event target hidden\r\n removed.node.style.display = 'none'\r\n // query element at position now that our canvas is hidden\r\n const target = document.elementFromPoint(e.clientX, e.clientY)\r\n\r\n if (target && target !== pane) {\r\n // synthetize a new event on the element\r\n const ev = new MouseEvent(e.type, e)\r\n const stopped = !target.dispatchEvent(ev)\r\n if (stopped || ev._stopped) L.DomEvent.stop(e)\r\n }\r\n\r\n // restore display mode on original event target\r\n removed.node.style.display = removed.display\r\n}\r\n\r\nL.KanvasLayer = (L.Layer ? L.Layer : L.Class).extend({\r\n // -- initialized is called on prototype\r\n initialize: function (options) {\r\n this._map = null\r\n this._canvas = null\r\n this._frame = null\r\n this._delegate = null\r\n L.setOptions(this, options)\r\n\r\n this.clickableFeatures = []\r\n this.mousePosition = null\r\n this.highlighting = false\r\n this.autoRedraw = false\r\n\r\n if (options.tooltip) {\r\n this._tooltip = L.tooltip({})\r\n this._tooltipContent = ''\r\n // html | property | template\r\n if (options.tooltip.html) {\r\n this._getTooltipContent = (feature) => { return options.tooltip.html }\r\n } else if (options.tooltip.property) {\r\n this._getTooltipContent = (feature) => {\r\n const val = _.get(feature, options.tooltip.property)\r\n return `${val}`\r\n }\r\n } else if (options.tooltip.template) {\r\n const compiler = _.template(options.tooltip.template)\r\n this._getTooltipContent = (feature) => {\r\n return compiler({ feature, properties: feature.properties })\r\n }\r\n }\r\n }\r\n },\r\n\r\n delegate: function (del) {\r\n this._delegate = del\r\n },\r\n\r\n setAutoRedraw: function (enable) {\r\n this.autoRedraw = enable\r\n if (enable && this._frame === null) this.needRedraw()\r\n },\r\n\r\n needRedraw: function () {\r\n if (this._frame !== null || this._canvas === null) return\r\n this._frame = L.Util.requestAnimFrame(this.drawLayer, this)\r\n },\r\n\r\n redrawNow: function () {\r\n const frame = this._frame\r\n const autoRedraw = this.autoRedraw\r\n this.autoRedraw = false\r\n this.drawLayer()\r\n this._frame = frame\r\n this.autoRedraw = autoRedraw\r\n },\r\n\r\n latLonToCanvas: function (coords) {\r\n const a = this._map.latLngToLayerPoint(L.latLng(coords.lat, coords.lon))\r\n const b = L.DomUtil.getPosition(this._canvas)\r\n return a.subtract(b)\r\n },\r\n\r\n clearClickableFeatures: function () {\r\n this.clickableFeatures.length = 0\r\n },\r\n\r\n addClickableFeature: function (feature, clickablePath, { clickableStrokeWidth = 0, highlightPath = undefined, highlightAsStroke = false, highlightStyle = {} }) {\r\n this.clickableFeatures.push({\r\n feature,\r\n click: { path: clickablePath, strokeWidth: clickableStrokeWidth }\r\n })\r\n if (highlightPath) {\r\n this.clickableFeatures[this.clickableFeatures.length - 1].highlight = {\r\n path: highlightPath,\r\n asStroke: highlightAsStroke,\r\n style: highlightStyle\r\n }\r\n }\r\n },\r\n\r\n hasClickableFeaturesAt: function (latlng) {\r\n if (!latlng || this.clickableFeatures.length === 0) return false\r\n\r\n const pt = this.latLonToCanvas({ lat: latlng.lat, lon: latlng.lng })\r\n const ctx = this._canvas.getContext('2d')\r\n let inFeature = false\r\n for (const feature of this.clickableFeatures) {\r\n ctx.save()\r\n if (feature.click.strokeWidth) {\r\n ctx.lineWidth = feature.click.strokeWidth\r\n inFeature = ctx.isPointInStroke(feature.click.path, pt.x, pt.y)\r\n } else {\r\n inFeature = ctx.isPointInPath(feature.click.path, pt.x, pt.y)\r\n }\r\n ctx.restore()\r\n if (inFeature) return true\r\n }\r\n return false\r\n },\r\n\r\n getClickableFeaturesAt: function (latlng) {\r\n if (!latlng || this.clickableFeatures.length === 0) return []\r\n\r\n const pt = this.latLonToCanvas({ lat: latlng.lat, lon: latlng.lng })\r\n\r\n const indexes = []\r\n const ctx = this._canvas.getContext('2d')\r\n this.clickableFeatures.forEach((feature, index) => {\r\n ctx.save()\r\n if (feature.click.strokeWidth) {\r\n ctx.lineWidth = feature.click.strokeWidth\r\n if (ctx.isPointInStroke(feature.click.path, pt.x, pt.y)) indexes.push(index)\r\n } else {\r\n if (ctx.isPointInPath(feature.click.path, pt.x, pt.y)) indexes.push(index)\r\n }\r\n ctx.restore()\r\n })\r\n return indexes\r\n },\r\n\r\n // -------------------------------------------------------------\r\n _onLayerDidResize: function (resizeEvent) {\r\n this._canvas.width = resizeEvent.newSize.x\r\n this._canvas.height = resizeEvent.newSize.y\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerDidMove: function () {\r\n var topLeft = this._map.containerPointToLayerPoint([0, 0])\r\n L.DomUtil.setPosition(this._canvas, topLeft)\r\n this.redrawNow()\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerClick: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length) {\r\n this.fire('click', Object.assign({}, event, { feature: this.clickableFeatures[indexes[0]].feature }))\r\n } else if (this.options.clickThroughEnabled) {\r\n // let click pass through our canvas when there's no hit\r\n const pane = this.options.pane ? this._map._panes[this.options.pane] : this._map._panes.overlayPane\r\n forwardEventBehindPane(event.originalEvent, pane)\r\n }\r\n },\r\n // -------------------------------------------------------------\r\n _onLayerContextMenu: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length === 0) return\r\n this.fire('contextmenu', Object.assign({}, event, { feature: this.clickableFeatures[indexes[0]].feature }))\r\n },\r\n // -------------------------------------------------------------\r\n _onMouseMove: function (event) {\r\n if (event.originalEvent.target !== this._canvas) return\r\n\r\n this.mousePosition = event.latlng\r\n\r\n let hoveringFeatures = false\r\n if (this._tooltip) {\r\n // User requires a tooltip, check if we need to close, update or open it\r\n const indexes = this.getClickableFeaturesAt(event.latlng)\r\n if (indexes.length === 0 && this._map.hasLayer(this._tooltip)) {\r\n // Close tooltip\r\n this._map.closeTooltip(this._tooltip)\r\n this._tooltipContent = ''\r\n } else if (indexes.length) {\r\n // Open or update\r\n const content = this._getTooltipContent(this.clickableFeatures[indexes[0]].feature)\r\n if (content !== this._tooltipContent) {\r\n this._tooltip.setLatLng(event.latlng)\r\n this._tooltip.setContent(content)\r\n this._tooltipContent = content\r\n }\r\n if (!this._map.hasLayer(this._tooltip)) this._map.openTooltip(this._tooltip)\r\n hoveringFeatures = true\r\n }\r\n } else {\r\n hoveringFeatures = this.hasClickableFeaturesAt(event.latlng)\r\n }\r\n\r\n // Skip redraw when no feature hovered and we're not highlighting\r\n if (!hoveringFeatures && !this.highlighting) return\r\n this.needRedraw()\r\n },\r\n // -------------------------------------------------------------\r\n getEvents: function () {\r\n const events = {\r\n resize: this._onLayerDidResize,\r\n moveend: this._onLayerDidMove,\r\n zoom: this._onLayerDidMove\r\n }\r\n if (this._map.options.zoomAnimation && L.Browser.any3d) {\r\n events.zoomanim = this._animateZoom\r\n }\r\n if (this.options.pointerEventsEnabled) {\r\n events.click = this._onLayerClick\r\n events.contextmenu = this._onLayerContextMenu\r\n events.mousemove = this._onMouseMove\r\n }\r\n\r\n return events\r\n },\r\n // -------------------------------------------------------------\r\n onAdd: function (map) {\r\n this._map = map\r\n this._canvas = L.DomUtil.create('canvas', 'leaflet-layer')\r\n // disable pointer events if not explicitely enabled\r\n if (!this.options.pointerEventsEnabled) this._canvas.style.pointerEvents = 'none'\r\n\r\n var size = this._map.getSize()\r\n this._canvas.width = size.x\r\n this._canvas.height = size.y\r\n\r\n var topLeft = this._map.containerPointToLayerPoint([0, 0])\r\n L.DomUtil.setPosition(this._canvas, topLeft)\r\n\r\n var animated = this._map.options.zoomAnimation && L.Browser.any3d\r\n L.DomUtil.addClass(this._canvas, 'leaflet-zoom-' + (animated ? 'animated' : 'hide'))\r\n\r\n const pane = this.options.pane ? map._panes[this.options.pane] : map._panes.overlayPane\r\n pane.appendChild(this._canvas)\r\n\r\n map.on(this.getEvents(), this)\r\n\r\n var del = this._delegate || this\r\n del.onLayerDidMount && del.onLayerDidMount() // -- callback\r\n this.needRedraw()\r\n },\r\n\r\n // -------------------------------------------------------------\r\n onRemove: function (map) {\r\n var del = this._delegate || this\r\n del.onLayerWillUnmount && del.onLayerWillUnmount() // -- callback\r\n\r\n if (this._frame !== null) {\r\n L.Util.cancelAnimFrame(this._frame)\r\n }\r\n\r\n const pane = this.options.pane ? map._panes[this.options.pane] : map._panes.overlayPane\r\n pane.removeChild(this._canvas)\r\n\r\n map.off(this.getEvents(), this)\r\n\r\n this._canvas = null\r\n this._frame = null\r\n },\r\n\r\n // ---------- --------------------------------------------------\r\n addTo: function (map) {\r\n map.addLayer(this)\r\n return this\r\n },\r\n // --------------------------------------------------------------------------------\r\n LatLonToMercator: function (latlon) {\r\n return {\r\n x: latlon.lng * 6378137 * Math.PI / 180,\r\n y: Math.log(Math.tan((90 + latlon.lat) * Math.PI / 360)) * 6378137\r\n }\r\n },\r\n\r\n // ------------------------------------------------------------------------------\r\n drawLayer: function () {\r\n // -- todo make the viewInfo properties flat objects.\r\n var size = this._map.getSize()\r\n var bounds = this._map.getBounds()\r\n var zoom = this._map.getZoom()\r\n\r\n var center = this.LatLonToMercator(this._map.getCenter())\r\n var corner = this.LatLonToMercator(this._map.containerPointToLatLng(this._map.getSize()))\r\n\r\n var del = this._delegate || this\r\n del.onDrawLayer && del.onDrawLayer({\r\n layer: this,\r\n canvas: this._canvas,\r\n bounds: bounds,\r\n size: size,\r\n zoom: zoom,\r\n center: center,\r\n corner: corner\r\n })\r\n const highlightIndexes = this.getClickableFeaturesAt(this.mousePosition)\r\n this.highlighting = highlightIndexes.length > 0\r\n if (this.highlighting) {\r\n const ctx = this._canvas.getContext('2d')\r\n for (const index of highlightIndexes) {\r\n const feature = this.clickableFeatures[index]\r\n\r\n ctx.save()\r\n ctx.globalAlpha = 0.5\r\n for (const prop in feature.highlight.style) ctx[prop] = feature.highlight.style[prop]\r\n if (feature.highlight.asStroke) ctx.stroke(feature.highlight.path)\r\n else ctx.fill(feature.highlight.path)\r\n ctx.restore()\r\n }\r\n }\r\n\r\n this._frame = null\r\n // schedule a new draw if autoRedraw is enabled\r\n if (this.autoRedraw) this.needRedraw()\r\n },\r\n // -- L.DomUtil.setTransform from leaflet 1.0.0 to work on 0.0.7\r\n // ------------------------------------------------------------------------------\r\n _setTransform: function (el, offset, scale) {\r\n var pos = offset || new L.Point(0, 0)\r\n\r\n el.style[L.DomUtil.TRANSFORM] =\r\n (L.Browser.ie3d\r\n ? 'translate(' + pos.x + 'px,' + pos.y + 'px)'\r\n : 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n (scale ? ' scale(' + scale + ')' : '')\r\n },\r\n\r\n // ------------------------------------------------------------------------------\r\n _animateZoom: function (e) {\r\n var scale = this._map.getZoomScale(e.zoom)\r\n // -- different calc of animation zoom in leaflet 1.0.3 thanks @peterkarabinovic, @jduggan1\r\n var offset = L.Layer ? this._map._latLngBoundsToNewLayerBounds(this._map.getBounds(), e.zoom, e.center).min\r\n : this._map._getCenterOffset(e.center)._multiplyBy(-scale).subtract(this._map._getMapPanePos())\r\n\r\n L.DomUtil.setTransform(this._canvas, offset, scale)\r\n }\r\n})\r\n\r\nL.kanvasLayer = function (options) {\r\n return new L.KanvasLayer(options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n createLeafletCanvasLayer (options) {\r\n const layerOptions = options.leaflet || options\r\n\r\n // Check for valid type\r\n if (layerOptions.type !== 'kanvasLayer') return\r\n\r\n const layer = this.createLeafletLayer(options)\r\n this.setCanvasLayerDrawCode(layer, layerOptions.draw)\r\n if (layerOptions.userData) this.setCanvasLayerUserData(layer, layerOptions.userData)\r\n if (layerOptions.autoRedraw) this.setCanvasLayerAutoRedraw(layer, layerOptions.autoRedraw)\r\n bindLeafletEvents(layer, ['click', 'contextmenu'], this, options)\r\n return layer\r\n },\r\n\r\n setCanvasLayerDrawCode (layer, drawCode, autoRedraw = false) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n // helper function to manage listened layers states\r\n // since canvas layer draw stuff related to geojson layers\r\n // we listen to geojson layers 'update' event to mark our\r\n // canvas layer with needRedraw\r\n const updateListeners = (canvasLayer, listen) => {\r\n for (const layerName in canvasLayer.listenedLayers) {\r\n const state = canvasLayer.listenedLayers[layerName]\r\n if (state === listen) continue\r\n const listenedLayer = this.getLeafletLayerByName(layerName)\r\n if (!listenedLayer) continue\r\n if (listen) listenedLayer.on('update', canvasLayer.needRedraw, canvasLayer)\r\n else listenedLayer.off('update', canvasLayer.needRedraw, canvasLayer)\r\n canvasLayer.listenedLayers[layerName] = listen\r\n }\r\n }\r\n\r\n // disconnect from previous geojson layers\r\n updateListeners(leafletLayer, false)\r\n\r\n leafletLayer.listenedLayers = {}\r\n leafletLayer.drawCalls = []\r\n if (leafletLayer.userData === undefined) leafletLayer.userData = {}\r\n if (leafletLayer.compatContext === undefined) leafletLayer.compatContext = {}\r\n\r\n leafletLayer.clearClickableFeatures()\r\n\r\n for (const d of drawCode) {\r\n /* eslint no-new-func: 0 */\r\n const drawCode = Function(`\r\n// define visible variables\r\nconst ctx = this;\r\nwith(this.proxy) { ${d.code} }\r\n`)\r\n\r\n if (d.feature) {\r\n const [srcLayer, srcFeature] = d.feature.split('?')\r\n leafletLayer.drawCalls.push((context) => {\r\n const layer = this.getLeafletLayerByName(srcLayer)\r\n if (!layer) return\r\n const feature = layer._features ? layer._features[srcFeature] : undefined\r\n if (!feature) return\r\n context.feature = feature\r\n drawCode.call(context)\r\n })\r\n // we'll have to listen source geojson layer 'update' event\r\n if (!_.has(leafletLayer.listenedLayers, srcLayer)) leafletLayer.listenedLayers[srcLayer] = false\r\n } else if (d.layer) {\r\n leafletLayer.drawCalls.push((context) => {\r\n const layer = this.getLeafletLayerByName(d.layer)\r\n if (!layer) return\r\n for (const feature of Object.values(layer._features)) {\r\n context.feature = feature\r\n drawCode.call(context)\r\n }\r\n })\r\n // we'll have to listen source geojson layer 'update' event\r\n if (!_.has(leafletLayer.listenedLayers, d.layer)) leafletLayer.listenedLayers[d.layer] = false\r\n }\r\n }\r\n\r\n if (!leafletLayer.onDrawLayer) {\r\n // build draw function for the layer\r\n leafletLayer.onDrawLayer = (info) => {\r\n // update listener states\r\n updateListeners(leafletLayer, true)\r\n\r\n const ctx = info.canvas.getContext('2d')\r\n // build context for draw code\r\n // here we merge global canvas layer context,\r\n // user defined context and current state context\r\n const context = Object.assign(\r\n // current state context\r\n {\r\n canvas: ctx,\r\n now: Date.now(),\r\n zoom: info.zoom,\r\n latLonToCanvas: leafletLayer.latLonToCanvas.bind(leafletLayer),\r\n clearClickableFeatures: leafletLayer.clearClickableFeatures.bind(leafletLayer),\r\n addClickableFeature: leafletLayer.addClickableFeature.bind(leafletLayer),\r\n userData: leafletLayer.userData\r\n },\r\n leafletLayer.compatContext,\r\n // global context\r\n this.canvasLayerDrawContext)\r\n\r\n // draw\r\n ctx.save()\r\n ctx.clearRect(0, 0, info.canvas.width, info.canvas.height)\r\n for (const draw of leafletLayer.drawCalls) draw(context)\r\n ctx.restore()\r\n }\r\n }\r\n\r\n leafletLayer.setAutoRedraw(autoRedraw)\r\n leafletLayer.needRedraw()\r\n },\r\n\r\n setCanvasLayerUserData (layer, userData) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.userData = Object.assign(leafletLayer.userData, userData)\r\n leafletLayer.needRedraw()\r\n },\r\n\r\n setCanvasLayerAutoRedraw (layer, autoRedraw) {\r\n const leafletLayer = typeof layer === 'string' ? this.getLeafletLayerByName(layer) : layer\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.setAutoRedraw(autoRedraw)\r\n },\r\n\r\n /* Compatibility methods */\r\n\r\n updateCanvasLayerDrawCode (layerName, newDrawCode, autoRedraw = false) {\r\n this.setCanvasLayerDrawCode(layerName, newDrawCode, autoRedraw)\r\n },\r\n\r\n setCanvasLayerContext (layerName, context) {\r\n const leafletLayer = this.getLeafletLayerByName(layerName)\r\n if (!leafletLayer) return\r\n\r\n leafletLayer.compatContext = context\r\n leafletLayer.needRedraw()\r\n }\r\n },\r\n\r\n created () {\r\n // a proxy to limit access to variables not defined in draw code scope\r\n this.canvasLayerDrawProxy = new Proxy(window, {\r\n get: (target, prop, receiver) => { return undefined }\r\n })\r\n // the base context we'll make available in draw code\r\n this.canvasLayerDrawContext = Object.assign({\r\n proxy: this.canvasLayerDrawProxy,\r\n // log: console.log,\r\n // Math constants\r\n Math: Math,\r\n // a few handy helpers for draw code\r\n vec2: (pointA, pointB) => { return { x: pointA.x - pointB.x, y: pointA.y - pointB.y } },\r\n len2: (vec2) => { return Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y) },\r\n scale2: (vec2, value) => { return { x: vec2.x * value, y: vec2.y * value } },\r\n norm2: (vec2) => {\r\n const len = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y)\r\n return { x: vec2.x / len, y: vec2.y / len }\r\n }\r\n }, CanvasDrawContext.get())\r\n\r\n this.registerLeafletConstructor(this.createLeafletCanvasLayer)\r\n },\r\n\r\n beforeDestroy () {\r\n }\r\n}\r\n"]}
|
|
@@ -8,124 +8,78 @@ var _lodash = require('lodash');
|
|
|
8
8
|
|
|
9
9
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
10
10
|
|
|
11
|
-
var _leaflet = require('leaflet');
|
|
12
|
-
|
|
13
|
-
var _leaflet2 = _interopRequireDefault(_leaflet);
|
|
14
|
-
|
|
15
11
|
var _path = require('path');
|
|
16
12
|
|
|
17
13
|
var _path2 = _interopRequireDefault(_path);
|
|
18
14
|
|
|
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');
|
|
15
|
+
var _client = require('../../../../core/client');
|
|
34
16
|
|
|
35
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
18
|
|
|
37
19
|
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
20
|
|
|
39
|
-
(0, _leafletFilelayer2.default)(null, _leaflet2.default, _togeojson2.default);
|
|
40
|
-
|
|
41
21
|
exports.default = {
|
|
22
|
+
methods: {
|
|
23
|
+
importFiles(filelist) {
|
|
24
|
+
var _this = this;
|
|
25
|
+
|
|
26
|
+
return _asyncToGenerator(function* () {
|
|
27
|
+
const acceptedFiles = yield _client.Reader.filter(filelist);
|
|
28
|
+
for (let i = 0; i < acceptedFiles.length; i++) {
|
|
29
|
+
const file = acceptedFiles[i];
|
|
30
|
+
try {
|
|
31
|
+
const content = yield _client.Reader.read(file);
|
|
32
|
+
const name = _path2.default.basename(file.name, _path2.default.extname(file.name));
|
|
33
|
+
const description = _lodash2.default.join(_lodash2.default.map(file.files, function (subfile) {
|
|
34
|
+
return subfile.name;
|
|
35
|
+
}), ',');
|
|
36
|
+
yield _this.addGeoJsonLayer({ name, description }, content);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
// nothing to do
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
42
|
+
}
|
|
43
|
+
},
|
|
42
44
|
mounted() {
|
|
43
|
-
var
|
|
45
|
+
var _this2 = this;
|
|
44
46
|
|
|
45
47
|
this.$on('map-ready', () => {
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// L.Proj.GeoJson instead of the L.geoJson.
|
|
54
|
-
layer: _leaflet2.default.geoJson,
|
|
55
|
-
// See http://leafletjs.com/reference.html#geojson-options
|
|
56
|
-
layerOptions: this.getGeoJsonOptions(),
|
|
57
|
-
// Add to map after loading
|
|
58
|
-
addToMap: false,
|
|
59
|
-
// File size limit in kb
|
|
60
|
-
fileSizeLimit: 1024 * 1024,
|
|
61
|
-
// Restrict accepted file formats (default: .geojson, .kml, and .gpx)
|
|
62
|
-
formats: ['.geojson', '.json', '.kml', '.gpx']
|
|
63
|
-
}, this.activityOptions.engine.fileLayers));
|
|
64
|
-
this.loaderControl.addTo(this.map);
|
|
65
|
-
// Hide the contoler
|
|
66
|
-
const loaderControlElements = document.getElementsByClassName('leaflet-control-filelayer');
|
|
67
|
-
if (loaderControlElements.length > 0) loaderControlElements[0].style.visibility = 'hidden';
|
|
68
|
-
/*
|
|
69
|
-
// Required to support drag'n'drop when not using built-in control
|
|
70
|
-
this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false)
|
|
71
|
-
this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false)
|
|
72
|
-
this.map._container.addEventListener('dragover', (event) => {
|
|
73
|
-
event.stopPropagation()
|
|
74
|
-
event.preventDefault()
|
|
75
|
-
}, false)
|
|
76
|
-
this.map._container.addEventListener('drop', (event) => {
|
|
77
|
-
event.stopPropagation()
|
|
78
|
-
event.preventDefault()
|
|
79
|
-
this.loaderControl.loader.loadMultiple(event.dataTransfer.files)
|
|
80
|
-
this.map.scrollWheelZoom.enable()
|
|
81
|
-
}, false)
|
|
82
|
-
*/
|
|
83
|
-
this.loaderControl.loader.on('data:loaded', (() => {
|
|
48
|
+
// Create a dummy dropFileInput element to enable puppeteer
|
|
49
|
+
const container = this.$refs.map;
|
|
50
|
+
const dropFileInput = document.createElement('input');
|
|
51
|
+
dropFileInput.setAttribute('id', 'dropFileInput');
|
|
52
|
+
dropFileInput.type = 'file';
|
|
53
|
+
dropFileInput.style.display = 'none';
|
|
54
|
+
dropFileInput.addEventListener('change', (() => {
|
|
84
55
|
var _ref = _asyncToGenerator(function* (event) {
|
|
85
|
-
|
|
86
|
-
const engine = {
|
|
87
|
-
type: 'geoJson',
|
|
88
|
-
isVisible: true,
|
|
89
|
-
realtime: true
|
|
90
|
-
};
|
|
91
|
-
const layer = {
|
|
92
|
-
name,
|
|
93
|
-
type: 'OverlayLayer',
|
|
94
|
-
icon: 'insert_drive_file',
|
|
95
|
-
scope: 'user',
|
|
96
|
-
featureId: '_id',
|
|
97
|
-
leaflet: engine,
|
|
98
|
-
// Avoid sharing reference to the same object although options are similar
|
|
99
|
-
// otherwise updating one will automatically update the other one
|
|
100
|
-
cesium: Object.assign({}, engine)
|
|
101
|
-
};
|
|
102
|
-
const geoJson = event.layer.toGeoJSON();
|
|
103
|
-
// Generate schema for properties
|
|
104
|
-
const schema = (0, _utils.generatePropertiesSchema)(geoJson, name);
|
|
105
|
-
_lodash2.default.set(layer, 'schema', { name, content: schema });
|
|
106
|
-
// Generate temporary IDs for features
|
|
107
|
-
const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson];
|
|
108
|
-
features.forEach(function (feature) {
|
|
109
|
-
feature._id = (0, _quasar.uid)().toString();
|
|
110
|
-
});
|
|
111
|
-
// Create an empty layer used as a container
|
|
112
|
-
yield _this.addLayer(layer);
|
|
113
|
-
// Set data
|
|
114
|
-
yield _this.updateLayer(name, geoJson);
|
|
115
|
-
// Zoom to it
|
|
116
|
-
_this.zoomToLayer(name);
|
|
56
|
+
yield _this2.importFiles(event.target.files);
|
|
117
57
|
});
|
|
118
58
|
|
|
119
59
|
return function (_x) {
|
|
120
60
|
return _ref.apply(this, arguments);
|
|
121
61
|
};
|
|
122
62
|
})());
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
63
|
+
container.appendChild(dropFileInput);
|
|
64
|
+
// Setup drag & drop
|
|
65
|
+
this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false);
|
|
66
|
+
this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false);
|
|
67
|
+
this.map._container.addEventListener('dragover', event => {
|
|
68
|
+
event.stopPropagation();
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
}, false);
|
|
71
|
+
this.map._container.addEventListener('drop', (() => {
|
|
72
|
+
var _ref2 = _asyncToGenerator(function* (event) {
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
yield _this2.importFiles(event.dataTransfer.files);
|
|
76
|
+
_this2.map.scrollWheelZoom.enable();
|
|
127
77
|
});
|
|
128
|
-
|
|
78
|
+
|
|
79
|
+
return function (_x2) {
|
|
80
|
+
return _ref2.apply(this, arguments);
|
|
81
|
+
};
|
|
82
|
+
})(), false);
|
|
129
83
|
});
|
|
130
84
|
}
|
|
131
85
|
};
|
|
@@ -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","filelist","acceptedFiles","Reader","filter","i","length","file","content","read","name","path","basename","extname","description","_","join","map","files","subfile","addGeoJsonLayer","error","mounted","$on","container","$refs","dropFileInput","document","createElement","setAttribute","type","style","display","addEventListener","event","target","appendChild","_container","scrollWheelZoom","disable","enable","stopPropagation","preventDefault","dataTransfer"],"mappings":";;;;;;AAAA;;;;AACA;;;;AACA;;;;;;kBAEe;AACbA,WAAS;AACDC,eAAN,CAAmBC,QAAnB,EAA6B;AAAA;;AAAA;AAC3B,cAAMC,gBAAgB,MAAMC,eAAOC,MAAP,CAAcH,QAAd,CAA5B;AACA,aAAK,IAAII,IAAI,CAAb,EAAgBA,IAAIH,cAAcI,MAAlC,EAA0CD,GAA1C,EAA+C;AAC7C,gBAAME,OAAOL,cAAcG,CAAd,CAAb;AACA,cAAI;AACF,kBAAMG,UAAU,MAAML,eAAOM,IAAP,CAAYF,IAAZ,CAAtB;AACA,kBAAMG,OAAOC,eAAKC,QAAL,CAAcL,KAAKG,IAAnB,EAAyBC,eAAKE,OAAL,CAAaN,KAAKG,IAAlB,CAAzB,CAAb;AACA,kBAAMI,cAAcC,iBAAEC,IAAF,CAAOD,iBAAEE,GAAF,CAAMV,KAAKW,KAAX,EAAkB;AAAA,qBAAWC,QAAQT,IAAnB;AAAA,aAAlB,CAAP,EAAmD,GAAnD,CAApB;AACA,kBAAM,MAAKU,eAAL,CAAqB,EAAEV,IAAF,EAAQI,WAAR,EAArB,EAA4CN,OAA5C,CAAN;AACD,WALD,CAKE,OAAOa,KAAP,EAAc;AACd;AACD;AACF;AAZ0B;AAa5B;AAdM,GADI;AAiBbC,YAAW;AAAA;;AACT,SAAKC,GAAL,CAAS,WAAT,EAAsB,MAAM;AAC1B;AACA,YAAMC,YAAY,KAAKC,KAAL,CAAWR,GAA7B;AACA,YAAMS,gBAAgBC,SAASC,aAAT,CAAuB,OAAvB,CAAtB;AACAF,oBAAcG,YAAd,CAA2B,IAA3B,EAAiC,eAAjC;AACAH,oBAAcI,IAAd,GAAqB,MAArB;AACAJ,oBAAcK,KAAd,CAAoBC,OAApB,GAA8B,MAA9B;AACAN,oBAAcO,gBAAd,CAA+B,QAA/B;AAAA,qCAAyC,WAAOC,KAAP,EAAiB;AACxD,gBAAM,OAAKlC,WAAL,CAAiBkC,MAAMC,MAAN,CAAajB,KAA9B,CAAN;AACD,SAFD;;AAAA;AAAA;AAAA;AAAA;AAGAM,gBAAUY,WAAV,CAAsBV,aAAtB;AACA;AACA,WAAKT,GAAL,CAASoB,UAAT,CAAoBJ,gBAApB,CAAqC,WAArC,EAAkD,MAAM,KAAKhB,GAAL,CAASqB,eAAT,CAAyBC,OAAzB,EAAxD,EAA4F,KAA5F;AACA,WAAKtB,GAAL,CAASoB,UAAT,CAAoBJ,gBAApB,CAAqC,WAArC,EAAkD,MAAM,KAAKhB,GAAL,CAASqB,eAAT,CAAyBE,MAAzB,EAAxD,EAA2F,KAA3F;AACA,WAAKvB,GAAL,CAASoB,UAAT,CAAoBJ,gBAApB,CAAqC,UAArC,EAAiDC,SAAS;AACxDA,cAAMO,eAAN;AACAP,cAAMQ,cAAN;AACD,OAHD,EAGG,KAHH;AAIA,WAAKzB,GAAL,CAASoB,UAAT,CAAoBJ,gBAApB,CAAqC,MAArC;AAAA,sCAA6C,WAAOC,KAAP,EAAiB;AAC5DA,gBAAMO,eAAN;AACAP,gBAAMQ,cAAN;AACA,gBAAM,OAAK1C,WAAL,CAAiBkC,MAAMS,YAAN,CAAmBzB,KAApC,CAAN;AACA,iBAAKD,GAAL,CAASqB,eAAT,CAAyBE,MAAzB;AACD,SALD;;AAAA;AAAA;AAAA;AAAA,YAKG,KALH;AAMD,KAxBD;AAyBD;AA3CY,C","file":"mixin.file-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport path from 'path'\r\nimport { Reader } from '../../../../core/client'\r\n\r\nexport default {\r\n methods: {\r\n async importFiles (filelist) {\r\n const acceptedFiles = await Reader.filter(filelist)\r\n for (let i = 0; i < acceptedFiles.length; i++) {\r\n const file = acceptedFiles[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 const description = _.join(_.map(file.files, subfile => subfile.name), ',')\r\n await this.addGeoJsonLayer({ name, description }, 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 = this.$refs.map\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"]}
|
|
@@ -90,7 +90,7 @@ exports.default = {
|
|
|
90
90
|
leafletOptions.updateFeature = function (feature, oldLayer) {
|
|
91
91
|
// A new feature is coming, create it
|
|
92
92
|
if (!oldLayer) return;
|
|
93
|
-
// An existing one is found, simply update styling, etc.
|
|
93
|
+
// An existing one is found, simply update styling, properties, etc.
|
|
94
94
|
leafletOptions.onEachFeature(feature, oldLayer);
|
|
95
95
|
if (oldLayer.setStyle) {
|
|
96
96
|
// Some vector layers can be used for points, eg circleMarker,
|
|
@@ -103,6 +103,14 @@ exports.default = {
|
|
|
103
103
|
oldLayer.setStyle(leafletOptions.style(feature));
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
const oldProperties = _lodash2.default.get(oldLayer, 'feature.properties');
|
|
107
|
+
const properties = _lodash2.default.get(feature, 'properties');
|
|
108
|
+
// Keep track of old properties
|
|
109
|
+
if (oldProperties && properties) {
|
|
110
|
+
_lodash2.default.forOwn(oldProperties, (value, key) => {
|
|
111
|
+
if (!_lodash2.default.has(properties, key)) _lodash2.default.set(properties, key, value);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
106
114
|
if (oldLayer.setIcon) {
|
|
107
115
|
// FIXME: updating icon in place requires to recreate it anyway, so for now we recreate the whole marker
|
|
108
116
|
// oldLayer.setIcon(_.get(leafletOptions.pointToLayer(feature, oldLayer.getLatLng()), 'options.icon'))
|
|
@@ -154,7 +162,6 @@ exports.default = {
|
|
|
154
162
|
} else {
|
|
155
163
|
leafletOptions.removeMissing = !options.probeService;
|
|
156
164
|
let initialized = !options.probeService; // If no probe reference, nothing to be initialized
|
|
157
|
-
let lastUpdateTime;
|
|
158
165
|
_lodash2.default.set(leafletOptions, 'source', (() => {
|
|
159
166
|
var _ref2 = _asyncToGenerator(function* (successCallback, errorCallback) {
|
|
160
167
|
// If the probe location is given by another service use it on initialization
|
|
@@ -168,11 +175,8 @@ exports.default = {
|
|
|
168
175
|
}
|
|
169
176
|
}
|
|
170
177
|
try {
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
174
|
-
successCallback((yield _this.getFeatures(options)));
|
|
175
|
-
}
|
|
178
|
+
// Then update features
|
|
179
|
+
successCallback((yield _this.getFeatures(options)));
|
|
176
180
|
} catch (error) {
|
|
177
181
|
errorCallback(error);
|
|
178
182
|
}
|
|
@@ -266,7 +270,10 @@ exports.default = {
|
|
|
266
270
|
},
|
|
267
271
|
processClusterLayerOptions(options) {
|
|
268
272
|
const leafletOptions = options.leaflet || options;
|
|
269
|
-
|
|
273
|
+
const clusterOptions = Object.assign({ type: 'markerClusterGroup' }, leafletOptions.cluster);
|
|
274
|
+
// Transfer pane if any
|
|
275
|
+
if (leafletOptions.pane) clusterOptions.clusterPane = leafletOptions.pane;
|
|
276
|
+
leafletOptions.container = this.createLeafletLayer(clusterOptions);
|
|
270
277
|
},
|
|
271
278
|
createLeafletGeoJsonLayer(options) {
|
|
272
279
|
var _this3 = this;
|
|
@@ -277,6 +284,17 @@ exports.default = {
|
|
|
277
284
|
if (leafletOptions.type !== 'geoJson') return;
|
|
278
285
|
|
|
279
286
|
try {
|
|
287
|
+
// min/max zoom are automatically managed on tiled layers by inheriting GridLayer
|
|
288
|
+
// on non-tiled layers we need to use a pane to manage it
|
|
289
|
+
const hasMinZoom = !!_lodash2.default.get(leafletOptions, 'minZoom');
|
|
290
|
+
const hasMaxZoom = !!_lodash2.default.get(leafletOptions, 'maxZoom');
|
|
291
|
+
if (!leafletOptions.tiled && (hasMinZoom || hasMaxZoom)) {
|
|
292
|
+
let pane = { name: options.name };
|
|
293
|
+
if (hasMinZoom) pane.minZoom = _lodash2.default.get(leafletOptions, 'minZoom');
|
|
294
|
+
if (hasMaxZoom) pane.maxZoom = _lodash2.default.get(leafletOptions, 'maxZoom');
|
|
295
|
+
leafletOptions.panes = [pane];
|
|
296
|
+
leafletOptions.pane = options.name;
|
|
297
|
+
}
|
|
280
298
|
// If not explicitely disable use defaults for clustering
|
|
281
299
|
if (!_lodash2.default.has(leafletOptions, 'cluster') && _this3.activityOptions.engine.cluster) {
|
|
282
300
|
// Merge existing config or create a new one on layer
|
|
@@ -323,7 +341,14 @@ exports.default = {
|
|
|
323
341
|
if (leafletOptions.realtime) {
|
|
324
342
|
// Build associated tile layer and bind required events
|
|
325
343
|
if (leafletOptions.tiled) {
|
|
326
|
-
|
|
344
|
+
// In our options minZoom/maxZoom can be set to false
|
|
345
|
+
// but Leaflet only expect it if fixed to a given number
|
|
346
|
+
const hasMinZoom = !!_lodash2.default.get(leafletOptions, 'minZoom');
|
|
347
|
+
const hasMaxZoom = !!_lodash2.default.get(leafletOptions, 'maxZoom');
|
|
348
|
+
let zoomLevelsToOmit = [];
|
|
349
|
+
if (!hasMinZoom) zoomLevelsToOmit.push('minZoom');
|
|
350
|
+
if (!hasMaxZoom) zoomLevelsToOmit.push('maxZoom');
|
|
351
|
+
const tiledLayer = new _TiledFeatureLayer.TiledFeatureLayer(_lodash2.default.omit(leafletOptions, zoomLevelsToOmit));
|
|
327
352
|
tiledLayer.setup(_this3, options);
|
|
328
353
|
layer.tiledLayer = tiledLayer;
|
|
329
354
|
layer.on('add', function () {
|
|
@@ -448,8 +473,15 @@ exports.default = {
|
|
|
448
473
|
var _ref6 = _asyncToGenerator(function* (geoJsonlayer) {
|
|
449
474
|
// Retrieve the layer
|
|
450
475
|
const layer = _this4.getLeafletLayerByName(geoJsonlayer.name);
|
|
451
|
-
//
|
|
452
|
-
if (layer.
|
|
476
|
+
// Update only the first time or when required according to data update interval
|
|
477
|
+
if (!layer.lastUpdateTime || !_this4.shouldSkipFeaturesUpdate(layer.lastUpdateTime, geoJsonlayer)) {
|
|
478
|
+
layer.lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
479
|
+
if (layer.tiledLayer) {
|
|
480
|
+
layer.tiledLayer.redraw();
|
|
481
|
+
} else {
|
|
482
|
+
layer.update();
|
|
483
|
+
}
|
|
484
|
+
}
|
|
453
485
|
});
|
|
454
486
|
|
|
455
487
|
return function (_x11) {
|