@kalisio/kdk 1.3.4 → 1.4.1
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/{0b8aa700-8daa-49ce-85e7-a8f8965d55f0.json → 03fad5e1-0985-48cc-bcbf-b53b3567b484.json} +0 -0
- package/.nyc_output/{20df4355-911a-4b16-a8ab-d3392e9f0a7f.json → 0a387479-430c-4f37-afd0-7cb413b43f71.json} +0 -0
- package/.nyc_output/3def2322-4b64-4d43-886a-2f1d1ac42e7f.json +1 -0
- package/.nyc_output/{257af0bb-96c3-465a-b5ef-a1df60078d5f.json → 48c4e1d1-6dc8-4531-9519-3715b705900e.json} +0 -0
- package/.nyc_output/{284aebfa-23fd-425f-9d72-e4b8904dc224.json → 5942dc79-7596-496b-aca5-0a4fbea84813.json} +0 -0
- package/.nyc_output/dcf9446b-252f-41f8-96f9-0119b21bc294.json +1 -0
- package/.nyc_output/{5cbee06e-be6e-468a-bd78-4793ee785fe4.json → e4dcc112-f0f4-42fe-a481-fb65d8cb1b7d.json} +0 -0
- package/.nyc_output/processinfo/03fad5e1-0985-48cc-bcbf-b53b3567b484.json +1 -0
- package/.nyc_output/processinfo/0a387479-430c-4f37-afd0-7cb413b43f71.json +1 -0
- package/.nyc_output/processinfo/3def2322-4b64-4d43-886a-2f1d1ac42e7f.json +1 -0
- package/.nyc_output/processinfo/48c4e1d1-6dc8-4531-9519-3715b705900e.json +1 -0
- package/.nyc_output/processinfo/5942dc79-7596-496b-aca5-0a4fbea84813.json +1 -0
- package/.nyc_output/processinfo/{2bece194-92f7-4971-a688-10604044a7fa.json → dcf9446b-252f-41f8-96f9-0119b21bc294.json} +1 -1
- package/.nyc_output/processinfo/e4dcc112-f0f4-42fe-a481-fb65d8cb1b7d.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +251 -94
- package/README.md +1 -1
- package/coverage/core/api/application.js.html +145 -145
- package/coverage/core/api/authentication.js.html +36 -36
- package/coverage/core/api/db.js.html +74 -74
- package/coverage/core/api/hooks/hooks.account.js.html +4 -4
- package/coverage/core/api/hooks/hooks.authentication.js.html +4 -4
- 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 +93 -45
- package/coverage/core/api/hooks/index.html +66 -66
- 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 +1 -1
- package/coverage/core/api/services/account/index.html +1 -1
- 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 +19 -19
- 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 +32 -32
- 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 +158 -158
- package/coverage/lcov-report/core/api/application.js.html +145 -145
- package/coverage/lcov-report/core/api/authentication.js.html +36 -36
- package/coverage/lcov-report/core/api/db.js.html +74 -74
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +4 -4
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +4 -4
- 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 +93 -45
- package/coverage/lcov-report/core/api/hooks/index.html +66 -66
- 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 +1 -1
- package/coverage/lcov-report/core/api/services/account/index.html +1 -1
- 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 +19 -19
- 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 +32 -32
- 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 +158 -158
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +55 -55
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +302 -275
- 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 +3530 -3606
- package/coverage/map/api/hooks/hooks.catalog.js.html +55 -55
- package/coverage/map/api/hooks/hooks.query.js.html +302 -275
- 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 +23 -158
- 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/KFilter.vue +3 -2
- 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 -3
- 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 +132 -93
- package/lib/core/client/i18n/core_fr.json +55 -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/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 +15 -3
- 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 +14 -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 +63 -16
- package/lib/map/client/i18n/map_fr.json +66 -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 +6 -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 +275 -52
- 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
|
@@ -263,6 +263,9 @@ exports.default = {
|
|
|
263
263
|
delete this.cesiumLayers[name];
|
|
264
264
|
this.$emit('layer-removed', layer);
|
|
265
265
|
},
|
|
266
|
+
clearLayers() {
|
|
267
|
+
Object.keys(this.layers).forEach(layer => this.removeLayer(layer));
|
|
268
|
+
},
|
|
266
269
|
zoomToBounds(bounds) {
|
|
267
270
|
this.viewer.camera.flyTo({
|
|
268
271
|
duration: 0,
|
|
@@ -426,7 +429,7 @@ exports.default = {
|
|
|
426
429
|
this.userLocation = false;
|
|
427
430
|
},
|
|
428
431
|
beforeDestroy() {
|
|
429
|
-
|
|
432
|
+
this.clearLayers();
|
|
430
433
|
},
|
|
431
434
|
destroyed() {
|
|
432
435
|
this.viewer.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/globe/mixin.base-globe.js"],"names":["BuildModuleUrl","setBaseUrl","data","layers","methods","refreshGlobe","setupGlobe","domEl","token","options","viewerOptions","activityOptions","engine","viewer","Cesium","Ion","defaultAccessToken","Object","assign","imageryProviderViewModels","terrainProviderViewModels","Viewer","scene","imageryLayers","removeAll","registerCesiumHandler","getDefaultPickHandler","cesiumWidget","screenSpaceEventHandler","removeInputAction","ScreenSpaceEventType","LEFT_CLICK","LEFT_DOUBLE_CLICK","viewBounds","Rectangle","$emit","processCesiumLayerOptions","processedOptions","_","cloneDeep","cesium","iconUrl","buildModuleUrl","name","attribution","isTerrainLayer","type","createCesiumLayer","cesiumOptions","provider","url","createFunction","ImageryLayer","registerCesiumConstructor","constructor","cesiumFactory","push","handler","eventType","cesiumHandler","ScreenSpaceEventHandler","canvas","originalEvent","setInputAction","event","unregisterCesiumHandler","cesiumHandlers","createLayer","layer","i","length","hasLayer","has","isLayerVisible","getLayerByName","cesiumLayer","getCesiumLayerByName","terrainProvider","contains","Cesium3DTileset","primitives","show","dataSources","isLayerDisabled","cesiumLayers","getLayers","filter","values","hasLayers","showLayer","error","logger","add","isVisible","hideLayer","remove","addLayer","isDisabled","$set","get","renameLayer","previousName","newName","$delete","removeLayer","zoomToBounds","bounds","camera","flyTo","duration","destination","fromDegrees","zoomToLayer","entities","center","longitude","latitude","altitude","heading","pitch","roll","positionCartographic","target","Cartesian3","height","orientation","Math","toRadians","clock","shouldAnimate","setView","getCenter","toDegrees","getBounds","computeViewRectangle","globe","ellipsoid","south","west","north","east","showUserLocation","position","$geolocation","pinBuilder","PinBuilder","fromMakiIconId","Color","fromCssColorString","colors","getBrand","userLocationEntity","billboard","image","toDataURL","verticalOrigin","VerticalOrigin","BOTTOM","selectedEntity","userLocation","hideUserLocation","isUserLocationVisible","setCursor","className","container","classList","isCursor","unsetCursor","getLayerNameForEntity","entity","layerName","forOwn","value","key","getNbChildrenForEntity","_children","getChildForEntity","index","getPositionForEntity","polygon","BoundingSphere","fromPoints","hierarchy","getValue","positions","polyline","Ellipsoid","WGS84","scaleToGeodeticSurface","emittedEvent","pickedPosition","pickEllipsoid","endPosition","Cartographic","fromCartesian","latlng","lng","lat","pickedObject","pick","id","primitive","Entity","feature","exportKml","kml","geoJson","togeojson","features","geometry","coordinates","properties","created","beforeDestroy","keys","forEach","destroyed","destroy"],"mappings":"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","file":"mixin.base-globe.js","sourcesContent":["import _ from 'lodash'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport { colors } from 'quasar'\r\nimport togeojson from 'togeojson'\r\nimport Cesium from 'cesium/Source/Cesium.js'\r\nimport 'cesium/Source/Widgets/widgets.css'\r\nimport BuildModuleUrl from 'cesium/Source/Core/buildModuleUrl'\r\nimport { convertCesiumHandlerEvent } from '../../utils'\r\n// Cesium has its own dynamic module loader requiring to be configured\r\n// Cesium files need to be also added as static assets of the applciation\r\nBuildModuleUrl.setBaseUrl('./statics/Cesium/')\r\n\r\nexport default {\r\n data () {\r\n return {\r\n layers: {}\r\n }\r\n },\r\n methods: {\r\n refreshGlobe () {\r\n },\r\n setupGlobe (domEl, token, options) {\r\n const viewerOptions = options || this.activityOptions.engine.viewer\r\n if (token) Cesium.Ion.defaultAccessToken = token\r\n // If we don't need ion\r\n else Cesium.Ion.defaultAccessToken = ''\r\n // Initialize the globe\r\n Object.assign(viewerOptions, {\r\n imageryProviderViewModels: [],\r\n terrainProviderViewModels: []\r\n })\r\n this.viewer = new Cesium.Viewer(domEl, viewerOptions)\r\n // Cesium always create a default provider\r\n this.viewer.scene.imageryLayers.removeAll()\r\n // Add defaults handler\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'MOUSE_MOVE')\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'LEFT_CLICK')\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'RIGHT_CLICK')\r\n // Remove default Cesium handlers\r\n this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)\r\n this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\r\n this.viewBounds = new Cesium.Rectangle()\r\n this.$emit('globe-ready')\r\n },\r\n processCesiumLayerOptions (options) {\r\n // Because we update objects in place and don't want cesium internal objects to be reactive\r\n const processedOptions = _.cloneDeep(options)\r\n // Transform from string to actual object\r\n processedOptions.cesium.iconUrl = Cesium.buildModuleUrl(processedOptions.iconUrl)\r\n // Copy generic options\r\n processedOptions.cesium.name = processedOptions.name\r\n processedOptions.cesium.attribution = processedOptions.attribution\r\n return processedOptions\r\n },\r\n isTerrainLayer (options) {\r\n return (options.type === 'Cesium') || (options.type === 'Ellipsoid')\r\n },\r\n createCesiumLayer (options) {\r\n const cesiumOptions = options.cesium || options\r\n let provider\r\n if (this.isTerrainLayer(cesiumOptions)) {\r\n if (cesiumOptions.url || (cesiumOptions.type === 'Ellipsoid')) provider = cesiumOptions.type + 'TerrainProvider'\r\n // If no url given will use default terrain creation function createWorldTerrain()\r\n else provider = 'WorldTerrain'\r\n } else {\r\n provider = cesiumOptions.type + 'ImageryProvider'\r\n }\r\n // Handle specific case of built-in creation functions\r\n const createFunction = 'create' + provider\r\n provider = (Cesium[createFunction] ? Cesium[createFunction](cesiumOptions) : new Cesium[provider](cesiumOptions))\r\n // Terrain is directly managed using a provider\r\n return (this.isTerrainLayer(cesiumOptions) ? provider : new Cesium.ImageryLayer(provider))\r\n },\r\n registerCesiumConstructor (constructor) {\r\n this.cesiumFactory.push(constructor)\r\n },\r\n registerCesiumHandler (handler, eventType) {\r\n if (!this.cesiumHandler) this.cesiumHandler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)\r\n const originalEvent = convertCesiumHandlerEvent(eventType)\r\n this.cesiumHandler.setInputAction((event) => handler(Object.assign(event, { originalEvent })),\r\n Cesium.ScreenSpaceEventType[eventType])\r\n },\r\n unregisterCesiumHandler (eventType) {\r\n this.cesiumHandlers.removeInputAction(Cesium.ScreenSpaceEventType[eventType])\r\n },\r\n async createLayer (options) {\r\n const processedOptions = this.processCesiumLayerOptions(options)\r\n let layer\r\n // Iterate over all registered constructors until we find one\r\n for (let i = 0; i < this.cesiumFactory.length; i++) {\r\n const constructor = this.cesiumFactory[i]\r\n layer = await constructor(processedOptions)\r\n if (layer) break\r\n }\r\n // Use default Cesium layer constructor if none found\r\n layer = layer || this.createCesiumLayer(processedOptions)\r\n // Keep track of processed options\r\n layer.processedOptions = processedOptions\r\n return layer\r\n },\r\n hasLayer (name) {\r\n return _.has(this.layers, name)\r\n },\r\n isLayerVisible (name) {\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return false\r\n const cesiumLayer = this.getCesiumLayerByName(name)\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n return this.viewer.terrainProvider === cesiumLayer\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n return this.viewer.scene.imageryLayers.contains(cesiumLayer)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n return this.viewer.scene.primitives.contains(cesiumLayer) && cesiumLayer.show\r\n } else {\r\n return this.viewer.dataSources.contains(cesiumLayer)\r\n }\r\n },\r\n isLayerDisabled (layer) {\r\n // TODO\r\n return false\r\n },\r\n getLayerByName (name) {\r\n return this.layers[name]\r\n },\r\n getCesiumLayerByName (name) {\r\n return this.cesiumLayers[name]\r\n },\r\n getLayers (filter = {}) {\r\n return _.values(this.layers).filter(sift(filter))\r\n },\r\n hasLayers (filter = {}) {\r\n return _.values(this.layers).filter(sift(filter)).length > 0\r\n },\r\n async showLayer (name) {\r\n // Retieve the layer\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // Check the visibility state\r\n if (this.isLayerVisible(name)) return\r\n // Create the Cesium layer on show\r\n let cesiumLayer = this.getCesiumLayerByName(name)\r\n if (!cesiumLayer) {\r\n try {\r\n cesiumLayer = await this.createLayer(layer)\r\n } catch (error) {\r\n logger.error(error)\r\n return\r\n }\r\n }\r\n // Add the cesium layer to the globe\r\n this.cesiumLayers[name] = cesiumLayer\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n this.viewer.terrainProvider = cesiumLayer\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n this.viewer.scene.imageryLayers.add(cesiumLayer)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n cesiumLayer.show = true\r\n if (!this.viewer.scene.primitives.contains(cesiumLayer)) this.viewer.scene.primitives.add(cesiumLayer)\r\n } else {\r\n this.viewer.dataSources.add(cesiumLayer)\r\n }\r\n layer.isVisible = true\r\n this.$emit('layer-shown', layer, cesiumLayer)\r\n },\r\n hideLayer (name) {\r\n // retrieve the layer\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // Check the visibility state\r\n if (!this.isLayerVisible(name)) return\r\n layer.isVisible = false\r\n // Remove the cesium layer from globe\r\n const cesiumLayer = this.cesiumLayers[name]\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n this.viewer.terrainProvider = null\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n this.viewer.scene.imageryLayers.remove(cesiumLayer, false)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n cesiumLayer.show = false\r\n } else {\r\n this.viewer.dataSources.remove(cesiumLayer, false)\r\n }\r\n this.$emit('layer-hidden', layer, cesiumLayer)\r\n },\r\n async addLayer (layer) {\r\n if (layer && !this.hasLayer(layer.name)) {\r\n layer.isVisible = false\r\n layer.isDisabled = this.isLayerDisabled(layer)\r\n // Store the layer and make it reactive\r\n this.$set(this.layers, layer.name, layer)\r\n this.$emit('layer-added', layer)\r\n // Handle the visibility state\r\n if (_.get(layer, 'cesium.isVisible', false)) await this.showLayer(layer.name)\r\n }\r\n return layer\r\n },\r\n renameLayer (previousName, newName) {\r\n const layer = this.getLayerByName(previousName)\r\n const cesiumLayer = this.getCesiumLayerByName(previousName)\r\n if (!layer) return\r\n // Update underlying layer map if layer has been already shown\r\n if (cesiumLayer) {\r\n this.cesiumLayers[newName] = cesiumLayer\r\n delete this.cesiumLayers[previousName]\r\n }\r\n // Update underlying layer map, this one is reactive\r\n this.$set(this.layers, newName, layer)\r\n this.$delete(this.layers, previousName)\r\n },\r\n removeLayer (name) {\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // If it was visible remove it from map\r\n if (layer.isVisible) this.hideLayer(name)\r\n const cesiumLayer = this.cesiumLayers[name]\r\n if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n this.viewer.scene.primitives.remove(cesiumLayer)\r\n }\r\n // Delete the layer and make it reactive\r\n this.$delete(this.layers, layer.name)\r\n delete this.cesiumLayers[name]\r\n this.$emit('layer-removed', layer)\r\n },\r\n zoomToBounds (bounds) {\r\n this.viewer.camera.flyTo({\r\n duration: 0,\r\n destination: Cesium.Rectangle.fromDegrees(bounds[0][1], bounds[0][0], bounds[1][1], bounds[1][0])\r\n })\r\n },\r\n zoomToLayer (name) {\r\n const layer = this.getCesiumLayerByName(name)\r\n if (!layer || !layer.entities) return\r\n\r\n this.viewer.flyTo(layer.entities, { duration: 0 })\r\n },\r\n center (longitude, latitude, altitude, heading = 0, pitch = -90, roll = 0) {\r\n const center = this.viewer.camera.positionCartographic\r\n const target = {\r\n destination: Cesium.Cartesian3.fromDegrees(longitude, latitude, altitude || center.height),\r\n orientation: {\r\n heading: Cesium.Math.toRadians(heading),\r\n pitch: Cesium.Math.toRadians(pitch),\r\n roll: Cesium.Math.toRadians(roll)\r\n }\r\n }\r\n if (this.viewer.clock.shouldAnimate) this.viewer.camera.flyTo(target)\r\n else this.viewer.camera.setView(target)\r\n },\r\n getCenter () {\r\n const center = this.viewer.camera.positionCartographic\r\n return {\r\n longitude: Cesium.Math.toDegrees(center.longitude),\r\n latitude: Cesium.Math.toDegrees(center.latitude),\r\n altitude: center.height\r\n }\r\n },\r\n getBounds () {\r\n const bounds = this.viewer.camera.computeViewRectangle(this.viewer.scene.globe.ellipsoid, this.viewBounds)\r\n const south = Cesium.Math.toDegrees(bounds.south)\r\n const west = Cesium.Math.toDegrees(bounds.west)\r\n const north = Cesium.Math.toDegrees(bounds.north)\r\n const east = Cesium.Math.toDegrees(bounds.east)\r\n return [[south, west], [north, east]]\r\n },\r\n async showUserLocation () {\r\n const position = this.$geolocation.get().position\r\n // TODO: no specific marker yet, simply center\r\n if (position) {\r\n this.center(position.longitude, position.latitude)\r\n const pinBuilder = new Cesium.PinBuilder()\r\n const canvas = await pinBuilder.fromMakiIconId('marker', Cesium.Color.fromCssColorString(colors.getBrand('primary')), 48)\r\n this.userLocationEntity = this.viewer.entities.add({\r\n name: 'user-location',\r\n position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude),\r\n billboard: {\r\n image: canvas.toDataURL(),\r\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\r\n }\r\n })\r\n this.viewer.selectedEntity = this.userLocationEntity\r\n this.userLocation = true\r\n }\r\n },\r\n hideUserLocation () {\r\n if (this.userLocationEntity) {\r\n this.viewer.entities.remove(this.userLocationEntity)\r\n this.userLocationEntity = null\r\n }\r\n this.userLocation = false\r\n },\r\n isUserLocationVisible () {\r\n // TODO: no specific marker to show yet\r\n return this.userLocation\r\n },\r\n setCursor (className) {\r\n this.viewer.container.classList.add(className)\r\n },\r\n isCursor (className) {\r\n return this.viewer.container.classList.contains(className)\r\n },\r\n unsetCursor (className) {\r\n this.viewer.container.classList.remove(className)\r\n },\r\n getLayerNameForEntity (entity) {\r\n let layerName\r\n _.forOwn(this.cesiumLayers, (value, key) => {\r\n if (!layerName && value.entities) {\r\n if (value.entities.contains(entity)) layerName = key\r\n }\r\n })\r\n return layerName\r\n },\r\n getNbChildrenForEntity (entity) {\r\n if (entity._children) return entity._children.length\r\n else return 0\r\n },\r\n getChildForEntity (entity, index) {\r\n if (this.getNbChildrenForEntity(entity) > 0) return entity._children[index || 0]\r\n },\r\n getPositionForEntity (entity) {\r\n let position = entity.position\r\n if (!position) {\r\n if (entity.polygon) {\r\n position = Cesium.BoundingSphere.fromPoints(entity.polygon.hierarchy.getValue().positions).center\r\n } else if (entity.polyline) {\r\n position = Cesium.BoundingSphere.fromPoints(entity.polyline.positions.getValue()).center\r\n }\r\n Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(position, position)\r\n }\r\n return position\r\n },\r\n getDefaultPickHandler (event) {\r\n const emittedEvent = {}\r\n let options\r\n let pickedPosition = this.viewer.camera.pickEllipsoid(event.endPosition || event.position, this.viewer.scene.globe.ellipsoid)\r\n if (pickedPosition) {\r\n // This is for 3D handlers\r\n emittedEvent.pickedPosition = pickedPosition\r\n pickedPosition = Cesium.Cartographic.fromCartesian(pickedPosition)\r\n const longitude = Cesium.Math.toDegrees(pickedPosition.longitude)\r\n const latitude = Cesium.Math.toDegrees(pickedPosition.latitude)\r\n // This ensure we can use similar handlers than for Leaflet\r\n emittedEvent.latlng = [latitude, longitude]\r\n emittedEvent.latlng.lng = longitude\r\n emittedEvent.latlng.lat = latitude\r\n }\r\n const pickedObject = this.viewer.scene.pick(event.endPosition || event.position)\r\n if (pickedObject) {\r\n emittedEvent.target = pickedObject.id || pickedObject.primitive.id\r\n if (emittedEvent.target instanceof Cesium.Entity) {\r\n // If feature have been lost at import try to recreate it in order to be compatible with 2D\r\n if (!emittedEvent.target.feature) {\r\n let feature = { type: 'Feature' }\r\n // FIXME: Generate GeoJson feature if possible (requires Cesium 1.59)\r\n if (typeof Cesium.exportKml === 'function') {\r\n const kml = Cesium.exportKml({ entities: [emittedEvent.target] })\r\n const geoJson = togeojson.kml(kml)\r\n if (geoJson.features.length > 0) feature = geoJson.features[0]\r\n } else {\r\n const position = Cesium.Cartographic.fromCartesian(emittedEvent.target.position\r\n ? emittedEvent.target.position.getValue(0) : emittedEvent.pickedPosition)\r\n feature.geometry = {\r\n type: 'Point',\r\n coordinates: [Cesium.Math.toDegrees(position.longitude), Cesium.Math.toDegrees(position.latitude)]\r\n }\r\n }\r\n feature.properties = (emittedEvent.target.properties ? emittedEvent.target.properties.getValue(0) : {})\r\n emittedEvent.target.feature = feature\r\n }\r\n let layer = this.getLayerNameForEntity(emittedEvent.target)\r\n if (layer) layer = this.getCesiumLayerByName(layer)\r\n if (layer) options = layer.processedOptions\r\n }\r\n }\r\n // Mimic Leaflet events\r\n this.$emit(event.originalEvent.name, options, emittedEvent)\r\n }\r\n },\r\n created () {\r\n this.cesiumLayers = {}\r\n this.cesiumFactory = []\r\n // TODO: no specific marker, just keep status\r\n this.userLocation = false\r\n },\r\n beforeDestroy () {\r\n Object.keys(this.layers).forEach((layer) => this.removeLayer(layer))\r\n },\r\n destroyed () {\r\n this.viewer.destroy()\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../map/client/mixins/globe/mixin.base-globe.js"],"names":["BuildModuleUrl","setBaseUrl","data","layers","methods","refreshGlobe","setupGlobe","domEl","token","options","viewerOptions","activityOptions","engine","viewer","Cesium","Ion","defaultAccessToken","Object","assign","imageryProviderViewModels","terrainProviderViewModels","Viewer","scene","imageryLayers","removeAll","registerCesiumHandler","getDefaultPickHandler","cesiumWidget","screenSpaceEventHandler","removeInputAction","ScreenSpaceEventType","LEFT_CLICK","LEFT_DOUBLE_CLICK","viewBounds","Rectangle","$emit","processCesiumLayerOptions","processedOptions","_","cloneDeep","cesium","iconUrl","buildModuleUrl","name","attribution","isTerrainLayer","type","createCesiumLayer","cesiumOptions","provider","url","createFunction","ImageryLayer","registerCesiumConstructor","constructor","cesiumFactory","push","handler","eventType","cesiumHandler","ScreenSpaceEventHandler","canvas","originalEvent","setInputAction","event","unregisterCesiumHandler","cesiumHandlers","createLayer","layer","i","length","hasLayer","has","isLayerVisible","getLayerByName","cesiumLayer","getCesiumLayerByName","terrainProvider","contains","Cesium3DTileset","primitives","show","dataSources","isLayerDisabled","cesiumLayers","getLayers","filter","values","hasLayers","showLayer","error","logger","add","isVisible","hideLayer","remove","addLayer","isDisabled","$set","get","renameLayer","previousName","newName","$delete","removeLayer","clearLayers","keys","forEach","zoomToBounds","bounds","camera","flyTo","duration","destination","fromDegrees","zoomToLayer","entities","center","longitude","latitude","altitude","heading","pitch","roll","positionCartographic","target","Cartesian3","height","orientation","Math","toRadians","clock","shouldAnimate","setView","getCenter","toDegrees","getBounds","computeViewRectangle","globe","ellipsoid","south","west","north","east","showUserLocation","position","$geolocation","pinBuilder","PinBuilder","fromMakiIconId","Color","fromCssColorString","colors","getBrand","userLocationEntity","billboard","image","toDataURL","verticalOrigin","VerticalOrigin","BOTTOM","selectedEntity","userLocation","hideUserLocation","isUserLocationVisible","setCursor","className","container","classList","isCursor","unsetCursor","getLayerNameForEntity","entity","layerName","forOwn","value","key","getNbChildrenForEntity","_children","getChildForEntity","index","getPositionForEntity","polygon","BoundingSphere","fromPoints","hierarchy","getValue","positions","polyline","Ellipsoid","WGS84","scaleToGeodeticSurface","emittedEvent","pickedPosition","pickEllipsoid","endPosition","Cartographic","fromCartesian","latlng","lng","lat","pickedObject","pick","id","primitive","Entity","feature","exportKml","kml","geoJson","togeojson","features","geometry","coordinates","properties","created","beforeDestroy","destroyed","destroy"],"mappings":"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","file":"mixin.base-globe.js","sourcesContent":["import _ from 'lodash'\r\nimport sift from 'sift'\r\nimport logger from 'loglevel'\r\nimport { colors } from 'quasar'\r\nimport togeojson from 'togeojson'\r\nimport Cesium from 'cesium/Source/Cesium.js'\r\nimport 'cesium/Source/Widgets/widgets.css'\r\nimport BuildModuleUrl from 'cesium/Source/Core/buildModuleUrl'\r\nimport { convertCesiumHandlerEvent } from '../../utils'\r\n// Cesium has its own dynamic module loader requiring to be configured\r\n// Cesium files need to be also added as static assets of the applciation\r\nBuildModuleUrl.setBaseUrl('./statics/Cesium/')\r\n\r\nexport default {\r\n data () {\r\n return {\r\n layers: {}\r\n }\r\n },\r\n methods: {\r\n refreshGlobe () {\r\n },\r\n setupGlobe (domEl, token, options) {\r\n const viewerOptions = options || this.activityOptions.engine.viewer\r\n if (token) Cesium.Ion.defaultAccessToken = token\r\n // If we don't need ion\r\n else Cesium.Ion.defaultAccessToken = ''\r\n // Initialize the globe\r\n Object.assign(viewerOptions, {\r\n imageryProviderViewModels: [],\r\n terrainProviderViewModels: []\r\n })\r\n this.viewer = new Cesium.Viewer(domEl, viewerOptions)\r\n // Cesium always create a default provider\r\n this.viewer.scene.imageryLayers.removeAll()\r\n // Add defaults handler\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'MOUSE_MOVE')\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'LEFT_CLICK')\r\n this.registerCesiumHandler(this.getDefaultPickHandler, 'RIGHT_CLICK')\r\n // Remove default Cesium handlers\r\n this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)\r\n this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\r\n this.viewBounds = new Cesium.Rectangle()\r\n this.$emit('globe-ready')\r\n },\r\n processCesiumLayerOptions (options) {\r\n // Because we update objects in place and don't want cesium internal objects to be reactive\r\n const processedOptions = _.cloneDeep(options)\r\n // Transform from string to actual object\r\n processedOptions.cesium.iconUrl = Cesium.buildModuleUrl(processedOptions.iconUrl)\r\n // Copy generic options\r\n processedOptions.cesium.name = processedOptions.name\r\n processedOptions.cesium.attribution = processedOptions.attribution\r\n return processedOptions\r\n },\r\n isTerrainLayer (options) {\r\n return (options.type === 'Cesium') || (options.type === 'Ellipsoid')\r\n },\r\n createCesiumLayer (options) {\r\n const cesiumOptions = options.cesium || options\r\n let provider\r\n if (this.isTerrainLayer(cesiumOptions)) {\r\n if (cesiumOptions.url || (cesiumOptions.type === 'Ellipsoid')) provider = cesiumOptions.type + 'TerrainProvider'\r\n // If no url given will use default terrain creation function createWorldTerrain()\r\n else provider = 'WorldTerrain'\r\n } else {\r\n provider = cesiumOptions.type + 'ImageryProvider'\r\n }\r\n // Handle specific case of built-in creation functions\r\n const createFunction = 'create' + provider\r\n provider = (Cesium[createFunction] ? Cesium[createFunction](cesiumOptions) : new Cesium[provider](cesiumOptions))\r\n // Terrain is directly managed using a provider\r\n return (this.isTerrainLayer(cesiumOptions) ? provider : new Cesium.ImageryLayer(provider))\r\n },\r\n registerCesiumConstructor (constructor) {\r\n this.cesiumFactory.push(constructor)\r\n },\r\n registerCesiumHandler (handler, eventType) {\r\n if (!this.cesiumHandler) this.cesiumHandler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)\r\n const originalEvent = convertCesiumHandlerEvent(eventType)\r\n this.cesiumHandler.setInputAction((event) => handler(Object.assign(event, { originalEvent })),\r\n Cesium.ScreenSpaceEventType[eventType])\r\n },\r\n unregisterCesiumHandler (eventType) {\r\n this.cesiumHandlers.removeInputAction(Cesium.ScreenSpaceEventType[eventType])\r\n },\r\n async createLayer (options) {\r\n const processedOptions = this.processCesiumLayerOptions(options)\r\n let layer\r\n // Iterate over all registered constructors until we find one\r\n for (let i = 0; i < this.cesiumFactory.length; i++) {\r\n const constructor = this.cesiumFactory[i]\r\n layer = await constructor(processedOptions)\r\n if (layer) break\r\n }\r\n // Use default Cesium layer constructor if none found\r\n layer = layer || this.createCesiumLayer(processedOptions)\r\n // Keep track of processed options\r\n layer.processedOptions = processedOptions\r\n return layer\r\n },\r\n hasLayer (name) {\r\n return _.has(this.layers, name)\r\n },\r\n isLayerVisible (name) {\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return false\r\n const cesiumLayer = this.getCesiumLayerByName(name)\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n return this.viewer.terrainProvider === cesiumLayer\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n return this.viewer.scene.imageryLayers.contains(cesiumLayer)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n return this.viewer.scene.primitives.contains(cesiumLayer) && cesiumLayer.show\r\n } else {\r\n return this.viewer.dataSources.contains(cesiumLayer)\r\n }\r\n },\r\n isLayerDisabled (layer) {\r\n // TODO\r\n return false\r\n },\r\n getLayerByName (name) {\r\n return this.layers[name]\r\n },\r\n getCesiumLayerByName (name) {\r\n return this.cesiumLayers[name]\r\n },\r\n getLayers (filter = {}) {\r\n return _.values(this.layers).filter(sift(filter))\r\n },\r\n hasLayers (filter = {}) {\r\n return _.values(this.layers).filter(sift(filter)).length > 0\r\n },\r\n async showLayer (name) {\r\n // Retieve the layer\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // Check the visibility state\r\n if (this.isLayerVisible(name)) return\r\n // Create the Cesium layer on show\r\n let cesiumLayer = this.getCesiumLayerByName(name)\r\n if (!cesiumLayer) {\r\n try {\r\n cesiumLayer = await this.createLayer(layer)\r\n } catch (error) {\r\n logger.error(error)\r\n return\r\n }\r\n }\r\n // Add the cesium layer to the globe\r\n this.cesiumLayers[name] = cesiumLayer\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n this.viewer.terrainProvider = cesiumLayer\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n this.viewer.scene.imageryLayers.add(cesiumLayer)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n cesiumLayer.show = true\r\n if (!this.viewer.scene.primitives.contains(cesiumLayer)) this.viewer.scene.primitives.add(cesiumLayer)\r\n } else {\r\n this.viewer.dataSources.add(cesiumLayer)\r\n }\r\n layer.isVisible = true\r\n this.$emit('layer-shown', layer, cesiumLayer)\r\n },\r\n hideLayer (name) {\r\n // retrieve the layer\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // Check the visibility state\r\n if (!this.isLayerVisible(name)) return\r\n layer.isVisible = false\r\n // Remove the cesium layer from globe\r\n const cesiumLayer = this.cesiumLayers[name]\r\n if (this.isTerrainLayer(layer.cesium)) {\r\n this.viewer.terrainProvider = null\r\n } else if (cesiumLayer instanceof Cesium.ImageryLayer) {\r\n this.viewer.scene.imageryLayers.remove(cesiumLayer, false)\r\n } else if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n cesiumLayer.show = false\r\n } else {\r\n this.viewer.dataSources.remove(cesiumLayer, false)\r\n }\r\n this.$emit('layer-hidden', layer, cesiumLayer)\r\n },\r\n async addLayer (layer) {\r\n if (layer && !this.hasLayer(layer.name)) {\r\n layer.isVisible = false\r\n layer.isDisabled = this.isLayerDisabled(layer)\r\n // Store the layer and make it reactive\r\n this.$set(this.layers, layer.name, layer)\r\n this.$emit('layer-added', layer)\r\n // Handle the visibility state\r\n if (_.get(layer, 'cesium.isVisible', false)) await this.showLayer(layer.name)\r\n }\r\n return layer\r\n },\r\n renameLayer (previousName, newName) {\r\n const layer = this.getLayerByName(previousName)\r\n const cesiumLayer = this.getCesiumLayerByName(previousName)\r\n if (!layer) return\r\n // Update underlying layer map if layer has been already shown\r\n if (cesiumLayer) {\r\n this.cesiumLayers[newName] = cesiumLayer\r\n delete this.cesiumLayers[previousName]\r\n }\r\n // Update underlying layer map, this one is reactive\r\n this.$set(this.layers, newName, layer)\r\n this.$delete(this.layers, previousName)\r\n },\r\n removeLayer (name) {\r\n const layer = this.getLayerByName(name)\r\n if (!layer) return\r\n // If it was visible remove it from map\r\n if (layer.isVisible) this.hideLayer(name)\r\n const cesiumLayer = this.cesiumLayers[name]\r\n if (cesiumLayer instanceof Cesium.Cesium3DTileset) {\r\n this.viewer.scene.primitives.remove(cesiumLayer)\r\n }\r\n // Delete the layer and make it reactive\r\n this.$delete(this.layers, layer.name)\r\n delete this.cesiumLayers[name]\r\n this.$emit('layer-removed', layer)\r\n },\r\n clearLayers () {\r\n Object.keys(this.layers).forEach((layer) => this.removeLayer(layer))\r\n },\r\n zoomToBounds (bounds) {\r\n this.viewer.camera.flyTo({\r\n duration: 0,\r\n destination: Cesium.Rectangle.fromDegrees(bounds[0][1], bounds[0][0], bounds[1][1], bounds[1][0])\r\n })\r\n },\r\n zoomToLayer (name) {\r\n const layer = this.getCesiumLayerByName(name)\r\n if (!layer || !layer.entities) return\r\n\r\n this.viewer.flyTo(layer.entities, { duration: 0 })\r\n },\r\n center (longitude, latitude, altitude, heading = 0, pitch = -90, roll = 0) {\r\n const center = this.viewer.camera.positionCartographic\r\n const target = {\r\n destination: Cesium.Cartesian3.fromDegrees(longitude, latitude, altitude || center.height),\r\n orientation: {\r\n heading: Cesium.Math.toRadians(heading),\r\n pitch: Cesium.Math.toRadians(pitch),\r\n roll: Cesium.Math.toRadians(roll)\r\n }\r\n }\r\n if (this.viewer.clock.shouldAnimate) this.viewer.camera.flyTo(target)\r\n else this.viewer.camera.setView(target)\r\n },\r\n getCenter () {\r\n const center = this.viewer.camera.positionCartographic\r\n return {\r\n longitude: Cesium.Math.toDegrees(center.longitude),\r\n latitude: Cesium.Math.toDegrees(center.latitude),\r\n altitude: center.height\r\n }\r\n },\r\n getBounds () {\r\n const bounds = this.viewer.camera.computeViewRectangle(this.viewer.scene.globe.ellipsoid, this.viewBounds)\r\n const south = Cesium.Math.toDegrees(bounds.south)\r\n const west = Cesium.Math.toDegrees(bounds.west)\r\n const north = Cesium.Math.toDegrees(bounds.north)\r\n const east = Cesium.Math.toDegrees(bounds.east)\r\n return [[south, west], [north, east]]\r\n },\r\n async showUserLocation () {\r\n const position = this.$geolocation.get().position\r\n // TODO: no specific marker yet, simply center\r\n if (position) {\r\n this.center(position.longitude, position.latitude)\r\n const pinBuilder = new Cesium.PinBuilder()\r\n const canvas = await pinBuilder.fromMakiIconId('marker', Cesium.Color.fromCssColorString(colors.getBrand('primary')), 48)\r\n this.userLocationEntity = this.viewer.entities.add({\r\n name: 'user-location',\r\n position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude),\r\n billboard: {\r\n image: canvas.toDataURL(),\r\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\r\n }\r\n })\r\n this.viewer.selectedEntity = this.userLocationEntity\r\n this.userLocation = true\r\n }\r\n },\r\n hideUserLocation () {\r\n if (this.userLocationEntity) {\r\n this.viewer.entities.remove(this.userLocationEntity)\r\n this.userLocationEntity = null\r\n }\r\n this.userLocation = false\r\n },\r\n isUserLocationVisible () {\r\n // TODO: no specific marker to show yet\r\n return this.userLocation\r\n },\r\n setCursor (className) {\r\n this.viewer.container.classList.add(className)\r\n },\r\n isCursor (className) {\r\n return this.viewer.container.classList.contains(className)\r\n },\r\n unsetCursor (className) {\r\n this.viewer.container.classList.remove(className)\r\n },\r\n getLayerNameForEntity (entity) {\r\n let layerName\r\n _.forOwn(this.cesiumLayers, (value, key) => {\r\n if (!layerName && value.entities) {\r\n if (value.entities.contains(entity)) layerName = key\r\n }\r\n })\r\n return layerName\r\n },\r\n getNbChildrenForEntity (entity) {\r\n if (entity._children) return entity._children.length\r\n else return 0\r\n },\r\n getChildForEntity (entity, index) {\r\n if (this.getNbChildrenForEntity(entity) > 0) return entity._children[index || 0]\r\n },\r\n getPositionForEntity (entity) {\r\n let position = entity.position\r\n if (!position) {\r\n if (entity.polygon) {\r\n position = Cesium.BoundingSphere.fromPoints(entity.polygon.hierarchy.getValue().positions).center\r\n } else if (entity.polyline) {\r\n position = Cesium.BoundingSphere.fromPoints(entity.polyline.positions.getValue()).center\r\n }\r\n Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(position, position)\r\n }\r\n return position\r\n },\r\n getDefaultPickHandler (event) {\r\n const emittedEvent = {}\r\n let options\r\n let pickedPosition = this.viewer.camera.pickEllipsoid(event.endPosition || event.position, this.viewer.scene.globe.ellipsoid)\r\n if (pickedPosition) {\r\n // This is for 3D handlers\r\n emittedEvent.pickedPosition = pickedPosition\r\n pickedPosition = Cesium.Cartographic.fromCartesian(pickedPosition)\r\n const longitude = Cesium.Math.toDegrees(pickedPosition.longitude)\r\n const latitude = Cesium.Math.toDegrees(pickedPosition.latitude)\r\n // This ensure we can use similar handlers than for Leaflet\r\n emittedEvent.latlng = [latitude, longitude]\r\n emittedEvent.latlng.lng = longitude\r\n emittedEvent.latlng.lat = latitude\r\n }\r\n const pickedObject = this.viewer.scene.pick(event.endPosition || event.position)\r\n if (pickedObject) {\r\n emittedEvent.target = pickedObject.id || pickedObject.primitive.id\r\n if (emittedEvent.target instanceof Cesium.Entity) {\r\n // If feature have been lost at import try to recreate it in order to be compatible with 2D\r\n if (!emittedEvent.target.feature) {\r\n let feature = { type: 'Feature' }\r\n // FIXME: Generate GeoJson feature if possible (requires Cesium 1.59)\r\n if (typeof Cesium.exportKml === 'function') {\r\n const kml = Cesium.exportKml({ entities: [emittedEvent.target] })\r\n const geoJson = togeojson.kml(kml)\r\n if (geoJson.features.length > 0) feature = geoJson.features[0]\r\n } else {\r\n const position = Cesium.Cartographic.fromCartesian(emittedEvent.target.position\r\n ? emittedEvent.target.position.getValue(0) : emittedEvent.pickedPosition)\r\n feature.geometry = {\r\n type: 'Point',\r\n coordinates: [Cesium.Math.toDegrees(position.longitude), Cesium.Math.toDegrees(position.latitude)]\r\n }\r\n }\r\n feature.properties = (emittedEvent.target.properties ? emittedEvent.target.properties.getValue(0) : {})\r\n emittedEvent.target.feature = feature\r\n }\r\n let layer = this.getLayerNameForEntity(emittedEvent.target)\r\n if (layer) layer = this.getCesiumLayerByName(layer)\r\n if (layer) options = layer.processedOptions\r\n }\r\n }\r\n // Mimic Leaflet events\r\n this.$emit(event.originalEvent.name, options, emittedEvent)\r\n }\r\n },\r\n created () {\r\n this.cesiumLayers = {}\r\n this.cesiumFactory = []\r\n // TODO: no specific marker, just keep status\r\n this.userLocation = false\r\n },\r\n beforeDestroy () {\r\n this.clearLayers()\r\n },\r\n destroyed () {\r\n this.viewer.destroy()\r\n }\r\n}\r\n"]}
|
|
@@ -12,14 +12,12 @@ 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);
|
|
22
18
|
|
|
19
|
+
var _time = require('../../../../core/client/time');
|
|
20
|
+
|
|
23
21
|
var _utils = require('../../utils');
|
|
24
22
|
|
|
25
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -137,7 +135,7 @@ exports.default = {
|
|
|
137
135
|
// Then get last available measures
|
|
138
136
|
// Update only the first time or when required according to data update interval
|
|
139
137
|
if (!dataSource.lastUpdateTime || !_this2.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {
|
|
140
|
-
dataSource.lastUpdateTime =
|
|
138
|
+
dataSource.lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
141
139
|
const measureSource = new _Cesium2.default.GeoJsonDataSource();
|
|
142
140
|
yield _this2.loadGeoJson(measureSource, _this2.getFeatures(options), cesiumOptions);
|
|
143
141
|
// Then merge with probes
|
|
@@ -156,13 +154,13 @@ exports.default = {
|
|
|
156
154
|
// If no probe reference, nothing to be initialized
|
|
157
155
|
// Update only the first time or when required according to data update interval
|
|
158
156
|
if (!dataSource.lastUpdateTime || !_this2.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {
|
|
159
|
-
dataSource.lastUpdateTime =
|
|
157
|
+
dataSource.lastUpdateTime = _time.Time.getCurrentTime().clone();
|
|
160
158
|
yield _this2.loadGeoJson(dataSource, _this2.getFeatures(options), cesiumOptions);
|
|
161
159
|
}
|
|
162
160
|
} else if (geoJson) {
|
|
163
161
|
yield _this2.loadGeoJson(dataSource, geoJson, cesiumOptions);
|
|
164
162
|
} else if (sourceTemplate) {
|
|
165
|
-
const sourceToFetch = dataSource.sourceCompiler({ time:
|
|
163
|
+
const sourceToFetch = dataSource.sourceCompiler({ time: _time.Time.getCurrentTime() });
|
|
166
164
|
if (!dataSource.lastFetchedSource || dataSource.lastFetchedSource !== sourceToFetch) {
|
|
167
165
|
dataSource.lastFetchedSource = sourceToFetch;
|
|
168
166
|
yield _this2.loadGeoJson(dataSource, (0, _utils.fetchGeoJson)(sourceToFetch), cesiumOptions);
|
|
@@ -331,10 +329,10 @@ exports.default = {
|
|
|
331
329
|
if (this.activityOptions.engine.featureStyle) {
|
|
332
330
|
Object.assign(_Cesium2.default.GeoJsonDataSource, this.convertFromSimpleStyleSpec(this.activityOptions.engine.featureStyle, 'update-in-place'));
|
|
333
331
|
}
|
|
334
|
-
this.$on('current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
332
|
+
this.$events.$on('time-current-time-changed', this.onCurrentTimeChangedGeoJsonLayers);
|
|
335
333
|
},
|
|
336
334
|
beforeDestroy() {
|
|
337
|
-
this.$off('current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
335
|
+
this.$events.$off('time-current-time-changed', this.onCurrentTimeChangedHeatmapLayers);
|
|
338
336
|
}
|
|
339
337
|
};
|
|
340
338
|
module.exports = exports['default'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../map/client/mixins/globe/mixin.geojson-layers.js"],"names":["methods","convertFromSimpleStyleSpecOrDefaults","properties","stroke","strokeWidth","fill","convertFromSimpleStyleSpec","Cesium","GeoJsonDataSource","loadGeoJson","dataSource","geoJson","cesiumOptions","load","entities","values","entitiesToAdd","entitiesToRemove","i","length","entity","getValue","radius","_","get","geodesic","push","id","position","name","description","ellipse","semiMinorAxis","semiMajorAxis","material","ColorMaterialProperty","outlineColor","ConstantProperty","outlineWidth","outline","wall","polyline","parent","positions","text","label","fillColor","forEach","remove","add","updateGeoJsonData","options","cesium","source","sourceTemplate","probeService","getProbeFeatures","lastUpdateTime","shouldSkipFeaturesUpdate","currentTime","clone","moment","utc","measureSource","getFeatures","probes","probe","measure","getById","service","sourceToFetch","sourceCompiler","time","lastFetchedSource","isNil","applyStyle","applyTooltips","createCesiumRealtimeGeoJsonLayer","updateGeoJson","has","template","createCesiumGeoJsonLayer","type","featureId","processor","feature","activityOptions","engine","cluster","Object","assign","geoJsonOptions","getGeoJsonOptions","keys","key","set","entityStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","entityStyle","convertToCesiumObjects","clusterStyle","viewer","dataSources","currentSource","notFromDrop","realtime","clustering","enabled","pixelRange","minimumClusterSize","clusterBillboards","clusterLabels","clusterPoints","clusterEvent","addEventListener","applyClusterStyle","featureStyle","updateLayer","layer","getCesiumLayerByName","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","filter","$or","$exists","variables","isVisible","geoJsonlayer","created","registerCesiumConstructor","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import Cesium from 'cesium/Source/Cesium.js'\r\nimport _ from 'lodash'\r\nimport moment from 'moment'\r\nimport sift from 'sift'\r\nimport { fetchGeoJson } from '../../utils'\r\n\r\nexport default {\r\n methods: {\r\n convertFromSimpleStyleSpecOrDefaults (properties) {\r\n let { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpec(properties)\r\n if (!stroke) stroke = Cesium.GeoJsonDataSource.stroke\r\n if (!strokeWidth) strokeWidth = Cesium.GeoJsonDataSource.strokeWidth\r\n if (!fill) fill = Cesium.GeoJsonDataSource.fill\r\n return { stroke, strokeWidth, fill }\r\n },\r\n async loadGeoJson (dataSource, geoJson, cesiumOptions) {\r\n await dataSource.load(geoJson, cesiumOptions)\r\n // Process specific entities\r\n const entities = dataSource.entities.values\r\n const entitiesToAdd = []\r\n const entitiesToRemove = []\r\n for (let i = 0; i < entities.length; i++) {\r\n const entity = entities[i]\r\n const properties = entity.properties.getValue(0)\r\n // Circles\r\n const radius = _.get(properties, 'radius')\r\n const geodesic = _.get(properties, 'geodesic')\r\n if (radius && geodesic) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // This one will replace the original point\r\n entitiesToAdd.push({\r\n id: entity.id,\r\n position: entity.position.getValue(0),\r\n name: entity.name ? entity.name : entity.id,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n ellipse: {\r\n semiMinorAxis: radius,\r\n semiMajorAxis: radius,\r\n material: new Cesium.ColorMaterialProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth,\r\n outline: new Cesium.ConstantProperty(true)\r\n }\r\n })\r\n entitiesToRemove.push(entity)\r\n }\r\n // Walls\r\n const wall = _.get(properties, 'wall')\r\n if (wall && entity.polyline) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // Simply push the entity, other options like font will be set using styling options\r\n // This one will come in addition to the original line\r\n entitiesToAdd.push({\r\n id: entity.id + '-wall',\r\n parent: entity,\r\n name: entity.name,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n wall: {\r\n positions: entity.polyline.positions.getValue(0),\r\n material: new Cesium.ColorMaterialProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth,\r\n outline: new Cesium.ConstantProperty(true)\r\n }\r\n })\r\n }\r\n // Labels\r\n const text = _.get(properties, 'icon-text')\r\n if (text) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // Simply push the entity, other options like font will be set using styling options\r\n // This one will replace the original point\r\n entitiesToAdd.push({\r\n id: entity.id,\r\n position: entity.position.getValue(0),\r\n name: entity.name,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n label: {\r\n text,\r\n fillColor: new Cesium.ConstantProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth\r\n }\r\n })\r\n entitiesToRemove.push(entity)\r\n }\r\n }\r\n entitiesToRemove.forEach(entity => dataSource.entities.remove(entity))\r\n entitiesToAdd.forEach(entity => dataSource.entities.add(entity))\r\n },\r\n async updateGeoJsonData (dataSource, options, geoJson) {\r\n const cesiumOptions = options.cesium\r\n const source = _.get(cesiumOptions, 'source')\r\n const sourceTemplate = _.get(cesiumOptions, 'sourceTemplate')\r\n // Update function to fetch for new data and update Cesium data source\r\n if (options.probeService) {\r\n // If the probe location is given by another service use it on initialization\r\n if (dataSource.entities.values.length === 0) {\r\n await this.loadGeoJson(dataSource, this.getProbeFeatures(options), cesiumOptions)\r\n }\r\n // Then get last available measures\r\n // Update only the first time or when required according to data update interval\r\n if (!dataSource.lastUpdateTime || !this.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {\r\n dataSource.lastUpdateTime = (this.currentTime ? this.currentTime.clone() : moment.utc())\r\n const measureSource = new Cesium.GeoJsonDataSource()\r\n await this.loadGeoJson(measureSource, this.getFeatures(options), cesiumOptions)\r\n // Then merge with probes\r\n const probes = dataSource.entities.values\r\n for (let i = 0; i < probes.length; i++) {\r\n const probe = probes[i]\r\n const measure = measureSource.entities.getById(probe.id)\r\n if (measure) {\r\n probe.properties = measure.properties\r\n probe.description = measure.description\r\n }\r\n }\r\n }\r\n } else if (options.service) { // Check for feature service layers only, in this case update in place\r\n // If no probe reference, nothing to be initialized\r\n // Update only the first time or when required according to data update interval\r\n if (!dataSource.lastUpdateTime || !this.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {\r\n dataSource.lastUpdateTime = (this.currentTime ? this.currentTime.clone() : moment.utc())\r\n await this.loadGeoJson(dataSource, this.getFeatures(options), cesiumOptions)\r\n }\r\n } else if (geoJson) {\r\n await this.loadGeoJson(dataSource, geoJson, cesiumOptions)\r\n } else if (sourceTemplate) {\r\n const sourceToFetch = dataSource.sourceCompiler({ time: this.currentTime || moment.utc() })\r\n if (!dataSource.lastFetchedSource || (dataSource.lastFetchedSource !== sourceToFetch)) {\r\n dataSource.lastFetchedSource = sourceToFetch\r\n await this.loadGeoJson(dataSource, fetchGeoJson(sourceToFetch), cesiumOptions)\r\n }\r\n } else if (!_.isNil(source)) {\r\n // Assume source is an URL returning GeoJson\r\n await this.loadGeoJson(dataSource, fetchGeoJson(source), cesiumOptions)\r\n }\r\n this.applyStyle(dataSource.entities, options)\r\n if (typeof this.applyTooltips === 'function') this.applyTooltips(dataSource.entities, options)\r\n },\r\n async createCesiumRealtimeGeoJsonLayer (dataSource, options) {\r\n const cesiumOptions = options.cesium\r\n // Add update capabilities\r\n dataSource.updateGeoJson = async (geoJson) => {\r\n await this.updateGeoJsonData(dataSource, options, geoJson)\r\n }\r\n // Add source compiler if required\r\n if (_.has(cesiumOptions, 'sourceTemplate')) {\r\n dataSource.sourceCompiler = _.template(_.get(cesiumOptions, 'sourceTemplate'))\r\n }\r\n },\r\n async createCesiumGeoJsonLayer (options) {\r\n const cesiumOptions = options.cesium\r\n // Check for valid type\r\n if (cesiumOptions.type !== 'geoJson') return\r\n // Cesium expect id to be in a 'id' property\r\n const featureId = _.get(options, 'featureId')\r\n options.processor = (feature) => {\r\n feature.id = _.get(feature, 'properties.' + featureId, _.get(feature, featureId))\r\n }\r\n if (this.activityOptions.engine.cluster) {\r\n if (cesiumOptions.cluster) Object.assign(cesiumOptions.cluster, this.activityOptions.engine.cluster)\r\n else cesiumOptions.cluster = Object.assign({}, this.activityOptions.engine.cluster)\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(cesiumOptions, key)) _.set(cesiumOptions, key, geoJsonOptions[key])\r\n })\r\n // Optimize templating by creating compilers up-front\r\n const entityStyleTemplate = _.get(cesiumOptions, 'entityStyle.template')\r\n if (entityStyleTemplate) {\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 _.set(cesiumOptions, 'entityStyleTemplate', entityStyleTemplate.map(property => ({\r\n property, compiler: _.template(_.get(cesiumOptions, `entityStyle.${property}`))\r\n })))\r\n }\r\n const popupTemplate = _.get(cesiumOptions, 'popup.template')\r\n if (popupTemplate) {\r\n cesiumOptions.popup.compiler = _.template(popupTemplate)\r\n }\r\n const tooltipTemplate = _.get(cesiumOptions, 'tooltip.template')\r\n if (tooltipTemplate) {\r\n cesiumOptions.tooltip.compiler = _.template(tooltipTemplate)\r\n }\r\n this.convertFromSimpleStyleSpec(cesiumOptions, 'update-in-place')\r\n // Perform required conversion from JSON to Cesium objects\r\n // If templating occurs we need to wait until it is performed to convert to Cesium objects\r\n if (cesiumOptions.entityStyle && !entityStyleTemplate) cesiumOptions.entityStyle = this.convertToCesiumObjects(cesiumOptions.entityStyle)\r\n if (cesiumOptions.clusterStyle) cesiumOptions.clusterStyle = this.convertToCesiumObjects(cesiumOptions.clusterStyle)\r\n if (cesiumOptions.tooltip) cesiumOptions.tooltip = this.convertToCesiumObjects(cesiumOptions.tooltip)\r\n if (cesiumOptions.popup) cesiumOptions.popup = this.convertToCesiumObjects(cesiumOptions.popup)\r\n\r\n const source = _.get(cesiumOptions, 'source')\r\n let dataSource = source\r\n if (dataSource) {\r\n // Check if data source already added to the scene and we only want to\r\n // create a layer on top of it or if we have to load it\r\n // Indeed loading a file by drop makes Cesium load it under the hood\r\n for (let i = 0; i < this.viewer.dataSources.length; i++) {\r\n const currentSource = this.viewer.dataSources.get(i)\r\n if (currentSource.name === dataSource) {\r\n dataSource = currentSource\r\n this.viewer.dataSources.remove(currentSource, false)\r\n break\r\n }\r\n }\r\n }\r\n // If we already have a source we simply use it otherwise we create/load it\r\n if (!dataSource || !dataSource.name) {\r\n dataSource = new Cesium.GeoJsonDataSource()\r\n dataSource.notFromDrop = true\r\n // Check for realtime layers\r\n if (cesiumOptions.realtime) {\r\n await this.createCesiumRealtimeGeoJsonLayer(dataSource, options)\r\n }\r\n this.updateGeoJsonData(dataSource, options)\r\n } else {\r\n this.applyStyle(dataSource.entities, options)\r\n if (typeof this.applyTooltips === 'function') this.applyTooltips(dataSource.entities, options)\r\n }\r\n if (cesiumOptions.cluster) {\r\n // Set default cluster options\r\n _.assign(dataSource.clustering, {\r\n enabled: true,\r\n pixelRange: 100,\r\n minimumClusterSize: 3,\r\n clusterBillboards: true,\r\n clusterLabels: true,\r\n clusterPoints: true\r\n }, cesiumOptions.cluster)\r\n dataSource.clustering.clusterEvent.addEventListener(\r\n (entities, cluster) => this.applyClusterStyle(entities, cluster, options)\r\n )\r\n }\r\n return dataSource\r\n },\r\n getGeoJsonOptions (options) {\r\n return this.activityOptions.engine.featureStyle || {}\r\n },\r\n async updateLayer (name, geoJson) {\r\n // Retrieve the layer\r\n const layer = this.getCesiumLayerByName(name)\r\n if (!layer) return // Cannot update invisible layer\r\n if (typeof layer.updateGeoJson === 'function') layer.updateGeoJson(geoJson)\r\n },\r\n onCurrentTimeChangedGeoJsonLayers (time) {\r\n const geoJsonlayers = _.values(this.layers).filter(sift({\r\n 'cesium.type': 'geoJson',\r\n 'cesium.realtime': true,\r\n $or: [ // Supported by template URL or time-based features\r\n { 'cesium.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 dataSource = this.getCesiumLayerByName(geoJsonlayer.name)\r\n // Then update\r\n dataSource.updateGeoJson()\r\n })\r\n }\r\n },\r\n created () {\r\n this.registerCesiumConstructor(this.createCesiumGeoJsonLayer)\r\n // Perform required conversion from JSON to Cesium objects\r\n if (this.activityOptions.engine.featureStyle) {\r\n Object.assign(Cesium.GeoJsonDataSource, this.convertFromSimpleStyleSpec(this.activityOptions.engine.featureStyle, 'update-in-place'))\r\n }\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/globe/mixin.geojson-layers.js"],"names":["methods","convertFromSimpleStyleSpecOrDefaults","properties","stroke","strokeWidth","fill","convertFromSimpleStyleSpec","Cesium","GeoJsonDataSource","loadGeoJson","dataSource","geoJson","cesiumOptions","load","entities","values","entitiesToAdd","entitiesToRemove","i","length","entity","getValue","radius","_","get","geodesic","push","id","position","name","description","ellipse","semiMinorAxis","semiMajorAxis","material","ColorMaterialProperty","outlineColor","ConstantProperty","outlineWidth","outline","wall","polyline","parent","positions","text","label","fillColor","forEach","remove","add","updateGeoJsonData","options","cesium","source","sourceTemplate","probeService","getProbeFeatures","lastUpdateTime","shouldSkipFeaturesUpdate","Time","getCurrentTime","clone","measureSource","getFeatures","probes","probe","measure","getById","service","sourceToFetch","sourceCompiler","time","lastFetchedSource","isNil","applyStyle","applyTooltips","createCesiumRealtimeGeoJsonLayer","updateGeoJson","has","template","createCesiumGeoJsonLayer","type","featureId","processor","feature","activityOptions","engine","cluster","Object","assign","geoJsonOptions","getGeoJsonOptions","keys","key","set","entityStyleTemplate","map","property","compiler","popupTemplate","popup","tooltipTemplate","tooltip","entityStyle","convertToCesiumObjects","clusterStyle","viewer","dataSources","currentSource","notFromDrop","realtime","clustering","enabled","pixelRange","minimumClusterSize","clusterBillboards","clusterLabels","clusterPoints","clusterEvent","addEventListener","applyClusterStyle","featureStyle","updateLayer","layer","getCesiumLayerByName","onCurrentTimeChangedGeoJsonLayers","geoJsonlayers","layers","filter","$or","$exists","variables","isVisible","geoJsonlayer","created","registerCesiumConstructor","$events","$on","beforeDestroy","$off","onCurrentTimeChangedHeatmapLayers"],"mappings":"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","file":"mixin.geojson-layers.js","sourcesContent":["import Cesium from 'cesium/Source/Cesium.js'\r\nimport _ from 'lodash'\r\nimport sift from 'sift'\r\nimport { Time } from '../../../../core/client/time'\r\nimport { fetchGeoJson } from '../../utils'\r\n\r\nexport default {\r\n methods: {\r\n convertFromSimpleStyleSpecOrDefaults (properties) {\r\n let { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpec(properties)\r\n if (!stroke) stroke = Cesium.GeoJsonDataSource.stroke\r\n if (!strokeWidth) strokeWidth = Cesium.GeoJsonDataSource.strokeWidth\r\n if (!fill) fill = Cesium.GeoJsonDataSource.fill\r\n return { stroke, strokeWidth, fill }\r\n },\r\n async loadGeoJson (dataSource, geoJson, cesiumOptions) {\r\n await dataSource.load(geoJson, cesiumOptions)\r\n // Process specific entities\r\n const entities = dataSource.entities.values\r\n const entitiesToAdd = []\r\n const entitiesToRemove = []\r\n for (let i = 0; i < entities.length; i++) {\r\n const entity = entities[i]\r\n const properties = entity.properties.getValue(0)\r\n // Circles\r\n const radius = _.get(properties, 'radius')\r\n const geodesic = _.get(properties, 'geodesic')\r\n if (radius && geodesic) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // This one will replace the original point\r\n entitiesToAdd.push({\r\n id: entity.id,\r\n position: entity.position.getValue(0),\r\n name: entity.name ? entity.name : entity.id,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n ellipse: {\r\n semiMinorAxis: radius,\r\n semiMajorAxis: radius,\r\n material: new Cesium.ColorMaterialProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth,\r\n outline: new Cesium.ConstantProperty(true)\r\n }\r\n })\r\n entitiesToRemove.push(entity)\r\n }\r\n // Walls\r\n const wall = _.get(properties, 'wall')\r\n if (wall && entity.polyline) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // Simply push the entity, other options like font will be set using styling options\r\n // This one will come in addition to the original line\r\n entitiesToAdd.push({\r\n id: entity.id + '-wall',\r\n parent: entity,\r\n name: entity.name,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n wall: {\r\n positions: entity.polyline.positions.getValue(0),\r\n material: new Cesium.ColorMaterialProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth,\r\n outline: new Cesium.ConstantProperty(true)\r\n }\r\n })\r\n }\r\n // Labels\r\n const text = _.get(properties, 'icon-text')\r\n if (text) {\r\n const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleSpecOrDefaults(properties)\r\n // Simply push the entity, other options like font will be set using styling options\r\n // This one will replace the original point\r\n entitiesToAdd.push({\r\n id: entity.id,\r\n position: entity.position.getValue(0),\r\n name: entity.name,\r\n description: entity.description.getValue(0),\r\n properties: entity.properties.getValue(0),\r\n label: {\r\n text,\r\n fillColor: new Cesium.ConstantProperty(fill),\r\n outlineColor: new Cesium.ConstantProperty(stroke),\r\n outlineWidth: strokeWidth\r\n }\r\n })\r\n entitiesToRemove.push(entity)\r\n }\r\n }\r\n entitiesToRemove.forEach(entity => dataSource.entities.remove(entity))\r\n entitiesToAdd.forEach(entity => dataSource.entities.add(entity))\r\n },\r\n async updateGeoJsonData (dataSource, options, geoJson) {\r\n const cesiumOptions = options.cesium\r\n const source = _.get(cesiumOptions, 'source')\r\n const sourceTemplate = _.get(cesiumOptions, 'sourceTemplate')\r\n // Update function to fetch for new data and update Cesium data source\r\n if (options.probeService) {\r\n // If the probe location is given by another service use it on initialization\r\n if (dataSource.entities.values.length === 0) {\r\n await this.loadGeoJson(dataSource, this.getProbeFeatures(options), cesiumOptions)\r\n }\r\n // Then get last available measures\r\n // Update only the first time or when required according to data update interval\r\n if (!dataSource.lastUpdateTime || !this.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {\r\n dataSource.lastUpdateTime = Time.getCurrentTime().clone()\r\n const measureSource = new Cesium.GeoJsonDataSource()\r\n await this.loadGeoJson(measureSource, this.getFeatures(options), cesiumOptions)\r\n // Then merge with probes\r\n const probes = dataSource.entities.values\r\n for (let i = 0; i < probes.length; i++) {\r\n const probe = probes[i]\r\n const measure = measureSource.entities.getById(probe.id)\r\n if (measure) {\r\n probe.properties = measure.properties\r\n probe.description = measure.description\r\n }\r\n }\r\n }\r\n } else if (options.service) { // Check for feature service layers only, in this case update in place\r\n // If no probe reference, nothing to be initialized\r\n // Update only the first time or when required according to data update interval\r\n if (!dataSource.lastUpdateTime || !this.shouldSkipFeaturesUpdate(dataSource.lastUpdateTime, options)) {\r\n dataSource.lastUpdateTime = Time.getCurrentTime().clone()\r\n await this.loadGeoJson(dataSource, this.getFeatures(options), cesiumOptions)\r\n }\r\n } else if (geoJson) {\r\n await this.loadGeoJson(dataSource, geoJson, cesiumOptions)\r\n } else if (sourceTemplate) {\r\n const sourceToFetch = dataSource.sourceCompiler({ time: Time.getCurrentTime() })\r\n if (!dataSource.lastFetchedSource || (dataSource.lastFetchedSource !== sourceToFetch)) {\r\n dataSource.lastFetchedSource = sourceToFetch\r\n await this.loadGeoJson(dataSource, fetchGeoJson(sourceToFetch), cesiumOptions)\r\n }\r\n } else if (!_.isNil(source)) {\r\n // Assume source is an URL returning GeoJson\r\n await this.loadGeoJson(dataSource, fetchGeoJson(source), cesiumOptions)\r\n }\r\n this.applyStyle(dataSource.entities, options)\r\n if (typeof this.applyTooltips === 'function') this.applyTooltips(dataSource.entities, options)\r\n },\r\n async createCesiumRealtimeGeoJsonLayer (dataSource, options) {\r\n const cesiumOptions = options.cesium\r\n // Add update capabilities\r\n dataSource.updateGeoJson = async (geoJson) => {\r\n await this.updateGeoJsonData(dataSource, options, geoJson)\r\n }\r\n // Add source compiler if required\r\n if (_.has(cesiumOptions, 'sourceTemplate')) {\r\n dataSource.sourceCompiler = _.template(_.get(cesiumOptions, 'sourceTemplate'))\r\n }\r\n },\r\n async createCesiumGeoJsonLayer (options) {\r\n const cesiumOptions = options.cesium\r\n // Check for valid type\r\n if (cesiumOptions.type !== 'geoJson') return\r\n // Cesium expect id to be in a 'id' property\r\n const featureId = _.get(options, 'featureId')\r\n options.processor = (feature) => {\r\n feature.id = _.get(feature, 'properties.' + featureId, _.get(feature, featureId))\r\n }\r\n if (this.activityOptions.engine.cluster) {\r\n if (cesiumOptions.cluster) Object.assign(cesiumOptions.cluster, this.activityOptions.engine.cluster)\r\n else cesiumOptions.cluster = Object.assign({}, this.activityOptions.engine.cluster)\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(cesiumOptions, key)) _.set(cesiumOptions, key, geoJsonOptions[key])\r\n })\r\n // Optimize templating by creating compilers up-front\r\n const entityStyleTemplate = _.get(cesiumOptions, 'entityStyle.template')\r\n if (entityStyleTemplate) {\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 _.set(cesiumOptions, 'entityStyleTemplate', entityStyleTemplate.map(property => ({\r\n property, compiler: _.template(_.get(cesiumOptions, `entityStyle.${property}`))\r\n })))\r\n }\r\n const popupTemplate = _.get(cesiumOptions, 'popup.template')\r\n if (popupTemplate) {\r\n cesiumOptions.popup.compiler = _.template(popupTemplate)\r\n }\r\n const tooltipTemplate = _.get(cesiumOptions, 'tooltip.template')\r\n if (tooltipTemplate) {\r\n cesiumOptions.tooltip.compiler = _.template(tooltipTemplate)\r\n }\r\n this.convertFromSimpleStyleSpec(cesiumOptions, 'update-in-place')\r\n // Perform required conversion from JSON to Cesium objects\r\n // If templating occurs we need to wait until it is performed to convert to Cesium objects\r\n if (cesiumOptions.entityStyle && !entityStyleTemplate) cesiumOptions.entityStyle = this.convertToCesiumObjects(cesiumOptions.entityStyle)\r\n if (cesiumOptions.clusterStyle) cesiumOptions.clusterStyle = this.convertToCesiumObjects(cesiumOptions.clusterStyle)\r\n if (cesiumOptions.tooltip) cesiumOptions.tooltip = this.convertToCesiumObjects(cesiumOptions.tooltip)\r\n if (cesiumOptions.popup) cesiumOptions.popup = this.convertToCesiumObjects(cesiumOptions.popup)\r\n\r\n const source = _.get(cesiumOptions, 'source')\r\n let dataSource = source\r\n if (dataSource) {\r\n // Check if data source already added to the scene and we only want to\r\n // create a layer on top of it or if we have to load it\r\n // Indeed loading a file by drop makes Cesium load it under the hood\r\n for (let i = 0; i < this.viewer.dataSources.length; i++) {\r\n const currentSource = this.viewer.dataSources.get(i)\r\n if (currentSource.name === dataSource) {\r\n dataSource = currentSource\r\n this.viewer.dataSources.remove(currentSource, false)\r\n break\r\n }\r\n }\r\n }\r\n // If we already have a source we simply use it otherwise we create/load it\r\n if (!dataSource || !dataSource.name) {\r\n dataSource = new Cesium.GeoJsonDataSource()\r\n dataSource.notFromDrop = true\r\n // Check for realtime layers\r\n if (cesiumOptions.realtime) {\r\n await this.createCesiumRealtimeGeoJsonLayer(dataSource, options)\r\n }\r\n this.updateGeoJsonData(dataSource, options)\r\n } else {\r\n this.applyStyle(dataSource.entities, options)\r\n if (typeof this.applyTooltips === 'function') this.applyTooltips(dataSource.entities, options)\r\n }\r\n if (cesiumOptions.cluster) {\r\n // Set default cluster options\r\n _.assign(dataSource.clustering, {\r\n enabled: true,\r\n pixelRange: 100,\r\n minimumClusterSize: 3,\r\n clusterBillboards: true,\r\n clusterLabels: true,\r\n clusterPoints: true\r\n }, cesiumOptions.cluster)\r\n dataSource.clustering.clusterEvent.addEventListener(\r\n (entities, cluster) => this.applyClusterStyle(entities, cluster, options)\r\n )\r\n }\r\n return dataSource\r\n },\r\n getGeoJsonOptions (options) {\r\n return this.activityOptions.engine.featureStyle || {}\r\n },\r\n async updateLayer (name, geoJson) {\r\n // Retrieve the layer\r\n const layer = this.getCesiumLayerByName(name)\r\n if (!layer) return // Cannot update invisible layer\r\n if (typeof layer.updateGeoJson === 'function') layer.updateGeoJson(geoJson)\r\n },\r\n onCurrentTimeChangedGeoJsonLayers (time) {\r\n const geoJsonlayers = _.values(this.layers).filter(sift({\r\n 'cesium.type': 'geoJson',\r\n 'cesium.realtime': true,\r\n $or: [ // Supported by template URL or time-based features\r\n { 'cesium.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 dataSource = this.getCesiumLayerByName(geoJsonlayer.name)\r\n // Then update\r\n dataSource.updateGeoJson()\r\n })\r\n }\r\n },\r\n created () {\r\n this.registerCesiumConstructor(this.createCesiumGeoJsonLayer)\r\n // Perform required conversion from JSON to Cesium objects\r\n if (this.activityOptions.engine.featureStyle) {\r\n Object.assign(Cesium.GeoJsonDataSource, this.convertFromSimpleStyleSpec(this.activityOptions.engine.featureStyle, 'update-in-place'))\r\n }\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"]}
|
|
@@ -24,39 +24,34 @@ var _mixin9 = require('./mixin.feature-service');
|
|
|
24
24
|
|
|
25
25
|
var _mixin10 = _interopRequireDefault(_mixin9);
|
|
26
26
|
|
|
27
|
-
var _mixin11 = require('./mixin.
|
|
27
|
+
var _mixin11 = require('./mixin.weacast');
|
|
28
28
|
|
|
29
29
|
var _mixin12 = _interopRequireDefault(_mixin11);
|
|
30
30
|
|
|
31
|
-
var _mixin13 = require('./mixin.
|
|
31
|
+
var _mixin13 = require('./mixin.activity');
|
|
32
32
|
|
|
33
33
|
var _mixin14 = _interopRequireDefault(_mixin13);
|
|
34
34
|
|
|
35
|
-
var _mixin15 = require('./mixin.
|
|
35
|
+
var _mixin15 = require('./mixin.context');
|
|
36
36
|
|
|
37
37
|
var _mixin16 = _interopRequireDefault(_mixin15);
|
|
38
38
|
|
|
39
|
-
var _mixin17 = require('./mixin.
|
|
39
|
+
var _mixin17 = require('./mixin.levels');
|
|
40
40
|
|
|
41
41
|
var _mixin18 = _interopRequireDefault(_mixin17);
|
|
42
42
|
|
|
43
|
-
var _mixin19 = require('./mixin.levels');
|
|
44
|
-
|
|
45
|
-
var _mixin20 = _interopRequireDefault(_mixin19);
|
|
46
|
-
|
|
47
43
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
48
44
|
|
|
49
45
|
exports.default = {
|
|
50
46
|
navigator: _mixin2.default,
|
|
51
47
|
featureSelection: _mixin8.default,
|
|
52
48
|
featureService: _mixin10.default,
|
|
53
|
-
time: _mixin12.default,
|
|
54
49
|
infobox: _mixin6.default,
|
|
55
50
|
style: _mixin4.default,
|
|
56
|
-
weacast:
|
|
57
|
-
activity:
|
|
58
|
-
context:
|
|
59
|
-
levels:
|
|
51
|
+
weacast: _mixin12.default,
|
|
52
|
+
activity: _mixin14.default,
|
|
53
|
+
context: _mixin16.default,
|
|
54
|
+
levels: _mixin18.default
|
|
60
55
|
};
|
|
61
56
|
module.exports = exports['default'];
|
|
62
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../map/client/mixins/index.js"],"names":["navigator","featureSelection","featureService","
|
|
1
|
+
{"version":3,"sources":["../../../../map/client/mixins/index.js"],"names":["navigator","featureSelection","featureService","infobox","style","weacast","activity","context","levels"],"mappings":";;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;kBAEe;AACbA,4BADa;AAEbC,mCAFa;AAGbC,kCAHa;AAIbC,0BAJa;AAKbC,wBALa;AAMbC,2BANa;AAObC,4BAPa;AAQbC,2BARa;AASbC;AATa,C","file":"index.js","sourcesContent":["import navigator from './mixin.navigator'\r\nimport style from './mixin.style'\r\nimport infobox from './mixin.infobox'\r\nimport featureSelection from './mixin.feature-selection'\r\nimport featureService from './mixin.feature-service'\r\nimport weacast from './mixin.weacast'\r\nimport activity from './mixin.activity'\r\nimport context from './mixin.context'\r\nimport levels from './mixin.levels'\r\n\r\nexport default {\r\n navigator,\r\n featureSelection,\r\n featureService,\r\n infobox,\r\n style,\r\n weacast,\r\n activity,\r\n context,\r\n levels\r\n}\r\n"]}
|
|
@@ -20,6 +20,10 @@ var _leaflet = require('leaflet');
|
|
|
20
20
|
|
|
21
21
|
var _leaflet2 = _interopRequireDefault(_leaflet);
|
|
22
22
|
|
|
23
|
+
var _i18next = require('i18next');
|
|
24
|
+
|
|
25
|
+
var _i18next2 = _interopRequireDefault(_i18next);
|
|
26
|
+
|
|
23
27
|
require('leaflet/dist/leaflet.css');
|
|
24
28
|
|
|
25
29
|
require('leaflet-fa-markers/L.Icon.FontAwesome.css');
|
|
@@ -52,6 +56,12 @@ require('leaflet-timedimension/dist/leaflet.timedimension.src.js');
|
|
|
52
56
|
|
|
53
57
|
require('leaflet-timedimension/dist/leaflet.timedimension.control.css');
|
|
54
58
|
|
|
59
|
+
require('@geoman-io/leaflet-geoman-free');
|
|
60
|
+
|
|
61
|
+
require('@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css');
|
|
62
|
+
|
|
63
|
+
var _time = require('../../../../core/client/time');
|
|
64
|
+
|
|
55
65
|
var _utils = require('../../utils');
|
|
56
66
|
|
|
57
67
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -70,6 +80,8 @@ _leaflet2.default.Icon.Default.mergeOptions({
|
|
|
70
80
|
iconUrl: require('leaflet/dist/images/marker-icon.png'),
|
|
71
81
|
shadowUrl: require('leaflet/dist/images/marker-shadow.png')
|
|
72
82
|
});
|
|
83
|
+
// Do not create geoman structs everywhere
|
|
84
|
+
_leaflet2.default.PM.setOptIn(true);
|
|
73
85
|
|
|
74
86
|
exports.default = {
|
|
75
87
|
data() {
|
|
@@ -85,6 +97,12 @@ exports.default = {
|
|
|
85
97
|
const viewerOptions = options || this.activityOptions.engine.viewer;
|
|
86
98
|
// Initialize the map
|
|
87
99
|
this.map = _leaflet2.default.map(domEl, Object.assign({ zoomControl: false }, viewerOptions));
|
|
100
|
+
// Make sure geoman is initialized on the map
|
|
101
|
+
if (this.map.pm === undefined) {
|
|
102
|
+
this.map.options.pmIgnore = false;
|
|
103
|
+
_leaflet2.default.PM.reInitLayer(this.map);
|
|
104
|
+
this.map.pm.setLang(_i18next2.default.language);
|
|
105
|
+
}
|
|
88
106
|
(0, _utils.bindLeafletEvents)(this.map, _utils.LeafletEvents.Map, this, viewerOptions);
|
|
89
107
|
if (_lodash2.default.get(viewerOptions, 'scale', true)) this.setupScaleControl();
|
|
90
108
|
if (_lodash2.default.get(viewerOptions, 'geolocate', true)) this.setupGeolocateControl();
|
|
@@ -247,7 +265,7 @@ exports.default = {
|
|
|
247
265
|
type: 'timeDimension.layer.wms',
|
|
248
266
|
source: layer,
|
|
249
267
|
timeDimension: _leaflet2.default.timeDimension(timeDimension),
|
|
250
|
-
currentTime:
|
|
268
|
+
currentTime: _time.Time.getCurrentTime()
|
|
251
269
|
});
|
|
252
270
|
// This allow the layer to conform our internal time interface
|
|
253
271
|
layer.setCurrentTime = datetime => {
|
|
@@ -316,7 +334,7 @@ exports.default = {
|
|
|
316
334
|
// Ensure base layer will not pop on top of others
|
|
317
335
|
if (layer.type === 'BaseLayer') leafletLayer.bringToBack();
|
|
318
336
|
// Apply the current time if needed
|
|
319
|
-
if (typeof leafletLayer.setCurrentTime === 'function'
|
|
337
|
+
if (typeof leafletLayer.setCurrentTime === 'function') leafletLayer.setCurrentTime(_time.Time.getCurrentTime());
|
|
320
338
|
_this2.$emit('layer-shown', layer, leafletLayer);
|
|
321
339
|
})();
|
|
322
340
|
},
|
|
@@ -373,6 +391,9 @@ exports.default = {
|
|
|
373
391
|
delete this.leafletLayers[name];
|
|
374
392
|
this.$emit('layer-removed', layer);
|
|
375
393
|
},
|
|
394
|
+
clearLayers() {
|
|
395
|
+
Object.keys(this.layers).forEach(layer => this.removeLayer(layer));
|
|
396
|
+
},
|
|
376
397
|
toGeoJson(name) {
|
|
377
398
|
const layer = this.getLeafletLayerByName(name);
|
|
378
399
|
if (!layer || typeof layer.toGeoJSON !== 'function') return;
|
|
@@ -392,11 +413,14 @@ exports.default = {
|
|
|
392
413
|
}
|
|
393
414
|
}
|
|
394
415
|
const leafletLayer = this.getLeafletLayerByName(name);
|
|
395
|
-
if (leafletLayer && leafletLayer.getBounds
|
|
416
|
+
if (leafletLayer && typeof leafletLayer.getBounds === 'function') this.map.fitBounds(leafletLayer.getBounds(), options);
|
|
396
417
|
},
|
|
397
418
|
zoomToBounds(bounds) {
|
|
398
419
|
this.map.fitBounds(bounds);
|
|
399
420
|
},
|
|
421
|
+
zoomToBBox(bbox) {
|
|
422
|
+
this.zoomToBounds([[bbox[0], bbox[1]], [bbox[2], bbox[3]]]);
|
|
423
|
+
},
|
|
400
424
|
center(longitude, latitude, zoomLevel, options) {
|
|
401
425
|
this.map.setView(new _leaflet2.default.LatLng(latitude, longitude), zoomLevel || this.map.getZoom(), options);
|
|
402
426
|
},
|
|
@@ -475,12 +499,12 @@ exports.default = {
|
|
|
475
499
|
// Register support for WMS-T
|
|
476
500
|
this.registerLeafletConstructor(this.createLeafletTimedWmsLayer);
|
|
477
501
|
this.$on('zoomend', this.onMapZoomChanged);
|
|
478
|
-
this.$on('current-time-changed', this.onCurrentMapTimeChanged);
|
|
502
|
+
this.$events.$on('time-current-time-changed', this.onCurrentMapTimeChanged);
|
|
479
503
|
},
|
|
480
504
|
beforeDestroy() {
|
|
481
|
-
|
|
505
|
+
this.clearLayers();
|
|
482
506
|
this.$off('zoomend', this.onMapZoomChanged);
|
|
483
|
-
this.$off('current-time-changed', this.onCurrentMapTimeChanged);
|
|
507
|
+
this.$events.$off('time-current-time-changed', this.onCurrentMapTimeChanged);
|
|
484
508
|
},
|
|
485
509
|
destroyed() {
|
|
486
510
|
if (this.map) this.map.remove();
|