@kalisio/kdk 2.4.0 → 2.5.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/core/api/application.js +12 -12
- package/core/api/authentication.js +51 -7
- package/core/api/hooks/hooks.authentication.js +1 -59
- package/core/api/hooks/hooks.authorisations.js +8 -102
- package/core/api/hooks/hooks.model.js +4 -0
- package/core/api/hooks/hooks.push.js +18 -14
- package/core/api/hooks/hooks.users.js +0 -91
- package/core/api/hooks/index.js +0 -2
- package/core/api/services/account/account.service.js +1 -1
- package/core/api/services/authorisations/authorisations.service.js +28 -29
- package/core/api/services/index.js +38 -50
- package/core/api/services/messages/messages.hooks.js +4 -3
- package/core/api/services/users/users.service.js +5 -0
- package/core/client/api.js +182 -71
- package/core/client/broadcaster.js +20 -0
- package/core/client/capabilities.js +17 -7
- package/core/client/components/KActivity.vue +29 -34
- package/core/client/components/KAvatar.vue +0 -6
- package/core/client/components/KChip.vue +142 -39
- package/core/client/components/KContent.vue +13 -32
- package/core/client/components/KDialog.vue +29 -8
- package/core/client/components/KEditor.vue +120 -0
- package/core/client/components/KFollower.vue +75 -0
- package/core/client/components/KLogo.vue +2 -3
- package/core/client/components/KModal.vue +30 -10
- package/core/client/components/KSponsor.vue +1 -1
- package/core/client/components/KTextArea.vue +2 -5
- package/core/client/components/account/KDeleteAccountManager.vue +1 -1
- package/core/client/components/account/KProfile.vue +52 -14
- package/core/client/components/account/KSubscription.vue +19 -9
- package/core/client/components/account/KSubscriptionsManager.vue +10 -11
- package/core/client/components/action/KAction.vue +44 -24
- package/core/client/components/action/KBugReportAction.vue +4 -5
- package/core/client/components/action/KToggleStickyVisibility.vue +41 -0
- package/core/client/components/action/KToggleWidgetVisibility.vue +41 -0
- package/core/client/components/app/KPlatform.vue +122 -35
- package/core/client/components/app/KRequestProgressBar.vue +59 -0
- package/core/client/components/app/KSettings.vue +13 -2
- package/core/client/components/app/KTour.vue +2 -2
- package/core/client/components/chart/KTimeSeriesChart.vue +11 -3
- package/core/client/components/collection/KCard.vue +27 -33
- package/core/client/components/collection/KCardSection.vue +3 -23
- package/core/client/components/collection/KColumn.vue +0 -5
- package/core/client/components/collection/KDescriptionCardSection.vue +10 -5
- package/core/client/components/collection/KFilterView.vue +15 -0
- package/core/client/components/collection/KGrid.vue +4 -9
- package/core/client/components/collection/KHistory.vue +0 -5
- package/core/client/components/collection/KHistoryEntry.vue +0 -2
- package/core/client/components/collection/KItem.vue +1 -2
- package/core/client/components/collection/KSearchFilterControl.vue +139 -0
- package/core/client/components/collection/KTable.vue +1 -4
- package/core/client/components/collection/KTagsFilterControl.vue +70 -0
- package/core/client/components/collection/KTagsFilterView.vue +61 -0
- package/core/client/components/collection/KTimeFilterControl.vue +40 -0
- package/core/client/components/collection/KTimeFilterView.vue +106 -0
- package/core/client/components/collection/KTimeLine.vue +18 -11
- package/core/client/components/document/KBrowser.vue +283 -0
- package/core/client/components/document/KCsv.vue +52 -0
- package/core/client/components/document/KDocument.vue +19 -5
- package/core/client/components/document/KImage.vue +50 -19
- package/core/client/components/document/KMarkdown.vue +10 -2
- package/core/client/components/document/KUploader.vue +126 -0
- package/core/client/components/document/KVideo.vue +39 -0
- package/core/client/components/form/KDateField.vue +70 -0
- package/core/client/components/form/KDateTimeRangeField.vue +6 -17
- package/core/client/components/form/KDatetimeField.vue +6 -13
- package/core/client/components/form/KForm.vue +8 -8
- package/core/client/components/form/KOptionsField.vue +2 -0
- package/core/client/components/form/KResolutionField.vue +54 -52
- package/core/client/components/form/KSelectField.vue +27 -13
- package/core/client/components/form/KTextareaField.vue +23 -5
- package/core/client/components/graphics/KIcon.vue +64 -0
- package/core/client/components/index.js +1 -3
- package/core/client/components/input/KColorPicker.vue +70 -0
- package/core/client/components/input/KIconPicker.vue +188 -0
- package/core/client/components/input/KShapePicker.vue +81 -0
- package/core/client/components/input/index.js +7 -1
- package/core/client/components/layout/KFab.vue +1 -1
- package/core/client/components/layout/KLayout.vue +14 -2
- package/core/client/components/layout/KOpener.vue +9 -11
- package/core/client/components/layout/KPage.vue +31 -17
- package/core/client/components/layout/KWindow.vue +34 -18
- package/core/client/components/menu/KMenu.vue +52 -36
- package/core/client/components/menu/KSubMenu.vue +105 -0
- package/core/client/components/messages/KMessageCard.vue +207 -0
- package/core/client/components/messages/KMessageComposer.vue +199 -0
- package/core/client/components/messages/KMessagesTimeLine.vue +137 -0
- package/core/client/components/messages/index.js +7 -0
- package/core/client/components/screen/KErrorScreen.vue +2 -3
- package/core/client/components/screen/KLogoutScreen.vue +3 -1
- package/core/client/components/screen/KOAuthLoginScreen.vue +15 -0
- package/core/client/components/screen/KOAuthLogoutScreen.vue +33 -0
- package/core/client/components/screen/KUnauthorizedScreen.vue +16 -0
- package/core/client/components/time/KAbsoluteTimeRange.vue +7 -14
- package/core/client/components/time/KDate.vue +56 -26
- package/core/client/components/time/KDateTime.vue +93 -37
- package/core/client/components/time/KDateTimeRange.vue +197 -52
- package/core/client/components/time/KTime.vue +56 -26
- package/core/client/composables/activity.js +40 -30
- package/core/client/composables/{counter.js → collection-counter.js} +2 -4
- package/core/client/composables/collection-filter.js +111 -0
- package/core/client/composables/collection-timerange.js +56 -0
- package/core/client/composables/collection.js +13 -11
- package/core/client/composables/context.js +92 -0
- package/core/client/composables/errors.js +83 -0
- package/core/client/composables/index.js +5 -1
- package/core/client/composables/layout.js +14 -11
- package/core/client/composables/messages.js +4 -4
- package/core/client/composables/pwa.js +20 -27
- package/core/client/composables/schema.js +1 -1
- package/core/client/composables/screen.js +21 -9
- package/core/client/composables/selection.js +16 -4
- package/core/client/composables/session.js +13 -7
- package/core/client/composables/store.js +2 -1
- package/core/client/context.js +38 -0
- package/core/client/directives/v-hover.js +7 -4
- package/core/client/document.js +43 -15
- package/core/client/events.js +2 -2
- package/core/client/exporter.js +5 -4
- package/core/client/filter.js +1 -8
- package/core/client/guards.js +3 -3
- package/core/client/hooks/hooks.logger.js +1 -1
- package/core/client/hooks/hooks.offline.js +32 -0
- package/core/client/hooks/index.js +2 -1
- package/core/client/i18n/core_en.json +95 -268
- package/core/client/i18n/core_fr.json +181 -353
- package/core/client/index.js +22 -8
- package/core/client/layout.js +64 -25
- package/core/client/local-cache.js +67 -0
- package/core/client/local-storage.js +6 -2
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-activity.js +22 -10
- package/core/client/mixins/mixin.base-editor.js +1 -1
- package/core/client/mixins/mixin.base-field.js +10 -1
- package/core/client/mixins/mixin.base-item.js +14 -11
- package/core/client/mixins/mixin.service.js +1 -5
- package/core/client/platform.js +44 -0
- package/core/client/readers/reader.blob.js +3 -3
- package/core/client/readers/reader.csv.js +2 -2
- package/core/client/readers/reader.json.js +2 -2
- package/core/client/services/index.js +7 -11
- package/core/client/storage.js +43 -8
- package/core/client/template-context.js +14 -14
- package/core/client/time.js +3 -3
- package/core/client/units.js +7 -4
- package/core/client/utils/index.js +6 -5
- package/core/client/utils/utils.collection.js +71 -0
- package/core/client/utils/utils.colors.js +29 -8
- package/core/client/utils/utils.content.js +14 -14
- package/core/client/utils/utils.files.js +17 -0
- package/core/client/utils/utils.items.js +4 -0
- package/core/client/utils/utils.math.js +18 -1
- package/core/client/utils/utils.push.js +22 -13
- package/core/client/utils/utils.screen.js +6 -2
- package/core/client/utils/utils.services.js +42 -0
- package/core/client/utils/utils.session.js +48 -12
- package/core/client/utils/utils.shapes.js +15 -11
- package/core/common/permissions.js +3 -108
- package/core/common/schemas/messages.update.json +16 -0
- package/core/common/schemas/settings.update.json +27 -8
- package/core/common/utils.js +2 -0
- package/core/common/utils.offline.js +38 -0
- package/coverage/core/api/application.js.html +296 -296
- package/coverage/core/api/authentication.js.html +206 -74
- package/coverage/core/api/db.js.html +61 -61
- package/coverage/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/core/api/hooks/hooks.schemas.js.html +1 -1
- package/coverage/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/core/api/hooks/hooks.users.js.html +54 -327
- package/coverage/core/api/hooks/index.html +64 -94
- package/coverage/core/api/hooks/index.js.html +4 -10
- package/coverage/core/api/index.html +41 -56
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +9 -9
- package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +13 -58
- package/coverage/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/core/api/models/organisations.model.mongodb.js.html +3 -3
- package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/users.model.mongodb.js.html +1 -1
- package/coverage/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/core/api/services/account/account.service.js.html +67 -67
- package/coverage/core/api/services/account/index.html +16 -16
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +141 -144
- package/coverage/core/api/services/authorisations/index.html +19 -19
- package/coverage/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/core/api/services/databases/index.html +32 -32
- 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/import-export/import-export.hooks.js.html +1 -1
- package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/core/api/services/import-export/index.html +1 -1
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +118 -154
- 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/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +89 -86
- 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 +23 -23
- package/coverage/core/api/services/push/index.html +1 -1
- package/coverage/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/core/api/services/push/push.service.js.html +1 -1
- package/coverage/core/api/services/storage/index.html +5 -5
- package/coverage/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/core/api/services/storage/storage.service.js.html +27 -27
- 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 +23 -8
- package/coverage/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/core/api/services/users/users.service.js.html +100 -0
- package/coverage/core/api/utils.js.html +1 -1
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +1 -1
- package/coverage/core/common/permissions.js.html +195 -510
- package/coverage/core/common/schema.js.html +1 -1
- package/coverage/core/common/utils.js.html +12 -6
- package/coverage/core/common/utils.offline.js.html +199 -0
- package/coverage/index.html +142 -172
- package/coverage/lcov-report/core/api/application.js.html +296 -296
- package/coverage/lcov-report/core/api/authentication.js.html +206 -74
- package/coverage/lcov-report/core/api/db.js.html +61 -61
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +54 -327
- package/coverage/lcov-report/core/api/hooks/index.html +64 -94
- package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
- package/coverage/lcov-report/core/api/index.html +41 -56
- package/coverage/lcov-report/core/api/index.js.html +1 -1
- package/coverage/lcov-report/core/api/marshall.js.html +9 -9
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +13 -58
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +3 -3
- 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 +1 -1
- 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 +67 -67
- package/coverage/lcov-report/core/api/services/account/index.html +16 -16
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +141 -144
- package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/lcov-report/core/api/services/databases/index.html +32 -32
- 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/import-export/import-export.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +118 -154
- 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/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +89 -86
- 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 +23 -23
- package/coverage/lcov-report/core/api/services/push/index.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/index.html +5 -5
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +27 -27
- 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 +23 -8
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
- package/coverage/lcov-report/core/api/utils.js.html +1 -1
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +1 -1
- package/coverage/lcov-report/core/common/permissions.js.html +195 -510
- package/coverage/lcov-report/core/common/schema.js.html +1 -1
- package/coverage/lcov-report/core/common/utils.js.html +12 -6
- package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
- package/coverage/lcov-report/index.html +142 -172
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +20 -44
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +49 -7
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +22 -7
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +112 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +29 -11
- package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
- 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 +78 -9
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
- package/coverage/lcov-report/map/api/services/features/index.html +7 -7
- package/coverage/lcov-report/map/api/services/index.html +5 -5
- package/coverage/lcov-report/map/api/services/index.js.html +287 -50
- package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/styles/index.html +116 -0
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +8 -5
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +7 -7
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +10 -4
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/lcov-report/map/common/wcs-utils.js.html +9 -9
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
- package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
- package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
- package/coverage/lcov.info +2581 -3278
- package/coverage/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +20 -44
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +49 -7
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +22 -7
- package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/styles.model.mongodb.js.html +112 -0
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +29 -11
- package/coverage/map/api/services/catalog/index.html +5 -5
- 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 +78 -9
- package/coverage/map/api/services/features/features.service.js.html +307 -4
- package/coverage/map/api/services/features/index.html +7 -7
- package/coverage/map/api/services/index.html +5 -5
- package/coverage/map/api/services/index.js.html +287 -50
- package/coverage/map/api/services/projects/index.html +1 -1
- package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/map/api/services/styles/index.html +116 -0
- package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +8 -5
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +7 -7
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +10 -4
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +6 -6
- package/coverage/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/map/common/wcs-utils.js.html +9 -9
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +11 -11
- package/coverage/map/common/wms-utils.js.html +8 -8
- package/coverage/map/common/wmts-utils.js.html +7 -7
- package/coverage/tmp/coverage-323534-1747828879483-0.json +1 -0
- package/coverage/tmp/coverage-323546-1747828879453-0.json +1 -0
- package/coverage/tmp/coverage-323557-1747828879439-0.json +1 -0
- package/coverage/tmp/coverage-323569-1747828879416-0.json +1 -0
- package/coverage/tmp/coverage-323576-1747828879390-0.json +1 -0
- package/extras/configs/helpers.js +78 -0
- package/extras/configs/panes.left.js +118 -0
- package/extras/configs/panes.top.js +222 -0
- package/extras/configs/stickies.js +57 -0
- package/extras/configs/widgets.left.js +23 -0
- package/extras/configs/widgets.top.js +73 -0
- package/extras/css/core.variables.scss +8 -0
- package/extras/images/north.svg +3 -0
- package/extras/tours/map/side-nav.js +3 -3
- package/map/api/hooks/hooks.catalog.js +56 -23
- package/map/api/hooks/hooks.query.js +16 -24
- package/map/api/models/catalog.model.mongodb.js +16 -2
- package/{core/api/models/groups.model.mongodb.js → map/api/models/styles.model.mongodb.js} +2 -1
- package/map/api/services/catalog/catalog.hooks.js +13 -7
- package/map/api/services/features/features.hooks.js +28 -5
- package/map/api/services/features/features.service.js +101 -0
- package/map/api/services/index.js +125 -46
- package/map/api/services/styles/styles.hooks.js +37 -0
- package/map/client/cesium/utils/index.js +1 -0
- package/map/client/cesium/utils/utils.cesium.js +397 -0
- package/map/client/cesium/utils/utils.features.js +8 -0
- package/map/client/cesium/utils/utils.geojson.js +59 -0
- package/map/client/cesium/utils/utils.style.js +134 -17
- package/map/client/components/KEditLayerData.vue +17 -79
- package/map/client/components/KFeatureEditor.vue +2 -7
- package/map/client/components/KFeaturesChart.vue +2 -6
- package/map/client/components/KFeaturesFilterEditor.vue +300 -0
- package/map/client/components/KFeaturesFilterManager.vue +196 -0
- package/map/client/components/KFeaturesTable.vue +0 -5
- package/map/client/components/KFilterCondition.vue +303 -0
- package/map/client/components/KLayerEditionToolbar.vue +4 -3
- package/map/client/components/KLayerEditor.vue +451 -36
- package/map/client/components/KMeasureTool.vue +36 -9
- package/map/client/components/KProjectMenu.vue +14 -8
- package/map/client/components/catalog/KAddLayer.vue +0 -4
- package/map/client/components/catalog/KBaseLayersSelector.vue +42 -46
- package/map/client/components/catalog/KConnectLayer.vue +295 -291
- package/map/client/components/catalog/KCreateLayer.vue +141 -146
- package/map/client/components/catalog/KCreateOfflineView.vue +100 -0
- package/map/client/components/catalog/KCreateView.vue +2 -8
- package/map/client/components/catalog/KFilteredLayerItem.vue +72 -25
- package/map/client/components/catalog/KImportLayer.vue +121 -129
- package/map/client/components/catalog/KLayerItem.vue +44 -32
- package/map/client/components/catalog/KLayersPanel.vue +45 -17
- package/map/client/components/catalog/KLayersSelector.vue +51 -50
- package/map/client/components/catalog/KProjectManager.vue +4 -8
- package/map/client/components/catalog/KProjectSelector.vue +33 -2
- package/map/client/components/catalog/KProjectsPanel.vue +84 -106
- package/map/client/components/catalog/KSelectLayers.vue +56 -69
- package/map/client/components/catalog/KSelectViews.vue +56 -69
- package/map/client/components/catalog/KViewSelector.vue +32 -2
- package/map/client/components/catalog/KViewsPanel.vue +178 -110
- package/map/client/components/catalog/KWeatherLayersSelector.vue +77 -85
- package/map/client/components/form/KLocationField.vue +21 -2
- package/map/client/components/form/KOwsLayerField.vue +1 -1
- package/map/client/components/form/KOwsServiceField.vue +102 -63
- package/map/client/components/form/KSelectLayersField.vue +1 -1
- package/map/client/components/form/KSelectViewsField.vue +1 -1
- package/map/client/components/form/KTimezoneField.vue +0 -1
- package/map/client/components/legend/KLegend.vue +4 -4
- package/map/client/components/location/KLocationCardSection.vue +16 -0
- package/map/client/components/location/KLocationMap.vue +3 -2
- package/map/client/components/location/KLocationSearch.vue +46 -8
- package/map/client/components/location/KLocationTimeLineCard.vue +25 -3
- package/map/client/components/location/KLocationTip.vue +57 -10
- package/map/client/components/selection/KFeaturesSelection.vue +71 -0
- package/map/client/components/selection/KSelectedLayerFeatures.vue +343 -0
- package/map/client/components/{KAttribution.vue → stickies/KAttribution.vue} +39 -33
- package/map/client/components/stickies/KLevelSlider.vue +114 -0
- package/map/client/components/stickies/KNorthArrow.vue +26 -0
- package/map/client/components/stickies/KPosition.vue +103 -0
- package/map/client/components/stickies/KTarget.vue +34 -0
- package/map/client/components/styles/KLayerStyleAction.vue +58 -0
- package/map/client/components/styles/KStyleEditor.vue +273 -0
- package/map/client/components/styles/KStyleEditorSection.vue +79 -0
- package/map/client/components/styles/KStyleManager.vue +183 -0
- package/map/client/components/styles/KStylePreview.vue +64 -0
- package/map/client/components/styles/KStylePreviewItem.vue +68 -0
- package/map/client/components/styles/KStylePropertiesGroup.vue +76 -0
- package/map/client/components/styles/KStyleProperty.vue +136 -0
- package/map/client/components/styles/KStyleTip.vue +118 -0
- package/map/client/components/tools/KGeolocateTool.vue +3 -2
- package/map/client/components/tools/KSearchTool.vue +34 -6
- package/map/client/components/widget/KMapillaryViewer.vue +1 -1
- package/map/client/components/widget/KStackableTimeSeries.vue +8 -5
- package/map/client/composables/activity.js +29 -43
- package/map/client/composables/catalog.js +1 -1
- package/map/client/composables/highlight.js +117 -57
- package/map/client/composables/location.js +33 -14
- package/map/client/composables/project.js +9 -10
- package/map/client/composables/selection.js +136 -23
- package/map/client/geocoder.js +104 -0
- package/map/client/geolocation.js +1 -1
- package/map/client/globe.js +3 -0
- package/map/client/hooks/hooks.offline.js +95 -0
- package/map/client/hooks/index.js +1 -0
- package/map/client/i18n/map_en.json +159 -94
- package/map/client/i18n/map_fr.json +186 -127
- package/map/client/index.js +3 -0
- package/map/client/init.js +44 -8
- package/map/client/leaflet/BoxSelection.js +2 -2
- package/map/client/leaflet/GradientPath.js +84 -4
- package/map/client/leaflet/TiledFeatureLayer.js +2 -3
- package/map/client/leaflet/WindBarb.js +323 -0
- package/map/client/leaflet/utils/index.js +1 -0
- package/map/client/leaflet/utils/utils.events.js +8 -3
- package/map/client/leaflet/utils/utils.geojson.js +221 -0
- package/map/client/leaflet/utils/utils.style.js +10 -9
- package/map/client/map.js +3 -0
- package/map/client/mixins/globe/mixin.base-globe.js +151 -19
- package/map/client/mixins/globe/mixin.geojson-layers.js +208 -86
- package/map/client/mixins/globe/mixin.popup.js +3 -2
- package/map/client/mixins/globe/mixin.style.js +3 -1
- package/map/client/mixins/globe/mixin.tooltip.js +3 -2
- package/map/client/mixins/map/index.js +1 -3
- package/map/client/mixins/map/mixin.base-map.js +267 -79
- package/map/client/mixins/map/mixin.canvas-layers.js +44 -10
- package/map/client/mixins/map/mixin.edit-layers.js +142 -57
- package/map/client/mixins/map/mixin.geojson-layers.js +129 -205
- package/map/client/mixins/map/mixin.pmtiles-layers.js +24 -11
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +1 -2
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +2 -1
- package/map/client/mixins/mixin.activity.js +61 -41
- package/map/client/mixins/mixin.context.js +19 -14
- package/map/client/mixins/mixin.feature-selection.js +0 -1
- package/map/client/mixins/mixin.feature-service.js +41 -59
- package/map/client/mixins/mixin.weacast.js +1 -1
- package/map/client/navigator.js +38 -0
- package/map/client/pixi-utils.js +1 -1
- package/map/client/planets.js +1 -1
- package/map/client/readers/reader.kml.js +57 -1
- package/map/client/utils/index.js +1 -0
- package/map/client/utils/utils.capture.js +10 -7
- package/map/client/utils/utils.catalog.js +2 -2
- package/map/client/utils/utils.features.js +193 -39
- package/map/client/utils/utils.js +8 -19
- package/map/client/utils/utils.layers.js +381 -4
- package/map/client/utils/utils.location.js +39 -74
- package/map/client/utils/utils.offline.js +89 -0
- package/map/client/utils/utils.style.js +133 -80
- package/map/client/utils/utils.time-series.js +99 -25
- package/map/common/geotiff-grid-source.js +2 -1
- package/map/common/permissions.js +2 -0
- package/map/common/schemas/capture.create.json +4 -4
- package/map/common/schemas/catalog.update.json +18 -2
- package/map/common/schemas/projects.create.json +2 -2
- package/map/common/schemas/projects.update.json +2 -2
- package/map/common/tms-utils.js +5 -5
- package/map/common/wcs-grid-source.js +2 -2
- package/map/common/wcs-utils.js +8 -8
- package/map/common/wfs-utils.js +10 -10
- package/map/common/wms-utils.js +7 -7
- package/map/common/wmts-utils.js +6 -6
- package/package.json +7 -4
- package/test/api/core/account.test.js +0 -72
- package/test/api/core/authentication.test.js +184 -0
- package/test/api/core/config/default.cjs +1 -3
- package/test/api/core/index.test.js +33 -96
- package/test/api/core/offline.test.js +55 -0
- package/test/api/core/push.test.js +3 -3
- package/test/api/core/{test-log-2024-06-06.log → test-log-2025-02-05.log} +3 -3
- package/test/api/core/{test-log-2024-11-15.log → test-log-2025-05-21.log} +1 -9
- package/test/api/map/alerts.test.js +1 -1
- package/test/api/map/config/default.cjs +2 -1
- package/test/api/map/data/vigicrues.observations.Q.json +47042 -0
- package/test/api/map/index.test.js +113 -9
- package/test/api/map/style.test.js +62 -0
- package/test/client/core/layout.js +2 -2
- package/test/client/core/runner.js +1 -1
- package/test/client/core/utils.js +52 -0
- package/test/client/map/catalog.js +1 -0
- package/core/api/hooks/hooks.groups.js +0 -48
- package/core/api/hooks/hooks.organisations.js +0 -152
- package/core/api/models/organisations.model.mongodb.js +0 -3
- package/core/api/models/tags.model.mongodb.js +0 -10
- package/core/api/services/groups/groups.hooks.js +0 -31
- package/core/api/services/organisations/organisations.hooks.js +0 -31
- package/core/api/services/organisations/organisations.service.js +0 -86
- package/core/api/services/tags/tags.hooks.js +0 -31
- package/core/api/utils.js +0 -11
- package/core/client/components/KChipsPane.vue +0 -103
- package/core/client/components/document/index.js +0 -9
- package/core/client/components/team/KAddMember.vue +0 -378
- package/core/client/components/team/KAddTag.vue +0 -121
- package/core/client/components/team/KChangeRole.vue +0 -118
- package/core/client/components/team/KGroupCard.vue +0 -110
- package/core/client/components/team/KGroupsActivity.vue +0 -78
- package/core/client/components/team/KJoinGroup.vue +0 -132
- package/core/client/components/team/KMemberCard.vue +0 -328
- package/core/client/components/team/KMemberFilter.vue +0 -49
- package/core/client/components/team/KMembersActivity.vue +0 -136
- package/core/client/components/team/KOrganisationsActivity.vue +0 -51
- package/core/client/components/team/KTagCard.vue +0 -72
- package/core/client/components/team/KTagsActivity.vue +0 -73
- package/core/client/components/team/index.js +0 -9
- package/core/client/mixins/mixin.base-context.js +0 -54
- package/core/client/utils/utils.platform.js +0 -12
- package/core/common/schemas/groups.create.json +0 -28
- package/core/common/schemas/groups.update.json +0 -28
- package/core/common/schemas/organisations.create.json +0 -28
- package/core/common/schemas/organisations.update.json +0 -49
- package/core/common/schemas/tags.create.json +0 -35
- package/core/common/schemas/tags.update.json +0 -35
- package/coverage/tmp/coverage-280506-1731704745613-0.json +0 -1
- package/coverage/tmp/coverage-280518-1731704745599-0.json +0 -1
- package/coverage/tmp/coverage-280529-1731704745588-0.json +0 -1
- package/coverage/tmp/coverage-280541-1731704745574-0.json +0 -1
- package/coverage/tmp/coverage-280548-1731704745545-0.json +0 -1
- package/map/client/components/KFeaturesFilter.vue +0 -259
- package/map/client/components/KLayerStyleEditor.vue +0 -118
- package/map/client/components/KLayerStyleForm.vue +0 -740
- package/map/client/components/KLevelSlider.vue +0 -100
- package/map/client/components/KNorth.vue +0 -31
- package/map/client/components/KPositionIndicator.vue +0 -83
- package/map/client/components/catalog/KCreateProject.vue +0 -100
- package/map/client/mixins/map/mixin.forecast-layers.js +0 -81
- package/map/client/mixins/map/mixin.georaster-layers.js +0 -107
- package/test/api/core/team.test.js +0 -670
- package/test/api/core/test-log-2023-12-19.log +0 -7
- package/test/api/core/test-log-2024-01-04.log +0 -14
- package/test/api/core/test-log-2024-05-14.log +0 -6
- package/test/api/core/test-log-2024-06-26.log +0 -25
- package/test/api/core/test-log-2024-06-28.log +0 -2
- package/test/api/core/test-log-2024-07-09.log +0 -0
- package/test/api/core/test-log-2024-08-13.log +0 -69
- package/test/api/core/test-log-2024-10-28.log +0 -53
- package/test/api/core/test-log-2024-11-05.log +0 -30
- package/test/api/map/test-log-2023-11-24.log +0 -121
- package/test/api/map/test-log-2023-12-12.log +0 -29
- package/test/api/map/test-log-2023-12-13.log +0 -5
- package/test/api/map/test-log-2024-01-04.log +0 -2
- package/test/api/map/test-log-2024-01-11.log +0 -1
- package/test/api/map/test-log-2024-01-25.log +0 -19
- package/test/api/map/test-log-2024-06-06.log +0 -39
- package/test/api/map/test-log-2024-08-13.log +0 -13
- package/test/api/map/test-log-2024-08-20.log +0 -55
- package/test/api/map/test-log-2024-09-09.log +0 -92
- package/test/api/map/test-log-2024-10-28.log +0 -11
- /package/extras/{logos → images}/kalisio.png +0 -0
- /package/extras/{icons → images}/target.svg +0 -0
- /package/test/api/map/data/{vigicrues.observations.json → vigicrues.observations.H.json} +0 -0
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/323</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/
|
|
49
|
+
<span class='fraction'>0/323</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -307,7 +307,165 @@
|
|
|
307
307
|
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
308
|
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
309
|
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
390
|
+
<span class="cline-any cline-no"> </span>
|
|
391
|
+
<span class="cline-any cline-no"> </span>
|
|
392
|
+
<span class="cline-any cline-no"> </span>
|
|
393
|
+
<span class="cline-any cline-no"> </span>
|
|
394
|
+
<span class="cline-any cline-no"> </span>
|
|
395
|
+
<span class="cline-any cline-no"> </span>
|
|
396
|
+
<span class="cline-any cline-no"> </span>
|
|
397
|
+
<span class="cline-any cline-no"> </span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
399
|
+
<span class="cline-any cline-no"> </span>
|
|
400
|
+
<span class="cline-any cline-no"> </span>
|
|
401
|
+
<span class="cline-any cline-no"> </span>
|
|
402
|
+
<span class="cline-any cline-no"> </span>
|
|
403
|
+
<span class="cline-any cline-no"> </span>
|
|
404
|
+
<span class="cline-any cline-no"> </span>
|
|
405
|
+
<span class="cline-any cline-no"> </span>
|
|
406
|
+
<span class="cline-any cline-no"> </span>
|
|
407
|
+
<span class="cline-any cline-no"> </span>
|
|
408
|
+
<span class="cline-any cline-no"> </span>
|
|
409
|
+
<span class="cline-any cline-no"> </span>
|
|
410
|
+
<span class="cline-any cline-no"> </span>
|
|
411
|
+
<span class="cline-any cline-no"> </span>
|
|
412
|
+
<span class="cline-any cline-no"> </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>
|
|
418
|
+
<span class="cline-any cline-no"> </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>
|
|
424
|
+
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
428
|
+
<span class="cline-any cline-no"> </span>
|
|
429
|
+
<span class="cline-any cline-no"> </span>
|
|
430
|
+
<span class="cline-any cline-no"> </span>
|
|
431
|
+
<span class="cline-any cline-no"> </span>
|
|
432
|
+
<span class="cline-any cline-no"> </span>
|
|
433
|
+
<span class="cline-any cline-no"> </span>
|
|
434
|
+
<span class="cline-any cline-no"> </span>
|
|
435
|
+
<span class="cline-any cline-no"> </span>
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
439
|
+
<span class="cline-any cline-no"> </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>
|
|
443
|
+
<span class="cline-any cline-no"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
445
|
+
<span class="cline-any cline-no"> </span>
|
|
446
|
+
<span class="cline-any cline-no"> </span>
|
|
447
|
+
<span class="cline-any cline-no"> </span>
|
|
448
|
+
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-no"> </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>
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-no"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-no"> </span>
|
|
459
|
+
<span class="cline-any cline-no"> </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>
|
|
311
469
|
<span class="cline-any cline-no"> </span>
|
|
312
470
|
<span class="cline-any cline-no"> </span>
|
|
313
471
|
<span class="cline-any cline-no"> </span>
|
|
@@ -570,7 +728,7 @@
|
|
|
570
728
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
571
729
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
572
730
|
<span class="cstat-no" title="statement not covered" > debug('Creating features service with options', options)</span>
|
|
573
|
-
<span class="cstat-no" title="statement not covered" >
|
|
731
|
+
<span class="cstat-no" title="statement not covered" > const service = app.createService(options.collection, Object.assign({</span>
|
|
574
732
|
<span class="cstat-no" title="statement not covered" > modelName: 'features',</span>
|
|
575
733
|
<span class="cstat-no" title="statement not covered" > servicesPath,</span>
|
|
576
734
|
<span class="cstat-no" title="statement not covered" > modelsPath,</span>
|
|
@@ -578,28 +736,46 @@
|
|
|
578
736
|
<span class="cstat-no" title="statement not covered" > // FIXME: no real-time events for now since we create big batches,</span>
|
|
579
737
|
<span class="cstat-no" title="statement not covered" > // does not seem to be sufficient also require a hook (see https://github.com/feathersjs/feathers/issues/922)</span>
|
|
580
738
|
<span class="cstat-no" title="statement not covered" > events: ['features'],</span>
|
|
581
|
-
<span class="cstat-no" title="statement not covered" > methods: ['find', 'get', 'create', 'update', 'patch', 'remove', 'heatmap']</span>
|
|
739
|
+
<span class="cstat-no" title="statement not covered" > methods: ['find', 'get', 'create', 'update', 'patch', 'remove', 'heatmap', 'formatGeoJSON']</span>
|
|
582
740
|
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
741
|
+
<span class="cstat-no" title="statement not covered" > // As a features service can be created dynamically register default permissions for it</span>
|
|
742
|
+
<span class="cstat-no" title="statement not covered" > permissions.defineAbilities.registerHook((subject, can, cannot) => {</span>
|
|
743
|
+
<span class="cstat-no" title="statement not covered" > can('service', options.collection)</span>
|
|
744
|
+
<span class="cstat-no" title="statement not covered" > can('read', options.collection)</span>
|
|
745
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
746
|
+
<span class="cstat-no" title="statement not covered" > // We then need to update abilities cache</span>
|
|
747
|
+
<span class="cstat-no" title="statement not covered" > const authorisationService = app.getService('authorisations')</span>
|
|
748
|
+
<span class="cstat-no" title="statement not covered" > if (authorisationService) authorisationService.clearAbilities()</span>
|
|
749
|
+
<span class="cstat-no" title="statement not covered" > return service</span>
|
|
583
750
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
584
751
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
585
752
|
<span class="cstat-no" title="statement not covered" >export function removeFeaturesService (options = {}) {</span>
|
|
586
753
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
754
|
+
<span class="cstat-no" title="statement not covered" > debug('Removing features service with options', options)</span>
|
|
587
755
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService(options.collection, options.context))</span>
|
|
588
756
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
589
757
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
590
758
|
<span class="cstat-no" title="statement not covered" >export function createCatalogService (options = {}) {</span>
|
|
591
759
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
592
760
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
761
|
+
<span class="cstat-no" title="statement not covered" > // Read default categories/sublegends config, which can be overriden by options</span>
|
|
762
|
+
<span class="cstat-no" title="statement not covered" > const catalogConfig = app.get('catalog') || {}</span>
|
|
763
|
+
<span class="cstat-no" title="statement not covered" > const categories = catalogConfig.categories</span>
|
|
764
|
+
<span class="cstat-no" title="statement not covered" > const sublegends = catalogConfig.sublegends</span>
|
|
765
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
593
766
|
<span class="cstat-no" title="statement not covered" > debug('Creating catalog service with options', options)</span>
|
|
594
767
|
<span class="cstat-no" title="statement not covered" > return app.createService('catalog', Object.assign({</span>
|
|
595
768
|
<span class="cstat-no" title="statement not covered" > servicesPath,</span>
|
|
596
769
|
<span class="cstat-no" title="statement not covered" > modelsPath,</span>
|
|
597
|
-
<span class="cstat-no" title="statement not covered" > paginate: { default: 1000, max: 1000 }
|
|
770
|
+
<span class="cstat-no" title="statement not covered" > paginate: { default: 1000, max: 1000 },</span>
|
|
771
|
+
<span class="cstat-no" title="statement not covered" > categories,</span>
|
|
772
|
+
<span class="cstat-no" title="statement not covered" > sublegends</span>
|
|
598
773
|
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
599
774
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
600
775
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
601
776
|
<span class="cstat-no" title="statement not covered" >export function removeCatalogService (options = {}) {</span>
|
|
602
777
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
778
|
+
<span class="cstat-no" title="statement not covered" > debug('Removing catalog service with options', options)</span>
|
|
603
779
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('catalog', options.context))</span>
|
|
604
780
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
605
781
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
@@ -616,6 +792,7 @@
|
|
|
616
792
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
617
793
|
<span class="cstat-no" title="statement not covered" >export function removeProjectsService (options = {}) {</span>
|
|
618
794
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
795
|
+
<span class="cstat-no" title="statement not covered" > debug('Removing projects service with options', options)</span>
|
|
619
796
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('projects', options.context))</span>
|
|
620
797
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
621
798
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
@@ -633,81 +810,107 @@
|
|
|
633
810
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
634
811
|
<span class="cstat-no" title="statement not covered" >export function removeAlertsService (options = {}) {</span>
|
|
635
812
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
813
|
+
<span class="cstat-no" title="statement not covered" > debug('Removing alerts service with options', options)</span>
|
|
636
814
|
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('alerts', options.context))</span>
|
|
637
815
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
638
816
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
639
817
|
<span class="cstat-no" title="statement not covered" >// Helper to register service and permissions for a layer</span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" >export async function createFeaturesServiceForLayer (
|
|
818
|
+
<span class="cstat-no" title="statement not covered" >export async function createFeaturesServiceForLayer (layer, context) {</span>
|
|
641
819
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
642
|
-
<span class="cstat-no" title="statement not covered" >
|
|
643
|
-
<span class="cstat-no" title="statement not covered" > //
|
|
644
|
-
<span class="cstat-no" title="statement not covered" >
|
|
645
|
-
<span class="cstat-no" title="statement not covered" >
|
|
646
|
-
<span class="cstat-no" title="statement not covered" >
|
|
647
|
-
<span class="cstat-no" title="statement not covered" >
|
|
648
|
-
<span class="cstat-no" title="statement not covered" >
|
|
820
|
+
<span class="cstat-no" title="statement not covered" > // Check if service(s) are associated to this layer</span>
|
|
821
|
+
<span class="cstat-no" title="statement not covered" > // Avoid create it twice as we can share services between different layers</span>
|
|
822
|
+
<span class="cstat-no" title="statement not covered" > let probeService = (layer.probeService ? app.getService(layer.probeService, context) : null)</span>
|
|
823
|
+
<span class="cstat-no" title="statement not covered" > if (layer.probeService && !probeService) {</span>
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > probeService = await createFeaturesService.call(app, Object.assign({</span>
|
|
825
|
+
<span class="cstat-no" title="statement not covered" > collection: layer.probeService,</span>
|
|
826
|
+
<span class="cstat-no" title="statement not covered" > context,</span>
|
|
827
|
+
<span class="cstat-no" title="statement not covered" > db: app.db.db(layer.dbName)</span>
|
|
828
|
+
<span class="cstat-no" title="statement not covered" > }, _.pick(layer, ['featureLabel', 'simplifyResult', 'skipEvents', 'simplifyEvents'])))</span>
|
|
829
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
830
|
+
<span class="cstat-no" title="statement not covered" > let service = (layer.service ? app.getService(layer.service, context) : null)</span>
|
|
831
|
+
<span class="cstat-no" title="statement not covered" > if (layer.service && !service) {</span>
|
|
832
|
+
<span class="cstat-no" title="statement not covered" > service = await createFeaturesService.call(app, Object.assign({</span>
|
|
833
|
+
<span class="cstat-no" title="statement not covered" > collection: layer.service,</span>
|
|
834
|
+
<span class="cstat-no" title="statement not covered" > context,</span>
|
|
835
|
+
<span class="cstat-no" title="statement not covered" > db: app.db.db(layer.dbName)</span>
|
|
836
|
+
<span class="cstat-no" title="statement not covered" > }, _.pick(layer, ['ttl', 'featureId', 'featureIdType', 'featureLabel', 'variables', 'simplifyResult', 'skipEvents', 'simplifyEvents'])))</span>
|
|
837
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
838
|
+
<span class="cstat-no" title="statement not covered" > return service || probeService</span>
|
|
839
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
840
|
+
<span class="cstat-no" title="statement not covered" >// Helper to unregister service for a layer</span>
|
|
841
|
+
<span class="cstat-no" title="statement not covered" >export async function removeFeaturesServiceForLayer (layer, context) {</span>
|
|
842
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
843
|
+
<span class="cstat-no" title="statement not covered" > // Check if service(s) are associated to this layer and remove it</span>
|
|
844
|
+
<span class="cstat-no" title="statement not covered" > let probeService = (layer.probeService ? app.getService(layer.probeService, context) : null)</span>
|
|
845
|
+
<span class="cstat-no" title="statement not covered" > if (layer.probeService && probeService) {</span>
|
|
846
|
+
<span class="cstat-no" title="statement not covered" > probeService = await removeFeaturesService.call(app, { collection: layer.probeService, context })</span>
|
|
847
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > let service = (layer.service ? app.getService(layer.service, context) : null)</span>
|
|
849
|
+
<span class="cstat-no" title="statement not covered" > if (layer.service && service) {</span>
|
|
850
|
+
<span class="cstat-no" title="statement not covered" > service = await removeFeaturesService.call(app, { collection: layer.service, context })</span>
|
|
851
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
852
|
+
<span class="cstat-no" title="statement not covered" > return service || probeService</span>
|
|
649
853
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
650
854
|
<span class="cstat-no" title="statement not covered" >// Helper to create features from source for a layer</span>
|
|
651
|
-
<span class="cstat-no" title="statement not covered" >export async function createFeaturesForLayer (features, layer, options) {</span>
|
|
855
|
+
<span class="cstat-no" title="statement not covered" >export async function createFeaturesForLayer (features, layer, options = {}) {</span>
|
|
652
856
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
653
|
-
<span class="cstat-no" title="statement not covered" > const featuresService = app.getService(layer.service)</span>
|
|
857
|
+
<span class="cstat-no" title="statement not covered" > const featuresService = app.getService(layer.service, options.context)</span>
|
|
654
858
|
<span class="cstat-no" title="statement not covered" > if (options && options.filter) features = await options.filter(features, layer, app)</span>
|
|
859
|
+
<span class="cstat-no" title="statement not covered" > // User-defined layers requires layer ID</span>
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > if (layer.service === 'features') {</span>
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > features.forEach(feature => {</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > feature.layer = layer._id</span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
655
865
|
<span class="cstat-no" title="statement not covered" > if (!features.length) return</span>
|
|
656
866
|
<span class="cstat-no" title="statement not covered" > // The unordered option ensure a faster processing when inserting multiple items</span>
|
|
657
867
|
<span class="cstat-no" title="statement not covered" > // and that after an error remaining write operations in the queue will continue anyway</span>
|
|
658
868
|
<span class="cstat-no" title="statement not covered" > await featuresService.create(features, { mongodb: { ordered: false } })</span>
|
|
659
869
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
660
870
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
661
|
-
<span class="cstat-no" title="statement not covered"
|
|
871
|
+
<span class="cstat-no" title="statement not covered" >// Read default layers configured and create, if not found in DB, or update it accordingly</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" >// Will also clean and feed default data (ie features) if provided as input file</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" >export async function createDefaultCatalogLayers (options = {}) {</span>
|
|
662
874
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
663
|
-
<span class="cstat-no" title="statement not covered" >
|
|
664
|
-
<span class="cstat-no" title="statement not covered" > let context</span>
|
|
665
|
-
<span class="cstat-no" title="statement not covered" > if (typeof options === 'object') {</span>
|
|
666
|
-
<span class="cstat-no" title="statement not covered" > if (options.context) context = options.context</span>
|
|
667
|
-
<span class="cstat-no" title="statement not covered" > else if (options._id) context = options</span>
|
|
668
|
-
<span class="cstat-no" title="statement not covered" > } else if (typeof options === 'string') context = options</span>
|
|
669
|
-
<span class="cstat-no" title="statement not covered" > const catalogService = app.getService('catalog', context)</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > const catalogService = app.getService('catalog', options.context)</span>
|
|
670
876
|
<span class="cstat-no" title="statement not covered" > const catalog = app.get('catalog')</span>
|
|
671
877
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
672
878
|
<span class="cstat-no" title="statement not covered" > const defaultLayers = catalog ? catalog.layers || [] : []</span>
|
|
673
879
|
<span class="cstat-no" title="statement not covered" > const layers = await catalogService.find({ query: {}, paginate: false })</span>
|
|
674
880
|
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < defaultLayers.length; i++) {</span>
|
|
675
881
|
<span class="cstat-no" title="statement not covered" > const defaultLayer = defaultLayers[i]</span>
|
|
676
|
-
<span class="cstat-no" title="statement not covered" >
|
|
882
|
+
<span class="cstat-no" title="statement not covered" > let createdLayer = _.find(layers, { name: defaultLayer.name })</span>
|
|
883
|
+
<span class="cstat-no" title="statement not covered" > const isLayerAlreadyCreated = !_.isNil(createdLayer)</span>
|
|
884
|
+
<span class="cstat-no" title="statement not covered" > let featuresService</span>
|
|
677
885
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
886
|
+
<span class="cstat-no" title="statement not covered" > // Used to filter properties only used to initialize a layer and related data</span>
|
|
887
|
+
<span class="cstat-no" title="statement not covered" > const reservedProperties = ['filter', 'url', 'fileName', 'forceDataUpdate']</span>
|
|
678
888
|
<span class="cstat-no" title="statement not covered" > // Create or update the layer removing any option only used to manage layer setup</span>
|
|
679
|
-
<span class="cstat-no" title="statement not covered" > if (!
|
|
889
|
+
<span class="cstat-no" title="statement not covered" > if (!isLayerAlreadyCreated) {</span>
|
|
680
890
|
<span class="cstat-no" title="statement not covered" > app.logger.info('Adding default layer (name = ' + defaultLayer.name + ')')</span>
|
|
681
|
-
<span class="cstat-no" title="statement not covered" > await catalogService.create(_.omit(defaultLayer,
|
|
891
|
+
<span class="cstat-no" title="statement not covered" > createdLayer = await catalogService.create(_.omit(defaultLayer, reservedProperties))</span>
|
|
682
892
|
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
683
893
|
<span class="cstat-no" title="statement not covered" > app.logger.info('Updating default layer (name = ' + defaultLayer.name + ')')</span>
|
|
684
|
-
<span class="cstat-no" title="statement not covered" > await catalogService.update(createdLayer._id, _.omit(defaultLayer,
|
|
894
|
+
<span class="cstat-no" title="statement not covered" > createdLayer = await catalogService.update(createdLayer._id, _.omit(defaultLayer, reservedProperties))</span>
|
|
895
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
896
|
+
<span class="cstat-no" title="statement not covered" > // Features creation might require the layer ID</span>
|
|
897
|
+
<span class="cstat-no" title="statement not covered" > defaultLayer._id = createdLayer._id</span>
|
|
898
|
+
<span class="cstat-no" title="statement not covered" > // Check if service(s) are associated to this layer and create the related service(s) if required</span>
|
|
899
|
+
<span class="cstat-no" title="statement not covered" > if (defaultLayer.service) {</span>
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > featuresService = app.getService(defaultLayer.service)</span>
|
|
901
|
+
<span class="cstat-no" title="statement not covered" > // Avoid create it twice as we can share services between different layers</span>
|
|
902
|
+
<span class="cstat-no" title="statement not covered" > featuresService = await createFeaturesServiceForLayer.call(app, defaultLayer, options.context)</span>
|
|
685
903
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
686
904
|
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
687
905
|
<span class="cstat-no" title="statement not covered" > console.error(error)</span>
|
|
688
906
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > // Check if service(s) are associated to this layer</span>
|
|
690
|
-
<span class="cstat-no" title="statement not covered" > let featuresService</span>
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > if (defaultLayer.service) {</span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > featuresService = app.getService(defaultLayer.service)</span>
|
|
693
|
-
<span class="cstat-no" title="statement not covered" > // Avoid create it twice as we can share services between different layers</span>
|
|
694
|
-
<span class="cstat-no" title="statement not covered" > if (featuresService) continue</span>
|
|
695
|
-
<span class="cstat-no" title="statement not covered" > featuresService = await createFeaturesServiceForLayer.call(app, Object.assign({</span>
|
|
696
|
-
<span class="cstat-no" title="statement not covered" > collection: defaultLayer.service,</span>
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > db: app.db.db(defaultLayer.dbName)</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > }, _.pick(defaultLayer, ['ttl', 'featureId', 'featureIdType', 'featureLabel', 'variables', 'simplifyResult', 'skipEvents', 'simplifyEvents'])))</span>
|
|
699
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > if (defaultLayer.probeService) {</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > await createFeaturesServiceForLayer.call(app, Object.assign({</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" > collection: defaultLayer.probeService,</span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > db: app.db.db(defaultLayer.dbName)</span>
|
|
704
|
-
<span class="cstat-no" title="statement not covered" > }, _.pick(defaultLayer, ['featureLabel', 'simplifyResult', 'skipEvents', 'simplifyEvents'])))</span>
|
|
705
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
706
907
|
<span class="cstat-no" title="statement not covered" > // And if we need to initialize some data as well</span>
|
|
707
|
-
<span class="cstat-no" title="statement not covered" > if (!
|
|
908
|
+
<span class="cstat-no" title="statement not covered" > if ((!isLayerAlreadyCreated || defaultLayer.forceDataUpdate) && featuresService && (defaultLayer.url || defaultLayer.fileName)) {</span>
|
|
909
|
+
<span class="cstat-no" title="statement not covered" > app.logger.info('Updating data for default layer (name = ' + defaultLayer.name + ')')</span>
|
|
708
910
|
<span class="cstat-no" title="statement not covered" > // Cleanup</span>
|
|
709
911
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
710
|
-
<span class="cstat-no" title="statement not covered" >
|
|
912
|
+
<span class="cstat-no" title="statement not covered" > // Keep track of user-created content for editable layer, ie features having a layer ID</span>
|
|
913
|
+
<span class="cstat-no" title="statement not covered" > await featuresService.remove(null, { query: { layer: { $exists: false } } })</span>
|
|
711
914
|
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
712
915
|
<span class="cstat-no" title="statement not covered" > console.error(error)</span>
|
|
713
916
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -725,9 +928,15 @@
|
|
|
725
928
|
<span class="cstat-no" title="statement not covered" > .pipe(zlib.createGunzip())</span>
|
|
726
929
|
<span class="cstat-no" title="statement not covered" > .pipe(fs.createWriteStream(extractedFileName))</span>
|
|
727
930
|
<span class="cstat-no" title="statement not covered" > .on('close', async () => {</span>
|
|
728
|
-
<span class="cstat-no" title="statement not covered" >
|
|
931
|
+
<span class="cstat-no" title="statement not covered" > let geojson = fs.readJsonSync(extractedFileName)</span>
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > // We allow GeoJson collection or features array</span>
|
|
933
|
+
<span class="cstat-no" title="statement not covered" > geojson = Array.isArray(geojson) ? geojson : geojson.features</span>
|
|
934
|
+
<span class="cstat-no" title="statement not covered" > // We also allow for data exported from MongoDB, in this case remove any Mongo specific ID</span>
|
|
935
|
+
<span class="cstat-no" title="statement not covered" > geojson.forEach(feature => {</span>
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > delete feature._id</span>
|
|
937
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
729
938
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
730
|
-
<span class="cstat-no" title="statement not covered" > await createFeaturesForLayer.call(app, geojson
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > await createFeaturesForLayer.call(app, geojson, defaultLayer, options)</span>
|
|
731
940
|
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
732
941
|
<span class="cstat-no" title="statement not covered" > console.error(error)</span>
|
|
733
942
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -745,6 +954,29 @@
|
|
|
745
954
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
746
955
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
747
956
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
957
|
+
<span class="cstat-no" title="statement not covered" >// Create the required features services for layers found in catalog</span>
|
|
958
|
+
<span class="cstat-no" title="statement not covered" >export async function createCatalogFeaturesServices (options = {}) {</span>
|
|
959
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
960
|
+
<span class="cstat-no" title="statement not covered" > const catalogService = app.getService('catalog', options.context)</span>
|
|
961
|
+
<span class="cstat-no" title="statement not covered" > const layers = await catalogService.find({ query: { service: { $exists: true } }, paginate: false, $select: ['service'] })</span>
|
|
962
|
+
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < layers.length; i++) {</span>
|
|
963
|
+
<span class="cstat-no" title="statement not covered" > await createFeaturesServiceForLayer.call(app, layers[i], options.context)</span>
|
|
964
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
965
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
966
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
967
|
+
<span class="cstat-no" title="statement not covered" >export function createStylesService (options = {}) {</span>
|
|
968
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
969
|
+
<span class="cstat-no" title="statement not covered" > return app.createService('styles', Object.assign({</span>
|
|
970
|
+
<span class="cstat-no" title="statement not covered" > servicesPath,</span>
|
|
971
|
+
<span class="cstat-no" title="statement not covered" > modelsPath</span>
|
|
972
|
+
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
973
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
974
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
975
|
+
<span class="cstat-no" title="statement not covered" >export function removeStylesService (options = {}) {</span>
|
|
976
|
+
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
977
|
+
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('styles', options.context))</span>
|
|
978
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
979
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
748
980
|
<span class="cstat-no" title="statement not covered" >export default async function () {</span>
|
|
749
981
|
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
750
982
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
@@ -768,6 +1000,11 @@
|
|
|
768
1000
|
<span class="cstat-no" title="statement not covered" > if (alertsConfig) {</span>
|
|
769
1001
|
<span class="cstat-no" title="statement not covered" > await createAlertsService.call(app)</span>
|
|
770
1002
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1003
|
+
<span class="cstat-no" title="statement not covered" > const stylesConfig = app.get('styles')</span>
|
|
1004
|
+
<span class="cstat-no" title="statement not covered" > if (stylesConfig) {</span>
|
|
1005
|
+
<span class="cstat-no" title="statement not covered" > await createStylesService.call(app)</span>
|
|
1006
|
+
<span class="cstat-no" title="statement not covered" > debug('\'styles\' service created')</span>
|
|
1007
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
771
1008
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
772
1009
|
<span class="cstat-no" title="statement not covered" > /*</span>
|
|
773
1010
|
<span class="cstat-no" title="statement not covered" > app.createService('daptiles', Object.assign({</span>
|
|
@@ -802,7 +1039,7 @@
|
|
|
802
1039
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
803
1040
|
Code coverage generated by
|
|
804
1041
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
805
|
-
at
|
|
1042
|
+
at 2025-05-21T12:01:19.803Z
|
|
806
1043
|
</div>
|
|
807
1044
|
<script src="../../../prettify.js"></script>
|
|
808
1045
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at
|
|
104
|
+
at 2025-05-21T12:01:19.803Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -424,7 +424,7 @@
|
|
|
424
424
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
425
425
|
Code coverage generated by
|
|
426
426
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
427
|
-
at
|
|
427
|
+
at 2025-05-21T12:01:19.803Z
|
|
428
428
|
</div>
|
|
429
429
|
<script src="../../../../prettify.js"></script>
|
|
430
430
|
<script>
|