@kalisio/kdk 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -1
- package/.github/workflows/main.yaml +3 -3
- package/README.md +1 -0
- package/core/api/db.js +6 -1
- package/core/api/hooks/hooks.model.js +1 -1
- package/core/api/hooks/hooks.schemas.js +0 -2
- package/core/api/models/messages.model.mongodb.js +13 -0
- package/core/api/services/authorisations/authorisations.service.js +13 -4
- package/core/api/services/index.js +19 -0
- package/core/api/services/messages/messages.hooks.js +38 -0
- package/core/client/api.js +7 -32
- package/core/client/capabilities.js +2 -2
- package/core/client/components/KActivity.vue +29 -6
- package/core/client/components/KContent.vue +2 -2
- package/core/client/components/KDialog.vue +4 -7
- package/core/client/components/KStamp.vue +3 -9
- package/core/client/components/KStore.vue +2 -4
- package/core/client/components/KTab.vue +95 -0
- package/core/client/components/action/KAction.vue +15 -2
- package/core/client/components/action/KBugReportAction.vue +4 -2
- package/core/client/components/action/KToggleFullscreenAction.vue +25 -0
- package/core/client/components/app/KSettings.vue +17 -13
- package/core/client/components/chart/KDataTable.vue +6 -9
- package/core/client/components/chart/KTimeSeriesChart.vue +74 -56
- package/core/client/components/collection/KBoard.vue +22 -33
- package/core/client/components/collection/KCard.vue +71 -56
- package/core/client/components/collection/KCardSection.vue +20 -10
- package/core/client/components/collection/KDescriptionCardSection.vue +47 -0
- package/core/client/components/collection/KGrid.vue +234 -54
- package/core/client/components/collection/KScrollDown.vue +97 -0
- package/core/client/components/collection/KScrollToTop.vue +93 -0
- package/core/client/components/collection/KTable.vue +87 -33
- package/core/client/components/collection/KTimeLine.vue +406 -0
- package/core/client/components/collection/index.js +1 -5
- package/core/client/components/document/KDocument.vue +20 -55
- package/core/client/components/document/KHtml.vue +17 -7
- package/core/client/components/document/KImage.vue +78 -0
- package/core/client/components/document/KMarkdown.vue +12 -16
- package/core/client/components/document/KPdf.vue +69 -0
- package/core/client/components/form/KFileField.vue +2 -2
- package/core/client/components/form/KSelectField.vue +2 -1
- package/core/client/components/form/KUnitField.vue +3 -1
- package/core/client/components/layout/KFab.vue +9 -10
- package/core/client/components/layout/KLayout.vue +104 -6
- package/core/client/components/layout/KOpener.vue +14 -19
- package/core/client/components/layout/KPage.vue +195 -105
- package/core/client/components/layout/KWindow.vue +62 -45
- package/core/client/components/layout/index.js +0 -2
- package/core/client/components/media/KRibbon.vue +95 -0
- package/core/client/components/menu/KMenu.vue +4 -4
- package/core/client/components/team/KGroupsActivity.vue +25 -27
- package/core/client/components/team/KMembersActivity.vue +21 -23
- package/core/client/components/team/KOrganisationsActivity.vue +20 -22
- package/core/client/components/team/KTagsActivity.vue +21 -23
- package/core/client/components/time/KAbsoluteTimeRange.vue +70 -170
- package/core/client/composables/activity.js +14 -12
- package/core/client/composables/collection.js +3 -1
- package/core/client/composables/counter.js +51 -0
- package/core/client/composables/index.js +3 -0
- package/core/client/composables/layout.js +13 -2
- package/core/client/composables/messages.js +15 -0
- package/core/client/composables/pwa.js +1 -1
- package/core/client/composables/schema.js +6 -6
- package/core/client/composables/screen.js +23 -0
- package/core/client/directives/index.js +1 -0
- package/core/client/directives/v-hover.js +23 -0
- package/core/client/document.js +61 -0
- package/core/client/exporter.js +1 -1
- package/core/client/filter.js +0 -1
- package/core/client/guards.js +1 -1
- package/core/client/i18n/core_en.json +14 -8
- package/core/client/i18n/core_fr.json +15 -9
- package/core/client/index.js +9 -3
- package/core/client/layout.js +129 -29
- package/core/client/local-storage.js +1 -1
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-activity.js +23 -13
- package/core/client/mixins/mixin.base-item.js +6 -3
- package/core/client/services/index.js +4 -1
- package/core/client/services/local-settings.service.js +4 -0
- package/core/client/storage.js +1 -1
- package/core/client/store.js +1 -1
- package/core/client/template-context.js +17 -0
- package/core/client/units.js +49 -27
- package/core/client/utils/index.js +3 -2
- package/core/client/utils/utils.actions.js +4 -0
- package/core/client/utils/utils.colors.js +155 -2
- package/core/client/utils/utils.items.js +26 -0
- package/core/client/utils/utils.math.js +3 -0
- package/core/client/utils/utils.platform.js +3 -1
- package/core/client/utils/utils.screen.js +82 -0
- package/core/client/utils/utils.time.js +0 -1
- package/core/common/schemas/settings.update.json +12 -0
- package/coverage/core/api/application.js.html +1 -1
- package/coverage/core/api/authentication.js.html +1 -1
- package/coverage/core/api/db.js.html +51 -36
- package/coverage/core/api/hooks/hooks.authentication.js.html +1 -1
- package/coverage/core/api/hooks/hooks.authorisations.js.html +1 -1
- package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/core/api/hooks/hooks.logger.js.html +1 -1
- package/coverage/core/api/hooks/hooks.model.js.html +2 -2
- package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/core/api/hooks/hooks.push.js.html +1 -1
- package/coverage/core/api/hooks/hooks.query.js.html +1 -1
- package/coverage/core/api/hooks/hooks.schemas.js.html +6 -12
- 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 +2 -2
- package/coverage/core/api/hooks/index.html +10 -10
- package/coverage/core/api/hooks/index.js.html +1 -1
- package/coverage/core/api/index.html +14 -14
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +1 -1
- package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +25 -10
- package/coverage/core/api/models/messages.model.mongodb.js.html +121 -0
- 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 +1 -1
- 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 +1 -1
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +43 -16
- package/coverage/core/api/services/authorisations/index.html +19 -19
- 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/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 +19 -19
- package/coverage/core/api/services/index.js.html +67 -10
- 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 +116 -0
- package/coverage/core/api/services/messages/messages.hooks.js.html +199 -0
- 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/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 +1 -1
- package/coverage/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/core/api/services/storage/storage.service.js.html +1 -1
- 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 +1 -1
- package/coverage/core/api/utils.js.html +1 -1
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +1 -1
- package/coverage/core/common/index.js.html +1 -1
- package/coverage/core/common/permissions.js.html +1 -1
- package/coverage/core/common/schema.js.html +1 -1
- package/coverage/core/common/utils.js.html +1 -1
- package/coverage/index.html +69 -54
- package/coverage/lcov-report/core/api/application.js.html +1 -1
- package/coverage/lcov-report/core/api/authentication.js.html +1 -1
- package/coverage/lcov-report/core/api/db.js.html +51 -36
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +2 -2
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +6 -12
- 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 +2 -2
- package/coverage/lcov-report/core/api/hooks/index.html +10 -10
- package/coverage/lcov-report/core/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/core/api/index.html +14 -14
- package/coverage/lcov-report/core/api/index.js.html +1 -1
- package/coverage/lcov-report/core/api/marshall.js.html +1 -1
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +25 -10
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +121 -0
- 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 +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 +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 +1 -1
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +43 -16
- package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
- 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/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 +19 -19
- package/coverage/lcov-report/core/api/services/index.js.html +67 -10
- 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 +116 -0
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +199 -0
- 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/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/coverage/lcov-report/core/common/index.js.html +1 -1
- package/coverage/lcov-report/core/common/permissions.js.html +1 -1
- package/coverage/lcov-report/core/common/schema.js.html +1 -1
- package/coverage/lcov-report/core/common/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +69 -54
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/index.html +1 -1
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +1 -1
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
- 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 +9 -15
- 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 +2 -2
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/features/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.js.html +1 -1
- package/coverage/lcov-report/map/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/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +1 -1
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
- package/coverage/lcov.info +487 -370
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +1 -1
- package/coverage/map/api/hooks/index.html +1 -1
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +1 -1
- package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
- 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 +9 -15
- 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 +2 -2
- package/coverage/map/api/services/features/features.service.js.html +1 -1
- package/coverage/map/api/services/features/index.html +1 -1
- package/coverage/map/api/services/index.html +1 -1
- package/coverage/map/api/services/index.js.html +1 -1
- package/coverage/map/api/services/projects/index.html +1 -1
- package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +1 -1
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +1 -1
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +1 -1
- package/coverage/tmp/coverage-280506-1731704745613-0.json +1 -0
- package/coverage/tmp/coverage-280518-1731704745599-0.json +1 -0
- package/coverage/tmp/coverage-280529-1731704745588-0.json +1 -0
- package/coverage/tmp/{coverage-137470-1719398750728-0.json → coverage-280541-1731704745574-0.json} +1 -1
- package/coverage/tmp/{coverage-137477-1719398750691-0.json → coverage-280548-1731704745545-0.json} +1 -1
- package/extras/css/core.variables.scss +32 -8
- package/extras/icons/attribution.png +0 -0
- package/map/api/services/catalog/catalog.hooks.js +5 -7
- package/map/api/services/features/features.hooks.js +1 -1
- package/map/client/cesium/utils/utils.style.js +11 -2
- package/map/client/components/KAttribution.vue +108 -0
- package/map/client/components/KPositionIndicator.vue +11 -18
- package/map/client/components/KProjectMenu.vue +4 -4
- package/map/client/components/catalog/KCategoryItem.vue +74 -0
- package/map/client/components/catalog/KLayerCategories.vue +24 -12
- package/map/client/components/catalog/KLayersPanel.vue +139 -116
- package/map/client/components/catalog/KProjectSelector.vue +29 -17
- package/map/client/components/catalog/KProjectsPanel.vue +19 -35
- package/map/client/components/catalog/KViewSelector.vue +37 -25
- package/map/client/components/catalog/KViewsPanel.vue +19 -35
- package/map/client/components/form/KLocationField.vue +1 -2
- package/map/client/components/legend/KLegend.vue +34 -34
- package/map/client/components/location/KLocationCardSection.vue +18 -22
- package/map/client/components/location/KLocationMap.vue +36 -38
- package/map/client/components/location/KLocationTimeLineCard.vue +147 -0
- package/map/client/components/location/KLocationTip.vue +12 -2
- package/map/client/components/widget/KInformationBox.vue +0 -4
- package/map/client/components/widget/KStackableTimeSeries.vue +8 -1
- package/map/client/components/widget/KTimeSeries.vue +1 -1
- package/map/client/composables/highlight.js +29 -31
- package/map/client/composables/probe.js +7 -3
- package/map/client/composables/weather.js +71 -31
- package/map/client/i18n/map_en.json +3 -0
- package/map/client/i18n/map_fr.json +3 -0
- package/map/client/init.js +4 -3
- package/map/client/leaflet/ShapeMarker.js +1 -1
- package/map/client/leaflet/utils/utils.events.js +1 -1
- package/map/client/leaflet/utils/utils.style.js +20 -8
- package/map/client/mixins/globe/mixin.base-globe.js +111 -13
- package/map/client/mixins/globe/mixin.file-layers.js +10 -10
- package/map/client/mixins/globe/mixin.geojson-layers.js +90 -15
- package/map/client/mixins/globe/mixin.style.js +2 -0
- package/map/client/mixins/index.js +0 -1
- package/map/client/mixins/map/index.js +1 -0
- package/map/client/mixins/map/mixin.base-map.js +21 -2
- package/map/client/mixins/map/mixin.canvas-layers.js +7 -2
- package/map/client/mixins/map/mixin.edit-layers.js +12 -4
- package/map/client/mixins/map/mixin.file-layers.js +3 -0
- package/map/client/mixins/map/mixin.geojson-layers.js +90 -5
- package/map/client/mixins/map/mixin.pmtiles-layers.js +106 -0
- package/map/client/mixins/mixin.activity.js +8 -3
- package/map/client/mixins/mixin.feature-service.js +73 -32
- package/map/client/mixins/mixin.levels.js +1 -0
- package/map/client/mixins/mixin.weacast.js +10 -87
- package/map/client/utils/index.js +1 -0
- package/map/client/utils/utils.capture.js +1 -1
- package/map/client/utils/utils.catalog.js +7 -7
- package/map/client/utils/utils.features.js +59 -1
- package/map/client/utils/utils.layers.js +8 -0
- package/map/client/utils/utils.time-series.js +121 -0
- package/map/client/utils/utils.weacast.js +102 -0
- package/package.json +6 -6
- package/scripts/init_runner.sh +2 -2
- package/scripts/kash/CHANGELOG.md +12 -0
- package/scripts/kash/README.md +2 -0
- package/scripts/kash/kash.sh +34 -32
- package/scripts/run_tests.sh +2 -2
- package/scripts/setup_workspace.sh +24 -6
- package/test/api/core/hooks.test.js +6 -3
- package/test/api/core/test-log-2024-07-09.log +0 -0
- package/test/api/core/test-log-2024-08-13.log +69 -0
- package/test/api/core/test-log-2024-10-28.log +53 -0
- package/test/api/core/test-log-2024-11-05.log +30 -0
- package/test/api/core/test-log-2024-11-15.log +23 -0
- package/test/api/map/alerts.test.js +3 -1
- package/test/api/map/config/layers.json +3 -1
- package/test/api/map/index.test.js +18 -1
- package/test/api/map/test-log-2024-08-13.log +13 -0
- package/test/api/map/test-log-2024-08-20.log +55 -0
- package/test/api/map/test-log-2024-09-09.log +92 -0
- package/test/api/map/test-log-2024-10-28.log +11 -0
- package/test/client/core/utils.js +13 -0
- package/test/client/map/api.js +34 -0
- package/test/client/map/catalog.js +6 -2
- package/test/client/map/index.js +1 -0
- package/test/client/map/utils.js +4 -2
- package/core/client/components/collection/KList.vue +0 -135
- package/core/client/components/layout/KPageSticky.vue +0 -53
- package/core/client/mixins/mixin.base-collection.js +0 -162
- package/core/client/utils/utils.data.js +0 -22
- package/coverage/tmp/coverage-137435-1719398750767-0.json +0 -1
- package/coverage/tmp/coverage-137447-1719398750752-0.json +0 -1
- package/coverage/tmp/coverage-137458-1719398750740-0.json +0 -1
- package/map/client/mixins/mixin.catalog-panel.js +0 -26
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
2
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
3
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
4
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
5
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
6
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
7
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
8
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
9
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
10
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
11
|
+
{"level":"error","message":"error: api/tags - Method: create: You are not allowed to access service tags"}
|
|
12
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
13
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
14
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
|
|
15
|
+
{"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
|
|
16
|
+
{"level":"info","message":"This is a log test"}
|
|
17
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
18
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
19
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
20
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
21
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
22
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
23
|
+
{"level":"error","message":"error: api/organisations - Method: create: You are not allowed to access service organisations"}
|
|
24
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
25
|
+
{"level":"error","message":"error: api/672a24694525735623ca94ba/storage - Method: get: You are not allowed to access service 672a24694525735623ca94ba/storage"}
|
|
26
|
+
{"level":"error","message":"error: api/672a24694525735623ca94ba/groups - Method: create: You are not allowed to perform create operation on groups"}
|
|
27
|
+
{"level":"error","message":"error: api/672a24694525735623ca94ba/groups - Method: patch: You are not allowed to perform patch operation on groups"}
|
|
28
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
29
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
30
|
+
{"level":"error","message":"error: api/users - Method: remove: You are not allowed to delete the user undefined"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
2
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
3
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
4
|
+
{"level":"error","message":"error: api/tags - Method: create: You are not allowed to access service tags"}
|
|
5
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
6
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
7
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
|
|
8
|
+
{"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
|
|
9
|
+
{"level":"info","message":"This is a log test"}
|
|
10
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
11
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
12
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
13
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
14
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
15
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
16
|
+
{"level":"error","message":"error: api/organisations - Method: create: You are not allowed to access service organisations"}
|
|
17
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
18
|
+
{"level":"error","message":"error: api/6737b7a78204b747e835b787/storage - Method: get: You are not allowed to access service 6737b7a78204b747e835b787/storage"}
|
|
19
|
+
{"level":"error","message":"error: api/6737b7a78204b747e835b787/groups - Method: create: You are not allowed to perform create operation on groups"}
|
|
20
|
+
{"level":"error","message":"error: api/6737b7a78204b747e835b787/groups - Method: patch: You are not allowed to perform patch operation on groups"}
|
|
21
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
22
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
23
|
+
{"level":"error","message":"error: api/users - Method: remove: You are not allowed to delete the user undefined"}
|
|
@@ -151,6 +151,8 @@ describe('map:alerts', () => {
|
|
|
151
151
|
.timeout(60000)
|
|
152
152
|
|
|
153
153
|
it('creates weather active alert at specific location', async () => {
|
|
154
|
+
// Wait long enough to be sure the distribution is effective
|
|
155
|
+
await utility.promisify(setTimeout)(10000)
|
|
154
156
|
const now = moment.utc()
|
|
155
157
|
alertObject = await alertService.create({
|
|
156
158
|
cron: '*/5 * * * * *',
|
|
@@ -196,7 +198,7 @@ describe('map:alerts', () => {
|
|
|
196
198
|
expect(results[0].status.checkedAt.isSameOrAfter(results[0].status.triggeredAt.format())).beTrue()
|
|
197
199
|
})
|
|
198
200
|
// Let enough time to process
|
|
199
|
-
.timeout(
|
|
201
|
+
.timeout(30000)
|
|
200
202
|
|
|
201
203
|
it('removes active weather alert at specific location', async () => {
|
|
202
204
|
await alertService.remove(alertObject._id.toString())
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
"attribution" : "",
|
|
6
6
|
"type" : "OverlayLayer",
|
|
7
7
|
"service": "vigicrues-stations",
|
|
8
|
-
"featureId": "CdStationH"
|
|
8
|
+
"featureId": "CdStationH",
|
|
9
|
+
"featureLabel": "LbStationH"
|
|
9
10
|
},
|
|
10
11
|
{
|
|
11
12
|
"name": "vigicrues-observations",
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
"type" : "OverlayLayer",
|
|
15
16
|
"service": "vigicrues-observations",
|
|
16
17
|
"featureId": "CdStationH",
|
|
18
|
+
"featureLabel": "LbStationH",
|
|
17
19
|
"variables": ["H"],
|
|
18
20
|
"history": 604800
|
|
19
21
|
},
|
|
@@ -174,7 +174,8 @@ describe('map:services', () => {
|
|
|
174
174
|
expect(vigicruesStationsLayer.service === 'vigicrues-stations').beTrue()
|
|
175
175
|
await createFeaturesService.call(app, {
|
|
176
176
|
collection: vigicruesStationsLayer.service,
|
|
177
|
-
featureId: vigicruesStationsLayer.featureId
|
|
177
|
+
featureId: vigicruesStationsLayer.featureId,
|
|
178
|
+
featureLabel: vigicruesStationsLayer.featureLabel
|
|
178
179
|
})
|
|
179
180
|
vigicruesStationsService = app.getService(vigicruesStationsLayer.service)
|
|
180
181
|
expect(vigicruesStationsService).toExist()
|
|
@@ -194,6 +195,7 @@ describe('map:services', () => {
|
|
|
194
195
|
await createFeaturesService.call(app, {
|
|
195
196
|
collection: vigicruesObsLayer.service,
|
|
196
197
|
featureId: vigicruesObsLayer.featureId,
|
|
198
|
+
featureLabel: vigicruesObsLayer.featureLabel,
|
|
197
199
|
variables: vigicruesObsLayer.variables,
|
|
198
200
|
// Raise simplified events
|
|
199
201
|
skipEvents: ['updated'],
|
|
@@ -210,6 +212,21 @@ describe('map:services', () => {
|
|
|
210
212
|
// Let enough time to process
|
|
211
213
|
.timeout(5000)
|
|
212
214
|
|
|
215
|
+
it('search on the vigicrues stations service', async () => {
|
|
216
|
+
// Fuzzy search
|
|
217
|
+
let result = await vigicruesStationsService.find({ query: { 'properties.LbStationH': { $search: 'Châtel' } }, paginate: false })
|
|
218
|
+
expect(result.features).toExist()
|
|
219
|
+
expect(result.features.length).to.equal(2)
|
|
220
|
+
// Diacritic search
|
|
221
|
+
result = await vigicruesStationsService.find({ query: { 'properties.LbStationH': { $search: 'Chatel' } }, paginate: false })
|
|
222
|
+
expect(result.features.length).to.equal(2)
|
|
223
|
+
// Distinct search
|
|
224
|
+
result = await vigicruesStationsService.find({ query: { $distinct: 'properties.LbStationH' } })
|
|
225
|
+
expect(result.length).to.equal(nbStations)
|
|
226
|
+
})
|
|
227
|
+
// Let enough time to process
|
|
228
|
+
.timeout(5000)
|
|
229
|
+
|
|
213
230
|
it('the vigicrues observations should send simplified events', async () => {
|
|
214
231
|
const min = moment.utc('2018-10-22T22:00:00.000Z')
|
|
215
232
|
const max = moment.utc('2018-11-23T08:06:00.000Z')
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{"level":"info","message":"Logger configured"}
|
|
2
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
3
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
4
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
5
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
6
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
7
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
8
|
+
{"level":"error","message":"Cannot check alert 66bb56b554c4582abbe94b36 as target probes service is not available"}
|
|
9
|
+
{"level":"error","message":"Cannot check alert 66bb56b554c4582abbe94b36 as target probes service is not available"}
|
|
10
|
+
{"level":"error","message":"Cannot check alert 66bb56d354c4582abbe94b38 as no data is available for gfs-world"}
|
|
11
|
+
{"level":"error","message":"Cannot check alert 66bb56f254c4582abbe9507b as no data is available for features service vigicrues-observations"}
|
|
12
|
+
{"level":"error","message":"error: api/catalog - Method: create: Object with name equals to dummy already exist for service catalog"}
|
|
13
|
+
{"level":"info","message":"Logger configured"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{"level":"info","message":"Logger configured"}
|
|
2
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
3
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
4
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
5
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
6
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T12:00:00Z"}
|
|
7
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T12:00:00Z, provider responded with HTTP code 302"}
|
|
8
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T12:00:00Z"}
|
|
9
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T12:00:00Z, provider responded with HTTP code 302"}
|
|
10
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T06:00:00Z"}
|
|
11
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T06:00:00Z, provider responded with HTTP code 302"}
|
|
12
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T06:00:00Z"}
|
|
13
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T06:00:00Z, provider responded with HTTP code 302"}
|
|
14
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T00:00:00Z"}
|
|
15
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T00:00:00Z, provider responded with HTTP code 302"}
|
|
16
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T00:00:00Z"}
|
|
17
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-20T00:00:00Z, provider responded with HTTP code 302"}
|
|
18
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-19T18:00:00Z"}
|
|
19
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-19T18:00:00Z, provider responded with HTTP code 302"}
|
|
20
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-19T18:00:00Z"}
|
|
21
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T12:00:00Z for run 2024-08-19T18:00:00Z, provider responded with HTTP code 302"}
|
|
22
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T12:00:00Z"}
|
|
23
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T12:00:00Z, provider responded with HTTP code 302"}
|
|
24
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T12:00:00Z"}
|
|
25
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T12:00:00Z, provider responded with HTTP code 302"}
|
|
26
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T06:00:00Z"}
|
|
27
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T06:00:00Z, provider responded with HTTP code 302"}
|
|
28
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T06:00:00Z"}
|
|
29
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T06:00:00Z, provider responded with HTTP code 302"}
|
|
30
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T00:00:00Z"}
|
|
31
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T00:00:00Z, provider responded with HTTP code 302"}
|
|
32
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T00:00:00Z"}
|
|
33
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-20T00:00:00Z, provider responded with HTTP code 302"}
|
|
34
|
+
{"level":"error","message":"Could not update gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-19T18:00:00Z"}
|
|
35
|
+
{"level":"error","message":"Could not download gfs-world/v-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-19T18:00:00Z, provider responded with HTTP code 302"}
|
|
36
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
37
|
+
{"level":"error","message":"Could not update gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-19T18:00:00Z"}
|
|
38
|
+
{"level":"error","message":"Could not download gfs-world/u-wind forecast at 2024-08-20T15:00:00Z for run 2024-08-19T18:00:00Z, provider responded with HTTP code 302"}
|
|
39
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
40
|
+
{"level":"error","message":"Cannot check alert 66c4b05ca92b91444f4b8703 as target probes service is not available"}
|
|
41
|
+
{"level":"error","message":"Cannot check alert 66c4b05ca92b91444f4b8703 as target probes service is not available"}
|
|
42
|
+
{"level":"error","message":"Cannot check alert 66c4b05ca92b91444f4b8703 as no data is available for gfs-world"}
|
|
43
|
+
{"level":"error","message":"Cannot check alert 66c4b06ba92b91444f4b8704 as no data is available for gfs-world"}
|
|
44
|
+
{"level":"error","message":"Cannot check alert 66c4b06ba92b91444f4b8704 as no data is available for gfs-world"}
|
|
45
|
+
{"level":"error","message":"Cannot check alert 66c4b06ba92b91444f4b8704 as no data is available for gfs-world"}
|
|
46
|
+
{"level":"error","message":"Cannot check alert 66c4b07aa92b91444f4b8705 as no data is available for gfs-world"}
|
|
47
|
+
{"level":"error","message":"Cannot check alert 66c4b099a92b91444f4b8c48 as no data is available for features service vigicrues-observations"}
|
|
48
|
+
{"level":"error","message":"error: api/catalog - Method: create: Object with name equals to dummy already exist for service catalog"}
|
|
49
|
+
{"level":"info","message":"Logger configured"}
|
|
50
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: unknown top level operator: $search. If you have a field name that starts with a '$' symbol, consider using $getField or $setField."}
|
|
51
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: unknown top level operator: $regex. If you have a field name that starts with a '$' symbol, consider using $getField or $setField."}
|
|
52
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: unknown top level operator: $regex. If you have a field name that starts with a '$' symbol, consider using $getField or $setField."}
|
|
53
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: unknown top level operator: $regex. If you have a field name that starts with a '$' symbol, consider using $getField or $setField."}
|
|
54
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: collection.distinct(...).toArray is not a function"}
|
|
55
|
+
{"level":"error","message":"error: api/vigicrues-stations - Method: find: collection.distinct(...).toArray is not a function"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{"level":"info","message":"Logger configured"}
|
|
2
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
3
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
4
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
5
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
6
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
7
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
8
|
+
{"level":"error","message":"Cannot check alert 66df0924a66980d48fb0d8b1 as target probes service is not available"}
|
|
9
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
10
|
+
{"level":"error","message":"Cannot check alert 66df0924a66980d48fb0d8b2 as target probes service is not available"}
|
|
11
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
12
|
+
{"level":"error","message":"Cannot check alert 66df0924a66980d48fb0d8b3 as target probes service is not available"}
|
|
13
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
14
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
15
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
16
|
+
{"level":"error","message":"Cannot check alert 66df0924a66980d48fb0ddf6 as no data is available for features service vigicrues-observations"}
|
|
17
|
+
{"level":"error","message":"error: api/alerts - Method: create: Not Found"}
|
|
18
|
+
{"level":"info","message":"Logger configured"}
|
|
19
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
20
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
21
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
22
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
23
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
24
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
25
|
+
{"level":"error","message":"Cannot check alert 66df094658be2bd5581cb167 as target probes service is not available"}
|
|
26
|
+
{"level":"error","message":"Cannot check alert 66df094658be2bd5581cb167 as target probes service is not available"}
|
|
27
|
+
{"level":"error","message":"Cannot check alert 66df096458be2bd5581cb169 as no data is available for gfs-world"}
|
|
28
|
+
{"level":"error","message":"Cannot check alert 66df098258be2bd5581cb6ac as no data is available for features service vigicrues-observations"}
|
|
29
|
+
{"level":"info","message":"Logger configured"}
|
|
30
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
31
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
32
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
33
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
34
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
35
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
36
|
+
{"level":"error","message":"Cannot check alert 66df0c9adedf2ddb5855a0e7 as target probes service is not available"}
|
|
37
|
+
{"level":"error","message":"Cannot check alert 66df0c9adedf2ddb5855a0e7 as target probes service is not available"}
|
|
38
|
+
{"level":"error","message":"Cannot check alert 66df0cb9dedf2ddb5855a0e9 as no data is available for gfs-world"}
|
|
39
|
+
{"level":"error","message":"Cannot check alert 66df0cd7dedf2ddb5855a62c as no data is available for features service vigicrues-observations"}
|
|
40
|
+
{"level":"info","message":"Logger configured"}
|
|
41
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
42
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
43
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
44
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
45
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
46
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
47
|
+
{"level":"error","message":"Cannot check alert 66df0cf9236744ddb6ef906f as target probes service is not available"}
|
|
48
|
+
{"level":"error","message":"Cannot check alert 66df0cf9236744ddb6ef906f as target probes service is not available"}
|
|
49
|
+
{"level":"error","message":"Cannot check alert 66df0d17236744ddb6ef9071 as no data is available for gfs-world"}
|
|
50
|
+
{"level":"error","message":"Cannot check alert 66df0d36236744ddb6ef95b4 as no data is available for features service vigicrues-observations"}
|
|
51
|
+
{"level":"info","message":"Logger configured"}
|
|
52
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
53
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
54
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
55
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
56
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
57
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
58
|
+
{"level":"error","message":"Cannot check alert 66df0e3910afd5dffa1c4b5e as no data is available for features service vigicrues-observations"}
|
|
59
|
+
{"level":"info","message":"Logger configured"}
|
|
60
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
61
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
62
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
63
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
64
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
65
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
66
|
+
{"level":"error","message":"Cannot check alert 66df0e8ccdfcb5e1c2c29099 as no data is available for features service vigicrues-observations"}
|
|
67
|
+
{"level":"info","message":"Logger configured"}
|
|
68
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
69
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
70
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
71
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
72
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
73
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
74
|
+
{"level":"error","message":"Cannot check alert 66df10b5ace15ae6329c10b7 as no data is available for features service vigicrues-observations"}
|
|
75
|
+
{"level":"info","message":"Logger configured"}
|
|
76
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
77
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
78
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
79
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
80
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
81
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
82
|
+
{"level":"error","message":"Cannot check alert 66df13cbb17161e8e4f2916e as no data is available for gfs-world"}
|
|
83
|
+
{"level":"error","message":"Cannot check alert 66df13eab17161e8e4f296b1 as no data is available for features service vigicrues-observations"}
|
|
84
|
+
{"level":"info","message":"Logger configured"}
|
|
85
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
86
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
87
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
88
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
89
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
90
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
91
|
+
{"level":"error","message":"Cannot check alert 66df142ac455c7eaba85efdd as no data is available for gfs-world"}
|
|
92
|
+
{"level":"error","message":"Cannot check alert 66df1449c455c7eaba85f520 as no data is available for features service vigicrues-observations"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{"level":"info","message":"Logger configured"}
|
|
2
|
+
{"level":"info","message":"Initializing weacast-gfs plugin"}
|
|
3
|
+
{"level":"info","message":"Initializing gfs-world forecast"}
|
|
4
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/u-wind"}
|
|
5
|
+
{"level":"info","message":"Checking for up-to-date forecast data on gfs-world/v-wind"}
|
|
6
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/u-wind"}
|
|
7
|
+
{"level":"info","message":"Completed forecast data update on gfs-world/v-wind"}
|
|
8
|
+
{"level":"error","message":"Cannot check alert 671f4c7f0454b12da9ade006 as no data is available for gfs-world"}
|
|
9
|
+
{"level":"error","message":"Cannot check alert 671f4c9d0454b12da9ade549 as no data is available for features service vigicrues-observations"}
|
|
10
|
+
{"level":"error","message":"error: api/catalog - Method: create: Object with name equals to dummy already exist for service catalog"}
|
|
11
|
+
{"level":"info","message":"Logger configured"}
|
|
@@ -121,6 +121,19 @@ export async function clickSelect (page, selector, entry, wait = 500) {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
/* Helper function to clear input a text on a given selector
|
|
125
|
+
! Not yet working !
|
|
126
|
+
*/
|
|
127
|
+
export async function clear (page, selector, wait = 500) {
|
|
128
|
+
try {
|
|
129
|
+
await page.waitForSelector(selector, { timeout: 2000 })
|
|
130
|
+
await page.$eval(selector, element => { element.value = '' })
|
|
131
|
+
await page.waitForTimeout(wait)
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.error(`[KDK] Clear ${selector} failed.`)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
124
137
|
/* Helper function to input a text on a given selector
|
|
125
138
|
* set enter to true to run the press 'Enter' key
|
|
126
139
|
*/
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as core from '../core/index.js'
|
|
2
|
+
|
|
3
|
+
// Decorate core API with some of the required features for map
|
|
4
|
+
export class Api extends core.Api {
|
|
5
|
+
createClient (options = {}) {
|
|
6
|
+
const client = super.createClient(options)
|
|
7
|
+
|
|
8
|
+
client.createGeoJsonFeature = async (layerId, coordinates, properties = {}, service = 'features') => {
|
|
9
|
+
// Deduce geometry type from coordinates
|
|
10
|
+
let type = 'Point'
|
|
11
|
+
if (Array.isArray(coordinates[0])) {
|
|
12
|
+
type = (Array.isArray(coordinates[0][0]) ? 'Polygon' : 'LineString')
|
|
13
|
+
}
|
|
14
|
+
const feature = await client.getService(service).create(Object.assign({
|
|
15
|
+
type: 'Feature',
|
|
16
|
+
geometry: {
|
|
17
|
+
type,
|
|
18
|
+
coordinates
|
|
19
|
+
},
|
|
20
|
+
layer: layerId
|
|
21
|
+
}, properties))
|
|
22
|
+
return feature
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
client.updateGeoJsonFeature = async (featureId, coordinates, properties = {}, service = 'features') => {
|
|
26
|
+
const feature = await client.getService(service).patch(featureId, Object.assign({
|
|
27
|
+
'geometry.coordinates': coordinates
|
|
28
|
+
}, properties))
|
|
29
|
+
return feature
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return client
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -153,13 +153,17 @@ export async function importLayer (page, filePath, featureId = undefined, wait =
|
|
|
153
153
|
await page.waitForTimeout(wait)
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
export async function connectLayer (page, service, layerId, layerName, wait = 2000) {
|
|
156
|
+
export async function connectLayer (page, service, layerId, layerName, featureId, wait = 2000) {
|
|
157
157
|
await addLayer(page)
|
|
158
158
|
await core.clickAction(page, 'connect-layer')
|
|
159
159
|
await core.type(page, '#service-field', service, true, false, 5000)
|
|
160
160
|
await core.click(page, '#layer-field', 500)
|
|
161
161
|
if (layerName) await core.type(page, '#layer-field', layerName)
|
|
162
162
|
await core.click(page, `#${layerId}`, 500)
|
|
163
|
+
if (featureId) {
|
|
164
|
+
await core.click(page, '#featureId-field', 500)
|
|
165
|
+
await core.click(page, `#${featureId}`, 500)
|
|
166
|
+
}
|
|
163
167
|
await core.clickAction(page, 'connect-layer-action', 2000)
|
|
164
168
|
await page.waitForNetworkIdle()
|
|
165
169
|
await page.waitForTimeout(wait)
|
|
@@ -250,7 +254,7 @@ export async function clickProject (page, tabId, name) {
|
|
|
250
254
|
|
|
251
255
|
export async function switchProject (page, name, wait = 2000) {
|
|
252
256
|
await core.click(page, '#project-menu', 2000)
|
|
253
|
-
await core.clickXPath(page, `//div[contains(@component, "collection/
|
|
257
|
+
await core.clickXPath(page, `//div[contains(@component, "collection/KCard") and contains(., "${name}")]`, 1000)
|
|
254
258
|
await page.waitForNetworkIdle()
|
|
255
259
|
await page.waitForTimeout(wait)
|
|
256
260
|
}
|
package/test/client/map/index.js
CHANGED
package/test/client/map/utils.js
CHANGED
|
@@ -18,8 +18,10 @@ export async function moveMap (page, direction, times, wait = 500) {
|
|
|
18
18
|
|
|
19
19
|
/* Zooms the map to a specific level
|
|
20
20
|
*/
|
|
21
|
-
export async function zoomToLevel (page, level, wait = 500) {
|
|
22
|
-
|
|
21
|
+
export async function zoomToLevel (page, storePath, level, wait = 500) {
|
|
22
|
+
// FIXME: better way to get activity state ?
|
|
23
|
+
// At current time the activity should implement state saving to make it work
|
|
24
|
+
const zoom = await core.getFromStore(page, `${storePath}.state.zoom`)
|
|
23
25
|
const diff = level - zoom
|
|
24
26
|
const action = (level > zoom) ? 'in' : 'out'
|
|
25
27
|
await moveMap(page, action, Math.abs(diff), wait)
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-if="items.length > 0" class="row">
|
|
3
|
-
<div class="col-12">
|
|
4
|
-
<q-list highlight separator>
|
|
5
|
-
<template v-for="item in items" :key="item._id">
|
|
6
|
-
<component
|
|
7
|
-
:id="item._id"
|
|
8
|
-
:service="service"
|
|
9
|
-
:item="item"
|
|
10
|
-
:contextId="contextId"
|
|
11
|
-
:is="rendererComponent"
|
|
12
|
-
v-bind="renderer"
|
|
13
|
-
@item-toggled="onItemToggled"
|
|
14
|
-
@item-selected="onItemSelected" />
|
|
15
|
-
</template>
|
|
16
|
-
</q-list>
|
|
17
|
-
</div>
|
|
18
|
-
<div v-if="nbPages > 1" class="col-12">
|
|
19
|
-
<div class="row justify-center">
|
|
20
|
-
<q-pagination
|
|
21
|
-
v-model="currentPage"
|
|
22
|
-
:max="nbPages"
|
|
23
|
-
:input="true"
|
|
24
|
-
@update:model-value="refreshCollection"
|
|
25
|
-
/>
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<div v-else>
|
|
30
|
-
<slot name="empty-section">
|
|
31
|
-
<div class="row col justify-center">
|
|
32
|
-
<KStamp
|
|
33
|
-
icon="las la-exclamation-circle"
|
|
34
|
-
icon-size="1.6rem"
|
|
35
|
-
:text="$t('KList.EMPTY_LIST')"
|
|
36
|
-
direction="horizontal" />
|
|
37
|
-
</div>
|
|
38
|
-
</slot>
|
|
39
|
-
</div>
|
|
40
|
-
</template>
|
|
41
|
-
|
|
42
|
-
<script setup>
|
|
43
|
-
import { computed, watch, toRefs, onBeforeMount, onBeforeUnmount } from 'vue'
|
|
44
|
-
import KStamp from '../KStamp.vue'
|
|
45
|
-
import { Events } from '../../events.js'
|
|
46
|
-
import { useCollection } from '../../composables'
|
|
47
|
-
import { loadComponent } from '../../utils'
|
|
48
|
-
|
|
49
|
-
const emit = defineEmits(['selection-changed', 'collection-refreshed'])
|
|
50
|
-
|
|
51
|
-
// Props
|
|
52
|
-
const props = defineProps({
|
|
53
|
-
renderer: {
|
|
54
|
-
type: Object,
|
|
55
|
-
default: () => {
|
|
56
|
-
return {
|
|
57
|
-
component: 'collection/KItem'
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
contextId: {
|
|
62
|
-
type: String,
|
|
63
|
-
default: undefined
|
|
64
|
-
},
|
|
65
|
-
service: {
|
|
66
|
-
type: String,
|
|
67
|
-
required: true
|
|
68
|
-
},
|
|
69
|
-
baseQuery: {
|
|
70
|
-
type: Object,
|
|
71
|
-
default: function () {
|
|
72
|
-
return {}
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
filterQuery: {
|
|
76
|
-
type: Object,
|
|
77
|
-
default: function () {
|
|
78
|
-
return {}
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
listStrategy: {
|
|
82
|
-
type: String,
|
|
83
|
-
default: 'smart'
|
|
84
|
-
},
|
|
85
|
-
nbItemsPerPage: {
|
|
86
|
-
type: Number,
|
|
87
|
-
default: 12
|
|
88
|
-
},
|
|
89
|
-
processor: {
|
|
90
|
-
type: Function,
|
|
91
|
-
default: undefined
|
|
92
|
-
}
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
// Computed
|
|
96
|
-
const rendererComponent = computed(() => loadComponent(props.renderer.component))
|
|
97
|
-
|
|
98
|
-
// Functions
|
|
99
|
-
function onItemToggled (item, toggled) {
|
|
100
|
-
emit('item-toggled', item, toggled)
|
|
101
|
-
}
|
|
102
|
-
function onItemSelected (item, section) {
|
|
103
|
-
emit('selection-changed', item, section)
|
|
104
|
-
}
|
|
105
|
-
function onCollectionRefreshed () {
|
|
106
|
-
emit('collection-refreshed', items.value)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const { items, nbTotalItems, nbPages, currentPage, refreshCollection, resetCollection } = useCollection(toRefs(props))
|
|
110
|
-
|
|
111
|
-
// Lifecycle hooks
|
|
112
|
-
|
|
113
|
-
// Emit events so that embbeding components can be aware of it
|
|
114
|
-
watch(items, onCollectionRefreshed)
|
|
115
|
-
|
|
116
|
-
onBeforeMount(() => {
|
|
117
|
-
refreshCollection()
|
|
118
|
-
// Whenever the user abilities are updated, update collection as well
|
|
119
|
-
Events.on('user-abilities-changed', refreshCollection)
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
onBeforeUnmount(() => {
|
|
123
|
-
Events.off('user-abilities-changed', refreshCollection)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
// Expose
|
|
127
|
-
defineExpose({
|
|
128
|
-
items,
|
|
129
|
-
nbTotalItems,
|
|
130
|
-
nbPages,
|
|
131
|
-
currentPage,
|
|
132
|
-
refreshCollection,
|
|
133
|
-
resetCollection
|
|
134
|
-
})
|
|
135
|
-
</script>
|