@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
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>0/153</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>0/132</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>0/17</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>0/141</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line low'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -343,39 +343,49 @@
|
|
|
343
343
|
<a name='L284'></a><a href='#L284'>284</a>
|
|
344
344
|
<a name='L285'></a><a href='#L285'>285</a>
|
|
345
345
|
<a name='L286'></a><a href='#L286'>286</a>
|
|
346
|
-
<a name='L287'></a><a href='#L287'>287</a
|
|
347
|
-
<
|
|
348
|
-
<
|
|
346
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
347
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
348
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
349
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
350
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
351
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
352
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
353
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
354
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
355
|
+
<a name='L296'></a><a href='#L296'>296</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
349
356
|
<span class="cline-any cline-neutral"> </span>
|
|
350
|
-
<span class="cline-any cline-yes">1x</span>
|
|
351
357
|
<span class="cline-any cline-neutral"> </span>
|
|
352
358
|
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-
|
|
354
|
-
<span class="cline-any cline-
|
|
355
|
-
<span class="cline-any cline-
|
|
356
|
-
<span class="cline-any cline-
|
|
357
|
-
<span class="cline-any cline-
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-no"> </span>
|
|
363
|
+
<span class="cline-any cline-no"> </span>
|
|
364
|
+
<span class="cline-any cline-no"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
358
367
|
<span class="cline-any cline-neutral"> </span>
|
|
359
368
|
<span class="cline-any cline-neutral"> </span>
|
|
360
369
|
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-
|
|
362
|
-
<span class="cline-any cline-
|
|
363
|
-
<span class="cline-any cline-
|
|
370
|
+
<span class="cline-any cline-no"> </span>
|
|
371
|
+
<span class="cline-any cline-no"> </span>
|
|
372
|
+
<span class="cline-any cline-no"> </span>
|
|
364
373
|
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-
|
|
374
|
+
<span class="cline-any cline-no"> </span>
|
|
366
375
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
369
|
-
<span class="cline-any cline-
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
378
|
+
<span class="cline-any cline-no"> </span>
|
|
370
379
|
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-
|
|
372
|
-
<span class="cline-any cline-
|
|
373
|
-
<span class="cline-any cline-
|
|
374
|
-
<span class="cline-any cline-
|
|
375
|
-
<span class="cline-any cline-
|
|
380
|
+
<span class="cline-any cline-no"> </span>
|
|
381
|
+
<span class="cline-any cline-no"> </span>
|
|
382
|
+
<span class="cline-any cline-no"> </span>
|
|
383
|
+
<span class="cline-any cline-no"> </span>
|
|
384
|
+
<span class="cline-any cline-no"> </span>
|
|
376
385
|
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-yes">1x</span>
|
|
378
386
|
<span class="cline-any cline-no"> </span>
|
|
387
|
+
<span class="cline-any cline-no"> </span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
389
|
<span class="cline-any cline-neutral"> </span>
|
|
380
390
|
<span class="cline-any cline-neutral"> </span>
|
|
381
391
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -392,26 +402,27 @@
|
|
|
392
402
|
<span class="cline-any cline-neutral"> </span>
|
|
393
403
|
<span class="cline-any cline-neutral"> </span>
|
|
394
404
|
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-no"> </span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
407
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
-
<span class="cline-any cline-yes">1x</span>
|
|
397
408
|
<span class="cline-any cline-neutral"> </span>
|
|
398
409
|
<span class="cline-any cline-neutral"> </span>
|
|
399
410
|
<span class="cline-any cline-neutral"> </span>
|
|
400
411
|
<span class="cline-any cline-neutral"> </span>
|
|
401
412
|
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-no"> </span>
|
|
414
|
+
<span class="cline-any cline-no"> </span>
|
|
415
|
+
<span class="cline-any cline-no"> </span>
|
|
416
|
+
<span class="cline-any cline-no"> </span>
|
|
417
|
+
<span class="cline-any cline-no"> </span>
|
|
402
418
|
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-no"> </span>
|
|
420
|
+
<span class="cline-any cline-no"> </span>
|
|
421
|
+
<span class="cline-any cline-no"> </span>
|
|
422
|
+
<span class="cline-any cline-no"> </span>
|
|
423
|
+
<span class="cline-any cline-no"> </span>
|
|
403
424
|
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-yes">40x</span>
|
|
405
|
-
<span class="cline-any cline-yes">2x</span>
|
|
406
|
-
<span class="cline-any cline-yes">2x</span>
|
|
407
|
-
<span class="cline-any cline-yes">2x</span>
|
|
408
|
-
<span class="cline-any cline-yes">2x</span>
|
|
409
425
|
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-yes">2x</span>
|
|
411
|
-
<span class="cline-any cline-yes">2x</span>
|
|
412
|
-
<span class="cline-any cline-yes">2x</span>
|
|
413
|
-
<span class="cline-any cline-yes">2x</span>
|
|
414
|
-
<span class="cline-any cline-yes">2x</span>
|
|
415
426
|
<span class="cline-any cline-neutral"> </span>
|
|
416
427
|
<span class="cline-any cline-neutral"> </span>
|
|
417
428
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -419,79 +430,84 @@
|
|
|
419
430
|
<span class="cline-any cline-neutral"> </span>
|
|
420
431
|
<span class="cline-any cline-neutral"> </span>
|
|
421
432
|
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-no"> </span>
|
|
422
434
|
<span class="cline-any cline-neutral"> </span>
|
|
423
435
|
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
425
439
|
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-no"> </span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
426
443
|
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-yes">40x</span>
|
|
428
|
-
<span class="cline-any cline-yes">3x</span>
|
|
429
|
-
<span class="cline-any cline-yes">3x</span>
|
|
430
444
|
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-yes">3x</span>
|
|
432
|
-
<span class="cline-any cline-yes">3x</span>
|
|
433
|
-
<span class="cline-any cline-yes">3x</span>
|
|
434
445
|
<span class="cline-any cline-neutral"> </span>
|
|
435
446
|
<span class="cline-any cline-neutral"> </span>
|
|
436
447
|
<span class="cline-any cline-neutral"> </span>
|
|
437
448
|
<span class="cline-any cline-neutral"> </span>
|
|
438
449
|
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
439
451
|
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-no"> </span>
|
|
454
|
+
<span class="cline-any cline-no"> </span>
|
|
440
455
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-yes">3x</span>
|
|
442
456
|
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-yes">40x</span>
|
|
444
|
-
<span class="cline-any cline-yes">1x</span>
|
|
445
|
-
<span class="cline-any cline-yes">1x</span>
|
|
446
457
|
<span class="cline-any cline-neutral"> </span>
|
|
447
458
|
<span class="cline-any cline-neutral"> </span>
|
|
448
459
|
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-no"> </span>
|
|
461
|
+
<span class="cline-any cline-no"> </span>
|
|
462
|
+
<span class="cline-any cline-no"> </span>
|
|
463
|
+
<span class="cline-any cline-no"> </span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
466
|
+
<span class="cline-any cline-no"> </span>
|
|
467
|
+
<span class="cline-any cline-no"> </span>
|
|
468
|
+
<span class="cline-any cline-no"> </span>
|
|
469
|
+
<span class="cline-any cline-no"> </span>
|
|
449
470
|
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-no"> </span>
|
|
472
|
+
<span class="cline-any cline-no"> </span>
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
474
|
+
<span class="cline-any cline-no"> </span>
|
|
475
|
+
<span class="cline-any cline-no"> </span>
|
|
450
476
|
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-yes">2x</span>
|
|
452
|
-
<span class="cline-any cline-yes">24x</span>
|
|
453
|
-
<span class="cline-any cline-yes">24x</span>
|
|
454
|
-
<span class="cline-any cline-yes">24x</span>
|
|
455
|
-
<span class="cline-any cline-yes">24x</span>
|
|
456
|
-
<span class="cline-any cline-yes">24x</span>
|
|
457
477
|
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-
|
|
459
|
-
<span class="cline-any cline-yes">24x</span>
|
|
460
|
-
<span class="cline-any cline-yes">24x</span>
|
|
461
|
-
<span class="cline-any cline-yes">24x</span>
|
|
478
|
+
<span class="cline-any cline-no"> </span>
|
|
462
479
|
<span class="cline-any cline-neutral"> </span>
|
|
463
480
|
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-yes">131x</span>
|
|
465
|
-
<span class="cline-any cline-yes">2x</span>
|
|
466
481
|
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-yes">129x</span>
|
|
468
482
|
<span class="cline-any cline-neutral"> </span>
|
|
469
483
|
<span class="cline-any cline-neutral"> </span>
|
|
470
484
|
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-no"> </span>
|
|
486
|
+
<span class="cline-any cline-no"> </span>
|
|
487
|
+
<span class="cline-any cline-no"> </span>
|
|
488
|
+
<span class="cline-any cline-no"> </span>
|
|
471
489
|
<span class="cline-any cline-neutral"> </span>
|
|
472
490
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-no"> </span>
|
|
492
|
+
<span class="cline-any cline-no"> </span>
|
|
473
493
|
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-
|
|
475
|
-
<span class="cline-any cline-yes">2x</span>
|
|
476
|
-
<span class="cline-any cline-yes">2x</span>
|
|
494
|
+
<span class="cline-any cline-no"> </span>
|
|
477
495
|
<span class="cline-any cline-no"> </span>
|
|
478
496
|
<span class="cline-any cline-neutral"> </span>
|
|
479
497
|
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-yes">131x</span>
|
|
481
498
|
<span class="cline-any cline-no"> </span>
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
482
501
|
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-yes">131x</span>
|
|
484
502
|
<span class="cline-any cline-no"> </span>
|
|
485
503
|
<span class="cline-any cline-neutral"> </span>
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
486
505
|
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-yes">131x</span>
|
|
488
|
-
<span class="cline-any cline-yes">2x</span>
|
|
489
506
|
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-yes">129x</span>
|
|
491
507
|
<span class="cline-any cline-neutral"> </span>
|
|
492
508
|
<span class="cline-any cline-neutral"> </span>
|
|
493
509
|
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
495
511
|
<span class="cline-any cline-no"> </span>
|
|
496
512
|
<span class="cline-any cline-no"> </span>
|
|
497
513
|
<span class="cline-any cline-no"> </span>
|
|
@@ -500,37 +516,39 @@
|
|
|
500
516
|
<span class="cline-any cline-neutral"> </span>
|
|
501
517
|
<span class="cline-any cline-neutral"> </span>
|
|
502
518
|
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-
|
|
504
|
-
<span class="cline-any cline-
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-no"> </span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
506
521
|
<span class="cline-any cline-neutral"> </span>
|
|
507
522
|
<span class="cline-any cline-neutral"> </span>
|
|
508
523
|
<span class="cline-any cline-neutral"> </span>
|
|
509
524
|
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-no"> </span>
|
|
510
526
|
<span class="cline-any cline-neutral"> </span>
|
|
511
527
|
<span class="cline-any cline-neutral"> </span>
|
|
512
528
|
<span class="cline-any cline-neutral"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
531
|
<span class="cline-any cline-neutral"> </span>
|
|
514
532
|
<span class="cline-any cline-neutral"> </span>
|
|
515
533
|
<span class="cline-any cline-neutral"> </span>
|
|
516
534
|
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-
|
|
518
|
-
<span class="cline-any cline-
|
|
519
|
-
<span class="cline-any cline-
|
|
535
|
+
<span class="cline-any cline-no"> </span>
|
|
536
|
+
<span class="cline-any cline-no"> </span>
|
|
537
|
+
<span class="cline-any cline-no"> </span>
|
|
520
538
|
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-
|
|
522
|
-
<span class="cline-any cline-
|
|
523
|
-
<span class="cline-any cline-
|
|
524
|
-
<span class="cline-any cline-
|
|
525
|
-
<span class="cline-any cline-
|
|
539
|
+
<span class="cline-any cline-no"> </span>
|
|
540
|
+
<span class="cline-any cline-no"> </span>
|
|
541
|
+
<span class="cline-any cline-no"> </span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
526
544
|
<span class="cline-any cline-neutral"> </span>
|
|
527
545
|
<span class="cline-any cline-neutral"> </span>
|
|
528
546
|
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-
|
|
530
|
-
<span class="cline-any cline-
|
|
547
|
+
<span class="cline-any cline-no"> </span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
531
549
|
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-
|
|
533
|
-
<span class="cline-any cline-
|
|
550
|
+
<span class="cline-any cline-no"> </span>
|
|
551
|
+
<span class="cline-any cline-no"> </span>
|
|
534
552
|
<span class="cline-any cline-neutral"> </span>
|
|
535
553
|
<span class="cline-any cline-no"> </span>
|
|
536
554
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -539,71 +557,71 @@
|
|
|
539
557
|
<span class="cline-any cline-neutral"> </span>
|
|
540
558
|
<span class="cline-any cline-no"> </span>
|
|
541
559
|
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-
|
|
560
|
+
<span class="cline-any cline-no"> </span>
|
|
543
561
|
<span class="cline-any cline-neutral"> </span>
|
|
544
562
|
<span class="cline-any cline-neutral"> </span>
|
|
545
563
|
<span class="cline-any cline-neutral"> </span>
|
|
546
564
|
<span class="cline-any cline-neutral"> </span>
|
|
547
565
|
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-
|
|
549
|
-
<span class="cline-any cline-
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
567
|
+
<span class="cline-any cline-no"> </span>
|
|
550
568
|
<span class="cline-any cline-neutral"> </span>
|
|
551
569
|
<span class="cline-any cline-neutral"> </span>
|
|
552
570
|
<span class="cline-any cline-neutral"> </span>
|
|
553
571
|
<span class="cline-any cline-neutral"> </span>
|
|
554
572
|
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-
|
|
556
|
-
<span class="cline-any cline-
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
557
575
|
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-
|
|
559
|
-
<span class="cline-any cline-
|
|
576
|
+
<span class="cline-any cline-no"> </span>
|
|
577
|
+
<span class="cline-any cline-no"> </span>
|
|
560
578
|
<span class="cline-any cline-neutral"> </span>
|
|
561
579
|
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-
|
|
580
|
+
<span class="cline-any cline-no"> </span>
|
|
563
581
|
<span class="cline-any cline-neutral"> </span>
|
|
564
582
|
<span class="cline-any cline-neutral"> </span>
|
|
565
583
|
<span class="cline-any cline-neutral"> </span>
|
|
566
584
|
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-
|
|
568
|
-
<span class="cline-any cline-
|
|
585
|
+
<span class="cline-any cline-no"> </span>
|
|
586
|
+
<span class="cline-any cline-no"> </span>
|
|
569
587
|
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-
|
|
571
|
-
<span class="cline-any cline-
|
|
588
|
+
<span class="cline-any cline-no"> </span>
|
|
589
|
+
<span class="cline-any cline-no"> </span>
|
|
572
590
|
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
574
592
|
<span class="cline-any cline-no"> </span>
|
|
575
593
|
<span class="cline-any cline-neutral"> </span>
|
|
576
594
|
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-
|
|
595
|
+
<span class="cline-any cline-no"> </span>
|
|
578
596
|
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-
|
|
597
|
+
<span class="cline-any cline-no"> </span>
|
|
580
598
|
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-
|
|
599
|
+
<span class="cline-any cline-no"> </span>
|
|
582
600
|
<span class="cline-any cline-no"> </span>
|
|
583
601
|
<span class="cline-any cline-no"> </span>
|
|
584
602
|
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-
|
|
603
|
+
<span class="cline-any cline-no"> </span>
|
|
586
604
|
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-
|
|
588
|
-
<span class="cline-any cline-
|
|
589
|
-
<span class="cline-any cline-
|
|
605
|
+
<span class="cline-any cline-no"> </span>
|
|
606
|
+
<span class="cline-any cline-no"> </span>
|
|
607
|
+
<span class="cline-any cline-no"> </span>
|
|
590
608
|
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-
|
|
592
|
-
<span class="cline-any cline-
|
|
609
|
+
<span class="cline-any cline-no"> </span>
|
|
610
|
+
<span class="cline-any cline-no"> </span>
|
|
593
611
|
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-
|
|
595
|
-
<span class="cline-any cline-
|
|
596
|
-
<span class="cline-any cline-
|
|
612
|
+
<span class="cline-any cline-no"> </span>
|
|
613
|
+
<span class="cline-any cline-no"> </span>
|
|
614
|
+
<span class="cline-any cline-no"> </span>
|
|
597
615
|
<span class="cline-any cline-neutral"> </span>
|
|
598
616
|
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-
|
|
617
|
+
<span class="cline-any cline-no"> </span>
|
|
600
618
|
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-
|
|
619
|
+
<span class="cline-any cline-no"> </span>
|
|
602
620
|
<span class="cline-any cline-neutral"> </span>
|
|
603
621
|
<span class="cline-any cline-neutral"> </span>
|
|
604
622
|
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-
|
|
606
|
-
<span class="cline-any cline-
|
|
623
|
+
<span class="cline-any cline-no"> </span>
|
|
624
|
+
<span class="cline-any cline-no"> </span>
|
|
607
625
|
<span class="cline-any cline-neutral"> </span>
|
|
608
626
|
<span class="cline-any cline-no"> </span>
|
|
609
627
|
<span class="cline-any cline-no"> </span>
|
|
@@ -621,47 +639,47 @@
|
|
|
621
639
|
<span class="cline-any cline-neutral"> </span>
|
|
622
640
|
<span class="cline-any cline-neutral"> </span>
|
|
623
641
|
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-
|
|
625
|
-
<span class="cline-any cline-
|
|
626
|
-
<span class="cline-any cline-
|
|
642
|
+
<span class="cline-any cline-no"> </span>
|
|
643
|
+
<span class="cline-any cline-no"> </span>
|
|
644
|
+
<span class="cline-any cline-no"> </span>
|
|
627
645
|
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-
|
|
646
|
+
<span class="cline-any cline-no"> </span>
|
|
629
647
|
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-
|
|
648
|
+
<span class="cline-any cline-no"> </span>
|
|
631
649
|
<span class="cline-any cline-neutral"> </span>
|
|
632
650
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
633
651
|
import { marshallGeometry } from '../marshall'
|
|
634
652
|
import makeDebug from 'debug'
|
|
635
653
|
|
|
636
|
-
const debug = makeDebug('kdk:map:query:hooks')
|
|
654
|
+
const debug = <span class="cstat-no" title="statement not covered" >makeDebug('kdk:map:query:hooks')</span>
|
|
637
655
|
|
|
638
|
-
export function marshallGeometryQuery (hook) {
|
|
639
|
-
const query = hook.params.query
|
|
640
|
-
|
|
641
|
-
const geometry = query.geometry
|
|
642
|
-
|
|
643
|
-
marshallGeometry(geometry)
|
|
656
|
+
export function <span class="fstat-no" title="function not covered" >marshallGeometryQuery </span>(hook) {
|
|
657
|
+
const query = <span class="cstat-no" title="statement not covered" >hook.params.query</span>
|
|
658
|
+
<span class="cstat-no" title="statement not covered" > if (_.isNil(query)) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
659
|
+
const geometry = <span class="cstat-no" title="statement not covered" >query.geometry</span>
|
|
660
|
+
<span class="cstat-no" title="statement not covered" > if (_.isNil(geometry)) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
661
|
+
<span class="cstat-no" title="statement not covered" > marshallGeometry(geometry)</span>
|
|
644
662
|
}
|
|
645
663
|
|
|
646
|
-
export function marshallSpatialQuery (hook) {
|
|
647
|
-
const query = hook.params.query
|
|
648
|
-
if (query) {
|
|
649
|
-
if (!_.isNil(query.geometry)) marshallGeometry(query.geometry)
|
|
664
|
+
export function <span class="fstat-no" title="function not covered" >marshallSpatialQuery </span>(hook) {
|
|
665
|
+
const query = <span class="cstat-no" title="statement not covered" >hook.params.query</span>
|
|
666
|
+
<span class="cstat-no" title="statement not covered" > if (query) {</span>
|
|
667
|
+
<span class="cstat-no" title="statement not covered" > if (!_.isNil(query.geometry)) <span class="cstat-no" title="statement not covered" >marshallGeometry(query.geometry)</span></span>
|
|
650
668
|
// Shortcut for proximity query
|
|
651
|
-
if ((!_.isNil(query.centerLon) || !_.isNil(query.longitude)) &&
|
|
669
|
+
<span class="cstat-no" title="statement not covered" > if ((!_.isNil(query.centerLon) || !_.isNil(query.longitude)) &&</span>
|
|
652
670
|
(!_.isNil(query.centerLat) || !_.isNil(query.latitude)) && !_.isNil(query.distance)) {
|
|
653
|
-
const longitude = (_.isNil(query.centerLon) ? _.toNumber(query.longitude) :
|
|
654
|
-
const latitude = (_.isNil(query.centerLat) ? _.toNumber(query.latitude) :
|
|
655
|
-
const distance = _.toNumber(query.distance)
|
|
671
|
+
const longitude = (<span class="cstat-no" title="statement not covered" >_.isNil(query.centerLon) ? _.toNumber(query.longitude) : _.toNumber(query.centerLon))</span>
|
|
672
|
+
const latitude = (<span class="cstat-no" title="statement not covered" >_.isNil(query.centerLat) ? _.toNumber(query.latitude) : _.toNumber(query.centerLat))</span>
|
|
673
|
+
const distance = <span class="cstat-no" title="statement not covered" >_.toNumber(query.distance)</span>
|
|
656
674
|
// Transform to MongoDB spatial request
|
|
657
|
-
delete query.centerLon
|
|
658
|
-
delete query.longitude
|
|
659
|
-
delete query.centerLat
|
|
660
|
-
delete query.latitude
|
|
661
|
-
delete query.distance
|
|
675
|
+
<span class="cstat-no" title="statement not covered" > delete query.centerLon</span>
|
|
676
|
+
<span class="cstat-no" title="statement not covered" > delete query.longitude</span>
|
|
677
|
+
<span class="cstat-no" title="statement not covered" > delete query.centerLat</span>
|
|
678
|
+
<span class="cstat-no" title="statement not covered" > delete query.latitude</span>
|
|
679
|
+
<span class="cstat-no" title="statement not covered" > delete query.distance</span>
|
|
662
680
|
// Aggregation requires a specific operator
|
|
663
|
-
|
|
664
|
-
<span class="cstat-no" title="statement not covered" > query
|
|
681
|
+
<span class="cstat-no" title="statement not covered" > if (query.$aggregate) {</span>
|
|
682
|
+
<span class="cstat-no" title="statement not covered" > query.$geoNear = {</span>
|
|
665
683
|
near: { type: 'Point', coordinates: [longitude, latitude] },
|
|
666
684
|
maxDistance: distance,
|
|
667
685
|
distanceField: 'distance',
|
|
@@ -679,7 +697,7 @@ export function marshallSpatialQuery (hook) {
|
|
|
679
697
|
}
|
|
680
698
|
}
|
|
681
699
|
*/
|
|
682
|
-
query.geometry = {
|
|
700
|
+
<span class="cstat-no" title="statement not covered" > query.geometry = {</span>
|
|
683
701
|
$geoWithin: {
|
|
684
702
|
$centerSphere: [[longitude, latitude], distance / 6378137.0] // Earth radius as in radians
|
|
685
703
|
}
|
|
@@ -687,17 +705,17 @@ export function marshallSpatialQuery (hook) {
|
|
|
687
705
|
}
|
|
688
706
|
}
|
|
689
707
|
// Shortcut for bbox query
|
|
690
|
-
if (!_.isNil(query.south) && !_.isNil(query.north) && !_.isNil(query.west) && !_.isNil(query.east)) {
|
|
691
|
-
const south = _.toNumber(query.south)
|
|
692
|
-
const north = _.toNumber(query.north)
|
|
693
|
-
const west = _.toNumber(query.west)
|
|
694
|
-
const east = _.toNumber(query.east)
|
|
708
|
+
<span class="cstat-no" title="statement not covered" > if (!_.isNil(query.south) && !_.isNil(query.north) && !_.isNil(query.west) && !_.isNil(query.east)) {</span>
|
|
709
|
+
const south = <span class="cstat-no" title="statement not covered" >_.toNumber(query.south)</span>
|
|
710
|
+
const north = <span class="cstat-no" title="statement not covered" >_.toNumber(query.north)</span>
|
|
711
|
+
const west = <span class="cstat-no" title="statement not covered" >_.toNumber(query.west)</span>
|
|
712
|
+
const east = <span class="cstat-no" title="statement not covered" >_.toNumber(query.east)</span>
|
|
695
713
|
// Transform to MongoDB spatial request
|
|
696
|
-
delete query.south
|
|
697
|
-
delete query.north
|
|
698
|
-
delete query.west
|
|
699
|
-
delete query.east
|
|
700
|
-
const geometryQuery = {
|
|
714
|
+
<span class="cstat-no" title="statement not covered" > delete query.south</span>
|
|
715
|
+
<span class="cstat-no" title="statement not covered" > delete query.north</span>
|
|
716
|
+
<span class="cstat-no" title="statement not covered" > delete query.west</span>
|
|
717
|
+
<span class="cstat-no" title="statement not covered" > delete query.east</span>
|
|
718
|
+
const geometryQuery = <span class="cstat-no" title="statement not covered" >{</span>
|
|
701
719
|
$geoIntersects: {
|
|
702
720
|
$geometry: {
|
|
703
721
|
type: 'Polygon',
|
|
@@ -707,16 +725,16 @@ export function marshallSpatialQuery (hook) {
|
|
|
707
725
|
}
|
|
708
726
|
}
|
|
709
727
|
}
|
|
710
|
-
query.geometry = geometryQuery
|
|
728
|
+
<span class="cstat-no" title="statement not covered" > query.geometry = geometryQuery</span>
|
|
711
729
|
}
|
|
712
730
|
// Shortcut for location query
|
|
713
|
-
if (!_.isNil(query.longitude) && !_.isNil(query.latitude)) {
|
|
714
|
-
const longitude = _.toNumber(query.longitude)
|
|
715
|
-
const latitude = _.toNumber(query.latitude)
|
|
731
|
+
<span class="cstat-no" title="statement not covered" > if (!_.isNil(query.longitude) && !_.isNil(query.latitude)) {</span>
|
|
732
|
+
const longitude = <span class="cstat-no" title="statement not covered" >_.toNumber(query.longitude)</span>
|
|
733
|
+
const latitude = <span class="cstat-no" title="statement not covered" >_.toNumber(query.latitude)</span>
|
|
716
734
|
// Transform to MongoDB spatial request
|
|
717
|
-
delete query.longitude
|
|
718
|
-
delete query.latitude
|
|
719
|
-
const geometryQuery = {
|
|
735
|
+
<span class="cstat-no" title="statement not covered" > delete query.longitude</span>
|
|
736
|
+
<span class="cstat-no" title="statement not covered" > delete query.latitude</span>
|
|
737
|
+
const geometryQuery = <span class="cstat-no" title="statement not covered" >{</span>
|
|
720
738
|
$geoIntersects: {
|
|
721
739
|
$geometry: {
|
|
722
740
|
type: 'Point',
|
|
@@ -724,196 +742,205 @@ export function marshallSpatialQuery (hook) {
|
|
|
724
742
|
}
|
|
725
743
|
}
|
|
726
744
|
}
|
|
727
|
-
query.geometry = geometryQuery
|
|
745
|
+
<span class="cstat-no" title="statement not covered" > query.geometry = geometryQuery</span>
|
|
728
746
|
}
|
|
729
|
-
if (query.geoJson) {
|
|
730
|
-
delete query.geoJson
|
|
731
|
-
hook.params.asGeoJson = true
|
|
747
|
+
<span class="cstat-no" title="statement not covered" > if (query.geoJson) {</span>
|
|
748
|
+
<span class="cstat-no" title="statement not covered" > delete query.geoJson</span>
|
|
749
|
+
<span class="cstat-no" title="statement not covered" > hook.params.asGeoJson = true</span>
|
|
732
750
|
}
|
|
733
751
|
}
|
|
734
752
|
}
|
|
735
753
|
|
|
736
|
-
export function asGeoJson (options = <span class="branch-0 cbranch-no" title="branch not covered" >{})
|
|
737
|
-
return function (hook) {
|
|
738
|
-
const params = hook.params
|
|
739
|
-
const query = params.query
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
754
|
+
export function <span class="fstat-no" title="function not covered" >asGeoJson </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
755
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
|
|
756
|
+
const params = <span class="cstat-no" title="statement not covered" >hook.params</span>
|
|
757
|
+
const query = <span class="cstat-no" title="statement not covered" >params.query</span>
|
|
758
|
+
<span class="cstat-no" title="statement not covered" > if (!options.force && !params.asGeoJson) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
759
|
+
<span class="cstat-no" title="statement not covered" > if (query.$distinct || query.$aggregation) <span class="cstat-no" title="statement not covered" >return </span></span>// Not applicable in this case
|
|
760
|
+
const longitudeProperty = (<span class="cstat-no" title="statement not covered" >options.longitudeProperty || 'longitude')</span>
|
|
761
|
+
const latitudeProperty = (<span class="cstat-no" title="statement not covered" >options.latitudeProperty || 'latitude')</span>
|
|
762
|
+
const altitudeProperty = (<span class="cstat-no" title="statement not covered" >options.altitudeProperty || 'altitude')</span>
|
|
763
|
+
const geometryProperty = (<span class="cstat-no" title="statement not covered" >options.geometryProperty || 'geometry')</span>
|
|
764
|
+
let results = <span class="cstat-no" title="statement not covered" >_.get(hook, options.dataPath || 'result')</span>
|
|
743
765
|
// Already as GeoJson ?
|
|
744
|
-
|
|
745
|
-
const
|
|
746
|
-
|
|
747
|
-
results = results
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
if
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
}
|
|
766
|
+
<span class="cstat-no" title="statement not covered" > if (results.type === 'FeatureCollection') <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
767
|
+
const isPaginated = <span class="cstat-no" title="statement not covered" >!_.isNil(results.data)</span>
|
|
768
|
+
const pagination = (<span class="cstat-no" title="statement not covered" >isPaginated ? _.pick(results, ['total', 'skip', 'limit']) : {})</span>
|
|
769
|
+
<span class="cstat-no" title="statement not covered" > results = (isPaginated ? results.data : results)</span>
|
|
770
|
+
<span class="cstat-no" title="statement not covered" > results = results</span>
|
|
771
|
+
.filter(<span class="fstat-no" title="function not covered" >it</span>em => {
|
|
772
|
+
// Check if item are not already in GeoJson feature format and we can convert if required
|
|
773
|
+
<span class="cstat-no" title="statement not covered" > return (_.has(item, longitudeProperty) && _.has(item, latitudeProperty)) ||</span>
|
|
774
|
+
// Check for a geometry property (previously provided or already transformed item)
|
|
775
|
+
(_.has(item, geometryProperty + '.type') && _.has(item, geometryProperty + '.coordinates'))
|
|
755
776
|
})
|
|
756
|
-
.map(
|
|
777
|
+
.map(<span class="fstat-no" title="function not covered" >it</span>em => {
|
|
757
778
|
let coordinates
|
|
758
|
-
// Item locations are not already in GeoJson feature format so we need to convert
|
|
759
779
|
// Keep track of coordinates before picking properties
|
|
760
|
-
if (
|
|
761
|
-
coordinates = [_.get(item,
|
|
762
|
-
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > coordinates.
|
|
780
|
+
<span class="cstat-no" title="statement not covered" > if (_.has(item, longitudeProperty) && _.has(item, latitudeProperty)) {</span>
|
|
781
|
+
<span class="cstat-no" title="statement not covered" > coordinates = [_.get(item, longitudeProperty), _.get(item, latitudeProperty)]</span>
|
|
782
|
+
<span class="cstat-no" title="statement not covered" > if (_.has(item, altitudeProperty)) {</span>
|
|
783
|
+
<span class="cstat-no" title="statement not covered" > coordinates.push(_.get(item, altitudeProperty))</span>
|
|
764
784
|
}
|
|
765
785
|
}
|
|
766
|
-
|
|
767
|
-
<span class="cstat-no" title="statement not covered" > item = _
|
|
786
|
+
<span class="cstat-no" title="statement not covered" > if (options.pick) {</span>
|
|
787
|
+
<span class="cstat-no" title="statement not covered" > item = _.pick(item, options.pick)</span>
|
|
768
788
|
}
|
|
769
|
-
|
|
770
|
-
<span class="cstat-no" title="statement not covered" > item = _
|
|
789
|
+
<span class="cstat-no" title="statement not covered" > if (options.omit) {</span>
|
|
790
|
+
<span class="cstat-no" title="statement not covered" > item = _.omit(item, options.omit)</span>
|
|
771
791
|
}
|
|
772
|
-
// Item locations are
|
|
773
|
-
if (
|
|
774
|
-
return Object.assign({
|
|
775
|
-
|
|
776
|
-
|
|
792
|
+
// Item locations are already in GeoJson format
|
|
793
|
+
<span class="cstat-no" title="statement not covered" > if (_.has(item, geometryProperty + '.type') && _.has(item, geometryProperty + '.coordinates')) {</span>
|
|
794
|
+
<span class="cstat-no" title="statement not covered" > return Object.assign({</span>
|
|
795
|
+
type: 'Feature', geometry: _.get(item, geometryProperty), properties: {}
|
|
796
|
+
}, _.omit(item, [geometryProperty]))
|
|
797
|
+
} else <span class="cstat-no" title="statement not covered" >if (coordinates) {</span>
|
|
798
|
+
// Item locations are not already in GeoJson feature format so we need to convert
|
|
799
|
+
<span class="cstat-no" title="statement not covered" > return Object.assign({</span>
|
|
800
|
+
type: 'Feature', geometry: { type: 'Point', coordinates }, properties: {}
|
|
801
|
+
}, _.omit(item, [longitudeProperty, latitudeProperty]))
|
|
777
802
|
}
|
|
778
803
|
})
|
|
779
804
|
// Move some data to properties ?
|
|
780
|
-
|
|
781
|
-
<span class="cstat-no" title="statement not covered" > results.
|
|
782
|
-
<span class="cstat-no" title="statement not covered" > options.
|
|
783
|
-
<span class="cstat-no" title="statement not covered" > if (mapping.from) <span class="cstat-no" title="statement not covered" >_.
|
|
784
|
-
<span class="cstat-no" title="statement not covered" > if (mapping.delete) <span class="cstat-no" title="statement not covered" >_.
|
|
805
|
+
<span class="cstat-no" title="statement not covered" > if (options.properties) {</span>
|
|
806
|
+
<span class="cstat-no" title="statement not covered" > results.forEach(<span class="fstat-no" title="function not covered" >it</span>em => {</span>
|
|
807
|
+
<span class="cstat-no" title="statement not covered" > options.properties.forEach(<span class="fstat-no" title="function not covered" >ma</span>pping => {</span>
|
|
808
|
+
<span class="cstat-no" title="statement not covered" > if (mapping.from) <span class="cstat-no" title="statement not covered" >_.set(item, `properties.${mapping.to || mapping.from}`, _.get(item, `${mapping.from}`))</span></span>
|
|
809
|
+
<span class="cstat-no" title="statement not covered" > if (mapping.delete) <span class="cstat-no" title="statement not covered" >_.unset(item, `${mapping.from}`)</span></span>
|
|
785
810
|
})
|
|
786
811
|
})
|
|
787
812
|
}
|
|
788
|
-
// Copy pagination information so that client can use it anyway
|
|
789
|
-
|
|
790
|
-
hook.result
|
|
813
|
+
// Copy pagination information if any so that client can use it anyway
|
|
814
|
+
<span class="cstat-no" title="statement not covered" > if (_.get(options, 'asFeatureCollection', true)) {</span>
|
|
815
|
+
<span class="cstat-no" title="statement not covered" > _.set(hook, options.dataPath || 'result', Object.assign({</span>
|
|
791
816
|
type: 'FeatureCollection',
|
|
792
817
|
features: results
|
|
793
|
-
}, pagination)
|
|
794
|
-
} else {
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > hook.
|
|
818
|
+
}, pagination)) // If no pagination this merged object will be empty
|
|
819
|
+
} else <span class="cstat-no" title="statement not covered" >if (isPaginated) {</span>
|
|
820
|
+
<span class="cstat-no" title="statement not covered" > _.set(hook, options.dataPath || 'result', Object.assign({</span>
|
|
796
821
|
data: results
|
|
797
|
-
}, pagination)
|
|
822
|
+
}, pagination))
|
|
823
|
+
} else {
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > _.set(hook, options.dataPath || 'result', results)</span>
|
|
798
825
|
}
|
|
799
826
|
}
|
|
800
827
|
}
|
|
801
828
|
|
|
802
|
-
export async function aggregateFeaturesQuery (hook) {
|
|
803
|
-
const query = hook.params.query
|
|
804
|
-
const service = hook.service
|
|
805
|
-
|
|
829
|
+
export async function <span class="fstat-no" title="function not covered" >aggregateFeaturesQuery </span>(hook) {
|
|
830
|
+
const query = <span class="cstat-no" title="statement not covered" >hook.params.query</span>
|
|
831
|
+
const service = <span class="cstat-no" title="statement not covered" >hook.service</span>
|
|
832
|
+
<span class="cstat-no" title="statement not covered" > if (!query) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
806
833
|
// Perform aggregation
|
|
807
|
-
if (query.$aggregate) {
|
|
808
|
-
const collection = service.Model
|
|
809
|
-
const featureId = (
|
|
810
|
-
const featureIdType = (
|
|
811
|
-
const ids = typeof query.$groupBy === 'string' // Group by matching ID(s), ie single ID or array of field to create a compound ID
|
|
834
|
+
<span class="cstat-no" title="statement not covered" > if (query.$aggregate) {</span>
|
|
835
|
+
const collection = <span class="cstat-no" title="statement not covered" >service.Model</span>
|
|
836
|
+
const featureId = (<span class="cstat-no" title="statement not covered" >service.options ? service.options.featureId : '')</span>
|
|
837
|
+
const featureIdType = (<span class="cstat-no" title="statement not covered" >service.options ? service.options.featureIdType : 'string')</span>
|
|
838
|
+
const ids = <span class="cstat-no" title="statement not covered" >typeof query.$groupBy === 'string' // Group by matching ID(s), ie single ID or array of field to create a compound ID</span>
|
|
812
839
|
? { [query.$groupBy]: '$properties.' + query.$groupBy }
|
|
813
840
|
// Aggregated in an accumulator to avoid conflict with feature properties
|
|
814
|
-
: <span class="
|
|
815
|
-
const groupBy = { _id: ids }
|
|
816
|
-
let keys = _.keys(ids)
|
|
841
|
+
: query.$groupBy.reduce(<span class="fstat-no" title="function not covered" >(o</span>bject, id) => <span class="cstat-no" title="statement not covered" >Object.assign(object, { [id]: '$properties.' + id }),</span> {})
|
|
842
|
+
const groupBy = <span class="cstat-no" title="statement not covered" >{ _id: ids }</span>
|
|
843
|
+
let keys = <span class="cstat-no" title="statement not covered" >_.keys(ids)</span>
|
|
817
844
|
// Do we only keep first or last available time ?
|
|
818
|
-
const singleTime = (_.toNumber(query.$limit) === 1)
|
|
819
|
-
|
|
845
|
+
const singleTime = (<span class="cstat-no" title="statement not covered" >_.toNumber(query.$limit) === 1)</span>
|
|
846
|
+
<span class="cstat-no" title="statement not covered" > if (singleTime) {</span>
|
|
820
847
|
// When single time no aggregation is performed at all so we only have raw features
|
|
821
|
-
<span class="cstat-no" title="statement not covered" > keys =
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > keys = keys.map(<span class="fstat-no" title="function not covered" >ke</span>y => <span class="cstat-no" title="statement not covered" >'properties.' + key)</span></span>
|
|
822
849
|
// In this case no need to aggregate on each element we simply keep the first feature
|
|
823
850
|
// BUG: according to https://jira.mongodb.org/browse/SERVER-9507 MongoDB is not yet
|
|
824
851
|
// able to optimize this kind of operations to avoid full index scan
|
|
825
852
|
// For now we should restrict it to short time range
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > Object.
|
|
853
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(groupBy, { feature: { $first: '$$ROOT' } })</span>
|
|
827
854
|
} else {
|
|
828
|
-
Object.assign(groupBy, {
|
|
855
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(groupBy, {</span>
|
|
829
856
|
time: { $push: '$time' }, // Keep track of all times
|
|
830
857
|
type: { $last: '$type' }, // type is assumed similar for all results, keep last
|
|
831
858
|
properties: { $last: '$properties' } // non-aggregated properties are assumed similar for all results, keep last
|
|
832
859
|
})
|
|
833
860
|
// Check if we aggregate geometry or simply properties
|
|
834
|
-
if (!query.$aggregate.includes('geometry')) {
|
|
835
|
-
Object.assign(groupBy, {
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > if (!query.$aggregate.includes('geometry')) {</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(groupBy, {</span>
|
|
836
863
|
geometry: { $last: '$geometry' } // geometry is assumed similar for all results, keep last
|
|
837
864
|
})
|
|
838
865
|
}
|
|
839
866
|
}
|
|
840
867
|
// The query contains the match stage except options relevent to the aggregation pipeline
|
|
841
|
-
const match = _.omit(query, ['$groupBy', '$aggregate', '$geoNear', '$sort', '$limit', '$skip'])
|
|
842
|
-
const aggregateOptions = {}
|
|
868
|
+
const match = <span class="cstat-no" title="statement not covered" >_.omit(query, ['$groupBy', '$aggregate', '$geoNear', '$sort', '$limit', '$skip'])</span>
|
|
869
|
+
const aggregateOptions = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
843
870
|
// Check for any required type conversion (eg HTTP requests)
|
|
844
|
-
|
|
845
|
-
|
|
871
|
+
<span class="cstat-no" title="statement not covered" > if (featureId && _.has(match, 'properties.' + featureId)) {</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > if (featureIdType === 'number') <span class="cstat-no" title="statement not covered" >_.set(match, 'properties.' + featureId, _.toNumber(_.get(match, 'properties.' + featureId)))</span></span>
|
|
846
873
|
// Check if we could provide a hint to the aggregation when targeting feature ID
|
|
847
874
|
// Indeed, in that case, we define the appropriate index
|
|
848
|
-
aggregateOptions.hint = { ['properties.' + featureId]: 1 }
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > aggregateOptions.hint = { ['properties.' + featureId]: 1 }</span>
|
|
849
876
|
}
|
|
850
877
|
// Ensure we do not mix results with/without relevant element values
|
|
851
878
|
// by separately querying each element then merging
|
|
852
879
|
let aggregatedResults
|
|
853
|
-
await Promise.all(query.$aggregate.map(
|
|
854
|
-
const isGeometry = (element === 'geometry')
|
|
880
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(query.$aggregate.map(<span class="fstat-no" title="function not covered" >as</span>ync element => {</span>
|
|
881
|
+
const isGeometry = (<span class="cstat-no" title="statement not covered" >element === 'geometry')</span>
|
|
855
882
|
// Geometry is a root property while others are feature properties
|
|
856
|
-
const prefix = (isGeometry ? '' : 'properties.')
|
|
857
|
-
const pipeline = []
|
|
883
|
+
const prefix = (<span class="cstat-no" title="statement not covered" >isGeometry ? '' : 'properties.')</span>
|
|
884
|
+
const pipeline = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
858
885
|
// Check for geometry stage
|
|
859
|
-
|
|
860
|
-
<span class="cstat-no" title="statement not covered" > pipeline.
|
|
886
|
+
<span class="cstat-no" title="statement not covered" > if (query.$geoNear) {</span>
|
|
887
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $geoNear: query.$geoNear })</span>
|
|
861
888
|
}
|
|
862
889
|
// Find matching features only
|
|
863
|
-
pipeline.push({ $match: Object.assign({ [prefix + element]: { $exists: true } }, match) })
|
|
890
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $match: Object.assign({ [prefix + element]: { $exists: true } }, match) })</span>
|
|
864
891
|
// Ensure they are ordered by increasing time by default
|
|
865
|
-
pipeline.push({ $sort: query.$sort || { time: 1 } })
|
|
892
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $sort: query.$sort || { time: 1 } })</span>
|
|
866
893
|
// Keep track of all feature values
|
|
867
|
-
|
|
868
|
-
<span class="cstat-no" title="statement not covered" > pipeline.
|
|
869
|
-
<span class="cstat-no" title="statement not covered" > pipeline.
|
|
894
|
+
<span class="cstat-no" title="statement not covered" > if (singleTime) {</span>
|
|
895
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $group: groupBy })</span>
|
|
896
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $replaceRoot: { newRoot: '$feature' } })</span>
|
|
870
897
|
} else {
|
|
871
|
-
pipeline.push({ $group: Object.assign({ [element]: { $push: '$' + prefix + element } }, groupBy) })
|
|
898
|
+
<span class="cstat-no" title="statement not covered" > pipeline.push({ $group: Object.assign({ [element]: { $push: '$' + prefix + element } }, groupBy) })</span>
|
|
872
899
|
}
|
|
873
|
-
debug(`Aggregating ${element} element for features`)
|
|
874
|
-
pipeline.forEach(
|
|
875
|
-
_.forOwn(stage, (
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > debug(`Aggregating ${element} element for features`)</span>
|
|
901
|
+
<span class="cstat-no" title="statement not covered" > pipeline.forEach(<span class="fstat-no" title="function not covered" >st</span>age => {</span>
|
|
902
|
+
<span class="cstat-no" title="statement not covered" > _.forOwn(stage, <span class="fstat-no" title="function not covered" >(v</span>alue, key) => <span class="cstat-no" title="statement not covered" >debug('Stage', key, value))</span></span>
|
|
876
903
|
})
|
|
877
|
-
const elementResults = await collection.aggregate(pipeline, aggregateOptions).toArray()
|
|
878
|
-
debug(`Generated ${elementResults.length} feature(s) for ${element} element`)
|
|
904
|
+
const elementResults = <span class="cstat-no" title="statement not covered" >await collection.aggregate(pipeline, aggregateOptions).toArray()</span>
|
|
905
|
+
<span class="cstat-no" title="statement not covered" > debug(`Generated ${elementResults.length} feature(s) for ${element} element`)</span>
|
|
879
906
|
// Rearrange data so that we get ordered arrays indexed by element
|
|
880
|
-
elementResults.forEach(
|
|
881
|
-
result.time = { [element]: result.time }
|
|
882
|
-
if (!singleTime && !isGeometry) {
|
|
907
|
+
<span class="cstat-no" title="statement not covered" > elementResults.forEach(<span class="fstat-no" title="function not covered" >re</span>sult => {</span>
|
|
908
|
+
<span class="cstat-no" title="statement not covered" > result.time = { [element]: result.time }</span>
|
|
909
|
+
<span class="cstat-no" title="statement not covered" > if (!singleTime && !isGeometry) {</span>
|
|
883
910
|
// Set back the element values as properties because we aggregated in an accumulator
|
|
884
911
|
// to avoid conflict with non-aggregated feature properties
|
|
885
|
-
_.set(result, prefix + element, _.get(result, element))
|
|
912
|
+
<span class="cstat-no" title="statement not covered" > _.set(result, prefix + element, _.get(result, element))</span>
|
|
886
913
|
// Delete accumulator
|
|
887
|
-
_.unset(result, element)
|
|
914
|
+
<span class="cstat-no" title="statement not covered" > _.unset(result, element)</span>
|
|
888
915
|
}
|
|
889
916
|
})
|
|
890
917
|
// Now merge with previous element results
|
|
891
|
-
|
|
892
|
-
aggregatedResults = elementResults
|
|
918
|
+
<span class="cstat-no" title="statement not covered" > if (!aggregatedResults) {</span>
|
|
919
|
+
<span class="cstat-no" title="statement not covered" > aggregatedResults = elementResults</span>
|
|
893
920
|
} else {
|
|
894
|
-
<span class="cstat-no" title="statement not covered" > elementResults.
|
|
895
|
-
const resultKeys = <span class="cstat-no" title="statement not covered" >_.
|
|
896
|
-
const previousResult = <span class="cstat-no" title="statement not covered" >aggregatedResults.
|
|
897
|
-
const aggregatedResultKeys = <span class="cstat-no" title="statement not covered" >_.
|
|
898
|
-
<span class="cstat-no" title="statement not covered" > return _
|
|
921
|
+
<span class="cstat-no" title="statement not covered" > elementResults.forEach(<span class="fstat-no" title="function not covered" >re</span>sult => {</span>
|
|
922
|
+
const resultKeys = <span class="cstat-no" title="statement not covered" >_.pick(result, keys)</span>
|
|
923
|
+
const previousResult = <span class="cstat-no" title="statement not covered" >aggregatedResults.find(<span class="fstat-no" title="function not covered" >ag</span>gregatedResult => {</span>
|
|
924
|
+
const aggregatedResultKeys = <span class="cstat-no" title="statement not covered" >_.pick(aggregatedResult, keys)</span>
|
|
925
|
+
<span class="cstat-no" title="statement not covered" > return _.isEqual(aggregatedResultKeys, resultKeys)</span>
|
|
899
926
|
})
|
|
900
927
|
// Merge with previous matching feature if any
|
|
901
928
|
<span class="cstat-no" title="statement not covered" > if (previousResult) {</span>
|
|
902
|
-
<span class="cstat-no" title="statement not covered" > Object.
|
|
903
|
-
<span class="cstat-no" title="statement not covered" > _.
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(previousResult.time, result.time)</span>
|
|
930
|
+
<span class="cstat-no" title="statement not covered" > _.set(previousResult, prefix + element, _.get(result, prefix + element))</span>
|
|
904
931
|
} else {
|
|
905
|
-
<span class="cstat-no" title="statement not covered" > aggregatedResults.
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > aggregatedResults.push(result)</span>
|
|
906
933
|
}
|
|
907
934
|
})
|
|
908
935
|
}
|
|
909
936
|
}))
|
|
910
|
-
delete query.$groupBy
|
|
911
|
-
delete query.$aggregate
|
|
912
|
-
delete query.$geoNear
|
|
937
|
+
<span class="cstat-no" title="statement not covered" > delete query.$groupBy</span>
|
|
938
|
+
<span class="cstat-no" title="statement not covered" > delete query.$aggregate</span>
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > delete query.$geoNear</span>
|
|
913
940
|
// Set result to avoid service DB call
|
|
914
|
-
hook.result = aggregatedResults
|
|
941
|
+
<span class="cstat-no" title="statement not covered" > hook.result = aggregatedResults</span>
|
|
915
942
|
}
|
|
916
|
-
return hook
|
|
943
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
917
944
|
}
|
|
918
945
|
</pre></td></tr></table></pre>
|
|
919
946
|
|
|
@@ -922,7 +949,7 @@ export async function aggregateFeaturesQuery (hook) {
|
|
|
922
949
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
923
950
|
Code coverage generated by
|
|
924
951
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
925
|
-
at Tue
|
|
952
|
+
at Tue Nov 23 2021 19:39:25 GMT+0100 (GMT+01:00)
|
|
926
953
|
</div>
|
|
927
954
|
</div>
|
|
928
955
|
<script src="../../../prettify.js"></script>
|