@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.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","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":";;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IAAYA,G;;;;;;;;AAEZ;AACA,MAAMC,kBAAkBC,kBAAEC,OAAF,CAAUF,eAAlC;AACAC,kBAAEC,OAAF,CAAUF,eAAV,GAA4B,UAAUG,OAAV,EAAmBC,OAAnB,EAA4B;AACtD,QAAMC,WAAWF,QAAQE,QAAzB;AACA,QAAMC,aAAaH,QAAQG,UAA3B;AACA,MAAID,YAAYC,UAAZ,IAA0BA,WAAWC,QAAzC,EAAmD;AACjD,QAAIF,SAASG,IAAT,KAAkB,YAAtB,EAAoC;AAClC,aAAO,IAAIP,kBAAEQ,QAAN,CAAe,CAACR,kBAAEC,OAAF,CAAUQ,eAAV,CAA0BL,SAASM,WAAnC,EAAgD,CAAhD,CAAD,CAAf,EACLC,OAAOC,MAAP,CAAc,EAAEC,OAAO,GAAT,EAAd,EAA8BV,QAAQW,KAAR,CAAcZ,OAAd,CAA9B,CADK,CAAP;AAED,KAHD,MAGO,IAAIE,SAASG,IAAT,KAAkB,OAAtB,EAA+B;AACpC,YAAMQ,QAAQ,IAAIf,kBAAEQ,QAAN,CAAe,EAAf,EAAmBG,OAAOC,MAAP,CAAc,EAAEI,MAAM,IAAR,EAAcH,OAAO,GAArB,EAAd,EAA0CV,QAAQW,KAAR,CAAcZ,OAAd,CAA1C,CAAnB,CAAd;AACAa,YAAME,YAAN,CAAmBjB,kBAAEC,OAAF,CAAUiB,cAAV,CAAyBd,SAASM,WAAlC,CAAnB,EAAmEL,WAAWc,MAA9E;AACA,aAAOJ,KAAP;AACD;AACF;AACD,MAAIX,YAAYC,UAAZ,IAA0BA,WAAWe,QAAzC,EAAmD;AACjD,QAAIhB,SAASG,IAAT,KAAkB,YAAtB,EAAoC;AAClC,aAAO,IAAIc,0BAAJ,CAAiBnB,OAAjB,EAA0BC,QAAQW,KAAR,CAAcZ,OAAd,CAA1B,CAAP;AACD;AACF;AACD,MAAIE,YAAYC,UAAZ,IAA0BA,WAAWiB,IAAzC,EAA+C;AAC7C,QAAIlB,SAASG,IAAT,KAAkB,SAAlB,IAA+BH,SAASG,IAAT,KAAkB,cAArD,EAAqE;AACnE,aAAO,IAAIgB,oBAAJ,CAAcrB,OAAd,EAAuBC,QAAQW,KAAR,CAAcZ,OAAd,CAAvB,CAAP;AACD;AACF;AACD,SAAOH,gBAAgBG,OAAhB,EAAyBC,OAAzB,CAAP;AACD,CAxBD;;kBA0Be;AACbqB,WAAS;AACPC,uCAAoCtB,OAApC,EAA6C;AAAA;;AAC3C,YAAMuB,iBAAiBvB,QAAQwB,OAAR,IAAmBxB,OAA1C;AACA;AACAuB,qBAAenB,IAAf,GAAsB,UAAtB;AACA;AACA,YAAMqB,KAAKC,iBAAEC,GAAF,CAAM3B,OAAN,EAAe,WAAf,EAA4B0B,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,IAAtB,EAA4B,KAA5B,CAA5B,CAAX;AACA,UAAIE,EAAJ,EAAQC,iBAAEE,GAAF,CAAML,cAAN,EAAsB,cAAtB,EAAuCM,OAAD,IAAaH,iBAAEC,GAAF,CAAME,OAAN,EAAe,gBAAgBJ,EAA/B,EAAmCC,iBAAEC,GAAF,CAAME,OAAN,EAAeJ,EAAf,CAAnC,CAAnD;AACR,YAAMK,YAAYJ,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,WAAtB,CAAlB;AACA;AACA,UAAI,OAAOO,SAAP,KAAqB,QAAzB,EAAmC;AACjCP,uBAAeO,SAAf,GAA2B,KAAKC,kBAAL,CAAwB,EAAE3B,MAAM0B,SAAR,EAAxB,CAA3B;AACD;AACD;AACA,UAAI,CAACJ,iBAAEM,GAAF,CAAMT,cAAN,EAAsB,eAAtB,CAAL,EAA6C;AAC3CA,uBAAeU,aAAf,GAA+B,UAAUJ,OAAV,EAAmBK,QAAnB,EAA6B;AAC1D;AACA,cAAI,CAACA,QAAL,EAAe;AACf;AACAX,yBAAeY,aAAf,CAA6BN,OAA7B,EAAsCK,QAAtC;AACA,cAAIA,SAASE,QAAb,EAAuB;AACrB;AACA;AACA,gBAAIP,QAAQ5B,QAAR,CAAiBG,IAAjB,KAA0B,OAA9B,EAAuC;AACrC;AACA;AACA;AACD,aAJD,MAIO;AACL8B,uBAASE,QAAT,CAAkBb,eAAeZ,KAAf,CAAqBkB,OAArB,CAAlB;AACD;AACF;AACD,cAAIK,SAASG,OAAb,EAAsB;AACpB;AACA;AACA;AACD;AACD;AACA,gBAAMC,iBAAiBZ,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,gBAAtB,EAAwC,KAAxC,CAAvB;AACA,cAAIe,cAAJ,EAAoB,OAAOJ,QAAP;AACpB;AACA,gBAAMK,UAAUb,iBAAEC,GAAF,CAAMO,QAAN,EAAgB,uBAAhB,CAAhB;AACA,gBAAM9B,OAAOsB,iBAAEC,GAAF,CAAME,OAAN,EAAe,eAAf,CAAb;AACA,cAAIzB,SAASmC,OAAb,EAAsB;AACtB,gBAAMhC,cAAcsB,QAAQ5B,QAAR,CAAiBM,WAArC;AACA;AACA,kBAAQH,IAAR;AACE,iBAAK,OAAL;AACE8B,uBAASM,SAAT,CAAmB3C,kBAAEC,OAAF,CAAUQ,eAAV,CAA0BC,WAA1B,CAAnB;AACA;AACF,iBAAK,YAAL;AACA,iBAAK,iBAAL;AACE;AACA,kBAAI,OAAO2B,SAASO,OAAhB,KAA4B,UAAhC,EAA4CP,SAASO,OAAT,CAAiBZ,OAAjB,EAA5C,KACKK,SAASQ,UAAT,CAAoB7C,kBAAEC,OAAF,CAAUQ,eAAV,CAA0BC,WAA1B,EAAuCH,SAAS,YAAT,GAAwB,CAAxB,GAA4B,CAAnE,CAApB;AACL;AACF,iBAAK,SAAL;AACA,iBAAK,cAAL;AACE8B,uBAASQ,UAAT,CAAoB7C,kBAAEC,OAAF,CAAUQ,eAAV,CAA0BC,WAA1B,EAAuCH,SAAS,SAAT,GAAqB,CAArB,GAAyB,CAAhE,CAApB;AACA;AAbJ;AAeA,iBAAO8B,QAAP;AACD,SA9CD;AA+CD;AACD;AACA,UAAIlC,QAAQ2C,OAAZ,EAAqB;AACnB;AACAjB,yBAAEE,GAAF,CAAML,cAAN,EAAsB,OAAtB,EAA+B,KAA/B;AACA;AACA,YAAIA,eAAeqB,KAAnB,EAA0B;AACxBrB,yBAAesB,aAAf,GAA+B,KAA/B;AACA;AACAnB,2BAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB;AAAA,yCAAgC,WAAOuB,eAAP,EAAwBC,aAAxB,EAA0C,CAAE,CAA5E;;AAAA;AAAA;AAAA;AAAA;AACA;AACAxB,yBAAeyB,aAAf,GAAgCC,SAAD,IAAe,KAAKC,WAAL,CAAiBxB,iBAAEyB,KAAF,CAAQ,EAAEF,SAAF,EAAR,EAAuBjD,OAAvB,CAAjB,CAA9C;AACD,SAND,MAMO;AACLuB,yBAAesB,aAAf,GAA+B,CAAC7C,QAAQoD,YAAxC;AACA,cAAIC,cAAc,CAACrD,QAAQoD,YAA3B,CAFK,CAEmC;AACxC,cAAIE,cAAJ;AACA5B,2BAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB;AAAA,0CAAgC,WAAOuB,eAAP,EAAwBC,aAAxB,EAA0C;AACxE;AACA,kBAAI,CAACM,WAAL,EAAkB;AAChB,oBAAI;AACF;AACAP,mCAAgB,MAAM,MAAKS,gBAAL,CAAsBvD,OAAtB,CAAtB;AACAqD,gCAAc,IAAd;AACD,iBAJD,CAIE,OAAOG,KAAP,EAAc;AACdT,gCAAcS,KAAd;AACD;AACF;AACD,kBAAI;AACF;AACA,oBAAI,CAACF,cAAD,IAAmB,CAAC,MAAKG,wBAAL,CAA8BH,cAA9B,EAA8CtD,OAA9C,CAAxB,EAAgF;AAC9EsD,mCAAiBI,WAAKC,cAAL,GAAsBC,KAAtB,EAAjB;AACAd,mCAAgB,MAAM,MAAKI,WAAL,CAAiBlD,OAAjB,CAAtB;AACD;AACF,eAND,CAME,OAAOwD,KAAP,EAAc;AACdT,8BAAcS,KAAd;AACD;AACF,aApBD;;AAAA;AAAA;AAAA;AAAA;AAqBD;AACF,OApCD,MAoCO,IAAIxD,QAAQL,GAAZ,EAAiB;AACtB;AACA+B,yBAAEE,GAAF,CAAML,cAAN,EAAsB,OAAtB,EAA+B,KAA/B;AACAG,yBAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB;AAAA,wCAAgC,WAAOuB,eAAP,EAAwBC,aAAxB,EAA0C,CAAE,CAA5E;;AAAA;AAAA;AAAA;AAAA;;AAEA,YAAIxB,eAAeqB,KAAnB,EAA0B;AACxBrB,yBAAesB,aAAf,GAA+B,KAA/B;AACA;AACAtB,yBAAeyB,aAAf,GAAgCa,KAAD,IAAW;AACxC,kBAAMC,eAAetD,OAAOC,MAAP,CAAc;AACjCsD,4BAAc/D,QAAQL,GAAR,CAAYqE,YADO,EACO;AACxCC,uBAAS,WAFwB,EAEX;AACtBC,oBAAO,GAAEL,MAAMM,KAAM,IAAGN,MAAMO,IAAK,IAAGP,MAAMQ,KAAM,IAAGR,MAAMS,IAAK,6BAH/B,CAG4D;AAH5D,aAAd,EAIlBtE,QAAQL,GAAR,CAAYmE,YAJM,CAArB;AAKA,mBAAOnE,IAAI4E,UAAJ,CAAevE,QAAQL,GAAR,CAAY6E,GAA3B,EAAgCxE,QAAQL,GAAR,CAAY8E,OAA5C,EAAqDzE,QAAQL,GAAR,CAAYiB,KAAjE,EAAwEkD,YAAxE,EAAsF,EAAEY,UAAU,KAAZ,EAAtF,CAAP;AACD,WAPD;AAQD,SAXD,MAWO,CACN;AACF,OAlBM,MAkBA,IAAIhD,iBAAEM,GAAF,CAAMT,cAAN,EAAsB,gBAAtB,CAAJ,EAA6C;AAClD,cAAMoD,iBAAiBjD,iBAAEkD,QAAF,CAAWlD,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,gBAAtB,CAAX,CAAvB;AACA,YAAIsD,iBAAJ;AACA;AACAnD,yBAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB;AAAA,wCAAgC,WAAOuB,eAAP,EAAwBC,aAAxB,EAA0C;AACxE,gBAAI;AACF,oBAAM+B,gBAAgBH,eAAe,EAAEI,MAAMrB,WAAKC,cAAL,EAAR,EAAf,CAAtB;AACA,kBAAI,CAACkB,iBAAD,IAAuBA,sBAAsBC,aAAjD,EAAiE;AAC/DD,oCAAoBC,aAApB;AACAhC,iCAAgB,MAAM,yBAAagC,aAAb,CAAtB;AACD;AACF,aAND,CAME,OAAOtB,KAAP,EAAc;AACdT,4BAAcS,KAAd;AACD;AACF,WAVD;;AAAA;AAAA;AAAA;AAAA;AAWA;AACA9B,yBAAEE,GAAF,CAAML,cAAN,EAAsB,OAAtB,EAA+B,KAA/B;AACD,OAjBM,MAiBA,IAAI,CAACG,iBAAEM,GAAF,CAAMT,cAAN,EAAsB,QAAtB,CAAL,EAAsC;AAC3CG,yBAAEE,GAAF,CAAML,cAAN,EAAsB,OAAtB,EAA+B,KAA/B;AACA;AACAG,yBAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB;AAAA,wCAAgC,WAAOuB,eAAP,EAAwBC,aAAxB,EAA0C,CAAE,CAA5E;;AAAA;AAAA;AAAA;AAAA;AACD;AACF,KA5IM;AA6IDiC,8BAAN,CAAkChF,OAAlC,EAA2C;AAAA;;AAAA;AACzC,cAAMuB,iBAAiBvB,QAAQwB,OAAR,IAAmBxB,OAA1C;AACA,cAAMiF,aAAavD,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,QAAtB,CAAnB;AACA,YAAIG,iBAAEwD,KAAF,CAAQD,UAAR,CAAJ,EAAyB;AACvB;AACAvD,2BAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB,EAAgC,EAAEnB,MAAM,mBAAR,EAA6B+E,UAAU,EAAvC,EAAhC;AACD,SAHD,MAGO,IAAI,OAAOF,UAAP,KAAsB,QAA1B,EAAoC;AAAE;AAC3C,cAAIG,IAAJ;AACA;AACA,cAAIpF,QAAQ2C,OAAZ,EAAqB;AACnByC,mBAAO,MAAM,OAAKlC,WAAL,CAAiBlD,OAAjB,CAAb;AACD,WAFD,MAEO;AAAE;AACPoF,mBAAO,MAAM,yBAAaH,UAAb,CAAb;AACD;AACDvD,2BAAEE,GAAF,CAAML,cAAN,EAAsB,QAAtB,EAAgC6D,IAAhC;AACD;AAfwC;AAgB1C,KA7JM;AA8JPC,+BAA4BrF,OAA5B,EAAqC;AACnC,YAAMuB,iBAAiBvB,QAAQwB,OAAR,IAAmBxB,OAA1C;AACAuB,qBAAeO,SAAf,GAA2B,KAAKC,kBAAL,CAAwBvB,OAAOC,MAAP,CAAc,EAAEL,MAAM,oBAAR,EAAd,EAA8CmB,eAAe+D,OAA7D,CAAxB,CAA3B;AACD,KAjKM;AAkKDC,6BAAN,CAAiCvF,OAAjC,EAA0C;AAAA;;AAAA;AACxC,cAAMuB,iBAAiBvB,QAAQwB,OAAR,IAAmBxB,OAA1C;AACA;AACA,YAAIuB,eAAenB,IAAf,KAAwB,SAA5B,EAAuC;;AAEvC,YAAI;AACF;AACA,cAAI,CAACsB,iBAAEM,GAAF,CAAMT,cAAN,EAAsB,SAAtB,CAAD,IAAqC,OAAKiE,eAAL,CAAqBC,MAArB,CAA4BH,OAArE,EAA8E;AAC5E;AACA,gBAAI/D,eAAe+D,OAAnB,EAA4B9E,OAAOC,MAAP,CAAcc,eAAe+D,OAA7B,EAAsC,OAAKE,eAAL,CAAqBC,MAArB,CAA4BH,OAAlE,EAA5B,KACK/D,eAAe+D,OAAf,GAAyB9E,OAAOC,MAAP,CAAc,EAAd,EAAkB,OAAK+E,eAAL,CAAqBC,MAArB,CAA4BH,OAA9C,CAAzB;AACN;AACD;AACA,cAAI/D,eAAe+D,OAAnB,EAA4B;AAC1B,mBAAKD,0BAAL,CAAgCrF,OAAhC;AACD;AACD;AACA,cAAIuB,eAAemE,QAAnB,EAA6B;AAC3B,mBAAKpE,kCAAL,CAAwCtB,OAAxC;AACD,WAFD,MAEO;AACL,kBAAM,OAAKgF,0BAAL,CAAgChF,OAAhC,CAAN;AACD;AACD;AACA,gBAAM2F,qBAAqBjE,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,UAAtB,CAA3B;AACA,cAAIoE,kBAAJ,EAAwB;AACtB;AACApE,2BAAeqD,QAAf,GAA0Be,mBAAmBC,GAAnB,CAAuB;AAAA,qBAAa;AAC5DC,wBAD4D,EAClDC,UAAUpE,iBAAEkD,QAAF,CAAWlD,iBAAEC,GAAF,CAAMJ,cAAN,EAAsBsE,QAAtB,CAAX;AADwC,eAAb;AAAA,aAAvB,CAA1B;AAGD;AACD,gBAAME,gBAAgBrE,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,gBAAtB,CAAtB;AACA,cAAIwE,aAAJ,EAAmB;AACjBxE,2BAAeyE,KAAf,CAAqBF,QAArB,GAAgCpE,iBAAEkD,QAAF,CAAWmB,aAAX,CAAhC;AACD;AACD,gBAAME,kBAAkBvE,iBAAEC,GAAF,CAAMJ,cAAN,EAAsB,kBAAtB,CAAxB;AACA,cAAI0E,eAAJ,EAAqB;AACnB1E,2BAAe2E,OAAf,CAAuBJ,QAAvB,GAAkCpE,iBAAEkD,QAAF,CAAWqB,eAAX,CAAlC;AACD;AACD;AACA,gBAAME,iBAAiB,OAAKC,iBAAL,CAAuBpG,OAAvB,CAAvB;AACAQ,iBAAO6F,IAAP,CAAYF,cAAZ,EAA4BG,OAA5B,CAAoC,eAAO;AACzC;AACA,gBAAI,CAAC5E,iBAAEM,GAAF,CAAMT,cAAN,EAAsBgF,GAAtB,CAAL,EAAiC7E,iBAAEE,GAAF,CAAML,cAAN,EAAsBgF,GAAtB,EAA2B7E,iBAAEC,GAAF,CAAMwE,cAAN,EAAsBI,GAAtB,CAA3B;AAClC,WAHD;AAIAhF,yBAAeiF,UAAf,GAA4B,OAAKC,0BAAL,CAAgClF,cAAhC,CAA5B;AACA,cAAIX,QAAQ,OAAKmB,kBAAL,CAAwB/B,OAAxB,CAAZ;;AAEA;AACA,cAAIuB,eAAemE,QAAnB,EAA6B;AAC3B;AACA,gBAAInE,eAAeqB,KAAnB,EAA0B;AACxB,oBAAM8D,aAAa,IAAIC,oCAAJ,CAAsBpF,cAAtB,CAAnB;AACAmF,yBAAWE,KAAX,CAAiB,MAAjB,EAAuB5G,OAAvB;AACAY,oBAAM8F,UAAN,GAAmBA,UAAnB;AACA9F,oBAAMiG,EAAN,CAAS,KAAT,EAAgB;AAAA,uBAAMH,WAAWI,KAAX,CAAiB,OAAKlB,GAAtB,CAAN;AAAA,eAAhB;AACAhF,oBAAMiG,EAAN,CAAS,QAAT,EAAmB;AAAA,uBAAMH,WAAWK,UAAX,CAAsB,OAAKnB,GAA3B,CAAN;AAAA,eAAnB;AACD;AACD;AACAhF,kBAAMiG,EAAN,CAAS,QAAT,EAAmB,UAACzB,IAAD;AAAA,qBAAU,OAAK4B,KAAL,CAAW,eAAX,EAA4BxG,OAAOC,MAAP,CAAc,EAAEG,OAAOZ,OAAT,EAAkBiH,cAAcrG,KAAhC,EAAd,EAAuDwE,IAAvD,CAA5B,CAAV;AAAA,aAAnB;AACA,gBAAI7D,eAAeO,SAAnB,EAA8BlB,MAAMsG,IAAN,CAAW,KAAX,EAAkB;AAAA,qBAAM3F,eAAeO,SAAf,CAAyBgF,KAAzB,CAA+B,OAAKlB,GAApC,CAAN;AAAA,aAAlB;AAC9B;AACAhF,kBAAMuG,SAAN,GAAkB;AAAA,qBAAO,EAAE/G,MAAM,mBAAR,EAA6B+E,UAAUzD,iBAAE0F,MAAF,CAASxG,MAAMyG,SAAf,CAAvC,EAAP;AAAA,aAAlB;AACAzG,kBAAM0G,WAAN,GAAoB;AAAA,qBAAM1G,MAAM2G,UAAN,CAAiB,IAAjB,EAAuB,EAAEnH,MAAM,mBAAR,EAA6B+E,UAAU,EAAvC,EAAvB,CAAN;AAAA,aAApB;AACAvE,kBAAM4G,QAAN,GAAiB,UAACC,YAAD;AAAA,qBAAkB7G,MAAM2G,UAAN,CAAiB,IAAjB,EAAuBE,aAAaN,SAAb,EAAvB,CAAlB;AAAA,aAAjB;AACA;AACAvG,kBAAM8G,MAAN;AACD,WAlBD,MAkBO;AACL;AACA,gBAAInG,eAAe+D,OAAf,IAA0B/D,eAAeO,SAA7C,EAAwD;AACtDP,6BAAeO,SAAf,CAAyB0F,QAAzB,CAAkC5G,KAAlC;AACAA,sBAAQW,eAAeO,SAAvB;AACD;AACF;AACD;AACA,cAAIP,eAAeoG,aAAnB,EAAkC;AAChC/G,oBAAQ,OAAKmB,kBAAL,CAAwBvB,OAAOC,MAAP,CAAc,EAAEL,MAAM,6BAAR,EAAuCwH,QAAQhH,KAA/C,EAAd,EAAsEW,eAAeoG,aAArF,CAAxB,CAAR;AACD;AACD,iBAAO/G,KAAP;AACD,SAzED,CAyEE,OAAO4C,KAAP,EAAc;AACdqE,6BAAOrE,KAAP,CAAaA,KAAb;AACA,iBAAO,IAAP;AACD;AAjFuC;AAkFzC,KApPM;AAqPP4C,sBAAmBpG,UAAU,EAA7B,EAAiC;AAC/B,YAAM8H,iBAAiB;AACrB3F,uBAAe,CAACN,OAAD,EAAUjB,KAAV,KAAoB;AACjC;AACA,0CAAoBA,KAApB,EAA2BmH,qBAAcC,OAAzC;AACA;AACA,cAAI,OAAO,KAAKC,gBAAZ,KAAiC,UAArC,EAAiD,KAAKA,gBAAL,CAAsBpG,OAAtB,EAA+BjB,KAA/B,EAAsCZ,OAAtC;AACjD;AACA;AACA,cAAIY,MAAMsH,QAAN,EAAJ,EAAsBtH,MAAMuH,WAAN;AACtB,gBAAMnC,QAAQ,KAAKoC,aAAL,CAAmB,OAAnB,EAA4BvG,OAA5B,EAAqCjB,KAArC,EAA4CZ,OAA5C,CAAd;AACA,cAAIgG,KAAJ,EAAW;AACT;AACA,kBAAMqC,UAAWzH,MAAMsH,QAAN,MAAoBtH,MAAM0H,WAAN,EAArC;AACA1H,kBAAM2H,SAAN,CAAgBvC,KAAhB;AACA,0CAAkBpF,MAAMsH,QAAN,EAAlB,EAAoCH,qBAAcS,KAAlD,EAAyD,IAAzD,EAA+DxI,OAA/D;AACA,gBAAIqI,OAAJ,EAAazH,MAAM6H,SAAN;AACd;AACD;AACA,cAAI7H,MAAM8H,UAAN,EAAJ,EAAwB9H,MAAM+H,aAAN;AACxB,gBAAMzC,UAAU,KAAKkC,aAAL,CAAmB,SAAnB,EAA8BvG,OAA9B,EAAuCjB,KAAvC,EAA8CZ,OAA9C,CAAhB;AACA,cAAIkG,OAAJ,EAAa;AACX;AACA,kBAAMmC,UAAWzH,MAAM8H,UAAN,MAAsB9H,MAAMgI,aAAN,EAAvC;AACAhI,kBAAMiI,WAAN,CAAkB3C,OAAlB;AACA,0CAAkBtF,MAAM8H,UAAN,EAAlB,EAAsCX,qBAAce,OAApD,EAA6D,IAA7D,EAAmE9I,OAAnE;AACA,gBAAIqI,OAAJ,EAAazH,MAAMmI,WAAN;AACd;AACD,wCAAkBnI,KAAlB,EAAyBmH,qBAAcC,OAAvC,EAAgD,IAAhD,EAAsDhI,OAAtD;AACD,SA5BoB;AA6BrBW,eAAQkB,OAAD,IAAa;AAClB,iBAAO,KAAKuG,aAAL,CAAmB,cAAnB,EAAmCvG,OAAnC,EAA4C7B,OAA5C,CAAP;AACD,SA/BoB;AAgCrBgJ,sBAAc,CAACnH,OAAD,EAAUoH,MAAV,KAAqB;AACjC,iBAAO,KAAKb,aAAL,CAAmB,aAAnB,EAAkCvG,OAAlC,EAA2CoH,MAA3C,EAAmDjJ,OAAnD,CAAP;AACD;AAlCoB,OAAvB;;AAqCA,aAAO8H,cAAP;AACD,KA5RM;AA6RPoB,gBAAaC,IAAb,EAAmBC,OAAnB,EAA4BC,MAA5B,EAAoC;AAClC;AACA,UAAIzI,QAAQ,KAAK0I,qBAAL,CAA2BH,IAA3B,CAAZ;AACA,UAAI,CAACvI,KAAL,EAAY,OAHsB,CAGf;AACnB;AACA,UAAIkB,SAAJ;AACA,UAAI,OAAOlB,MAAM2I,SAAb,KAA2B,UAA/B,EAA2C;AACzCzH,oBAAYlB,KAAZ;AACAA,gBAAQkB,UAAUyH,SAAV,GAAsBC,IAAtB,CAA2B5I,SAASA,MAAM6I,UAAN,KAAqB3H,SAAzD,CAAR;AACD;AACD;;;;AAIA,UAAIuH,UAAW,OAAOzI,MAAMyI,MAAb,KAAwB,UAAvC,EAAoD;AAClD,YAAIlE,WAAYiE,QAAQhJ,IAAR,KAAiB,mBAAjB,GAAuCgJ,QAAQjE,QAA/C,GAA0D,CAACiE,OAAD,CAA1E;AACA;AACA;AACAjE,mBAAWA,SAASuE,MAAT,CAAgB7H,WAAWjB,MAAM+I,QAAN,CAAe/I,MAAMZ,OAAN,CAAc4J,YAAd,CAA2B/H,OAA3B,CAAf,CAA3B,CAAX;AACAjB,cAAMyI,MAAN,CAAalE,QAAb;AACD,OAND,MAMO,IAAI,OAAOvE,MAAM2G,UAAb,KAA4B,UAAhC,EAA4C;AACjD3G,cAAM2G,UAAN,CAAiB3G,MAAMZ,OAAN,CAAc6C,aAA/B,EAA8CuG,WAAW,KAAKS,SAAL,CAAeV,IAAf,CAAzD;AACD;AACF,KApTM;AAqTPW,sCAAmC/E,IAAnC,EAAyC;AAAA;;AACvC,YAAMgF,gBAAgBrI,iBAAE0F,MAAF,CAAS,KAAK4C,MAAd,EAAsBN,MAAtB,CAA6B,oBAAK;AACtD,wBAAgB,SADsC;AAEtD,4BAAoB,IAFkC;AAGtDO,aAAK,CAAE;AACL,UAAE,0BAA0B,EAAEC,SAAS,IAAX,EAA5B,EADG,EAEH,EAAEvH,SAAS,EAAEuH,SAAS,IAAX,EAAX,EAA8BC,WAAW,EAAED,SAAS,IAAX,EAAzC,EAFG,CAHiD;AAOtDE,mBAAW;AAP2C,OAAL,CAA7B,CAAtB;AASAL,oBAAczD,OAAd;AAAA,sCAAsB,WAAM+D,YAAN,EAAsB;AAC1C;AACA,gBAAMzJ,QAAQ,OAAK0I,qBAAL,CAA2Be,aAAalB,IAAxC,CAAd;AACA;AACA,cAAIvI,MAAM8F,UAAV,EAAsB9F,MAAM8F,UAAN,CAAiB4D,MAAjB,GAAtB,KACK1J,MAAM8G,MAAN;AACN,SAND;;AAAA;AAAA;AAAA;AAAA;AAOD;AAtUM,GADI;AAyUb6C,YAAW;AACT,SAAKC,0BAAL,CAAgC,KAAKjF,yBAArC;AACA,SAAKkF,OAAL,CAAaC,GAAb,CAAiB,2BAAjB,EAA8C,KAAKZ,iCAAnD;AACD,GA5UY;AA6Uba,kBAAiB;AACf,SAAKF,OAAL,CAAaG,IAAb,CAAkB,2BAAlB,EAA+C,KAAKC,iCAApD;AACD;AA/UY,C","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, 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 // 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"]}
|
|
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","forOwn","value","key","setIcon","staticGeometry","oldType","setLatLng","setData","setLatLngs","service","tiled","removeMissing","successCallback","errorCallback","featureSource","baseQuery","getFeatures","merge","probeService","initialized","getProbeFeatures","error","query","searchParams","OUTPUTFORMAT","outputFormat","SRSNAME","BBOX","south","west","north","east","GetFeature","url","version","xml2json","sourceCompiler","template","lastFetchedSource","sourceToFetch","time","Time","getCurrentTime","processGeoJsonLayerOptions","dataSource","isNil","features","data","processClusterLayerOptions","clusterOptions","cluster","pane","clusterPane","createLeafletGeoJsonLayer","hasMinZoom","hasMaxZoom","name","minZoom","maxZoom","panes","activityOptions","engine","realtime","layerStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","geoJsonOptions","getGeoJsonOptions","keys","forEach","layerStyle","convertFromSimpleStyleSpec","zoomLevelsToOmit","push","tiledLayer","TiledFeatureLayer","omit","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","geoJson","remove","getLeafletLayerByName","getLayers","find","_container","filter","getLayer","getFeatureId","toGeoJson","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","$or","$exists","variables","isVisible","geoJsonlayer","lastUpdateTime","shouldSkipFeaturesUpdate","clone","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 // Keep track of old properties\r\n if (oldProperties && properties) {\r\n _.forOwn(oldProperties, (value, key) => {\r\n if (!_.has(properties, key)) _.set(properties, key, value)\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 // 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 _.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 // Then update features\r\n successCallback(await this.getFeatures(options))\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 const clusterOptions = Object.assign({ type: 'markerClusterGroup' }, leafletOptions.cluster)\r\n // Transfer pane if any\r\n if (leafletOptions.pane) clusterOptions.clusterPane = leafletOptions.pane\r\n leafletOptions.container = this.createLeafletLayer(clusterOptions)\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 // min/max zoom are automatically managed on tiled layers by inheriting GridLayer\r\n // on non-tiled layers we need to use a pane to manage it\r\n const hasMinZoom = !!_.get(leafletOptions, 'minZoom')\r\n const hasMaxZoom = !!_.get(leafletOptions, 'maxZoom')\r\n if (!leafletOptions.tiled && (hasMinZoom || hasMaxZoom)) {\r\n let pane = { name: options.name }\r\n if (hasMinZoom) pane.minZoom = _.get(leafletOptions, 'minZoom')\r\n if (hasMaxZoom) pane.maxZoom = _.get(leafletOptions, 'maxZoom')\r\n leafletOptions.panes = [pane]\r\n leafletOptions.pane = options.name\r\n }\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 // In our options minZoom/maxZoom can be set to false\r\n // but Leaflet only expect it if fixed to a given number\r\n const hasMinZoom = !!_.get(leafletOptions, 'minZoom')\r\n const hasMaxZoom = !!_.get(leafletOptions, 'maxZoom')\r\n let zoomLevelsToOmit = []\r\n if (!hasMinZoom) zoomLevelsToOmit.push('minZoom')\r\n if (!hasMaxZoom) zoomLevelsToOmit.push('maxZoom')\r\n const tiledLayer = new TiledFeatureLayer(_.omit(leafletOptions, zoomLevelsToOmit))\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 // Update only the first time or when required according to data update interval\r\n if (!layer.lastUpdateTime || !this.shouldSkipFeaturesUpdate(layer.lastUpdateTime, geoJsonlayer)) {\r\n layer.lastUpdateTime = Time.getCurrentTime().clone()\r\n if (layer.tiledLayer) {\r\n layer.tiledLayer.redraw()\r\n } else {\r\n layer.update()\r\n }\r\n }\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"]}
|
|
@@ -12,6 +12,8 @@ var _lodash = require('lodash');
|
|
|
12
12
|
|
|
13
13
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
14
14
|
|
|
15
|
+
var _client = require('../../../../core/client');
|
|
16
|
+
|
|
15
17
|
var _utils = require('../../utils');
|
|
16
18
|
|
|
17
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -23,6 +25,10 @@ exports.default = {
|
|
|
23
25
|
let popup;
|
|
24
26
|
if (properties) {
|
|
25
27
|
const leafletOptions = options.leaflet || options;
|
|
28
|
+
// Check if explicitely disabled first
|
|
29
|
+
if (_lodash2.default.has(leafletOptions, 'popup') && !_lodash2.default.get(leafletOptions, 'popup')) return;
|
|
30
|
+
if (_lodash2.default.has(properties, 'popup') && !_lodash2.default.get(properties, 'popup')) return;
|
|
31
|
+
// Otherwise merge options
|
|
26
32
|
const popupStyle = Object.assign({}, this.activityOptions.engine.popup, leafletOptions.popup, properties.popup);
|
|
27
33
|
// Default content
|
|
28
34
|
let html = popupStyle.html;
|
|
@@ -30,7 +36,7 @@ exports.default = {
|
|
|
30
36
|
if (!html) {
|
|
31
37
|
if (popupStyle.template) {
|
|
32
38
|
const compiler = popupStyle.compiler;
|
|
33
|
-
html = compiler({ properties, feature, $t: this.$t });
|
|
39
|
+
html = compiler({ properties, feature, $t: this.$t, Units: _client.Units, Time: _client.Time });
|
|
34
40
|
} else if (popupStyle.pick) {
|
|
35
41
|
properties = _lodash2.default.pick(properties, popupStyle.pick);
|
|
36
42
|
} else if (popupStyle.omit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.popup.js"],"names":["methods","getDefaultPopup","feature","layer","options","properties","popup","leafletOptions","leaflet","popupStyle","Object","assign","activityOptions","engine","html","template","compiler","$t","
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.popup.js"],"names":["methods","getDefaultPopup","feature","layer","options","properties","popup","leafletOptions","leaflet","_","has","get","popupStyle","Object","assign","activityOptions","engine","html","template","compiler","$t","Units","Time","pick","omit","L","maxHeight","maxWidth","autoPan","setContent","created","registerStyle"],"mappings":";;;;;;AAAA;;;;AACA;;;;AACA;;AACA;;;;kBAEe;AACbA,WAAS;AACPC,oBAAiBC,OAAjB,EAA0BC,KAA1B,EAAiCC,OAAjC,EAA0C;AACxC,UAAIC,aAAaH,QAAQG,UAAzB;AACA,UAAIC,KAAJ;AACA,UAAID,UAAJ,EAAgB;AACd,cAAME,iBAAiBH,QAAQI,OAAR,IAAmBJ,OAA1C;AACA;AACA,YAAIK,iBAAEC,GAAF,CAAMH,cAAN,EAAsB,OAAtB,KAAkC,CAACE,iBAAEE,GAAF,CAAMJ,cAAN,EAAsB,OAAtB,CAAvC,EAAuE;AACvE,YAAIE,iBAAEC,GAAF,CAAML,UAAN,EAAkB,OAAlB,KAA8B,CAACI,iBAAEE,GAAF,CAAMN,UAAN,EAAkB,OAAlB,CAAnC,EAA+D;AAC/D;AACA,cAAMO,aAAaC,OAAOC,MAAP,CAAc,EAAd,EAAkB,KAAKC,eAAL,CAAqBC,MAArB,CAA4BV,KAA9C,EACjBC,eAAeD,KADE,EACKD,WAAWC,KADhB,CAAnB;AAEA;AACA,YAAIW,OAAOL,WAAWK,IAAtB;AACA;AACA,YAAI,CAACA,IAAL,EAAW;AACT,cAAIL,WAAWM,QAAf,EAAyB;AACvB,kBAAMC,WAAWP,WAAWO,QAA5B;AACAF,mBAAOE,SAAS,EAAEd,UAAF,EAAcH,OAAd,EAAuBkB,IAAI,KAAKA,EAAhC,EAAoCC,oBAApC,EAA2CC,kBAA3C,EAAT,CAAP;AACD,WAHD,MAGO,IAAIV,WAAWW,IAAf,EAAqB;AAC1BlB,yBAAaI,iBAAEc,IAAF,CAAOlB,UAAP,EAAmBO,WAAWW,IAA9B,CAAb;AACD,WAFM,MAEA,IAAIX,WAAWY,IAAf,EAAqB;AAC1BnB,yBAAaI,iBAAEe,IAAF,CAAOnB,UAAP,EAAmBO,WAAWY,IAA9B,CAAb;AACD;AACF;AACD;AACA,YAAI,CAACP,IAAL,EAAWA,OAAO,yBAAaZ,UAAb,CAAP;AACX,YAAI,CAACY,IAAL,EAAW,OAAO,IAAP,CAvBG,CAuBS;AACvB;AACA,YAAIL,WAAWR,OAAf,EAAwB;AACtBE,kBAAQmB,kBAAEnB,KAAF,CAAQM,WAAWR,OAAnB,EAA4BD,KAA5B,CAAR;AACD,SAFD,MAEO;AACLG,kBAAQmB,kBAAEnB,KAAF,CAAQ;AACdoB,uBAAW,GADG;AAEdC,sBAAU,GAFI;AAGdC,qBAAS;AAHK,WAAR,EAILzB,KAJK,CAAR;AAKD;AACDG,cAAMuB,UAAN,CAAiBZ,IAAjB;AACD;AACD,aAAOX,KAAP;AACD;AAzCM,GADI;AA4CbwB,YAAW;AACT,SAAKC,aAAL,CAAmB,OAAnB,EAA4B,KAAK9B,eAAjC;AACD;AA9CY,C","file":"mixin.popup.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport { Time, Units } from '../../../../core/client'\r\nimport { getHtmlTable } from '../../utils'\r\n\r\nexport default {\r\n methods: {\r\n getDefaultPopup (feature, layer, options) {\r\n let properties = feature.properties\r\n let popup\r\n if (properties) {\r\n const leafletOptions = options.leaflet || options\r\n // Check if explicitely disabled first\r\n if (_.has(leafletOptions, 'popup') && !_.get(leafletOptions, 'popup')) return\r\n if (_.has(properties, 'popup') && !_.get(properties, 'popup')) return\r\n // Otherwise merge options\r\n const popupStyle = Object.assign({}, this.activityOptions.engine.popup,\r\n leafletOptions.popup, properties.popup)\r\n // Default content\r\n let html = popupStyle.html\r\n // Custom list given ?\r\n if (!html) {\r\n if (popupStyle.template) {\r\n const compiler = popupStyle.compiler\r\n html = compiler({ properties, feature, $t: this.$t, Units, Time })\r\n } else if (popupStyle.pick) {\r\n properties = _.pick(properties, popupStyle.pick)\r\n } else if (popupStyle.omit) {\r\n properties = _.omit(properties, popupStyle.omit)\r\n }\r\n }\r\n // Default HTML table if no template\r\n if (!html) html = getHtmlTable(properties)\r\n if (!html) return null // Nothing to be displayed\r\n // Configured or default style\r\n if (popupStyle.options) {\r\n popup = L.popup(popupStyle.options, layer)\r\n } else {\r\n popup = L.popup({\r\n maxHeight: 400,\r\n maxWidth: 400,\r\n autoPan: false\r\n }, layer)\r\n }\r\n popup.setContent(html)\r\n }\r\n return popup\r\n }\r\n },\r\n created () {\r\n this.registerStyle('popup', this.getDefaultPopup)\r\n }\r\n}\r\n"]}
|
|
@@ -74,7 +74,7 @@ exports.default = {
|
|
|
74
74
|
_lodash2.default.set(convertedStyle, 'type', 'marker');
|
|
75
75
|
}
|
|
76
76
|
// Manage panes to make z-index work for all types of layers,
|
|
77
|
-
// pane name
|
|
77
|
+
// pane name can actually be a z-index value
|
|
78
78
|
if (_lodash2.default.has(convertedStyle, 'pane')) _lodash2.default.set(convertedStyle, 'pane', _lodash2.default.get(convertedStyle, 'pane').toString());
|
|
79
79
|
return convertedStyle;
|
|
80
80
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.style.js"],"names":["methods","createMarkerFromStyle","latlng","markerStyle","feature","icon","iconOptions","options","_","get","L","type","Object","assign","omit","marker","convertFromSimpleStyleSpec","style","inPlace","convertedStyle","isHtml","has","hasClass","isFontAwesome","isIconSpec","forOwn","value","key","LeafletStyleMappings","mapping","Array","isArray","set","unset","startsWith","toString","getDefaultMarker","properties","leafletOptions","leaflet","activityOptions","engine","pointStyle","layerStyle","template","forEach","entry","property","compiler","chroma","pane","getDefaultStyle","featureStyle","created","registerStyle"],"mappings":"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","file":"mixin.style.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport chroma from 'chroma-js'\r\nimport { LeafletStyleMappings } from '../../utils'\r\n\r\nexport default {\r\n methods: {\r\n createMarkerFromStyle (latlng, markerStyle, feature) {\r\n if (markerStyle) {\r\n let icon = markerStyle.icon\r\n // Parse icon options to get icon object if any\r\n if (icon) {\r\n const iconOptions = icon.options || icon\r\n const options = markerStyle.options || markerStyle\r\n icon = _.get(L, icon.type)(iconOptions)\r\n return _.get(L, markerStyle.type || 'marker')(latlng, Object.assign(_.omit(options, ['icon']), { icon }))\r\n } else {\r\n const options = markerStyle.options || markerStyle\r\n return _.get(L, markerStyle.type || 'marker')(latlng, options)\r\n }\r\n } else {\r\n return L.marker(latlng)\r\n }\r\n },\r\n convertFromSimpleStyleSpec (style, inPlace) {\r\n if (!style) return {}\r\n const convertedStyle = (inPlace ? style : {})\r\n // Compute flags first because if updating in place options in style spec will be replaced\r\n const isHtml = _.has(style, 'icon-html')\r\n const hasClass = _.has(style, 'icon-class')\r\n const isFontAwesome = _.has(style, 'icon-classes')\r\n let isIconSpec = false\r\n _.forOwn(style, (value, key) => {\r\n if (_.has(LeafletStyleMappings, key)) {\r\n const mapping = _.get(LeafletStyleMappings, key)\r\n // Specific options\r\n switch (key) {\r\n case 'icon-size':\r\n case 'icon-anchor':\r\n case 'marker-size':\r\n if (!Array.isArray(value)) value = [value, value]\r\n _.set(convertedStyle, mapping, value)\r\n break\r\n default:\r\n _.set(convertedStyle, mapping, value)\r\n }\r\n if (inPlace) _.unset(style, key)\r\n // In this case we have a marker spec\r\n if (mapping.startsWith('icon')) isIconSpec = true\r\n }\r\n })\r\n // Select the right icon type based on options\r\n if (isIconSpec) {\r\n _.set(convertedStyle, 'icon.type', (isFontAwesome ? 'icon.fontAwesome' : isHtml ? 'divIcon' : 'icon'))\r\n // Leaflet adds a default background style but we prefer to remove it\r\n if (isHtml && !hasClass) _.set(convertedStyle, 'icon.options.className', '')\r\n _.set(convertedStyle, 'type', 'marker')\r\n }\r\n // Manage panes to make z-index work for all types of layers,\r\n // pane name is actually a z-index value\r\n if (_.has(convertedStyle, 'pane')) _.set(convertedStyle, 'pane', _.get(convertedStyle, 'pane').toString())\r\n return convertedStyle\r\n },\r\n getDefaultMarker (feature, latlng, options) {\r\n const properties = feature.properties\r\n const leafletOptions = options.leaflet || options\r\n const style = Object.assign({}, this.activityOptions.engine.pointStyle,\r\n leafletOptions.layerStyle,\r\n this.convertFromSimpleStyleSpec(feature.style || feature.properties))\r\n\r\n // We allow to template style properties according to feature,\r\n // because it can be slow you have to specify a subset of properties\r\n if (leafletOptions.template) {\r\n leafletOptions.template.forEach(entry => {\r\n // Perform templating, set using simple spec mapping first then raw if property not found\r\n _.set(style, _.get(LeafletStyleMappings, entry.property, entry.property), entry.compiler({ properties, feature, chroma }))\r\n })\r\n }\r\n // We manage panes for z-index, so we need to forward it to marker options\r\n if (leafletOptions.pane) style.pane = leafletOptions.pane\r\n return (latlng ? this.createMarkerFromStyle(latlng, style) : style)\r\n },\r\n getDefaultStyle (feature, options) {\r\n const properties = feature.properties\r\n const leafletOptions = options.leaflet || options\r\n const style = Object.assign({}, this.activityOptions.engine.featureStyle,\r\n leafletOptions.layerStyle,\r\n this.convertFromSimpleStyleSpec(feature.style || feature.properties))\r\n\r\n // We allow to template style properties according to feature,\r\n // because it can be slow you have to specify a subset of properties\r\n if (leafletOptions.template) {\r\n leafletOptions.template.forEach(entry => {\r\n // Perform templating, set using simple spec mapping first then raw if property not found\r\n _.set(style, _.get(LeafletStyleMappings, entry.property, entry.property), entry.compiler({ properties, feature, chroma }))\r\n })\r\n }\r\n // We manage panes for z-index, so we need to forward it to marker options\r\n if (leafletOptions.pane) style.pane = leafletOptions.pane\r\n return style\r\n }\r\n },\r\n created () {\r\n this.registerStyle('markerStyle', this.getDefaultMarker)\r\n this.registerStyle('featureStyle', this.getDefaultStyle)\r\n // Perform required conversion for default feature styling\r\n if (this.activityOptions.engine.featureStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.featureStyle, 'update-in-place')\r\n if (this.activityOptions.engine.pointStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.pointStyle, 'update-in-place')\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.style.js"],"names":["methods","createMarkerFromStyle","latlng","markerStyle","feature","icon","iconOptions","options","_","get","L","type","Object","assign","omit","marker","convertFromSimpleStyleSpec","style","inPlace","convertedStyle","isHtml","has","hasClass","isFontAwesome","isIconSpec","forOwn","value","key","LeafletStyleMappings","mapping","Array","isArray","set","unset","startsWith","toString","getDefaultMarker","properties","leafletOptions","leaflet","activityOptions","engine","pointStyle","layerStyle","template","forEach","entry","property","compiler","chroma","pane","getDefaultStyle","featureStyle","created","registerStyle"],"mappings":"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","file":"mixin.style.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport chroma from 'chroma-js'\r\nimport { LeafletStyleMappings } from '../../utils'\r\n\r\nexport default {\r\n methods: {\r\n createMarkerFromStyle (latlng, markerStyle, feature) {\r\n if (markerStyle) {\r\n let icon = markerStyle.icon\r\n // Parse icon options to get icon object if any\r\n if (icon) {\r\n const iconOptions = icon.options || icon\r\n const options = markerStyle.options || markerStyle\r\n icon = _.get(L, icon.type)(iconOptions)\r\n return _.get(L, markerStyle.type || 'marker')(latlng, Object.assign(_.omit(options, ['icon']), { icon }))\r\n } else {\r\n const options = markerStyle.options || markerStyle\r\n return _.get(L, markerStyle.type || 'marker')(latlng, options)\r\n }\r\n } else {\r\n return L.marker(latlng)\r\n }\r\n },\r\n convertFromSimpleStyleSpec (style, inPlace) {\r\n if (!style) return {}\r\n const convertedStyle = (inPlace ? style : {})\r\n // Compute flags first because if updating in place options in style spec will be replaced\r\n const isHtml = _.has(style, 'icon-html')\r\n const hasClass = _.has(style, 'icon-class')\r\n const isFontAwesome = _.has(style, 'icon-classes')\r\n let isIconSpec = false\r\n _.forOwn(style, (value, key) => {\r\n if (_.has(LeafletStyleMappings, key)) {\r\n const mapping = _.get(LeafletStyleMappings, key)\r\n // Specific options\r\n switch (key) {\r\n case 'icon-size':\r\n case 'icon-anchor':\r\n case 'marker-size':\r\n if (!Array.isArray(value)) value = [value, value]\r\n _.set(convertedStyle, mapping, value)\r\n break\r\n default:\r\n _.set(convertedStyle, mapping, value)\r\n }\r\n if (inPlace) _.unset(style, key)\r\n // In this case we have a marker spec\r\n if (mapping.startsWith('icon')) isIconSpec = true\r\n }\r\n })\r\n // Select the right icon type based on options\r\n if (isIconSpec) {\r\n _.set(convertedStyle, 'icon.type', (isFontAwesome ? 'icon.fontAwesome' : isHtml ? 'divIcon' : 'icon'))\r\n // Leaflet adds a default background style but we prefer to remove it\r\n if (isHtml && !hasClass) _.set(convertedStyle, 'icon.options.className', '')\r\n _.set(convertedStyle, 'type', 'marker')\r\n }\r\n // Manage panes to make z-index work for all types of layers,\r\n // pane name can actually be a z-index value\r\n if (_.has(convertedStyle, 'pane')) _.set(convertedStyle, 'pane', _.get(convertedStyle, 'pane').toString())\r\n return convertedStyle\r\n },\r\n getDefaultMarker (feature, latlng, options) {\r\n const properties = feature.properties\r\n const leafletOptions = options.leaflet || options\r\n const style = Object.assign({}, this.activityOptions.engine.pointStyle,\r\n leafletOptions.layerStyle,\r\n this.convertFromSimpleStyleSpec(feature.style || feature.properties))\r\n\r\n // We allow to template style properties according to feature,\r\n // because it can be slow you have to specify a subset of properties\r\n if (leafletOptions.template) {\r\n leafletOptions.template.forEach(entry => {\r\n // Perform templating, set using simple spec mapping first then raw if property not found\r\n _.set(style, _.get(LeafletStyleMappings, entry.property, entry.property), entry.compiler({ properties, feature, chroma }))\r\n })\r\n }\r\n // We manage panes for z-index, so we need to forward it to marker options\r\n if (leafletOptions.pane) style.pane = leafletOptions.pane\r\n return (latlng ? this.createMarkerFromStyle(latlng, style) : style)\r\n },\r\n getDefaultStyle (feature, options) {\r\n const properties = feature.properties\r\n const leafletOptions = options.leaflet || options\r\n const style = Object.assign({}, this.activityOptions.engine.featureStyle,\r\n leafletOptions.layerStyle,\r\n this.convertFromSimpleStyleSpec(feature.style || feature.properties))\r\n\r\n // We allow to template style properties according to feature,\r\n // because it can be slow you have to specify a subset of properties\r\n if (leafletOptions.template) {\r\n leafletOptions.template.forEach(entry => {\r\n // Perform templating, set using simple spec mapping first then raw if property not found\r\n _.set(style, _.get(LeafletStyleMappings, entry.property, entry.property), entry.compiler({ properties, feature, chroma }))\r\n })\r\n }\r\n // We manage panes for z-index, so we need to forward it to marker options\r\n if (leafletOptions.pane) style.pane = leafletOptions.pane\r\n return style\r\n }\r\n },\r\n created () {\r\n this.registerStyle('markerStyle', this.getDefaultMarker)\r\n this.registerStyle('featureStyle', this.getDefaultStyle)\r\n // Perform required conversion for default feature styling\r\n if (this.activityOptions.engine.featureStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.featureStyle, 'update-in-place')\r\n if (this.activityOptions.engine.pointStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.pointStyle, 'update-in-place')\r\n }\r\n}\r\n"]}
|
|
@@ -8,6 +8,8 @@ var _leaflet = require('leaflet');
|
|
|
8
8
|
|
|
9
9
|
var _leaflet2 = _interopRequireDefault(_leaflet);
|
|
10
10
|
|
|
11
|
+
var _client = require('../../../../core/client');
|
|
12
|
+
|
|
11
13
|
var _lodash = require('lodash');
|
|
12
14
|
|
|
13
15
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
@@ -21,6 +23,10 @@ exports.default = {
|
|
|
21
23
|
let tooltip;
|
|
22
24
|
if (properties) {
|
|
23
25
|
const leafletOptions = options.leaflet || options;
|
|
26
|
+
// Check if explicitely disabled first
|
|
27
|
+
if (_lodash2.default.has(leafletOptions, 'tooltip') && !_lodash2.default.get(leafletOptions, 'tooltip')) return;
|
|
28
|
+
if (_lodash2.default.has(properties, 'tooltip') && !_lodash2.default.get(properties, 'tooltip')) return;
|
|
29
|
+
// Otherwise merge options
|
|
24
30
|
const tooltipStyle = Object.assign({}, this.activityOptions.engine.tooltip, leafletOptions.tooltip, properties.tooltip);
|
|
25
31
|
// Default content
|
|
26
32
|
let html = tooltipStyle.html;
|
|
@@ -30,7 +36,7 @@ exports.default = {
|
|
|
30
36
|
if (html && typeof html.toString === 'function') html = html.toString();
|
|
31
37
|
} else if (tooltipStyle.template) {
|
|
32
38
|
const compiler = tooltipStyle.compiler;
|
|
33
|
-
html = compiler({ properties, feature, $t: this.$t });
|
|
39
|
+
html = compiler({ properties, feature, $t: this.$t, Units: _client.Units, Time: _client.Time });
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
if (html) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.tooltip.js"],"names":["methods","getDefaultTooltip","feature","layer","options","properties","tooltip","leafletOptions","leaflet","
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.tooltip.js"],"names":["methods","getDefaultTooltip","feature","layer","options","properties","tooltip","leafletOptions","leaflet","_","has","get","tooltipStyle","Object","assign","activityOptions","engine","html","property","toString","template","compiler","$t","Units","Time","L","permanent","setContent","created","registerStyle"],"mappings":";;;;;;AAAA;;;;AACA;;AACA;;;;;;kBAEe;AACbA,WAAS;AACPC,sBAAmBC,OAAnB,EAA4BC,KAA5B,EAAmCC,OAAnC,EAA4C;AAC1C,YAAMC,aAAaH,QAAQG,UAA3B;AACA,UAAIC,OAAJ;AACA,UAAID,UAAJ,EAAgB;AACd,cAAME,iBAAiBH,QAAQI,OAAR,IAAmBJ,OAA1C;AACA;AACA,YAAIK,iBAAEC,GAAF,CAAMH,cAAN,EAAsB,SAAtB,KAAoC,CAACE,iBAAEE,GAAF,CAAMJ,cAAN,EAAsB,SAAtB,CAAzC,EAA2E;AAC3E,YAAIE,iBAAEC,GAAF,CAAML,UAAN,EAAkB,SAAlB,KAAgC,CAACI,iBAAEE,GAAF,CAAMN,UAAN,EAAkB,SAAlB,CAArC,EAAmE;AACnE;AACA,cAAMO,eAAeC,OAAOC,MAAP,CAAc,EAAd,EAAkB,KAAKC,eAAL,CAAqBC,MAArB,CAA4BV,OAA9C,EACnBC,eAAeD,OADI,EACKD,WAAWC,OADhB,CAArB;AAEA;AACA,YAAIW,OAAOL,aAAaK,IAAxB;AACA,YAAI,CAACA,IAAL,EAAW;AACT,cAAIL,aAAaM,QAAjB,EAA2B;AACzBD,mBAAQR,iBAAEC,GAAF,CAAML,UAAN,EAAkBO,aAAaM,QAA/B,IACJT,iBAAEE,GAAF,CAAMN,UAAN,EAAkBO,aAAaM,QAA/B,CADI,GACuCT,iBAAEE,GAAF,CAAMT,OAAN,EAAeU,aAAaM,QAA5B,CAD/C;AAEA,gBAAID,QAAS,OAAOA,KAAKE,QAAZ,KAAyB,UAAtC,EAAmDF,OAAOA,KAAKE,QAAL,EAAP;AACpD,WAJD,MAIO,IAAIP,aAAaQ,QAAjB,EAA2B;AAChC,kBAAMC,WAAWT,aAAaS,QAA9B;AACAJ,mBAAOI,SAAS,EAAEhB,UAAF,EAAcH,OAAd,EAAuBoB,IAAI,KAAKA,EAAhC,EAAoCC,oBAApC,EAA2CC,kBAA3C,EAAT,CAAP;AACD;AACF;AACD,YAAIP,IAAJ,EAAU;AACRX,oBAAUmB,kBAAEnB,OAAF,CAAUM,aAAaR,OAAb,IAAwB,EAAEsB,WAAW,KAAb,EAAlC,EAAwDvB,KAAxD,CAAV;AACAG,kBAAQqB,UAAR,CAAmBV,IAAnB;AACD;AACF;AACD,aAAOX,OAAP;AACD;AA9BM,GADI;AAiCbsB,YAAW;AACT,SAAKC,aAAL,CAAmB,SAAnB,EAA8B,KAAK5B,iBAAnC;AACD;AAnCY,C","file":"mixin.tooltip.js","sourcesContent":["import L from 'leaflet'\r\nimport { Time, Units } from '../../../../core/client'\r\nimport _ from 'lodash'\r\n\r\nexport default {\r\n methods: {\r\n getDefaultTooltip (feature, layer, options) {\r\n const properties = feature.properties\r\n let tooltip\r\n if (properties) {\r\n const leafletOptions = options.leaflet || options\r\n // Check if explicitely disabled first\r\n if (_.has(leafletOptions, 'tooltip') && !_.get(leafletOptions, 'tooltip')) return\r\n if (_.has(properties, 'tooltip') && !_.get(properties, 'tooltip')) return\r\n // Otherwise merge options\r\n const tooltipStyle = Object.assign({}, this.activityOptions.engine.tooltip,\r\n leafletOptions.tooltip, properties.tooltip)\r\n // Default content\r\n let html = tooltipStyle.html\r\n if (!html) {\r\n if (tooltipStyle.property) {\r\n html = (_.has(properties, tooltipStyle.property)\r\n ? _.get(properties, tooltipStyle.property) : _.get(feature, tooltipStyle.property))\r\n if (html && (typeof html.toString === 'function')) html = html.toString()\r\n } else if (tooltipStyle.template) {\r\n const compiler = tooltipStyle.compiler\r\n html = compiler({ properties, feature, $t: this.$t, Units, Time })\r\n }\r\n }\r\n if (html) {\r\n tooltip = L.tooltip(tooltipStyle.options || { permanent: false }, layer)\r\n tooltip.setContent(html)\r\n }\r\n }\r\n return tooltip\r\n }\r\n },\r\n created () {\r\n this.registerStyle('tooltip', this.getDefaultTooltip)\r\n }\r\n}\r\n"]}
|
|
@@ -607,6 +607,8 @@ exports.default = {
|
|
|
607
607
|
} catch (error) {
|
|
608
608
|
_loglevel2.default.error(error);
|
|
609
609
|
}
|
|
610
|
+
// Retrieve the time
|
|
611
|
+
if (hasContext) _this16.restoreContext('time');
|
|
610
612
|
// Listen about changes in global/contextual catalog services
|
|
611
613
|
const globalCatalogService = _this16.$api.getService('catalog', '');
|
|
612
614
|
const catalogService = _this16.$api.getService('catalog');
|