@kalisio/kdk 1.3.5 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json +1 -0
- package/.nyc_output/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json} +0 -0
- package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 81d21e46-766a-46bc-b1b7-143ca577347a.json} +0 -0
- package/.nyc_output/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
- package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → aaf3ebbb-f895-4d7b-9255-bc5dee832570.json} +0 -0
- package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → dbeb2602-0ac2-4e66-978b-0d29548359ca.json} +0 -0
- package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e47d1e4c-2fff-4dcb-908f-d3081162547c.json} +0 -0
- package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → 2c5b7c8e-81db-4d2c-a7a4-02dc640d301f.json} +1 -1
- package/.nyc_output/processinfo/2e74ca23-8cf0-4161-9536-f71c2a1a74bb.json +1 -0
- package/.nyc_output/processinfo/81d21e46-766a-46bc-b1b7-143ca577347a.json +1 -0
- package/.nyc_output/processinfo/a762cb58-70dc-4d39-ab69-928635affa98.json +1 -0
- package/.nyc_output/processinfo/aaf3ebbb-f895-4d7b-9255-bc5dee832570.json +1 -0
- package/.nyc_output/processinfo/dbeb2602-0ac2-4e66-978b-0d29548359ca.json +1 -0
- package/.nyc_output/processinfo/e47d1e4c-2fff-4dcb-908f-d3081162547c.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +189 -67
- package/README.md +1 -1
- package/coverage/core/api/application.js.html +145 -145
- package/coverage/core/api/authentication.js.html +37 -37
- package/coverage/core/api/db.js.html +74 -74
- package/coverage/core/api/hooks/hooks.account.js.html +15 -15
- package/coverage/core/api/hooks/hooks.authentication.js.html +16 -16
- package/coverage/core/api/hooks/hooks.authorisations.js.html +112 -121
- package/coverage/core/api/hooks/hooks.devices.js.html +5 -5
- package/coverage/core/api/hooks/hooks.groups.js.html +3 -3
- package/coverage/core/api/hooks/hooks.logger.js.html +7 -7
- package/coverage/core/api/hooks/hooks.model.js.html +149 -149
- package/coverage/core/api/hooks/hooks.organisations.js.html +13 -61
- package/coverage/core/api/hooks/hooks.pusher.js.html +7 -7
- package/coverage/core/api/hooks/hooks.query.js.html +68 -32
- package/coverage/core/api/hooks/hooks.service.js.html +15 -15
- package/coverage/core/api/hooks/hooks.storage.js.html +5 -5
- package/coverage/core/api/hooks/hooks.tags.js.html +7 -7
- package/coverage/core/api/hooks/hooks.users.js.html +111 -63
- package/coverage/core/api/hooks/index.html +72 -72
- package/coverage/core/api/hooks/index.js.html +15 -15
- package/coverage/core/api/index.html +35 -35
- package/coverage/core/api/index.js.html +13 -13
- package/coverage/core/api/marshall.js.html +81 -81
- package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +1 -1
- package/coverage/core/api/models/organisations.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/users.model.mongodb.js.html +7 -7
- package/coverage/core/api/oauth2-handler.js.html +3 -3
- package/coverage/core/api/oauth2-verifier.js.html +5 -5
- package/coverage/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/core/api/services/account/account.service.js.html +34 -34
- package/coverage/core/api/services/account/index.html +17 -17
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +40 -37
- package/coverage/core/api/services/authorisations/index.html +17 -17
- package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/core/api/services/databases/index.html +1 -1
- package/coverage/core/api/services/devices/devices.hooks.js.html +1 -1
- package/coverage/core/api/services/devices/devices.service.js.html +1 -1
- package/coverage/core/api/services/devices/index.html +1 -1
- package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/core/api/services/groups/index.html +1 -1
- package/coverage/core/api/services/index.html +5 -5
- package/coverage/core/api/services/index.js.html +40 -40
- package/coverage/core/api/services/mailer/index.html +1 -1
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/core/api/services/organisations/index.html +1 -1
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/core/api/services/organisations/organisations.service.js.html +1 -1
- package/coverage/core/api/services/pusher/index.html +1 -1
- package/coverage/core/api/services/pusher/pusher.channels.js.html +1 -1
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +1 -1
- package/coverage/core/api/services/pusher/pusher.service.js.html +1 -1
- package/coverage/core/api/services/storage/index.html +1 -1
- package/coverage/core/api/services/storage/storage.hooks.js.html +4 -4
- package/coverage/core/api/services/tags/index.html +1 -1
- package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/core/api/services/users/index.html +1 -1
- package/coverage/core/api/services/users/users.hooks.js.html +12 -12
- package/coverage/core/common/index.html +32 -32
- package/coverage/core/common/index.js.html +27 -27
- package/coverage/core/common/permissions.js.html +135 -75
- package/coverage/index.html +157 -157
- package/coverage/lcov-report/core/api/application.js.html +145 -145
- package/coverage/lcov-report/core/api/authentication.js.html +37 -37
- package/coverage/lcov-report/core/api/db.js.html +74 -74
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +15 -15
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +16 -16
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +112 -121
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +5 -5
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +3 -3
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +7 -7
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +149 -149
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +13 -61
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +7 -7
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +68 -32
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +15 -15
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +5 -5
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +7 -7
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +111 -63
- package/coverage/lcov-report/core/api/hooks/index.html +72 -72
- package/coverage/lcov-report/core/api/hooks/index.js.html +15 -15
- package/coverage/lcov-report/core/api/index.html +35 -35
- package/coverage/lcov-report/core/api/index.js.html +13 -13
- package/coverage/lcov-report/core/api/marshall.js.html +81 -81
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +1 -1
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +7 -7
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +3 -3
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +5 -5
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +34 -34
- package/coverage/lcov-report/core/api/services/account/index.html +17 -17
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +3 -3
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +40 -37
- package/coverage/lcov-report/core/api/services/authorisations/index.html +17 -17
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/devices/index.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
- package/coverage/lcov-report/core/api/services/index.html +5 -5
- package/coverage/lcov-report/core/api/services/index.js.html +40 -40
- package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/pusher/index.html +1 -1
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +1 -1
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/index.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +4 -4
- package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/index.html +1 -1
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +12 -12
- package/coverage/lcov-report/core/common/index.html +32 -32
- package/coverage/lcov-report/core/common/index.js.html +27 -27
- package/coverage/lcov-report/core/common/permissions.js.html +135 -75
- package/coverage/lcov-report/index.html +157 -157
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +55 -55
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +337 -274
- package/coverage/lcov-report/map/api/hooks/index.html +43 -43
- package/coverage/lcov-report/map/api/hooks/index.js.html +12 -12
- package/coverage/lcov-report/map/api/index.html +31 -31
- package/coverage/lcov-report/map/api/index.js.html +24 -24
- package/coverage/lcov-report/map/api/marshall.js.html +39 -39
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +22 -22
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +24 -24
- package/coverage/lcov-report/map/api/models/index.html +43 -43
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +21 -21
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +156 -156
- package/coverage/lcov-report/map/api/services/alerts/index.html +30 -30
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +19 -19
- package/coverage/lcov-report/map/api/services/catalog/index.html +17 -17
- 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 +20 -20
- package/coverage/lcov-report/map/api/services/features/index.html +21 -21
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +99 -99
- package/coverage/lcov-report/map/api/services/geocoder/index.html +28 -28
- package/coverage/lcov-report/map/api/services/index.html +21 -21
- package/coverage/lcov-report/map/api/services/index.js.html +71 -71
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/lcov-report/map/common/errors.js.html +9 -9
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +120 -120
- package/coverage/lcov-report/map/common/grid.js.html +268 -268
- package/coverage/lcov-report/map/common/index.html +149 -149
- package/coverage/lcov-report/map/common/index.js.html +31 -31
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +71 -71
- package/coverage/lcov-report/map/common/moment-utils.js.html +14 -14
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +280 -280
- package/coverage/lcov-report/map/common/opendap-utils.js.html +220 -220
- package/coverage/lcov-report/map/common/permissions.js.html +21 -21
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +51 -51
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +99 -99
- package/coverage/lcov-report/map/common/wcs-utils.js.html +66 -66
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +196 -196
- package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
- package/coverage/lcov.info +3588 -3659
- package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
- package/coverage/map/api/hooks/hooks.query.js.html +337 -274
- package/coverage/map/api/hooks/index.html +43 -43
- package/coverage/map/api/hooks/index.js.html +12 -12
- package/coverage/map/api/index.html +31 -31
- package/coverage/map/api/index.js.html +24 -24
- package/coverage/map/api/marshall.js.html +39 -39
- package/coverage/map/api/models/alerts.model.mongodb.js.html +20 -20
- package/coverage/map/api/models/catalog.model.mongodb.js.html +22 -22
- package/coverage/map/api/models/features.model.mongodb.js.html +24 -24
- package/coverage/map/api/models/index.html +43 -43
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +21 -21
- package/coverage/map/api/services/alerts/alerts.service.js.html +156 -156
- package/coverage/map/api/services/alerts/index.html +30 -30
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +19 -19
- package/coverage/map/api/services/catalog/index.html +17 -17
- 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 +20 -20
- package/coverage/map/api/services/features/index.html +21 -21
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +8 -8
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +99 -99
- package/coverage/map/api/services/geocoder/index.html +28 -28
- package/coverage/map/api/services/index.html +21 -21
- package/coverage/map/api/services/index.js.html +71 -71
- package/coverage/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/map/common/errors.js.html +9 -9
- package/coverage/map/common/geotiff-grid-source.js.html +120 -120
- package/coverage/map/common/grid.js.html +268 -268
- package/coverage/map/common/index.html +149 -149
- package/coverage/map/common/index.js.html +31 -31
- package/coverage/map/common/meteo-model-grid-source.js.html +71 -71
- package/coverage/map/common/moment-utils.js.html +14 -14
- package/coverage/map/common/opendap-grid-source.js.html +280 -280
- package/coverage/map/common/opendap-utils.js.html +220 -220
- package/coverage/map/common/permissions.js.html +21 -21
- package/coverage/map/common/time-based-grid-source.js.html +51 -51
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +99 -99
- package/coverage/map/common/wcs-utils.js.html +66 -66
- package/coverage/map/common/weacast-grid-source.js.html +196 -196
- package/coverage/map/common/wfs-utils.js.html +8 -5
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +71 -11
- package/extras/icons/kanban.png +0 -0
- package/extras/testcafe/page-models/map/catalog.js +2 -2
- package/extras/tours/core/add-member.js +10 -1
- package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
- package/extras/tours/core/groups.js +8 -2
- package/extras/tours/core/members.js +11 -21
- package/extras/tours/core/tags.js +7 -1
- package/extras/tours/map/catalog-categories.js +4 -4
- package/extras/tours/map/catalog-panel.js +16 -16
- package/extras/tours/map/favorite-views.js +3 -3
- package/lib/core/api/hooks/hooks.authorisations.js +149 -140
- package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.organisations.js +1 -23
- package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.query.js +22 -0
- package/lib/core/api/hooks/hooks.query.js.map +1 -1
- package/lib/core/api/hooks/hooks.users.js +34 -18
- package/lib/core/api/hooks/hooks.users.js.map +1 -1
- package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
- package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
- package/lib/core/client/api.js +1 -0
- package/lib/core/client/api.js.map +1 -1
- package/lib/core/client/components/account/KAccountDZ.vue +3 -4
- package/lib/core/client/components/account/KAccountDevices.vue +5 -6
- package/lib/core/client/components/account/KDeviceCard.vue +2 -1
- package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
- package/lib/core/client/components/collection/KBoard.vue +26 -155
- package/lib/core/client/components/collection/KCard.vue +144 -42
- package/lib/core/client/components/collection/KCardSection.vue +52 -0
- package/lib/core/client/components/collection/KColumn.vue +181 -0
- package/lib/core/client/components/collection/KGrid.vue +13 -18
- package/lib/core/client/components/collection/KHistory.vue +61 -89
- package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
- package/lib/core/client/components/collection/KItem.vue +21 -2
- package/lib/core/client/components/collection/KList.vue +9 -12
- package/lib/core/client/components/collection/KTable.vue +33 -39
- package/lib/core/client/components/collection/index.js +6 -1
- package/lib/core/client/components/collection/index.js.map +1 -1
- package/lib/core/client/components/editor/KEditor.vue +0 -6
- package/lib/core/client/components/editor/KModalEditor.vue +4 -4
- package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
- package/lib/core/client/components/form/KAttachmentField.vue +10 -10
- package/lib/core/client/components/form/KChipsField.vue +28 -23
- package/lib/core/client/components/form/KColorField.vue +30 -25
- package/lib/core/client/components/form/KForm.vue +0 -12
- package/lib/core/client/components/form/KIconField.vue +1 -0
- package/lib/core/client/components/form/KItemField.vue +8 -4
- package/lib/core/client/components/form/KRoleField.vue +56 -0
- package/lib/core/client/components/form/KSelectField.vue +16 -1
- package/lib/core/client/components/form/KView.vue +5 -14
- package/lib/core/client/components/frame/KAction.vue +18 -12
- package/lib/core/client/components/frame/KAvatar.vue +3 -3
- package/lib/core/client/components/frame/KChart.vue +60 -0
- package/lib/core/client/components/frame/KChipsPane.vue +80 -0
- package/lib/core/client/components/frame/KContent.vue +1 -1
- package/lib/core/client/components/frame/KModal.vue +30 -44
- package/lib/core/client/components/frame/KPanel.vue +1 -1
- package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
- package/lib/core/client/components/frame/KSpot.vue +31 -0
- package/lib/core/client/components/frame/KStamp.vue +62 -0
- package/lib/core/client/components/frame/index.js +56 -1
- package/lib/core/client/components/frame/index.js.map +1 -1
- package/lib/core/client/components/input/KColorChooser.vue +16 -8
- package/lib/core/client/components/input/KIconChooser.vue +2 -1
- package/lib/core/client/components/input/KUploader.vue +14 -5
- package/lib/core/client/components/layout/KAbout.vue +9 -3
- package/lib/core/client/components/layout/KFab.vue +1 -1
- package/lib/core/client/components/layout/KPage.vue +44 -19
- package/lib/core/client/components/layout/KTour.vue +2 -2
- package/lib/core/client/components/layout/KWelcome.vue +13 -12
- package/lib/core/client/components/layout/KWindow.vue +1 -1
- package/lib/core/client/components/media/KImageViewer.vue +9 -7
- package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
- package/lib/core/client/components/menu/KMenu.vue +103 -0
- package/lib/core/client/components/team/KAddMember.vue +17 -9
- package/lib/core/client/components/team/KChangeRole.vue +5 -7
- package/lib/core/client/components/team/KGroupCard.vue +34 -51
- package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
- package/lib/core/client/components/team/KJoinGroup.vue +5 -7
- package/lib/core/client/components/team/KMemberCard.vue +104 -63
- package/lib/core/client/components/team/KMembersActivity.vue +9 -2
- package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
- package/lib/core/client/components/team/KTagCard.vue +26 -26
- package/lib/core/client/components/team/KTagsActivity.vue +9 -2
- package/lib/core/client/components/time/KTimeRange.vue +144 -0
- package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
- package/lib/core/client/components/viewer/KViewer.vue +0 -6
- package/lib/core/client/i18n/core_en.json +133 -93
- package/lib/core/client/i18n/core_fr.json +56 -16
- package/lib/core/client/index.js +28 -14
- package/lib/core/client/index.js.map +1 -1
- package/lib/core/client/mixins/mixin.authorisation.js +28 -18
- package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-collection.js +57 -9
- package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-context.js +1 -1
- package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-editor.js +26 -16
- package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-field.js +0 -4
- package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-item.js +29 -14
- package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
- package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
- package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
- package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
- package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.service.js +5 -33
- package/lib/core/client/mixins/mixin.service.js.map +1 -1
- package/lib/core/client/services/index.js +23 -0
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/services/local-settings.service.js +4 -0
- package/lib/core/client/services/local-settings.service.js.map +1 -1
- package/lib/core/client/time.js +131 -0
- package/lib/core/client/time.js.map +1 -0
- package/lib/core/common/permissions.js +65 -23
- package/lib/core/common/permissions.js.map +1 -1
- package/lib/core/common/schemas/groups.create.json +1 -1
- package/lib/core/common/schemas/groups.update.json +1 -1
- package/lib/core/common/schemas/organisations.create.json +1 -1
- package/lib/core/common/schemas/organisations.update.json +2 -2
- package/lib/core/common/schemas/settings.update.json +139 -0
- package/lib/core/common/schemas/tags.update.json +9 -1
- package/lib/map/api/hooks/hooks.query.js +48 -27
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/api/services/features/features.hooks.js +1 -1
- package/lib/map/api/services/features/features.hooks.js.map +1 -1
- package/lib/map/client/components/KColorLegend.vue +25 -23
- package/lib/map/client/components/KFavoriteViews.vue +71 -35
- package/lib/map/client/components/KFeaturesChart.vue +11 -9
- package/lib/map/client/components/KFeaturesFilter.vue +15 -7
- package/lib/map/client/components/KFeaturesTable.vue +27 -2
- package/lib/map/client/components/KLayerEditionToolbar.vue +43 -0
- package/lib/map/client/components/KLayerStyleEditor.vue +10 -4
- package/lib/map/client/components/KLayerStyleForm.vue +14 -11
- package/lib/map/client/components/KLocationInput.vue +126 -65
- package/lib/map/client/components/KLocationMap.vue +199 -84
- package/lib/map/client/components/KPositionIndicator.vue +1 -0
- package/lib/map/client/components/KTimeline.vue +41 -36
- package/lib/map/client/components/KUrlLegend.vue +21 -19
- package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
- package/lib/map/client/components/catalog/KCatalog.vue +14 -2
- package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
- package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
- package/lib/map/client/components/catalog/KImportLayer.vue +28 -8
- package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
- package/lib/map/client/components/catalog/KLayersSelector.vue +42 -42
- package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
- package/lib/map/client/components/form/KLocationField.vue +1 -1
- package/lib/map/client/components/form/KOwsLayerField.vue +21 -2
- package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
- package/lib/map/client/components/widget/KInformationBox.vue +10 -16
- package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
- package/lib/map/client/components/widget/KTimeSeries.vue +39 -29
- package/lib/map/client/i18n/map_en.json +65 -17
- package/lib/map/client/i18n/map_fr.json +67 -20
- package/lib/map/client/init.js +18 -6
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
- package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
- package/lib/map/client/leaflet/GradientPath.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +64 -0
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
- package/lib/map/client/mixins/globe/mixin.base-globe.js +4 -1
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/index.js +8 -13
- package/lib/map/client/mixins/index.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +30 -6
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +274 -51
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
- package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +25 -18
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +18 -10
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
- package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +60 -68
- package/lib/map/client/mixins/mixin.activity.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
- package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-service.js +7 -5
- package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
- package/lib/map/client/mixins/mixin.weacast.js +6 -4
- package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
- package/lib/map/client/pixi-utils.js +9 -0
- package/lib/map/client/pixi-utils.js.map +1 -1
- package/lib/map/client/utils.js +50 -0
- package/lib/map/client/utils.js.map +1 -1
- package/lib/map/common/wfs-utils.js +1 -1
- package/lib/map/common/wfs-utils.js.map +1 -1
- package/lib/map/common/wmts-utils.js +31 -7
- package/lib/map/common/wmts-utils.js.map +1 -1
- package/lib/test/client/core/account.js +100 -0
- package/lib/test/client/core/account.js.map +1 -0
- package/lib/test/client/core/api.js +400 -0
- package/lib/test/client/core/api.js.map +1 -0
- package/lib/test/client/core/collection.js +109 -0
- package/lib/test/client/core/collection.js.map +1 -0
- package/lib/test/client/core/index.js +90 -0
- package/lib/test/client/core/index.js.map +1 -0
- package/lib/test/client/core/layout.js +221 -0
- package/lib/test/client/core/layout.js.map +1 -0
- package/lib/test/client/core/runner.js +204 -0
- package/lib/test/client/core/runner.js.map +1 -0
- package/lib/test/client/core/screens.js +68 -0
- package/lib/test/client/core/screens.js.map +1 -0
- package/lib/test/client/core/utils.js +304 -0
- package/lib/test/client/core/utils.js.map +1 -0
- package/lib/test/client/index.js +20 -0
- package/lib/test/client/index.js.map +1 -0
- package/lib/test/client/map/catalog.js +191 -0
- package/lib/test/client/map/catalog.js.map +1 -0
- package/lib/test/client/map/controls.js +54 -0
- package/lib/test/client/map/controls.js.map +1 -0
- package/lib/test/client/map/index.js +30 -0
- package/lib/test/client/map/index.js.map +1 -0
- package/package.json +17 -9
- package/test.client.js +1 -0
- package/tests/core/test-log-2021-07-15.log +71 -0
- package/tests/core/test-log-2021-09-02.log +47 -0
- package/tests/map/test-log-%DATE%.logYYYY-07-DD +12 -0
- package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
- package/tests/map/test-log-2021-07-12.log +12 -0
- package/tests/map/test-log-2021-07-15.log +5 -0
- package/tests/map/test-log-2021-09-02.log +3 -0
- package/.nyc_output/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
- package/.nyc_output/2bece194-92f7-4971-a688-10604044a7fa.json +0 -1
- package/.nyc_output/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
- package/.nyc_output/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
- package/.nyc_output/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
- package/.nyc_output/processinfo/0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json +0 -1
- package/.nyc_output/processinfo/11cd93d8-69cb-405c-98a3-d249ea35b6da.json +0 -1
- package/.nyc_output/processinfo/20df4355-911a-4b16-a8ab-d3392e9f0a7f.json +0 -1
- package/.nyc_output/processinfo/257af0bb-96c3-465a-b5ef-a1df60078d5f.json +0 -1
- package/.nyc_output/processinfo/284aebfa-23fd-425f-9d72-e4b8904dc224.json +0 -1
- package/.nyc_output/processinfo/5cbee06e-be6e-468a-bd78-4793ee785fe4.json +0 -1
- package/.nyc_output/processinfo/5ddee33e-b658-4c8e-a247-54f575ac67e8.json +0 -1
- package/.nyc_output/processinfo/78760ae4-555f-4d9c-a6a1-acf5e2f0fe45.json +0 -1
- package/.nyc_output/processinfo/d0bb2559-084e-4c92-b9e6-29a9abd41f7c.json +0 -1
- package/lib/core/client/components/frame/KLabel.vue +0 -56
- package/lib/core/client/components/team/KTagsPane.vue +0 -35
- package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
- package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
- package/lib/map/client/mixins/mixin.time.js +0 -73
- package/lib/map/client/mixins/mixin.time.js.map +0 -1
- package/tests/core/account.test.js +0 -415
- package/tests/core/client.test.js.skip +0 -37
- package/tests/core/config/default.js +0 -97
- package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
- package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
- package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
- package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
- package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
- package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
- package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
- package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
- package/tests/core/data/10k_most_common_passwords.txt +0 -10000
- package/tests/core/data/logo.png +0 -0
- package/tests/core/hooks.test.js +0 -175
- package/tests/core/index.test.js +0 -418
- package/tests/core/notifications.test.js +0 -465
- package/tests/core/storage.test.js +0 -134
- package/tests/core/team.test.js +0 -610
- package/tests/core/utils.js +0 -59
- package/tests/map/alerts.test.js +0 -554
- package/tests/map/config/default.js +0 -112
- package/tests/map/config/layers.json +0 -37
- package/tests/map/daptiles.test.js +0 -41
- package/tests/map/data/DescribeCoverage.xml +0 -55
- package/tests/map/data/GetCoverage.tif +0 -0
- package/tests/map/data/adsb.observations.json +0 -132
- package/tests/map/data/dataset.grb.das +0 -55
- package/tests/map/data/dataset.grb.dds +0 -17
- package/tests/map/data/dataset.grb.dods +0 -0
- package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
- package/tests/map/data/subdataset.grb.dods +0 -0
- package/tests/map/data/vigicrues.observations.json +0 -47042
- package/tests/map/data/vigicrues.stations.json +0 -15422
- package/tests/map/data/zones.json +0 -1228
- package/tests/map/grid-sources.test.js +0 -304
- package/tests/map/hooks.test.js +0 -96
- package/tests/map/index.test.js +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.edit-layers.js"],"names":["originalOnTouch","L","Draw","Polyline","prototype","_onTouch","e","originalEvent","pointerType","call","methods","isLayerEdited","layer","editedLayer","name","getGeoJsonEditOptions","options","onEachFeature","getGeoJsonOptions","style","feature","Object","assign","activityOptions","engine","editFeatureStyle","featureStyle","pointToLayer","latlng","createMarkerFromStyle","editPointStyle","pointStyle","editLayer","leafletLayer","getLeafletLayerByName","editControl","map","removeControl","removeLayer","editableLayer","addLayer","editedLayerSchema","deleteInProgress","geoJson","toGeoJSON","clearLayers","Control","position","draw","editOptions","edit","featureGroup","remove","addControl","createdFeatures","editedFeatures","deletedFeatures","JSON","stringify","_","get","updateFeatureProperties","popup","getPopup","unbindPopup","editFeatureModal","$createComponent","propsData","service","contextId","objectId","_id","schemaJson","perspective","$mount","openModal","$on","updatedFeature","bindPopup","editFeaturesProperties","pick","addData","closeModal","onEditFeatureProperties","event","target","onFeatureCreated","id","set","toString","createFeatures","onFeaturesEdited","editFeaturesGeometry","layers","onFeaturesDeleted","removeFeatures","onStartDeleteFeatures","onStopDeleteFeatures","onRemoveFeature","Dialog","create","title","$t","message","html","ok","label","flat","cancel","onOk","parentLeafletLayer","beforeCreate","polyline","polygon","allowIntersection","circle","rectangle","marker","circlemarker","created","convertFromSimpleStyleSpec","mounted","drawLocal","returnObjects","values","Event","beforeDestroy","$off"],"mappings":"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","file":"mixin.edit-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport L from 'leaflet'\r\nimport 'leaflet-draw/dist/leaflet.draw-src.js'\r\nimport 'leaflet-draw/dist/leaflet.draw-src.css'\r\nimport { Dialog, uid } from 'quasar'\r\nimport { bindLeafletEvents } from '../../utils'\r\n\r\n// Please refer to https://github.com/Leaflet/Leaflet.draw/issues/695\r\nconst originalOnTouch = L.Draw.Polyline.prototype._onTouch\r\nL.Draw.Polyline.prototype._onTouch = function (e) {\r\n if (e.originalEvent.pointerType !== 'mouse') {\r\n return originalOnTouch.call(this, e)\r\n }\r\n}\r\n\r\nexport default {\r\n methods: {\r\n isLayerEdited (layer) {\r\n return this.editedLayer && (this.editedLayer.name === layer.name)\r\n },\r\n getGeoJsonEditOptions (options) {\r\n // Retrieve base options first\r\n const { onEachFeature } = this.getGeoJsonOptions(options)\r\n return {\r\n onEachFeature,\r\n // Use default styling when editing as dynamic styling can conflict\r\n style: (feature) => {\r\n return Object.assign({}, this.activityOptions.engine.editFeatureStyle || this.activityOptions.engine.featureStyle)\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n return this.createMarkerFromStyle(latlng, Object.assign({}, this.activityOptions.engine.editPointStyle || this.activityOptions.engine.pointStyle))\r\n }\r\n }\r\n },\r\n async editLayer (layer) {\r\n const leafletLayer = this.getLeafletLayerByName(layer.name)\r\n if (!leafletLayer) return\r\n\r\n if (this.editControl) { // Stop edition\r\n // Remove UI\r\n this.map.removeControl(this.editControl)\r\n this.editControl = null\r\n // Set back edited layers to source layer\r\n this.map.removeLayer(this.editableLayer)\r\n leafletLayer.addLayer(this.editableLayer)\r\n this.editedLayer = null\r\n this.editedLayerSchema = null\r\n this.deleteInProgress = false\r\n } else { // Start edition\r\n this.editedLayer = layer\r\n // Move source layers to edition layers, required as eg clusters are not supported\r\n const geoJson = leafletLayer.toGeoJSON()\r\n leafletLayer.clearLayers()\r\n this.editableLayer = L.geoJson(geoJson, this.getGeoJsonEditOptions(layer))\r\n this.map.addLayer(this.editableLayer)\r\n // Add UI\r\n this.editControl = new L.Control.Draw({\r\n position: 'bottomleft',\r\n draw: this.editOptions,\r\n edit: {\r\n featureGroup: this.editableLayer,\r\n remove: true\r\n }\r\n })\r\n this.map.addControl(this.editControl)\r\n this.createdFeatures = []\r\n this.editedFeatures = []\r\n this.deletedFeatures = []\r\n this.editedLayerSchema = JSON.stringify(_.get(this.editedLayer, 'schema.content'))\r\n }\r\n },\r\n async updateFeatureProperties (feature, layer, leafletLayer) {\r\n // Avoid default popup\r\n const popup = leafletLayer.getPopup()\r\n if (popup) leafletLayer.unbindPopup(popup)\r\n\r\n this.editFeatureModal = await this.$createComponent('editor/KModalEditor', {\r\n propsData: {\r\n service: 'features',\r\n contextId: this.contextId,\r\n objectId: feature._id,\r\n schemaJson: this.editedLayerSchema,\r\n perspective: 'properties'\r\n }\r\n })\r\n this.editFeatureModal.$mount()\r\n this.editFeatureModal.openModal()\r\n this.editFeatureModal.$on('applied', async updatedFeature => {\r\n // Restore popup\r\n if (popup) leafletLayer.bindPopup(popup)\r\n // Save in DB and in memory\r\n await this.editFeaturesProperties(updatedFeature)\r\n const geoJson = leafletLayer.toGeoJSON()\r\n Object.assign(geoJson, _.pick(updatedFeature, ['properties']))\r\n this.editableLayer.removeLayer(leafletLayer)\r\n this.editableLayer.addData(geoJson)\r\n this.editFeatureModal.closeModal()\r\n this.editFeatureModal = null\r\n })\r\n this.editFeatureModal.$on('closed', () => {\r\n // Restore popup\r\n if (popup) leafletLayer.bindPopup(popup)\r\n this.editFeatureModal = null\r\n })\r\n },\r\n async onEditFeatureProperties (layer, event) {\r\n const leafletLayer = event && event.target\r\n if (!leafletLayer) return\r\n const feature = _.get(leafletLayer, 'feature')\r\n if (!feature || !this.isLayerEdited(layer)) return\r\n if (!this.editedLayerSchema) return // No edition schema\r\n if (!this.editedLayer._id) return // Impossible to edit in-memory layer as it requires a service now\r\n // Check if not currently in the edition workspace for removal\r\n if (this.deleteInProgress) return\r\n await this.updateFeatureProperties(feature, layer, leafletLayer)\r\n },\r\n async onFeatureCreated (event) {\r\n let geoJson = event.layer.toGeoJSON()\r\n // Generate temporary ID for feature\r\n const id = _.get(this.editedLayer, 'featureId')\r\n if (id && (id !== '_id')) _.set(geoJson, 'properties.' + id, uid().toString())\r\n else geoJson._id = uid().toString()\r\n // Save changes to DB, we use the layer DB ID as layer ID on features\r\n if (this.editedLayer._id) {\r\n geoJson = await this.createFeatures(geoJson, this.editedLayer._id)\r\n }\r\n this.editableLayer.addData(geoJson)\r\n },\r\n async onFeaturesEdited (event) {\r\n // Save changes to DB\r\n if (this.editedLayer._id) {\r\n await this.editFeaturesGeometry(event.layers.toGeoJSON())\r\n }\r\n },\r\n async onFeaturesDeleted (event) {\r\n // Save changes to DB\r\n if (this.editedLayer._id) {\r\n await this.removeFeatures(event.layers.toGeoJSON())\r\n }\r\n },\r\n onStartDeleteFeatures () {\r\n this.deleteInProgress = true\r\n },\r\n onStopDeleteFeatures () {\r\n this.deleteInProgress = false\r\n },\r\n async onRemoveFeature (feature, layer, leafletLayer) {\r\n Dialog.create({\r\n title: this.$t('mixins.editLayers.REMOVE_FEATURE_DIALOG_TITLE'),\r\n message: this.$t('mixins.editLayers.REMOVE_FEATURE_DIALOG_MESSAGE'),\r\n html: true,\r\n ok: {\r\n label: this.$t('OK'),\r\n flat: true\r\n },\r\n cancel: {\r\n label: this.$t('CANCEL'),\r\n flat: true\r\n }\r\n }).onOk(async () => {\r\n const parentLeafletLayer = this.getLeafletLayerByName(layer.name)\r\n if (!parentLeafletLayer) return\r\n await this.removeFeatures(feature)\r\n parentLeafletLayer.removeLayer(leafletLayer)\r\n })\r\n }\r\n },\r\n beforeCreate () {\r\n this.editOptions = {\r\n polyline: {},\r\n polygon: {\r\n allowIntersection: false // Restricts shapes to simple polygons\r\n },\r\n circle: {},\r\n rectangle: {},\r\n marker: {},\r\n circlemarker: false\r\n }\r\n },\r\n created () {\r\n // Perform required conversion for default feature styling\r\n if (this.activityOptions.engine.editFeatureStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.editFeatureStyle, 'update-in-place')\r\n if (this.activityOptions.engine.editPointStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.editPointStyle, 'update-in-place')\r\n },\r\n mounted () {\r\n // Initialize i18n\r\n L.drawLocal = this.$t('mixins.editLayers', { returnObjects: true })\r\n this.$on('map-ready', () => {\r\n // Setup event binding\r\n bindLeafletEvents(this.map, _.values(L.Draw.Event), this)\r\n })\r\n this.$on('click', this.onEditFeatureProperties)\r\n this.$on('draw:deletestart', this.onStartDeleteFeatures)\r\n this.$on('draw:deletestop', this.onStopDeleteFeatures)\r\n this.$on('draw:created', this.onFeatureCreated)\r\n this.$on('draw:edited', this.onFeaturesEdited)\r\n this.$on('draw:deleted', this.onFeaturesDeleted)\r\n },\r\n beforeDestroy () {\r\n this.$off('click', this.onEditFeatureProperties)\r\n this.$off('draw:deletestart', this.onStartDeleteFeatures)\r\n this.$off('draw:deletestop', this.onStopDeleteFeatures)\r\n this.$off('draw:created', this.onFeatureCreated)\r\n this.$off('draw:edited', this.onFeaturesEdited)\r\n this.$off('draw:deleted', this.onFeaturesDeleted)\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.edit-layers.js"],"names":["mapEditEvents","layerEditEvents","data","editingLayer","allowedLayerEditModes","layerEditMode","methods","isLayerEdited","layer","editedLayer","name","getGeoJsonEditOptions","options","filteredOptions","_","has","Object","assign","leaflet","tooltip","popup","onEachFeature","getGeoJsonOptions","pmIgnore","style","feature","activityOptions","engine","editFeatureStyle","featureStyle","pointToLayer","latlng","createMarkerFromStyle","editPointStyle","pointStyle","setEditMode","mode","editableLayer","map","pm","globalDrawModeEnabled","disableDraw","globalEditModeEnabled","disableGlobalEditMode","globalDragModeEnabled","disableGlobalDragMode","globalRemovalModeEnabled","disableGlobalRemovalMode","globalRotateModeEnabled","disableGlobalRotateMode","setGlobalOptions","layerGroup","indexOf","enableGlobalEditMode","enableGlobalDragMode","enableGlobalRotateMode","enableGlobalRemovalMode","enableDraw","continueDrawing","startEditLayer","allowedEditModes","editMode","leafletLayer","getLeafletLayerByName","$emit","geoJson","toGeoJSON","clearLayers","_id","undefined","features","type","toString","$api","getService","create","L","addLayer","schema","get","editedLayerSchema","JSON","stringify","$on","onEditFeatureProperties","onMapZoomWhileEditing","onFeatureCreated","onFeaturesEdited","onFeaturesDeleted","stopEditLayer","status","remove","removeLayer","$off","event","target","getPopup","unbindPopup","service","editFeatureModal","$createComponent","propsData","contextId","objectId","schemaJson","perspective","$mount","openModal","updatedFeature","bindPopup","editFeaturesProperties","patch","pick","addData","closeModal","idValue","idProp","set","createFeatures","editFeaturesGeometry","removeFeatures","bringToFront","onRemoveFeature","Dialog","title","$t","message","html","ok","label","flat","cancel","onOk","parentLeafletLayer","created","convertFromSimpleStyleSpec"],"mappings":"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","file":"mixin.edit-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport L from 'leaflet'\r\nimport { Dialog, uid } from 'quasar'\r\nimport { updatePropertiesSchema, bindLeafletEvents, unbindLeafletEvents } from '../../utils'\r\n\r\n// Events we listen while layer is in edition mode\r\nconst mapEditEvents = ['pm:create']\r\nconst layerEditEvents = ['layerremove', 'pm:update', 'pm:dragend', 'pm:rotateend']\r\n\r\nexport default {\r\n data () {\r\n return {\r\n editingLayer: false,\r\n allowedLayerEditModes: [],\r\n layerEditMode: ''\r\n }\r\n },\r\n methods: {\r\n isLayerEdited (layer) {\r\n return this.editedLayer && (this.editedLayer.name === layer.name)\r\n },\r\n getGeoJsonEditOptions (options) {\r\n let filteredOptions = options\r\n if (_.has(filteredOptions, 'leaflet.tooltip') || _.has(filteredOptions, 'leaflet.popup')) {\r\n // Disable tooltip & popup features on edited layer\r\n filteredOptions = Object.assign({}, options)\r\n if (filteredOptions.leaflet.tooltip) delete filteredOptions.leaflet.tooltip\r\n if (filteredOptions.leaflet.popup) delete filteredOptions.leaflet.popup\r\n }\r\n // Retrieve base options first\r\n const { onEachFeature } = this.getGeoJsonOptions(filteredOptions)\r\n return {\r\n // Allow geoman edition\r\n pmIgnore: false,\r\n onEachFeature,\r\n // Use default styling when editing as dynamic styling can conflict\r\n style: (feature) => {\r\n return Object.assign({}, this.activityOptions.engine.editFeatureStyle || this.activityOptions.engine.featureStyle)\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n return this.createMarkerFromStyle(latlng, Object.assign({ pmIgnore: false }, // Allow geoman edition\r\n this.activityOptions.engine.editPointStyle || this.activityOptions.engine.pointStyle))\r\n }\r\n }\r\n },\r\n setEditMode (mode) {\r\n if (!this.editableLayer) return\r\n\r\n // disable all modes\r\n if (this.map.pm.globalDrawModeEnabled()) this.map.pm.disableDraw()\r\n if (this.map.pm.globalEditModeEnabled()) this.map.pm.disableGlobalEditMode()\r\n if (this.map.pm.globalDragModeEnabled()) this.map.pm.disableGlobalDragMode()\r\n if (this.map.pm.globalRemovalModeEnabled()) this.map.pm.disableGlobalRemovalMode()\r\n if (this.map.pm.globalRotateModeEnabled()) this.map.pm.disableGlobalRotateMode()\r\n this.map.pm.setGlobalOptions({ layerGroup: this.map })\r\n\r\n if (this.allowedLayerEditModes.indexOf(mode) === -1) return\r\n\r\n if (mode === 'edit-properties') {\r\n } else if (mode === 'edit-geometry') {\r\n this.map.pm.enableGlobalEditMode()\r\n } else if (mode === 'drag') {\r\n this.map.pm.enableGlobalDragMode()\r\n } else if (mode === 'rotate') {\r\n this.map.pm.enableGlobalRotateMode()\r\n } else if (mode === 'remove') {\r\n this.map.pm.setGlobalOptions({ layerGroup: this.editableLayer })\r\n this.map.pm.enableGlobalRemovalMode()\r\n } else if (mode === 'add-polygons') {\r\n this.map.pm.setGlobalOptions({ layerGroup: this.editableLayer })\r\n this.map.pm.enableDraw('Polygon', { continueDrawing: true })\r\n } else if (mode === 'add-rectangles') {\r\n this.map.pm.setGlobalOptions({ layerGroup: this.editableLayer })\r\n this.map.pm.enableDraw('Rectangle', { continueDrawing: true })\r\n } else if (mode === 'add-lines') {\r\n this.map.pm.setGlobalOptions({ layerGroup: this.editableLayer })\r\n this.map.pm.enableDraw('Line', { continueDrawing: true })\r\n } else if (mode === 'add-points') {\r\n this.map.pm.setGlobalOptions({ layerGroup: this.editableLayer })\r\n this.map.pm.enableDraw('Marker', { continueDrawing: true })\r\n }\r\n\r\n this.layerEditMode = mode\r\n },\r\n async startEditLayer (layer, { allowedEditModes = null, editMode = null } = {}) {\r\n if (this.editedLayer) return\r\n\r\n const leafletLayer = this.getLeafletLayerByName(layer.name)\r\n if (!leafletLayer) return\r\n\r\n this.allowedLayerEditModes = allowedEditModes || [\r\n 'edit-properties',\r\n 'edit-geometry',\r\n 'drag',\r\n 'rotate',\r\n 'remove',\r\n 'add-polygons',\r\n 'add-rectangles',\r\n 'add-lines',\r\n 'add-points'\r\n ]\r\n\r\n this.editedLayer = layer\r\n this.editingLayer = true\r\n this.$emit('edit-start', { layer: this.editedLayer })\r\n\r\n // Move source layers to edition layers, required as eg clusters are not supported\r\n const geoJson = leafletLayer.toGeoJSON()\r\n leafletLayer.clearLayers()\r\n\r\n // in-memory edition ?\r\n if (this.editedLayer._id === undefined) {\r\n // In this case we have to push features to in memory service\r\n const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson]\r\n for (const feature of features) {\r\n // Generate in memory service _id as string to match what's done with mongo\r\n feature._id = uid().toString()\r\n // Service will use the provided _id as object key\r\n await this.$api.getService('features-edition').create(feature)\r\n }\r\n }\r\n\r\n this.editableLayer = L.geoJson(geoJson, this.getGeoJsonEditOptions(layer))\r\n this.map.addLayer(this.editableLayer)\r\n bindLeafletEvents(this.map, mapEditEvents, this)\r\n bindLeafletEvents(this.editableLayer, layerEditEvents, this)\r\n const schema = _.get(this.editedLayer, 'schema.content')\r\n if (schema) {\r\n // fill in the blanks\r\n this.editedLayerSchema = JSON.stringify(updatePropertiesSchema(schema))\r\n }\r\n\r\n this.$on('click', this.onEditFeatureProperties)\r\n this.$on('zoomend', this.onMapZoomWhileEditing)\r\n this.$on('pm:create', this.onFeatureCreated)\r\n this.$on('pm:update', this.onFeaturesEdited)\r\n this.$on('pm:dragend', this.onFeaturesEdited)\r\n this.$on('pm:rotateend', this.onFeaturesEdited)\r\n this.$on('layerremove', this.onFeaturesDeleted)\r\n\r\n if (editMode) this.setEditMode(editMode)\r\n },\r\n async stopEditLayer (status = 'accept') {\r\n if (!this.editedLayer) return\r\n\r\n const leafletLayer = this.getLeafletLayerByName(this.editedLayer.name)\r\n if (!leafletLayer) return\r\n\r\n // Make sure we end geoman\r\n if (this.map.pm.globalDrawModeEnabled()) this.map.pm.disableDraw()\r\n if (this.map.pm.globalEditModeEnabled()) this.map.pm.disableGlobalEditMode()\r\n if (this.map.pm.globalDragModeEnabled()) this.map.pm.disableGlobalDragMode()\r\n if (this.map.pm.globalRemovalModeEnabled()) this.map.pm.disableGlobalRemovalMode()\r\n if (this.map.pm.globalRotateModeEnabled()) this.map.pm.disableGlobalRotateMode()\r\n this.map.pm.setGlobalOptions({ layerGroup: this.map })\r\n\r\n unbindLeafletEvents(this.map, mapEditEvents)\r\n unbindLeafletEvents(this.editableLayer, layerEditEvents)\r\n\r\n // for in memory edition, clear service\r\n if (this.editedLayer._id === undefined) {\r\n const geoJson = this.editableLayer.toGeoJSON()\r\n const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson]\r\n for (const feature of features) {\r\n await this.$api.getService('features-edition').remove(feature._id)\r\n }\r\n }\r\n\r\n // Set back edited layers to source layer\r\n this.map.removeLayer(this.editableLayer)\r\n leafletLayer.addLayer(this.editableLayer)\r\n this.$emit('edit-stop', { status, layer: this.editedLayer })\r\n this.editedLayer = null\r\n this.editingLayer = false\r\n this.editedLayerSchema = null\r\n\r\n this.$off('click', this.onEditFeatureProperties)\r\n this.$off('zoomend', this.onMapZoomWhileEditing)\r\n this.$off('pm:create', this.onFeatureCreated)\r\n this.$off('pm:update', this.onFeaturesEdited)\r\n this.$off('pm:dragend', this.onFeaturesEdited)\r\n this.$off('pm:rotateend', this.onFeaturesEdited)\r\n this.$off('layerremove', this.onFeaturesDeleted)\r\n },\r\n async onEditFeatureProperties (layer, event) {\r\n const leafletLayer = event && event.target\r\n const feature = _.get(leafletLayer, 'feature')\r\n\r\n if (this.layerEditMode !== 'edit-properties' ||\r\n !this.isLayerEdited(layer) ||\r\n !this.editedLayerSchema ||\r\n !leafletLayer ||\r\n !feature) return\r\n\r\n // Avoid default popup\r\n const popup = leafletLayer.getPopup()\r\n if (popup) leafletLayer.unbindPopup(popup)\r\n\r\n const service = this.editedLayer._id ? 'features' : 'features-edition'\r\n\r\n this.editFeatureModal = await this.$createComponent('editor/KModalEditor', {\r\n propsData: {\r\n service,\r\n contextId: this.contextId,\r\n objectId: feature._id,\r\n schemaJson: this.editedLayerSchema,\r\n perspective: 'properties'\r\n }\r\n })\r\n this.editFeatureModal.$mount()\r\n this.editFeatureModal.openModal()\r\n this.editFeatureModal.$on('applied', async updatedFeature => {\r\n // Restore popup\r\n if (popup) leafletLayer.bindPopup(popup)\r\n // Save in DB and in memory\r\n if (this.editedLayer._id) {\r\n await this.editFeaturesProperties(updatedFeature)\r\n } else {\r\n await this.$api.getService('features-edition').patch(updatedFeature._id, _.pick(updatedFeature, ['properties']))\r\n }\r\n const geoJson = leafletLayer.toGeoJSON()\r\n Object.assign(geoJson, _.pick(updatedFeature, ['properties']))\r\n this.editableLayer.removeLayer(leafletLayer)\r\n this.editableLayer.addData(geoJson)\r\n this.editFeatureModal.closeModal()\r\n this.editFeatureModal = null\r\n })\r\n this.editFeatureModal.$on('closed', () => {\r\n // Restore popup\r\n if (popup) leafletLayer.bindPopup(popup)\r\n this.editFeatureModal = null\r\n })\r\n },\r\n async onFeatureCreated (event) {\r\n const leafletLayer = event && event.layer\r\n if ((this.layerEditMode !== 'add-polygons' &&\r\n this.layerEditMode !== 'add-rectangles' &&\r\n this.layerEditMode !== 'add-lines' &&\r\n this.layerEditMode !== 'add-points') ||\r\n !leafletLayer) return\r\n\r\n let geoJson = leafletLayer.toGeoJSON()\r\n // Generate temporary ID for feature\r\n const idValue = uid().toString()\r\n let idProp = _.get(this.editedLayer, 'featureId')\r\n idProp = (idProp && (idProp !== '_id')) ? 'properties.' + idProp : '_id'\r\n _.set(geoJson, idProp, idValue)\r\n // Save changes to DB, we use the layer DB ID as layer ID on features\r\n if (this.editedLayer._id) {\r\n geoJson = await this.createFeatures(geoJson, this.editedLayer._id)\r\n } else {\r\n // Generate in memory service _id as string to match what's done with mongo\r\n geoJson._id = idValue\r\n // Service will use the provided _id as object key\r\n await this.$api.getService('features-edition').create(geoJson)\r\n }\r\n this.editableLayer.removeLayer(leafletLayer)\r\n this.editableLayer.addData(geoJson)\r\n },\r\n async onFeaturesEdited (event) {\r\n const leafletLayer = event && event.layer\r\n if ((this.layerEditMode !== 'edit-geometry' &&\r\n this.layerEditMode !== 'drag' &&\r\n this.layerEditMode !== 'rotate') ||\r\n !leafletLayer) return\r\n\r\n // Save changes to DB\r\n const geoJson = leafletLayer.toGeoJSON()\r\n if (this.editedLayer._id) {\r\n await this.editFeaturesGeometry(geoJson)\r\n } else {\r\n const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson]\r\n for (const feature of features) {\r\n await this.$api.getService('features-edition').patch(feature._id, _.pick(feature, ['geometry']))\r\n }\r\n }\r\n },\r\n async onFeaturesDeleted (event) {\r\n const leafletLayer = event && event.layer\r\n if (this.layerEditMode !== 'remove' ||\r\n !leafletLayer) return\r\n\r\n // This is connected to the 'layerremove' event of the editable layer\r\n // but we may also receive 'layerremove' event from the map\r\n if (!event.target || event.target !== this.editableLayer) return\r\n\r\n // Save changes to DB\r\n const geoJson = leafletLayer.toGeoJSON()\r\n if (this.editedLayer._id) {\r\n await this.removeFeatures(geoJson)\r\n } else {\r\n const features = geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson]\r\n for (const feature of features) {\r\n await this.$api.getService('features-edition').remove(feature._id)\r\n }\r\n }\r\n },\r\n onMapZoomWhileEditing (event) {\r\n // Make sure we keep our edition layer on top\r\n if (this.editableLayer) {\r\n this.editableLayer.bringToFront()\r\n }\r\n },\r\n async onRemoveFeature (feature, layer, leafletLayer) {\r\n Dialog.create({\r\n title: this.$t('mixins.editLayers.REMOVE_FEATURE_DIALOG_TITLE'),\r\n message: this.$t('mixins.editLayers.REMOVE_FEATURE_DIALOG_MESSAGE'),\r\n html: true,\r\n ok: {\r\n label: this.$t('OK'),\r\n flat: true\r\n },\r\n cancel: {\r\n label: this.$t('CANCEL'),\r\n flat: true\r\n }\r\n }).onOk(async () => {\r\n const parentLeafletLayer = this.getLeafletLayerByName(layer.name)\r\n if (!parentLeafletLayer) return\r\n await this.removeFeatures(feature)\r\n parentLeafletLayer.removeLayer(leafletLayer)\r\n })\r\n }\r\n },\r\n created () {\r\n // Perform required conversion for default feature styling\r\n if (this.activityOptions.engine.editFeatureStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.editFeatureStyle, 'update-in-place')\r\n if (this.activityOptions.engine.editPointStyle) this.convertFromSimpleStyleSpec(this.activityOptions.engine.editPointStyle, 'update-in-place')\r\n }\r\n}\r\n"]}
|
|
@@ -43,7 +43,10 @@ exports.default = {
|
|
|
43
43
|
var _this = this;
|
|
44
44
|
|
|
45
45
|
this.$on('map-ready', () => {
|
|
46
|
-
|
|
46
|
+
// Instanciate the control to enable the access to the input element.
|
|
47
|
+
// This is required to let Puppeteer upload a file
|
|
48
|
+
// See https://github.com/kalisio/kdk/issues/472
|
|
49
|
+
this.loaderControl = _leaflet2.default.Control.fileLayerLoad(Object.assign({
|
|
47
50
|
// Allows you to use a customized version of L.geoJson.
|
|
48
51
|
// For example if you are using the Proj4Leaflet leaflet plugin,
|
|
49
52
|
// you can pass L.Proj.geoJson and load the files into the
|
|
@@ -58,22 +61,26 @@ exports.default = {
|
|
|
58
61
|
// Restrict accepted file formats (default: .geojson, .kml, and .gpx)
|
|
59
62
|
formats: ['.geojson', '.json', '.kml', '.gpx']
|
|
60
63
|
}, this.activityOptions.engine.fileLayers));
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.map._container.addEventListener('
|
|
69
|
-
|
|
70
|
-
event.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
this.loaderControl.addTo(this.map);
|
|
65
|
+
// Hide the contoler
|
|
66
|
+
const loaderControlElements = document.getElementsByClassName('leaflet-control-filelayer');
|
|
67
|
+
if (loaderControlElements.length > 0) loaderControlElements[0].style.visibility = 'hidden';
|
|
68
|
+
/*
|
|
69
|
+
// Required to support drag'n'drop when not using built-in control
|
|
70
|
+
this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false)
|
|
71
|
+
this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false)
|
|
72
|
+
this.map._container.addEventListener('dragover', (event) => {
|
|
73
|
+
event.stopPropagation()
|
|
74
|
+
event.preventDefault()
|
|
75
|
+
}, false)
|
|
76
|
+
this.map._container.addEventListener('drop', (event) => {
|
|
77
|
+
event.stopPropagation()
|
|
78
|
+
event.preventDefault()
|
|
79
|
+
this.loaderControl.loader.loadMultiple(event.dataTransfer.files)
|
|
80
|
+
this.map.scrollWheelZoom.enable()
|
|
81
|
+
}, false)
|
|
82
|
+
*/
|
|
83
|
+
this.loaderControl.loader.on('data:loaded', (() => {
|
|
77
84
|
var _ref = _asyncToGenerator(function* (event) {
|
|
78
85
|
const name = event.filename ? _path2.default.basename(event.filename, _path2.default.extname(event.filename)) : _this.$t('mixins.fileLayers.IMPORTED_DATA_NAME');
|
|
79
86
|
const engine = {
|
|
@@ -113,7 +120,7 @@ exports.default = {
|
|
|
113
120
|
return _ref.apply(this, arguments);
|
|
114
121
|
};
|
|
115
122
|
})());
|
|
116
|
-
this.loader.on('data:error', event => {
|
|
123
|
+
this.loaderControl.loader.on('data:error', event => {
|
|
117
124
|
_loglevel2.default.error(event.error);
|
|
118
125
|
this.$events.$emit('error', {
|
|
119
126
|
message: this.$t('errors.FILE_IMPORT_ERROR')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.file-layers.js"],"names":["L","togeojson","mounted","$on","
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.file-layers.js"],"names":["L","togeojson","mounted","$on","loaderControl","Control","fileLayerLoad","Object","assign","layer","geoJson","layerOptions","getGeoJsonOptions","addToMap","fileSizeLimit","formats","activityOptions","engine","fileLayers","addTo","map","loaderControlElements","document","getElementsByClassName","length","style","visibility","loader","on","event","name","filename","path","basename","extname","$t","type","isVisible","realtime","icon","scope","featureId","leaflet","cesium","toGeoJSON","schema","_","set","content","features","forEach","feature","_id","toString","addLayer","updateLayer","zoomToLayer","logger","error","$events","$emit","message"],"mappings":"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","file":"mixin.file-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport L from 'leaflet'\r\nimport path from 'path'\r\nimport logger from 'loglevel'\r\nimport togeojson from 'togeojson'\r\nimport fileLayer from 'leaflet-filelayer'\r\nimport { uid } from 'quasar'\r\nimport { generatePropertiesSchema } from '../../utils'\r\n\r\nfileLayer(null, L, togeojson)\r\n\r\nexport default {\r\n mounted () {\r\n this.$on('map-ready', () => {\r\n // Instanciate the control to enable the access to the input element.\r\n // This is required to let Puppeteer upload a file\r\n // See https://github.com/kalisio/kdk/issues/472\r\n this.loaderControl = L.Control.fileLayerLoad(Object.assign({\r\n // Allows you to use a customized version of L.geoJson.\r\n // For example if you are using the Proj4Leaflet leaflet plugin,\r\n // you can pass L.Proj.geoJson and load the files into the\r\n // L.Proj.GeoJson instead of the L.geoJson.\r\n layer: L.geoJson,\r\n // See http://leafletjs.com/reference.html#geojson-options\r\n layerOptions: this.getGeoJsonOptions(),\r\n // Add to map after loading\r\n addToMap: false,\r\n // File size limit in kb\r\n fileSizeLimit: 1024 * 1024,\r\n // Restrict accepted file formats (default: .geojson, .kml, and .gpx)\r\n formats: [\r\n '.geojson',\r\n '.json',\r\n '.kml',\r\n '.gpx'\r\n ]\r\n }, this.activityOptions.engine.fileLayers))\r\n this.loaderControl.addTo(this.map)\r\n // Hide the contoler\r\n const loaderControlElements = document.getElementsByClassName('leaflet-control-filelayer')\r\n if (loaderControlElements.length > 0) loaderControlElements[0].style.visibility = 'hidden'\r\n /*\r\n // Required to support drag'n'drop when not using built-in control\r\n this.map._container.addEventListener('dragenter', () => this.map.scrollWheelZoom.disable(), false)\r\n this.map._container.addEventListener('dragleave', () => this.map.scrollWheelZoom.enable(), false)\r\n this.map._container.addEventListener('dragover', (event) => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n }, false)\r\n this.map._container.addEventListener('drop', (event) => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n this.loaderControl.loader.loadMultiple(event.dataTransfer.files)\r\n this.map.scrollWheelZoom.enable()\r\n }, false)\r\n */\r\n this.loaderControl.loader.on('data:loaded', async event => {\r\n const name = (event.filename\r\n ? path.basename(event.filename, path.extname(event.filename))\r\n : this.$t('mixins.fileLayers.IMPORTED_DATA_NAME'))\r\n const engine = {\r\n type: 'geoJson',\r\n isVisible: true,\r\n realtime: true\r\n }\r\n const layer = {\r\n name,\r\n type: 'OverlayLayer',\r\n icon: 'insert_drive_file',\r\n scope: 'user',\r\n featureId: '_id',\r\n leaflet: engine,\r\n // Avoid sharing reference to the same object although options are similar\r\n // otherwise updating one will automatically update the other one\r\n cesium: Object.assign({}, engine)\r\n }\r\n const geoJson = event.layer.toGeoJSON()\r\n // Generate schema for properties\r\n const schema = generatePropertiesSchema(geoJson, name)\r\n _.set(layer, 'schema', { name, content: schema })\r\n // Generate temporary IDs for features\r\n const features = (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson])\r\n features.forEach(feature => { feature._id = uid().toString() })\r\n // Create an empty layer used as a container\r\n await this.addLayer(layer)\r\n // Set data\r\n await this.updateLayer(name, geoJson)\r\n // Zoom to it\r\n this.zoomToLayer(name)\r\n })\r\n this.loaderControl.loader.on('data:error', event => {\r\n logger.error(event.error)\r\n this.$events.$emit('error', {\r\n message: this.$t('errors.FILE_IMPORT_ERROR')\r\n })\r\n })\r\n })\r\n }\r\n}\r\n"]}
|
|
@@ -12,10 +12,6 @@ var _lodash = require('lodash');
|
|
|
12
12
|
|
|
13
13
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
14
14
|
|
|
15
|
-
var _moment = require('moment');
|
|
16
|
-
|
|
17
|
-
var _moment2 = _interopRequireDefault(_moment);
|
|
18
|
-
|
|
19
15
|
var _sift = require('sift');
|
|
20
16
|
|
|
21
17
|
var _sift2 = _interopRequireDefault(_sift);
|
|
@@ -26,8 +22,12 @@ var _loglevel2 = _interopRequireDefault(_loglevel);
|
|
|
26
22
|
|
|
27
23
|
require('leaflet-realtime');
|
|
28
24
|
|
|
25
|
+
var _time = require('../../../../core/client/time');
|
|
26
|
+
|
|
29
27
|
var _GradientPath = require('../../leaflet/GradientPath');
|
|
30
28
|
|
|
29
|
+
var _MaskLayer = require('../../leaflet/MaskLayer');
|
|
30
|
+
|
|
31
31
|
var _TiledFeatureLayer = require('../../leaflet/TiledFeatureLayer');
|
|
32
32
|
|
|
33
33
|
var _utils = require('../../utils');
|
|
@@ -61,6 +61,11 @@ _leaflet2.default.GeoJSON.geometryToLayer = function (geojson, options) {
|
|
|
61
61
|
return new _GradientPath.GradientPath(geojson, options.style(geojson));
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
if (geometry && properties && properties.mask) {
|
|
65
|
+
if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {
|
|
66
|
+
return new _MaskLayer.MaskLayer(geojson, options.style(geojson));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
64
69
|
return geometryToLayer(geojson, options);
|
|
65
70
|
};
|
|
66
71
|
|
|
@@ -106,7 +111,10 @@ exports.default = {
|
|
|
106
111
|
// And coordinates if not static
|
|
107
112
|
const staticGeometry = _lodash2.default.get(leafletOptions, 'staticGeometry', false);
|
|
108
113
|
if (staticGeometry) return oldLayer;
|
|
109
|
-
|
|
114
|
+
// The feature is changing its geometry type, recreate it
|
|
115
|
+
const oldType = _lodash2.default.get(oldLayer, 'feature.geometry.type');
|
|
116
|
+
const type = _lodash2.default.get(feature, 'geometry.type');
|
|
117
|
+
if (type !== oldType) return;
|
|
110
118
|
const coordinates = feature.geometry.coordinates;
|
|
111
119
|
// FIXME: support others geometry types ?
|
|
112
120
|
switch (type) {
|
|
@@ -162,7 +170,7 @@ exports.default = {
|
|
|
162
170
|
try {
|
|
163
171
|
// Update only the first time or when required according to data update interval
|
|
164
172
|
if (!lastUpdateTime || !_this.shouldSkipFeaturesUpdate(lastUpdateTime, options)) {
|
|
165
|
-
lastUpdateTime =
|
|
173
|
+
lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
166
174
|
successCallback((yield _this.getFeatures(options)));
|
|
167
175
|
}
|
|
168
176
|
} catch (error) {
|
|
@@ -193,7 +201,7 @@ exports.default = {
|
|
|
193
201
|
const searchParams = Object.assign({
|
|
194
202
|
OUTPUTFORMAT: options.wfs.outputFormat, // request as geojson
|
|
195
203
|
SRSNAME: 'EPSG:4326', // result in 4326
|
|
196
|
-
BBOX: `${query.south},${query.west},${query.north},${query.east},EPSG
|
|
204
|
+
BBOX: `${query.south},${query.west},${query.north},${query.east},urn:ogc:def:crs:EPSG::4326` // request bbox
|
|
197
205
|
}, options.wfs.searchParams);
|
|
198
206
|
return wfs.GetFeature(options.wfs.url, options.wfs.version, options.wfs.layer, searchParams, { xml2json: false });
|
|
199
207
|
};
|
|
@@ -205,7 +213,7 @@ exports.default = {
|
|
|
205
213
|
_lodash2.default.set(leafletOptions, 'source', (() => {
|
|
206
214
|
var _ref4 = _asyncToGenerator(function* (successCallback, errorCallback) {
|
|
207
215
|
try {
|
|
208
|
-
const sourceToFetch = sourceCompiler({ time:
|
|
216
|
+
const sourceToFetch = sourceCompiler({ time: _time.Time.getCurrentTime() });
|
|
209
217
|
if (!lastFetchedSource || lastFetchedSource !== sourceToFetch) {
|
|
210
218
|
lastFetchedSource = sourceToFetch;
|
|
211
219
|
successCallback((yield (0, _utils.fetchGeoJson)(sourceToFetch)));
|
|
@@ -452,10 +460,10 @@ exports.default = {
|
|
|
452
460
|
},
|
|
453
461
|
created() {
|
|
454
462
|
this.registerLeafletConstructor(this.createLeafletGeoJsonLayer);
|
|
455
|
-
this.$on('current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
463
|
+
this.$events.$on('time-current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
456
464
|
},
|
|
457
465
|
beforeDestroy() {
|
|
458
|
-
this.$off('current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
466
|
+
this.$events.$off('time-current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
459
467
|
}
|
|
460
468
|
};
|
|
461
469
|
module.exports = exports['default'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.geojson-layers.js"],"names":["wfs","geometryToLayer","L","GeoJSON","geojson","options","geometry","properties","geodesic","type","Geodesic","coordsToLatLngs","coordinates","Object","assign","steps","style","layer","fill","createCircle","coordsToLatLng","radius","gradient","GradientPath","methods","processRealtimeGeoJsonLayerOptions","leafletOptions","leaflet","id","_","get","set","feature","container","createLeafletLayer","has","updateFeature","oldLayer","onEachFeature","setStyle","setIcon","staticGeometry","setLatLng","setData","setLatLngs","service","tiled","removeMissing","successCallback","errorCallback","featureSource","baseQuery","getFeatures","merge","probeService","initialized","lastUpdateTime","getProbeFeatures","error","shouldSkipFeaturesUpdate","currentTime","clone","moment","utc","query","searchParams","OUTPUTFORMAT","outputFormat","SRSNAME","BBOX","south","west","north","east","GetFeature","url","version","xml2json","sourceCompiler","template","lastFetchedSource","sourceToFetch","time","processGeoJsonLayerOptions","dataSource","isNil","features","data","processClusterLayerOptions","cluster","createLeafletGeoJsonLayer","activityOptions","engine","realtime","layerStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","geoJsonOptions","getGeoJsonOptions","keys","forEach","key","layerStyle","convertFromSimpleStyleSpec","tiledLayer","TiledFeatureLayer","setup","on","addTo","removeFrom","$emit","leafletLayer","once","toGeoJSON","values","_features","clearLayers","_onNewData","addLayer","geoJsonLayer","update","timeDimension","source","logger","geojsonOptions","LeafletEvents","Feature","onLeafletFeature","getPopup","unbindPopup","generateStyle","wasOpen","isPopupOpen","bindPopup","Popup","openPopup","getTooltip","unbindTooltip","isTooltipOpen","bindTooltip","Tooltip","openTooltip","pointToLayer","latlng","updateLayer","name","geoJson","remove","getLeafletLayerByName","getLayers","find","_container","filter","getLayer","getFeatureId","toGeoJson","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","$or","$exists","variables","isVisible","geoJsonlayer","redraw","created","registerLeafletConstructor","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport moment from 'moment'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport 'leaflet-realtime'\r\nimport { GradientPath } from '../../leaflet/GradientPath'\r\nimport { TiledFeatureLayer } from '../../leaflet/TiledFeatureLayer'\r\nimport { fetchGeoJson, LeafletEvents, bindLeafletEvents, unbindLeafletEvents } from '../../utils'\r\nimport * as wfs from '../../../common/wfs-utils'\r\n\r\n// Override default Leaflet GeoJson utility to manage some specific use cases\r\nconst geometryToLayer = L.GeoJSON.geometryToLayer\r\nL.GeoJSON.geometryToLayer = function (geojson, options) {\r\n const geometry = geojson.geometry\r\n const properties = geojson.properties\r\n if (geometry && properties && properties.geodesic) {\r\n if (geometry.type === 'LineString') {\r\n return new L.Geodesic([L.GeoJSON.coordsToLatLngs(geometry.coordinates, 0)],\r\n Object.assign({ steps: 100 }, options.style(geojson)))\r\n } else if (geometry.type === 'Point') {\r\n const layer = new L.Geodesic([], Object.assign({ fill: true, steps: 360 }, options.style(geojson)))\r\n layer.createCircle(L.GeoJSON.coordsToLatLng(geometry.coordinates), properties.radius)\r\n return layer\r\n }\r\n }\r\n if (geometry && properties && properties.gradient) {\r\n if (geometry.type === 'LineString') {\r\n return new GradientPath(geojson, options.style(geojson))\r\n }\r\n }\r\n return geometryToLayer(geojson, options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n processRealtimeGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Alter type as required by the plugin\r\n leafletOptions.type = 'realtime'\r\n // We first need to create an underlying container or setup Id function\r\n const id = _.get(options, 'featureId', _.get(leafletOptions, 'id', '_id'))\r\n if (id) _.set(leafletOptions, 'getFeatureId', (feature) => _.get(feature, 'properties.' + id, _.get(feature, id)))\r\n const container = _.get(leafletOptions, 'container')\r\n // If container given and not already instanciated, do it\r\n if (typeof container === 'string') {\r\n leafletOptions.container = this.createLeafletLayer({ type: container })\r\n }\r\n // Custom update function to ensure dynamic styling works as expected\r\n if (!_.has(leafletOptions, 'updateFeature')) {\r\n leafletOptions.updateFeature = function (feature, oldLayer) {\r\n // A new feature is coming, create it\r\n if (!oldLayer) return\r\n // An existing one is found, simply update styling, etc.\r\n leafletOptions.onEachFeature(feature, oldLayer)\r\n if (oldLayer.setStyle) {\r\n // Some vector layers can be used for points, eg circleMarker,\r\n // in this case we use marker styling instead of lines/polygons styling\r\n if (feature.geometry.type === 'Point') {\r\n // FIXME: updating style in place does not seem to work, so for now we recreate the whole marker\r\n // oldLayer.setStyle(leafletOptions.pointToLayer(feature))\r\n return\r\n } else {\r\n oldLayer.setStyle(leafletOptions.style(feature))\r\n }\r\n }\r\n if (oldLayer.setIcon) {\r\n // FIXME: updating icon in place requires to recreate it anyway, so for now we recreate the whole marker\r\n // oldLayer.setIcon(_.get(leafletOptions.pointToLayer(feature, oldLayer.getLatLng()), 'options.icon'))\r\n return\r\n }\r\n // And coordinates if not static\r\n const staticGeometry = _.get(leafletOptions, 'staticGeometry', false)\r\n if (staticGeometry) return oldLayer\r\n const type = feature.geometry.type\r\n const coordinates = feature.geometry.coordinates\r\n // FIXME: support others geometry types ?\r\n switch (type) {\r\n case 'Point':\r\n oldLayer.setLatLng(L.GeoJSON.coordsToLatLngs(coordinates))\r\n break\r\n case 'LineString':\r\n case 'MultiLineString':\r\n // Support Gradient Path\r\n if (typeof oldLayer.setData === 'function') oldLayer.setData(feature)\r\n else oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'LineString' ? 0 : 1))\r\n break\r\n case 'Polygon':\r\n case 'MultiPolygon':\r\n oldLayer.setLatLngs(L.GeoJSON.coordsToLatLngs(coordinates, type === 'Polygon' ? 1 : 2))\r\n break\r\n }\r\n return oldLayer\r\n }\r\n }\r\n // Check for feature service layers\r\n if (options.service) {\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n // Tell realtime plugin how to update/load data\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Fetching is managed by tiles but even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (baseQuery) => this.getFeatures(_.merge({ baseQuery }, options))\r\n } else {\r\n leafletOptions.removeMissing = !options.probeService\r\n let initialized = !options.probeService // If no probe reference, nothing to be initialized\r\n let lastUpdateTime\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n // If the probe location is given by another service use it on initialization\r\n if (!initialized) {\r\n try {\r\n // Use probes as reference\r\n successCallback(await this.getProbeFeatures(options))\r\n initialized = true\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n }\r\n try {\r\n // Update only the first time or when required according to data update interval\r\n if (!lastUpdateTime || !this.shouldSkipFeaturesUpdate(lastUpdateTime, options)) {\r\n lastUpdateTime = (this.currentTime ? this.currentTime.clone() : moment.utc())\r\n successCallback(await this.getFeatures(options))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n }\r\n } else if (options.wfs) {\r\n // Features are fetched from a WFS connection\r\n _.set(leafletOptions, 'start', false)\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n\r\n if (leafletOptions.tiled) {\r\n leafletOptions.removeMissing = false\r\n // Generate fetch function for tiled feature layer\r\n leafletOptions.featureSource = (query) => {\r\n const searchParams = Object.assign({\r\n OUTPUTFORMAT: options.wfs.outputFormat, // request as geojson\r\n SRSNAME: 'EPSG:4326', // result in 4326\r\n BBOX: `${query.south},${query.west},${query.north},${query.east},EPSG:4326` // request bbox\r\n }, options.wfs.searchParams)\r\n return wfs.GetFeature(options.wfs.url, options.wfs.version, options.wfs.layer, searchParams, { xml2json: false })\r\n }\r\n } else {\r\n }\r\n } else if (_.has(leafletOptions, 'sourceTemplate')) {\r\n const sourceCompiler = _.template(_.get(leafletOptions, 'sourceTemplate'))\r\n let lastFetchedSource\r\n // Tell realtime plugin how to update/load data\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {\r\n try {\r\n const sourceToFetch = sourceCompiler({ time: this.currentTime || moment.utc() })\r\n if (!lastFetchedSource || (lastFetchedSource !== sourceToFetch)) {\r\n lastFetchedSource = sourceToFetch\r\n successCallback(await fetchGeoJson(sourceToFetch))\r\n }\r\n } catch (error) {\r\n errorCallback(error)\r\n }\r\n })\r\n // We perform manual update\r\n _.set(leafletOptions, 'start', false)\r\n } else if (!_.has(leafletOptions, 'source')) {\r\n _.set(leafletOptions, 'start', false)\r\n // Even for manual update leaflet realtime require a src\r\n _.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})\r\n }\r\n },\r\n async processGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n const dataSource = _.get(leafletOptions, 'source')\r\n if (_.isNil(dataSource)) {\r\n // Empty valid GeoJson\r\n _.set(leafletOptions, 'source', { type: 'FeatureCollection', features: [] })\r\n } else if (typeof dataSource === 'string') { // URL ? If so load data\r\n let data\r\n // Check for feature service layers\r\n if (options.service) {\r\n data = await this.getFeatures(options)\r\n } else { // Otherwise standard HTTP\r\n data = await fetchGeoJson(dataSource)\r\n }\r\n _.set(leafletOptions, 'source', data)\r\n }\r\n },\r\n processClusterLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n leafletOptions.container = this.createLeafletLayer(Object.assign({ type: 'markerClusterGroup' }, leafletOptions.cluster))\r\n },\r\n async createLeafletGeoJsonLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Check for valid type\r\n if (leafletOptions.type !== 'geoJson') return\r\n\r\n try {\r\n // If not explicitely disable use defaults for clustering\r\n if (!_.has(leafletOptions, 'cluster') && this.activityOptions.engine.cluster) {\r\n // Merge existing config or create a new one on layer\r\n if (leafletOptions.cluster) Object.assign(leafletOptions.cluster, this.activityOptions.engine.cluster)\r\n else leafletOptions.cluster = Object.assign({}, this.activityOptions.engine.cluster)\r\n }\r\n // Specific case of clustered layer where we first need to create an underlying group\r\n if (leafletOptions.cluster) {\r\n this.processClusterLayerOptions(options)\r\n }\r\n // Specific case of realtime layer\r\n if (leafletOptions.realtime) {\r\n this.processRealtimeGeoJsonLayerOptions(options)\r\n } else {\r\n await this.processGeoJsonLayerOptions(options)\r\n }\r\n // Optimize templating by creating compilers up-front\r\n const layerStyleTemplate = _.get(leafletOptions, 'template')\r\n if (layerStyleTemplate) {\r\n // We allow to template style properties according to feature, because it can be slow you have to specify a subset of properties\r\n leafletOptions.template = layerStyleTemplate.map(property => ({\r\n property, compiler: _.template(_.get(leafletOptions, property))\r\n }))\r\n }\r\n const popupTemplate = _.get(leafletOptions, 'popup.template')\r\n if (popupTemplate) {\r\n leafletOptions.popup.compiler = _.template(popupTemplate)\r\n }\r\n const tooltipTemplate = _.get(leafletOptions, 'tooltip.template')\r\n if (tooltipTemplate) {\r\n leafletOptions.tooltip.compiler = _.template(tooltipTemplate)\r\n }\r\n // Merge generic GeoJson options and layer options\r\n const geoJsonOptions = this.getGeoJsonOptions(options)\r\n Object.keys(geoJsonOptions).forEach(key => {\r\n // If layer provided do not override\r\n if (!_.has(leafletOptions, key)) _.set(leafletOptions, key, _.get(geoJsonOptions, key))\r\n })\r\n leafletOptions.layerStyle = this.convertFromSimpleStyleSpec(leafletOptions)\r\n let layer = this.createLeafletLayer(options)\r\n\r\n // Specific case of realtime layer where the underlying container also need to be added to map\r\n if (leafletOptions.realtime) {\r\n // Build associated tile layer and bind required events\r\n if (leafletOptions.tiled) {\r\n const tiledLayer = new TiledFeatureLayer(leafletOptions)\r\n tiledLayer.setup(this, options)\r\n layer.tiledLayer = tiledLayer\r\n layer.on('add', () => tiledLayer.addTo(this.map))\r\n layer.on('remove', () => tiledLayer.removeFrom(this.map))\r\n }\r\n // Bind event\r\n layer.on('update', (data) => this.$emit('layer-updated', Object.assign({ layer: options, leafletLayer: layer }, data)))\r\n if (leafletOptions.container) layer.once('add', () => leafletOptions.container.addTo(this.map))\r\n // Add FeatureGroup interface so that layer edition works as well\r\n layer.toGeoJSON = () => ({ type: 'FeatureCollection', features: _.values(layer._features) })\r\n layer.clearLayers = () => layer._onNewData(true, { type: 'FeatureCollection', features: [] })\r\n layer.addLayer = (geoJsonLayer) => layer._onNewData(true, geoJsonLayer.toGeoJSON())\r\n // We launch a first update to initialize data\r\n layer.update()\r\n } else {\r\n // Specific case of clustered layer where the group is added instead of the geojson layer\r\n if (leafletOptions.cluster && leafletOptions.container) {\r\n leafletOptions.container.addLayer(layer)\r\n layer = leafletOptions.container\r\n }\r\n }\r\n // Specific case of time dimension layer where we embed the underlying geojson layer\r\n if (leafletOptions.timeDimension) {\r\n layer = this.createLeafletLayer(Object.assign({ type: 'timeDimension.layer.geoJson', source: layer }, leafletOptions.timeDimension))\r\n }\r\n return layer\r\n } catch (error) {\r\n logger.error(error)\r\n return null\r\n }\r\n },\r\n getGeoJsonOptions (options = {}) {\r\n const geojsonOptions = {\r\n onEachFeature: (feature, layer) => {\r\n // Need to restone event listeners as context has changed\r\n unbindLeafletEvents(layer, LeafletEvents.Feature)\r\n // Check for custom onEachFeature function\r\n if (typeof this.onLeafletFeature === 'function') this.onLeafletFeature(feature, layer, options)\r\n // Then for tooltip/popup\r\n // First remove previous popup if any\r\n if (layer.getPopup()) layer.unbindPopup()\r\n const popup = this.generateStyle('popup', feature, layer, options)\r\n if (popup) {\r\n // Because we build a new popup we need to restore previous state\r\n const wasOpen = (layer.getPopup() && layer.isPopupOpen())\r\n layer.bindPopup(popup)\r\n bindLeafletEvents(layer.getPopup(), LeafletEvents.Popup, this, options)\r\n if (wasOpen) layer.openPopup()\r\n }\r\n // First remove previous tooltip if any\r\n if (layer.getTooltip()) layer.unbindTooltip()\r\n const tooltip = this.generateStyle('tooltip', feature, layer, options)\r\n if (tooltip) {\r\n // Because we build a new tooltip we need to restore previous state\r\n const wasOpen = (layer.getTooltip() && layer.isTooltipOpen())\r\n layer.bindTooltip(tooltip)\r\n bindLeafletEvents(layer.getTooltip(), LeafletEvents.Tooltip, this, options)\r\n if (wasOpen) layer.openTooltip()\r\n }\r\n bindLeafletEvents(layer, LeafletEvents.Feature, this, options)\r\n },\r\n style: (feature) => {\r\n return this.generateStyle('featureStyle', feature, options)\r\n },\r\n pointToLayer: (feature, latlng) => {\r\n return this.generateStyle('markerStyle', feature, latlng, options)\r\n }\r\n }\r\n\r\n return geojsonOptions\r\n },\r\n updateLayer (name, geoJson, remove) {\r\n // Retrieve the layer\r\n let layer = this.getLeafletLayerByName(name)\r\n if (!layer) return // Cannot update invisible layer\r\n // Check if clustering on top of a realtime layer, in this case we have a top-level container\r\n let container\r\n if (typeof layer.getLayers === 'function') {\r\n container = layer\r\n layer = container.getLayers().find(layer => layer._container === container)\r\n }\r\n /* By default leaflet-realtime only performs add with manual update\r\n (see https://github.com/perliedman/leaflet-realtime/issues/136)\r\n but we'd like to perform similarly to automated updates\r\n */\r\n if (remove && (typeof layer.remove === 'function')) {\r\n let features = (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson])\r\n // Filter features to ensure some have not been already removed\r\n // FIXME: indeed it seems to causes a bug with clustering, see https://github.com/kalisio/kdk/issues/140\r\n features = features.filter(feature => layer.getLayer(layer.options.getFeatureId(feature)))\r\n layer.remove(features)\r\n } else if (typeof layer._onNewData === 'function') {\r\n layer._onNewData(layer.options.removeMissing, geoJson || this.toGeoJson(name))\r\n }\r\n },\r\n onCurrentTimeChangedGeoJsonLayers (time) {\r\n const geoJsonlayers = _.values(this.layers).filter(sift({\r\n 'leaflet.type': 'geoJson',\r\n 'leaflet.realtime': true,\r\n $or: [ // Supported by template URL or time-based features\r\n { 'leaflet.sourceTemplate': { $exists: true } },\r\n { service: { $exists: true }, variables: { $exists: true } }\r\n ],\r\n isVisible: true\r\n }))\r\n geoJsonlayers.forEach(async geoJsonlayer => {\r\n // Retrieve the layer\r\n const layer = this.getLeafletLayerByName(geoJsonlayer.name)\r\n // Then update\r\n if (layer.tiledLayer) layer.tiledLayer.redraw()\r\n else layer.update()\r\n })\r\n }\r\n },\r\n created () {\r\n this.registerLeafletConstructor(this.createLeafletGeoJsonLayer)\r\n this.$on('current-time-changed', this.onCurrentTimeChangedGeoJsonLayers)\r\n },\r\n beforeDestroy () {\r\n this.$off('current-time-changed', this.onCurrentTimeChangedHeatmapLayers)\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.geojson-layers.js"],"names":["wfs","geometryToLayer","L","GeoJSON","geojson","options","geometry","properties","geodesic","type","Geodesic","coordsToLatLngs","coordinates","Object","assign","steps","style","layer","fill","createCircle","coordsToLatLng","radius","gradient","GradientPath","mask","MaskLayer","methods","processRealtimeGeoJsonLayerOptions","leafletOptions","leaflet","id","_","get","set","feature","container","createLeafletLayer","has","updateFeature","oldLayer","onEachFeature","setStyle","setIcon","staticGeometry","oldType","setLatLng","setData","setLatLngs","service","tiled","removeMissing","successCallback","errorCallback","featureSource","baseQuery","getFeatures","merge","probeService","initialized","lastUpdateTime","getProbeFeatures","error","shouldSkipFeaturesUpdate","Time","getCurrentTime","clone","query","searchParams","OUTPUTFORMAT","outputFormat","SRSNAME","BBOX","south","west","north","east","GetFeature","url","version","xml2json","sourceCompiler","template","lastFetchedSource","sourceToFetch","time","processGeoJsonLayerOptions","dataSource","isNil","features","data","processClusterLayerOptions","cluster","createLeafletGeoJsonLayer","activityOptions","engine","realtime","layerStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","geoJsonOptions","getGeoJsonOptions","keys","forEach","key","layerStyle","convertFromSimpleStyleSpec","tiledLayer","TiledFeatureLayer","setup","on","addTo","removeFrom","$emit","leafletLayer","once","toGeoJSON","values","_features","clearLayers","_onNewData","addLayer","geoJsonLayer","update","timeDimension","source","logger","geojsonOptions","LeafletEvents","Feature","onLeafletFeature","getPopup","unbindPopup","generateStyle","wasOpen","isPopupOpen","bindPopup","Popup","openPopup","getTooltip","unbindTooltip","isTooltipOpen","bindTooltip","Tooltip","openTooltip","pointToLayer","latlng","updateLayer","name","geoJson","remove","getLeafletLayerByName","getLayers","find","_container","filter","getLayer","getFeatureId","toGeoJson","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","$or","$exists","variables","isVisible","geoJsonlayer","redraw","created","registerLeafletConstructor","$events","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import L from 'leaflet'\r\nimport _ from 'lodash'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport 'leaflet-realtime'\r\nimport { Time } from '../../../../core/client/time'\r\nimport { GradientPath } from '../../leaflet/GradientPath'\r\nimport { MaskLayer } from '../../leaflet/MaskLayer'\r\nimport { TiledFeatureLayer } from '../../leaflet/TiledFeatureLayer'\r\nimport { fetchGeoJson, LeafletEvents, bindLeafletEvents, unbindLeafletEvents } from '../../utils'\r\nimport * as wfs from '../../../common/wfs-utils'\r\n\r\n// Override default Leaflet GeoJson utility to manage some specific use cases\r\nconst geometryToLayer = L.GeoJSON.geometryToLayer\r\nL.GeoJSON.geometryToLayer = function (geojson, options) {\r\n const geometry = geojson.geometry\r\n const properties = geojson.properties\r\n if (geometry && properties && properties.geodesic) {\r\n if (geometry.type === 'LineString') {\r\n return new L.Geodesic([L.GeoJSON.coordsToLatLngs(geometry.coordinates, 0)],\r\n Object.assign({ steps: 100 }, options.style(geojson)))\r\n } else if (geometry.type === 'Point') {\r\n const layer = new L.Geodesic([], Object.assign({ fill: true, steps: 360 }, options.style(geojson)))\r\n layer.createCircle(L.GeoJSON.coordsToLatLng(geometry.coordinates), properties.radius)\r\n return layer\r\n }\r\n }\r\n if (geometry && properties && properties.gradient) {\r\n if (geometry.type === 'LineString') {\r\n return new GradientPath(geojson, options.style(geojson))\r\n }\r\n }\r\n if (geometry && properties && properties.mask) {\r\n if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\r\n return new MaskLayer(geojson, options.style(geojson))\r\n }\r\n }\r\n return geometryToLayer(geojson, options)\r\n}\r\n\r\nexport default {\r\n methods: {\r\n processRealtimeGeoJsonLayerOptions (options) {\r\n const leafletOptions = options.leaflet || options\r\n // Alter type as required by the plugin\r\n leafletOptions.type = 'realtime'\r\n // We first need to create an underlying container or setup Id function\r\n const id = _.get(options, 'featureId', _.get(leafletOptions, 'id', '_id'))\r\n if (id) _.set(leafletOptions, 'getFeatureId', (feature) => _.get(feature, 'properties.' + id, _.get(feature, id)))\r\n const container = _.get(leafletOptions, 'container')\r\n // If container given and not already instanciated, do it\r\n if (typeof container === 'string') {\r\n leafletOptions.container = this.createLeafletLayer({ type: container })\r\n }\r\n // Custom update function to ensure dynamic styling works as expected\r\n if (!_.has(leafletOptions, 'updateFeature')) {\r\n leafletOptions.updateFeature = function (feature, oldLayer) {\r\n // A new feature is coming, create it\r\n if (!oldLayer) return\r\n // An existing one is found, simply update styling, 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"]}
|
|
@@ -16,18 +16,20 @@ var _georaster = require('georaster');
|
|
|
16
16
|
|
|
17
17
|
var _georaster2 = _interopRequireDefault(_georaster);
|
|
18
18
|
|
|
19
|
-
var _chromaJs = require('chroma-js');
|
|
20
|
-
|
|
21
|
-
var _chromaJs2 = _interopRequireDefault(_chromaJs);
|
|
22
|
-
|
|
23
19
|
var _moment = require('moment');
|
|
24
20
|
|
|
25
21
|
var _moment2 = _interopRequireDefault(_moment);
|
|
26
22
|
|
|
23
|
+
var _chromaJs = require('chroma-js');
|
|
24
|
+
|
|
25
|
+
var _chromaJs2 = _interopRequireDefault(_chromaJs);
|
|
26
|
+
|
|
27
27
|
var _weacastLeaflet = require('weacast-leaflet');
|
|
28
28
|
|
|
29
29
|
var _client = require('weacast-core/client');
|
|
30
30
|
|
|
31
|
+
var _utils = require('../../utils');
|
|
32
|
+
|
|
31
33
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
34
|
|
|
33
35
|
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
|
|
@@ -57,6 +59,7 @@ const GeorasterLayer = _leaflet2.default.Layer.extend({
|
|
|
57
59
|
return;
|
|
58
60
|
}
|
|
59
61
|
// Setup the colormap
|
|
62
|
+
this.colorMap = (0, _utils.buildColorMap)(this);
|
|
60
63
|
const scale = this.scale ? this.scale : '';
|
|
61
64
|
if (this.classes) {
|
|
62
65
|
this.colorMap = _chromaJs2.default.scale(scale).classes(this.classes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.georaster-layers.js"],"names":["GeorasterLayer","L","Layer","extend","initialize","options","Object","assign","currentTime","utc","colorMap","gridRenderer","GridRenderer","gridOverlay","mesh","setOptions","onAdd","map","addLayer","onRemove","removeLayer","setRaster","raster","clearRaster","scale","classes","chroma","domain","grid","Grid","bounds","xmin","ymin","xmax","ymax","origin","size","width","height","resolution","pixelWidth","pixelHeight","data","values","band","matrix","setColorMap","setGrid","redraw","fire","loadRaster","url","response","fetch","ok","arrayBuffer","georaster","setCurrentTime","datetime","interval","timelag","timestamp","valueOf","nearestTime","Math","floor","format","methods","createLeafletGeorasterLayer","leafletOptions","leaflet","type","_","get","nodata","georasterLayer","created","registerLeafletConstructor"],"mappings":";;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;AAEA,MAAMA,iBAAiBC,kBAAEC,KAAF,CAAQC,MAAR,CAAe;;AAEpCC,aAAYC,OAAZ,EAAqB;AACnBC,WAAOC,MAAP,CAAc,IAAd,EAAoBF,OAApB;AACA,SAAKG,WAAL,GAAmB,wBAASC,GAAT,EAAnB;AACA,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKC,YAAL,GAAoB,IAAIC,4BAAJ,EAApB;AACA,SAAKC,WAAL,GAAmB,KAAKF,YAAL,CAAkBP,UAAlB,CAA6BE,OAAOC,MAAP,CAAcF,OAAd,EAAuB,EAAES,MAAM,IAAR,EAAvB,CAA7B,CAAnB;AACAb,sBAAEc,UAAF,CAAa,IAAb,EAAmBV,WAAW,EAA9B;AACD,GATmC;;AAWpCW,QAAOC,GAAP,EAAY;AACVA,QAAIC,QAAJ,CAAa,KAAKL,WAAlB;AACD,GAbmC;;AAepCM,WAAUF,GAAV,EAAe;AACbA,QAAIG,WAAJ,CAAgB,KAAKP,WAArB;AACD,GAjBmC;;AAmBpCQ,YAAWC,MAAX,EAAmB;AACjB,QAAI,CAACA,MAAL,EAAa;AACX,WAAKC,WAAL;AACA;AACD;AACD;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/map/mixin.georaster-layers.js"],"names":["GeorasterLayer","L","Layer","extend","initialize","options","Object","assign","currentTime","utc","colorMap","gridRenderer","GridRenderer","gridOverlay","mesh","setOptions","onAdd","map","addLayer","onRemove","removeLayer","setRaster","raster","clearRaster","scale","classes","chroma","domain","grid","Grid","bounds","xmin","ymin","xmax","ymax","origin","size","width","height","resolution","pixelWidth","pixelHeight","data","values","band","matrix","setColorMap","setGrid","redraw","fire","loadRaster","url","response","fetch","ok","arrayBuffer","georaster","setCurrentTime","datetime","interval","timelag","timestamp","valueOf","nearestTime","Math","floor","format","methods","createLeafletGeorasterLayer","leafletOptions","leaflet","type","_","get","nodata","georasterLayer","created","registerLeafletConstructor"],"mappings":"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","file":"mixin.georaster-layers.js","sourcesContent":["import _ from 'lodash'\r\nimport L from 'leaflet'\r\nimport parseGeoraster from 'georaster'\r\nimport moment from 'moment'\r\nimport chroma from 'chroma-js'\r\nimport { GridRenderer } from 'weacast-leaflet'\r\nimport { Grid } from 'weacast-core/client'\r\nimport { buildColorMap } from '../../utils'\r\n\r\nconst GeorasterLayer = L.Layer.extend({\r\n\r\n initialize (options) {\r\n Object.assign(this, options)\r\n this.currentTime = moment().utc()\r\n this.colorMap = null\r\n this.gridRenderer = new GridRenderer()\r\n this.gridOverlay = this.gridRenderer.initialize(Object.assign(options, { mesh: true }))\r\n L.setOptions(this, options || {})\r\n },\r\n\r\n onAdd (map) {\r\n map.addLayer(this.gridOverlay)\r\n },\r\n\r\n onRemove (map) {\r\n map.removeLayer(this.gridOverlay)\r\n },\r\n\r\n setRaster (raster) {\r\n if (!raster) {\r\n this.clearRaster()\r\n return\r\n }\r\n // Setup the colormap\r\n this.colorMap = buildColorMap(this)\r\n const scale = this.scale ? this.scale : ''\r\n if (this.classes) {\r\n this.colorMap = chroma.scale(scale).classes(this.classes)\r\n } else if (this.domain) {\r\n this.colorMap = chroma.scale(scale).domain(this.domain)\r\n }\r\n\r\n // Setup the grid\r\n const grid = new Grid({\r\n bounds: [raster.xmin, raster.ymin, raster.xmax, raster.ymax],\r\n origin: [raster.xmin, raster.ymax],\r\n size: [raster.width, raster.height],\r\n resolution: [raster.pixelWidth, raster.pixelHeight],\r\n data: raster.values[this.band],\r\n matrix: true\r\n })\r\n this.gridRenderer.setColorMap(this.colorMap)\r\n this.gridRenderer.setGrid(grid)\r\n this.gridOverlay.redraw()\r\n this.fire('data', raster)\r\n },\r\n\r\n clearRaster () {\r\n this.gridRenderer.setGrid(null)\r\n this.gridRenderer.setColorMap(null)\r\n this.colorMap = null\r\n },\r\n\r\n async loadRaster (url) {\r\n const response = await fetch(url)\r\n if (response.ok) {\r\n const arrayBuffer = await response.arrayBuffer()\r\n const georaster = await parseGeoraster(arrayBuffer)\r\n // Update the data\r\n this.setRaster(georaster)\r\n } else {\r\n this.clearRaster()\r\n }\r\n },\r\n\r\n async setCurrentTime (datetime) {\r\n if (!this.interval) return\r\n const timelag = this.timelag ? this.timelag : 0\r\n const timestamp = datetime.valueOf()\r\n const nearestTime = moment(Math.floor(timestamp / this.interval) * this.interval + timelag).utc()\r\n if (this.currentTime !== nearestTime) {\r\n // Store the time\r\n this.currentTime = nearestTime\r\n // Compute the url\r\n await this.loadRaster(this.currentTime.format(this.url))\r\n }\r\n }\r\n})\r\n\r\nexport default {\r\n methods: {\r\n async createLeafletGeorasterLayer (options) {\r\n const leafletOptions = options.leaflet || options\r\n\r\n // Check for valid type\r\n if (leafletOptions.type !== 'georaster') return\r\n\r\n // Copy options\r\n const colorMap = _.get(options, 'variables[0].chromajs', null)\r\n if (colorMap) Object.assign(leafletOptions, colorMap)\r\n const band = _.get(options, 'variables[0].band', 0)\r\n Object.assign(leafletOptions, { band })\r\n const nodata = _.get(options, 'variables[0].nodata', null)\r\n if (nodata) Object.assign(leafletOptions, { nodata })\r\n\r\n Object.assign(leafletOptions)\r\n this.georasterLayer = new GeorasterLayer(leafletOptions)\r\n return this.georasterLayer\r\n }\r\n },\r\n created () {\r\n this.registerLeafletConstructor(this.createLeafletGeorasterLayer)\r\n }\r\n}\r\n"]}
|
|
@@ -8,6 +8,8 @@ var _lodash = require('lodash');
|
|
|
8
8
|
|
|
9
9
|
var _lodash2 = _interopRequireDefault(_lodash);
|
|
10
10
|
|
|
11
|
+
var _time = require('../../../../core/client/time');
|
|
12
|
+
|
|
11
13
|
var _GSMaPLayer = require('../../leaflet/GSMaPLayer');
|
|
12
14
|
|
|
13
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -17,8 +19,6 @@ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, a
|
|
|
17
19
|
exports.default = {
|
|
18
20
|
methods: {
|
|
19
21
|
createLeafletGSMaPLayer(options) {
|
|
20
|
-
var _this = this;
|
|
21
|
-
|
|
22
22
|
return _asyncToGenerator(function* () {
|
|
23
23
|
const leafletOptions = options.leaflet || options;
|
|
24
24
|
// Check for valid type
|
|
@@ -29,7 +29,7 @@ exports.default = {
|
|
|
29
29
|
if (colorMap) Object.assign(leafletOptions, { chromajs: colorMap });
|
|
30
30
|
|
|
31
31
|
// Add current time to options
|
|
32
|
-
leafletOptions.time =
|
|
32
|
+
leafletOptions.time = _time.Time.getCurrentTime();
|
|
33
33
|
|
|
34
34
|
// Then create layer
|
|
35
35
|
return new _GSMaPLayer.GSMaPLayer(leafletOptions);
|