@kalisio/kdk 2.6.3 → 2.7.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/core/api/application.js +2 -4
- package/core/api/authentication.js +2 -3
- package/core/api/db.js +10 -2
- package/core/api/hooks/hooks.authorisations.js +4 -2
- package/core/api/hooks/hooks.push.js +6 -2
- package/core/api/hooks/hooks.query.js +29 -12
- package/core/api/hooks/hooks.users.js +30 -17
- package/core/api/models/configurations.model.mongodb.js +4 -0
- package/core/api/services/authorisations/authorisations.service.js +1 -1
- package/core/api/services/configurations/configurations.hooks.js +33 -0
- package/core/api/services/index.js +41 -7
- package/core/api/services/messages/messages.hooks.js +9 -3
- package/core/client/api.js +14 -1
- package/core/client/capabilities.js +1 -6
- package/core/client/components/KAvatar.vue +24 -20
- package/core/client/components/account/KProfile.vue +10 -71
- package/core/client/components/account/index.js +0 -2
- package/core/client/components/app/KSettings.vue +1 -0
- package/core/client/components/collection/KBoard.vue +4 -3
- package/core/client/components/collection/KCardSection.vue +1 -0
- package/core/client/components/collection/KGrid.vue +2 -0
- package/core/client/components/collection/KTable.vue +5 -1
- package/core/client/components/collection/KTimeLine.vue +9 -1
- package/core/client/components/collection/index.js +0 -2
- package/core/client/components/form/KChipsField.vue +2 -1
- package/core/client/components/form/KEmailField.vue +1 -0
- package/core/client/components/form/KFileField.vue +22 -1
- package/core/client/components/form/KForm.vue +2 -0
- package/core/client/components/form/KItemField.vue +1 -0
- package/core/client/components/form/KNumberField.vue +1 -0
- package/core/client/components/form/KPasswordField.vue +1 -0
- package/core/client/components/form/KPhoneField.vue +1 -0
- package/core/client/components/form/KPropertyItemField.vue +1 -0
- package/core/client/components/form/KResolutionField.vue +1 -0
- package/core/client/components/form/KSelectField.vue +31 -0
- package/core/client/components/form/KTagField.vue +1 -0
- package/core/client/components/form/KTextField.vue +1 -0
- package/core/client/components/form/KTokenField.vue +1 -0
- package/core/client/components/form/KUnitField.vue +1 -0
- package/core/client/components/form/KUrlField.vue +1 -0
- package/core/client/components/graphics/KIcon.vue +3 -4
- package/core/client/components/layout/KPage.vue +1 -0
- package/core/client/components/layout/KWindow.vue +6 -3
- package/core/client/components/messages/KMessageComposer.vue +2 -1
- package/core/client/components/messages/KMessagesTimeLine.vue +1 -1
- package/core/client/components/time/KDate.vue +1 -2
- package/core/client/components/time/KDateTime.vue +11 -11
- package/core/client/components/time/KTime.vue +1 -1
- package/core/client/composables/collection.js +33 -8
- package/core/client/composables/errors.js +1 -1
- package/core/client/composables/layout.js +9 -9
- package/core/client/configurations.js +50 -0
- package/core/client/exporter.js +1 -1
- package/core/client/i18n/core_en.json +6 -39
- package/core/client/i18n/core_fr.json +6 -39
- package/core/client/index.js +2 -0
- package/core/client/layout.js +8 -8
- package/core/client/mixins/mixin.base-activity.js +5 -2
- package/core/client/mixins/mixin.base-field.js +3 -3
- package/core/client/search.js +2 -1
- package/core/client/utils/utils.collection.js +8 -8
- package/core/client/utils/utils.items.js +4 -0
- package/core/client/utils/utils.push.js +3 -3
- package/core/client/utils/utils.session.js +7 -5
- package/core/client/utils/utils.shapes.js +38 -7
- package/core/client/utils/utils.time.js +21 -22
- package/core/common/schemas/users.update-profile.json +3 -2
- 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 +1 -1
- 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.logger.js.html +1 -1
- package/coverage/core/api/hooks/hooks.model.js.html +1 -1
- package/coverage/core/api/hooks/hooks.push.js.html +22 -10
- package/coverage/core/api/hooks/hooks.query.js.html +33 -6
- 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.tags.js.html +1 -1
- package/coverage/core/api/hooks/hooks.users.js.html +4 -4
- package/coverage/core/api/hooks/index.html +23 -23
- package/coverage/core/api/hooks/index.js.html +1 -1
- package/coverage/core/api/index.html +1 -1
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +1 -1
- package/coverage/core/api/models/configurations.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +1 -1
- package/coverage/core/api/models/messages.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 +1 -1
- package/coverage/core/api/services/authorisations/index.html +1 -1
- package/coverage/core/api/services/configurations/configurations.hooks.js.html +1 -1
- package/coverage/core/api/services/configurations/index.html +1 -1
- 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/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 +1 -1
- package/coverage/core/api/services/index.js.html +1 -1
- 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 +1 -1
- package/coverage/core/api/services/messages/messages.hooks.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/services/users/users.service.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/core/common/utils.offline.js.html +1 -1
- package/coverage/index.html +17 -17
- 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 +1 -1
- 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.logger.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +22 -10
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +33 -6
- 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.tags.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +4 -4
- package/coverage/lcov-report/core/api/hooks/index.html +23 -23
- package/coverage/lcov-report/core/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/core/api/index.html +1 -1
- 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/configurations.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +1 -1
- package/coverage/lcov-report/core/api/models/messages.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 +1 -1
- package/coverage/lcov-report/core/api/services/authorisations/index.html +1 -1
- package/coverage/lcov-report/core/api/services/configurations/configurations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/configurations/index.html +1 -1
- 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/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 +1 -1
- package/coverage/lcov-report/core/api/services/index.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.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/services/users/users.service.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/core/common/utils.offline.js.html +1 -1
- package/coverage/lcov-report/index.html +17 -17
- 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 +184 -4
- package/coverage/lcov-report/map/api/hooks/index.html +5 -5
- 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/models/styles.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 +1 -1
- package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
- 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 +1 -1
- 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/api/services/styles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/styles/styles.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 +358 -280
- 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 +184 -4
- package/coverage/map/api/hooks/index.html +5 -5
- 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/models/styles.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 +1 -1
- package/coverage/map/api/services/catalog/index.html +1 -1
- 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 +1 -1
- 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/api/services/styles/index.html +1 -1
- package/coverage/map/api/services/styles/styles.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-1028514-1773134124472-0.json +1 -0
- package/coverage/tmp/coverage-1028526-1773134124448-0.json +1 -0
- package/coverage/tmp/coverage-1028537-1773134124431-0.json +1 -0
- package/coverage/tmp/coverage-1028549-1773134124401-0.json +1 -0
- package/coverage/tmp/{coverage-222566-1765963609278-0.json → coverage-1028556-1773134124353-0.json} +1 -1
- package/extras/configs/widgets.top.js +3 -3
- package/extras/tests/core/collection.mjs +2 -9
- package/map/api/hooks/hooks.catalog.js +18 -4
- package/map/api/services/catalog/catalog.hooks.js +3 -0
- package/map/api/services/features/features.hooks.js +3 -1
- package/map/api/services/index.js +2 -6
- package/map/api/services/styles/styles.hooks.js +6 -1
- package/map/client/components/KFeatureActionButton.vue +9 -3
- package/map/client/components/KFeaturesFilterManager.vue +5 -5
- package/map/client/components/KFilterCondition.vue +17 -10
- package/map/client/components/KLayerEditor.vue +49 -39
- package/map/client/components/KMeasureTool.vue +7 -1
- package/map/client/components/KTimezoneMap.vue +29 -9
- package/map/client/components/catalog/KLayersPanel.vue +26 -16
- package/map/client/components/catalog/KLayersSelector.vue +13 -2
- package/map/client/components/catalog/KViewsPanel.vue +5 -4
- package/map/client/components/form/KSelectLayersField.vue +28 -17
- package/map/client/components/form/KSelectViewsField.vue +18 -9
- package/map/client/components/form/KTimezoneField.vue +1 -2
- package/map/client/components/legend/KVariablesLegend.vue +10 -1
- package/map/client/components/location/KLocationCardSection.vue +7 -2
- package/map/client/components/location/KLocationMap.vue +31 -7
- package/map/client/components/selection/KSelectedLayerFeatures.vue +2 -2
- package/map/client/components/stickies/KZoomControl.vue +1 -1
- package/map/client/components/styles/KStyleManager.vue +4 -1
- package/map/client/components/widget/KTimeSeries.vue +174 -497
- package/map/client/components/widget/KTimeSeriesSelector.vue +72 -0
- package/map/client/components/widget/KTimeSeriesToolbar.vue +83 -0
- package/map/client/composables/catalog.js +6 -10
- package/map/client/composables/highlight.js +12 -9
- package/map/client/composables/project.js +1 -1
- package/map/client/composables/selection.js +8 -7
- package/map/client/composables/weather.js +9 -2
- package/map/client/geolocation.js +8 -5
- package/map/client/i18n/map_en.json +10 -8
- package/map/client/i18n/map_fr.json +9 -7
- package/map/client/leaflet/TiledFeatureLayer.js +85 -82
- package/map/client/leaflet/utils/utils.geojson.js +3 -3
- package/map/client/mixins/globe/mixin.base-globe.js +15 -6
- package/map/client/mixins/globe/mixin.geojson-layers.js +27 -18
- package/map/client/mixins/map/mixin.edit-layers.js +9 -1
- package/map/client/mixins/map/mixin.pmtiles-layers.js +118 -29
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +12 -5
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +19 -10
- package/map/client/mixins/mixin.activity.js +23 -30
- package/map/client/mixins/mixin.feature-selection.js +41 -5
- package/map/client/planets.js +1 -1
- package/map/client/readers/reader.kml.js +2 -3
- package/map/client/utils/utils.catalog.js +36 -10
- package/map/client/utils/utils.layers.js +39 -8
- package/map/client/utils/utils.project.js +4 -0
- package/map/client/utils/utils.style.js +37 -7
- package/map/client/utils/utils.time-series.js +215 -6
- package/map/common/schemas/catalog.update.json +1 -1
- package/map/common/weacast-grid-source.js +1 -1
- package/package.json +3 -3
- package/scripts/kash/CHANGELOG.md +0 -4
- package/scripts/kash/README.md +0 -9
- package/scripts/kash/kash.sh +45 -40
- package/scripts/kash/scripts/run_tests.sh +1 -4
- package/test/api/core/authentication.test.js +9 -4
- package/test/api/core/config/default.cjs +1 -0
- package/test/api/core/hooks.test.js +6 -0
- package/test/api/core/index.test.js +43 -18
- package/test/api/core/push.test.js +8 -8
- package/test/api/core/test-log-2026-03-10.log +60 -0
- package/test/api/core/users.test.js +384 -0
- package/test/api/map/grid-sources.test.js +1 -1
- package/test/api/map/test-log-2026-03-10.log +56 -0
- package/vite/package.json +11 -2
- package/vite/test/core/composables.test.js +77 -0
- package/vite/vitest.config.js +13 -0
- package/vite/yarn.lock +1096 -18
- package/client/css/core.variables.scss +0 -72
- package/client/i18n/core_en.json +0 -744
- package/client/i18n/core_fr.json +0 -744
- package/client/i18n/map_en.json +0 -800
- package/client/i18n/map_fr.json +0 -800
- package/client/kdk.client.css +0 -47
- package/client/kdk.client.js +0 -41097
- package/client/kdk.client.map.css +0 -47
- package/client/kdk.client.map.js +0 -38182
- package/client/kdk.client.map.min.css +0 -1
- package/client/kdk.client.map.min.js +0 -27032
- package/client/kdk.client.min.css +0 -1
- package/client/kdk.client.min.js +0 -29074
- package/client/schemas/capture.create.json +0 -132
- package/client/schemas/catalog.update.json +0 -44
- package/client/schemas/messages.update.json +0 -16
- package/client/schemas/projects.create.json +0 -52
- package/client/schemas/projects.update.json +0 -52
- package/client/schemas/settings.update.json +0 -286
- package/client/schemas/tags.update.json +0 -35
- package/client/schemas/users.update-profile.json +0 -34
- package/core/client/components/account/KAccount.vue +0 -68
- package/core/client/components/account/KDeleteAccountManager.vue +0 -62
- package/core/client/components/account/KEmailManager.vue +0 -128
- package/core/client/components/account/KPasswordManager.vue +0 -90
- package/core/client/components/account/KVerifyEmailManager.vue +0 -105
- package/core/client/components/collection/KColumn.vue +0 -227
- package/core/client/components/collection/KHistory.vue +0 -113
- package/core/client/components/collection/KHistoryEntry.vue +0 -109
- package/coverage/tmp/coverage-222524-1765963609350-0.json +0 -1
- package/coverage/tmp/coverage-222536-1765963609335-0.json +0 -1
- package/coverage/tmp/coverage-222547-1765963609324-0.json +0 -1
- package/coverage/tmp/coverage-222559-1765963609309-0.json +0 -1
- package/scripts/kash/LICENSE +0 -21
- package/test/api/core/test-log-2025-07-31.log +0 -15
- package/test/api/core/test-log-2025-10-03.log +0 -18
- package/test/api/core/test-log-2025-11-10.log +0 -0
- package/test/api/core/test-log-2025-11-12.log +0 -117
- package/test/api/core/test-log-2025-11-27.log +0 -0
- package/test/api/core/test-log-2025-11-28.log +0 -17
- package/test/api/core/test-log-2025-12-09.log +0 -148
- package/test/api/core/test-log-2025-12-17.log +0 -58
- package/test/api/core/test-log-2026-01-29.log +0 -17
- package/test/api/map/test-log-2025-07-23.log +0 -1
- package/test/api/map/test-log-2025-11-28.log +0 -33
- package/test/api/map/test-log-2025-12-10.log +0 -2
- package/test/api/map/test-log-2026-01-06.log +0 -26
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-card class="q-py-sm no-shadow">
|
|
3
|
-
<!-- Sections -->
|
|
4
|
-
<q-expansion-item
|
|
5
|
-
v-if="isVerified"
|
|
6
|
-
:label="$t('KVerifyEmailManager.TITLE')"
|
|
7
|
-
group="account"
|
|
8
|
-
class="bg-grey-2"
|
|
9
|
-
header-class= 'text-red'
|
|
10
|
-
id="verify-email-manager"
|
|
11
|
-
default-opened
|
|
12
|
-
>
|
|
13
|
-
<KVerifyEmailManager notifierEmail="email-notifications@kalisio.com" />
|
|
14
|
-
</q-expansion-item>
|
|
15
|
-
<template v-for="section in sections" :key="section.title">
|
|
16
|
-
<q-expansion-item
|
|
17
|
-
:label="$tie(section.title)"
|
|
18
|
-
group="account"
|
|
19
|
-
class="bg-grey-2"
|
|
20
|
-
:id="section.id"
|
|
21
|
-
>
|
|
22
|
-
<component :is="section.instance" v-bind="section" />
|
|
23
|
-
</q-expansion-item>
|
|
24
|
-
</template>
|
|
25
|
-
<!-- Deletion -->
|
|
26
|
-
<q-expansion-item
|
|
27
|
-
v-if="deletable"
|
|
28
|
-
:label="$t('KDeleteAccountManager.TITLE')"
|
|
29
|
-
group="account"
|
|
30
|
-
class="bg-grey-2"
|
|
31
|
-
id="delete-account-manager"
|
|
32
|
-
>
|
|
33
|
-
<KDeleteAccountManager />
|
|
34
|
-
</q-expansion-item>
|
|
35
|
-
</q-card>
|
|
36
|
-
</template>
|
|
37
|
-
|
|
38
|
-
<script setup>
|
|
39
|
-
import _ from 'lodash'
|
|
40
|
-
import config from 'config'
|
|
41
|
-
import { ref, onMounted } from 'vue'
|
|
42
|
-
import { Store, utils, Events } from '../..'
|
|
43
|
-
import KVerifyEmailManager from './KVerifyEmailManager.vue'
|
|
44
|
-
import KDeleteAccountManager from './KDeleteAccountManager.vue'
|
|
45
|
-
|
|
46
|
-
// Data
|
|
47
|
-
const isVerified = ref(false)
|
|
48
|
-
const deletable = ref(true)
|
|
49
|
-
const sections = ref([])
|
|
50
|
-
const User = Store.get('user')
|
|
51
|
-
|
|
52
|
-
// Make store react to external changes to update verify email section
|
|
53
|
-
Events.on('user-changed', (path, value) => {
|
|
54
|
-
if (_.has(value, 'isVerified')) isVerified.value = !value.isVerified
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
// Hooks
|
|
58
|
-
onMounted(async () => {
|
|
59
|
-
deletable.value = _.get(config, 'account.deletable', true)
|
|
60
|
-
if (_.has(User, 'isVerified')) isVerified.value = !User.isVerified
|
|
61
|
-
const confSections = _.cloneDeep(_.get(config, 'account.sections', []))
|
|
62
|
-
for (let i = 0; i < confSections.length; ++i) {
|
|
63
|
-
const section = confSections[i]
|
|
64
|
-
section.instance = utils.loadComponent(section.component)
|
|
65
|
-
}
|
|
66
|
-
sections.value = confSections
|
|
67
|
-
})
|
|
68
|
-
</script>
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="q-pa-md row justify-between items-center no-wrap bg-white">
|
|
3
|
-
<span>{{ $t('KDeleteAccountManager.QUESTION') }}</span>
|
|
4
|
-
<KAction
|
|
5
|
-
id="delete-account"
|
|
6
|
-
label="DELETE"
|
|
7
|
-
color="negative"
|
|
8
|
-
renderer= 'form-button'
|
|
9
|
-
outline
|
|
10
|
-
:closePopup="true"
|
|
11
|
-
:handler="onDelete"
|
|
12
|
-
/>
|
|
13
|
-
</div>
|
|
14
|
-
</template>
|
|
15
|
-
|
|
16
|
-
<script setup>
|
|
17
|
-
import _ from 'lodash'
|
|
18
|
-
import { useRouter } from 'vue-router'
|
|
19
|
-
import { Dialog } from 'quasar'
|
|
20
|
-
import { Store, i18n, api } from '../..'
|
|
21
|
-
import KAction from '../action/KAction.vue'
|
|
22
|
-
|
|
23
|
-
// Data
|
|
24
|
-
const router = useRouter()
|
|
25
|
-
const User = Store.get('user')
|
|
26
|
-
|
|
27
|
-
// Function
|
|
28
|
-
async function onDelete () {
|
|
29
|
-
const name = _.get(User, 'profile.name')
|
|
30
|
-
Dialog.create({
|
|
31
|
-
title: i18n.t('KDeleteAccountManager.CONFIRMATION_TITLE'),
|
|
32
|
-
message: i18n.t('KDeleteAccountManager.CONFIRMATION'),
|
|
33
|
-
html: true,
|
|
34
|
-
prompt: {
|
|
35
|
-
model: '',
|
|
36
|
-
type: 'text',
|
|
37
|
-
isValid: val => val === name
|
|
38
|
-
},
|
|
39
|
-
persistent: true,
|
|
40
|
-
ok: {
|
|
41
|
-
label: i18n.t('OK'),
|
|
42
|
-
flat: true
|
|
43
|
-
},
|
|
44
|
-
cancel: {
|
|
45
|
-
label: i18n.t('CANCEL'),
|
|
46
|
-
flat: true
|
|
47
|
-
}
|
|
48
|
-
}).onOk(async (data) => {
|
|
49
|
-
try {
|
|
50
|
-
await api.getService('users').remove(User._id)
|
|
51
|
-
// Redirecting to logout will logout the user but logout an inexsiting user will raise an error
|
|
52
|
-
// We prefer to clean the token manually instead
|
|
53
|
-
// router.push({ name: 'logout' })
|
|
54
|
-
Store.set('user', null)
|
|
55
|
-
await api.authentication.removeAccessToken()
|
|
56
|
-
router.push({ name: 'login' })
|
|
57
|
-
} catch (error) {
|
|
58
|
-
throw new Error(`[KDK] Cannot delete ${name} account: ${error}`)
|
|
59
|
-
}
|
|
60
|
-
})
|
|
61
|
-
}
|
|
62
|
-
</script>
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-card class="q-pa-md">
|
|
3
|
-
<!-- Form -->
|
|
4
|
-
<q-card-section>
|
|
5
|
-
<KForm
|
|
6
|
-
ref="modifyEmailFormRef"
|
|
7
|
-
:schema="modifyEmailSchema"
|
|
8
|
-
/>
|
|
9
|
-
</q-card-section>
|
|
10
|
-
<!-- Actions -->
|
|
11
|
-
<q-card-actions align="right">
|
|
12
|
-
<KAction
|
|
13
|
-
id="modify-email"
|
|
14
|
-
label="APPLY"
|
|
15
|
-
renderer="form-button"
|
|
16
|
-
outline
|
|
17
|
-
:loading="processing"
|
|
18
|
-
:handler="apply"
|
|
19
|
-
/>
|
|
20
|
-
</q-card-actions>
|
|
21
|
-
<q-dialog v-model="dialog" persistent>
|
|
22
|
-
<q-card>
|
|
23
|
-
<!-- Form -->
|
|
24
|
-
<q-card-section align="center">
|
|
25
|
-
<KForm
|
|
26
|
-
ref="validateEmailFormRef"
|
|
27
|
-
:schema="validateEmailSchema"
|
|
28
|
-
/>
|
|
29
|
-
</q-card-section>
|
|
30
|
-
<!-- Actions -->
|
|
31
|
-
<q-card-actions align="center">
|
|
32
|
-
<KAction
|
|
33
|
-
id="validate-email"
|
|
34
|
-
label="APPLY"
|
|
35
|
-
renderer="form-button"
|
|
36
|
-
:loading="processing"
|
|
37
|
-
:handler="applyChanges"
|
|
38
|
-
/>
|
|
39
|
-
</q-card-actions>
|
|
40
|
-
</q-card>
|
|
41
|
-
</q-dialog>
|
|
42
|
-
</q-card>
|
|
43
|
-
</template>
|
|
44
|
-
|
|
45
|
-
<script setup>
|
|
46
|
-
import { ref } from 'vue'
|
|
47
|
-
import { Notify } from 'quasar'
|
|
48
|
-
import { Store, utils, i18n } from '../..'
|
|
49
|
-
|
|
50
|
-
// Data
|
|
51
|
-
const User = Store.get('user')
|
|
52
|
-
const modifyEmailFormRef = ref(null)
|
|
53
|
-
const validateEmailFormRef = ref(null)
|
|
54
|
-
const dialog = ref(false)
|
|
55
|
-
const processing = ref(false)
|
|
56
|
-
const modifyEmailSchema = ref({
|
|
57
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
58
|
-
$id: 'http://kalisio.xyz/schemas/modify-email-manager#',
|
|
59
|
-
title: 'Modify email form',
|
|
60
|
-
type: 'object',
|
|
61
|
-
properties: {
|
|
62
|
-
password: {
|
|
63
|
-
type: 'string',
|
|
64
|
-
format: 'password',
|
|
65
|
-
field: {
|
|
66
|
-
component: 'form/KPasswordField',
|
|
67
|
-
label: 'KEmailManager.PASSWORD_FIELD_LABEL'
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
email: {
|
|
71
|
-
type: 'string',
|
|
72
|
-
format: 'email',
|
|
73
|
-
field: {
|
|
74
|
-
component: 'form/KEmailField',
|
|
75
|
-
label: 'KEmailManager.EMAIL_FIELD_LABEL'
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
required: ['email', 'password']
|
|
80
|
-
})
|
|
81
|
-
const validateEmailSchema = ref({
|
|
82
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
83
|
-
$id: 'http://kalisio.xyz/schemas/verify-email-manager#',
|
|
84
|
-
title: 'Verify email form',
|
|
85
|
-
type: 'object',
|
|
86
|
-
properties: {
|
|
87
|
-
token: {
|
|
88
|
-
type: 'string',
|
|
89
|
-
minLength: 6,
|
|
90
|
-
maxLength: 6,
|
|
91
|
-
tokenLength: 6,
|
|
92
|
-
field: {
|
|
93
|
-
component: 'form/KTokenField',
|
|
94
|
-
label: 'KEmailManager.TOKEN_LABEL'
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
required: ['token']
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
// Functions
|
|
102
|
-
async function apply () {
|
|
103
|
-
const { isValid, values } = modifyEmailFormRef.value.validate()
|
|
104
|
-
if (!isValid) return false
|
|
105
|
-
try {
|
|
106
|
-
processing.value = true
|
|
107
|
-
await utils.sendChangeIdentity(User.email, values.email, values.password)
|
|
108
|
-
dialog.value = true
|
|
109
|
-
processing.value = false
|
|
110
|
-
} catch (error) {
|
|
111
|
-
processing.value = false
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async function applyChanges () {
|
|
115
|
-
const { isValid, values } = validateEmailFormRef.value.validate()
|
|
116
|
-
if (!isValid) return
|
|
117
|
-
try {
|
|
118
|
-
processing.value = true
|
|
119
|
-
await utils.verifySignup(values.token, User.email)
|
|
120
|
-
processing.value = false
|
|
121
|
-
Notify.create({ type: 'positive', message: i18n.t('KEmailManager.EMAIL_CHANGED') })
|
|
122
|
-
} catch (error) {
|
|
123
|
-
processing.value = false
|
|
124
|
-
Notify.create({ type: 'negative', message: i18n.t('KEmailManager.ERROR_MESSAGE') })
|
|
125
|
-
}
|
|
126
|
-
dialog.value = false
|
|
127
|
-
}
|
|
128
|
-
</script>
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-card class="q-pa-md">
|
|
3
|
-
<!-- Form -->
|
|
4
|
-
<q-card-section>
|
|
5
|
-
<KForm
|
|
6
|
-
ref="formRef"
|
|
7
|
-
:schema="schema"
|
|
8
|
-
/>
|
|
9
|
-
</q-card-section>
|
|
10
|
-
<!-- Actions -->
|
|
11
|
-
<q-card-actions align="right">
|
|
12
|
-
<KAction
|
|
13
|
-
id="change-password"
|
|
14
|
-
label="APPLY"
|
|
15
|
-
renderer="form-button"
|
|
16
|
-
outline
|
|
17
|
-
:loading="processing"
|
|
18
|
-
:handler="apply"
|
|
19
|
-
/>
|
|
20
|
-
</q-card-actions>
|
|
21
|
-
</q-card>
|
|
22
|
-
</template>
|
|
23
|
-
|
|
24
|
-
<script setup>
|
|
25
|
-
import { ref } from 'vue'
|
|
26
|
-
import { Notify } from 'quasar'
|
|
27
|
-
import { Store, i18n, utils } from '../..'
|
|
28
|
-
import KForm from '../form/KForm.vue'
|
|
29
|
-
import KAction from '../action/KAction.vue'
|
|
30
|
-
|
|
31
|
-
// Data
|
|
32
|
-
const formRef = ref(null)
|
|
33
|
-
const User = Store.get('user')
|
|
34
|
-
const schema = ref({
|
|
35
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
36
|
-
$id: 'http://kalisio.xyz/schemas/password-manager.json#',
|
|
37
|
-
title: 'Change Password form',
|
|
38
|
-
type: 'object',
|
|
39
|
-
properties: {
|
|
40
|
-
oldPassword: {
|
|
41
|
-
type: 'string',
|
|
42
|
-
format: 'password',
|
|
43
|
-
field: {
|
|
44
|
-
component: 'form/KPasswordField',
|
|
45
|
-
label: 'KPasswordManager.OLD_PASSWORD_FIELD_LABEL'
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
password: {
|
|
49
|
-
type: 'string',
|
|
50
|
-
format: 'password',
|
|
51
|
-
field: {
|
|
52
|
-
component: 'form/KPasswordField',
|
|
53
|
-
label: 'KPasswordManager.PASSWORD_FIELD_LABEL'
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
confirmPassword: {
|
|
57
|
-
type: 'string',
|
|
58
|
-
format: 'password',
|
|
59
|
-
const: {
|
|
60
|
-
$data: '1/password'
|
|
61
|
-
},
|
|
62
|
-
field: {
|
|
63
|
-
component: 'form/KPasswordField',
|
|
64
|
-
label: 'KPasswordManager.CONFIRM_PASSWORD_FIELD_LABEL'
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
required: ['oldPassword', 'password', 'confirmPassword']
|
|
69
|
-
})
|
|
70
|
-
const processing = ref(false)
|
|
71
|
-
|
|
72
|
-
// Functions
|
|
73
|
-
async function apply () {
|
|
74
|
-
const { isValid, values } = formRef.value.validate()
|
|
75
|
-
if (!isValid) return false
|
|
76
|
-
try {
|
|
77
|
-
processing.value = true
|
|
78
|
-
await utils.changePassword(User.email, values.oldPassword, values.password)
|
|
79
|
-
processing.value = false
|
|
80
|
-
Notify.create({
|
|
81
|
-
type: 'positive',
|
|
82
|
-
message: i18n.t('KPasswordManager.PASSWORD_CHANGED')
|
|
83
|
-
})
|
|
84
|
-
} catch (error) {
|
|
85
|
-
processing.value = false
|
|
86
|
-
return false
|
|
87
|
-
}
|
|
88
|
-
return true
|
|
89
|
-
}
|
|
90
|
-
</script>
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<!-- Helper -->
|
|
3
|
-
<q-expansion-item icon="las la-question" :label="$t('KVerifyEmailManager.HELP_LABEL')">
|
|
4
|
-
<div class="q-pa-md">
|
|
5
|
-
<i18n-t class="text-body2" keypath="KVerifyEmailManager.HELP_TEXT" tag="p" scope="global" />
|
|
6
|
-
</div>
|
|
7
|
-
</q-expansion-item>
|
|
8
|
-
<q-expansion-item icon="las la-question" :label="$t('KVerifyEmailManager.HELP_EMAIL_LABEL')">
|
|
9
|
-
<div class="q-pa-md">
|
|
10
|
-
<i18n-t class="text-body2" keypath="KVerifyEmailManager.HELP_EMAIL_TEXT" tag="p" scope="global">
|
|
11
|
-
<template v-slot:email>
|
|
12
|
-
<span class="text-weight-bold">{{ notifierEmail }}</span>
|
|
13
|
-
</template>
|
|
14
|
-
</i18n-t>
|
|
15
|
-
</div>
|
|
16
|
-
</q-expansion-item>
|
|
17
|
-
<q-card>
|
|
18
|
-
<!-- Form -->
|
|
19
|
-
<q-card-section>
|
|
20
|
-
<KForm
|
|
21
|
-
ref="formRef"
|
|
22
|
-
:schema="schema"
|
|
23
|
-
/>
|
|
24
|
-
</q-card-section>
|
|
25
|
-
<!-- Actions -->
|
|
26
|
-
<q-card-actions align="center">
|
|
27
|
-
<KAction
|
|
28
|
-
id="resend-verify-signup"
|
|
29
|
-
label="KVerifyEmailManager.ACTION"
|
|
30
|
-
renderer="form-button"
|
|
31
|
-
outline
|
|
32
|
-
:handler="resendVerifySignup"
|
|
33
|
-
/>
|
|
34
|
-
<KAction
|
|
35
|
-
id="verify-email"
|
|
36
|
-
label="APPLY"
|
|
37
|
-
renderer="form-button"
|
|
38
|
-
:loading="processing"
|
|
39
|
-
:handler="apply"
|
|
40
|
-
/>
|
|
41
|
-
</q-card-actions>
|
|
42
|
-
</q-card>
|
|
43
|
-
</template>
|
|
44
|
-
|
|
45
|
-
<script setup>
|
|
46
|
-
import { ref } from 'vue'
|
|
47
|
-
import { Notify } from 'quasar'
|
|
48
|
-
import { Store, i18n, utils } from '../..'
|
|
49
|
-
|
|
50
|
-
// Props
|
|
51
|
-
defineProps({
|
|
52
|
-
notifierEmail: {
|
|
53
|
-
type: String,
|
|
54
|
-
default: true
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
// Data
|
|
59
|
-
const User = Store.get('user')
|
|
60
|
-
const formRef = ref(null)
|
|
61
|
-
const processing = ref(false)
|
|
62
|
-
const schema = ref({
|
|
63
|
-
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
64
|
-
$id: 'http://kalisio.xyz/schemas/verify-email-manager#',
|
|
65
|
-
title: 'Verify email form',
|
|
66
|
-
type: 'object',
|
|
67
|
-
properties: {
|
|
68
|
-
token: {
|
|
69
|
-
type: 'string',
|
|
70
|
-
minLength: 6,
|
|
71
|
-
maxLength: 6,
|
|
72
|
-
tokenLength: 6,
|
|
73
|
-
field: {
|
|
74
|
-
component: 'form/KTokenField',
|
|
75
|
-
label: 'KVerifyEmailManager.TOKEN_LABEL'
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
required: ['token']
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
// Functions
|
|
83
|
-
async function apply () {
|
|
84
|
-
const { isValid, values } = formRef.value.validate()
|
|
85
|
-
if (!isValid) return
|
|
86
|
-
try {
|
|
87
|
-
processing.value = true
|
|
88
|
-
await utils.verifySignup(values.token, User.email)
|
|
89
|
-
processing.value = false
|
|
90
|
-
Notify.create({
|
|
91
|
-
type: 'positive',
|
|
92
|
-
message: i18n.t('KVerifyEmailManager.EMAIL_VERIFIED')
|
|
93
|
-
})
|
|
94
|
-
} catch (error) {
|
|
95
|
-
processing.value = false
|
|
96
|
-
Notify.create({
|
|
97
|
-
type: 'negative',
|
|
98
|
-
message: i18n.t('KVerifyEmailManager.ERROR_MESSAGE')
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function resendVerifySignup () {
|
|
103
|
-
utils.resendVerifySignup(User.email)
|
|
104
|
-
}
|
|
105
|
-
</script>
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="column full-width">
|
|
3
|
-
<!--
|
|
4
|
-
Header
|
|
5
|
-
-->
|
|
6
|
-
<div class="full-width">
|
|
7
|
-
<q-resize-observer @resize="onHeaderResized" />
|
|
8
|
-
<KPanel
|
|
9
|
-
id="header"
|
|
10
|
-
:content="header"
|
|
11
|
-
class="no-wrap"
|
|
12
|
-
/>
|
|
13
|
-
</div>
|
|
14
|
-
<!--
|
|
15
|
-
Items
|
|
16
|
-
-->
|
|
17
|
-
<div v-if="items.length > 0">
|
|
18
|
-
<KScrollArea
|
|
19
|
-
ref="scrollAreaRef"
|
|
20
|
-
:max-height="scrollHeight"
|
|
21
|
-
@scrolled="onScrolled"
|
|
22
|
-
>
|
|
23
|
-
<div
|
|
24
|
-
class="full-width column"
|
|
25
|
-
:class="{
|
|
26
|
-
'q-gutter-y-xs': gutter && dense,
|
|
27
|
-
'q-gutter-y-sm': gutter && !dense
|
|
28
|
-
}"
|
|
29
|
-
:style="{ maxWidth: `${width}px` }"
|
|
30
|
-
>
|
|
31
|
-
<template v-for="item in items" :key="item._id">
|
|
32
|
-
<component
|
|
33
|
-
:id="item._id"
|
|
34
|
-
:service="service"
|
|
35
|
-
:item="item"
|
|
36
|
-
:is="rendererComponent"
|
|
37
|
-
v-bind="renderer"
|
|
38
|
-
@item-selected="onItemSelected"
|
|
39
|
-
:class="{
|
|
40
|
-
'q-pr-xs': hasScrollArea && dense,
|
|
41
|
-
'q-pr-sm': hasScrollArea && !dense
|
|
42
|
-
}"
|
|
43
|
-
/>
|
|
44
|
-
</template>
|
|
45
|
-
</div>
|
|
46
|
-
</KScrollArea>
|
|
47
|
-
<div
|
|
48
|
-
v-if="hasScrollAction"
|
|
49
|
-
class="row justify-center"
|
|
50
|
-
>
|
|
51
|
-
<KAction
|
|
52
|
-
id="scroll-action"
|
|
53
|
-
icon="las la-angle-double-down"
|
|
54
|
-
color="accent"
|
|
55
|
-
size="0.8rem"
|
|
56
|
-
:handler="scrollDown"
|
|
57
|
-
/>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
<div v-else>
|
|
61
|
-
<slot name="empty-column">
|
|
62
|
-
<div class="row justify-center">
|
|
63
|
-
<KStamp
|
|
64
|
-
icon="las la-exclamation-circle"
|
|
65
|
-
icon-size="1.6rem"
|
|
66
|
-
:text="$t('KColumn.EMPTY_COLUMN')"
|
|
67
|
-
direction="horizontal"
|
|
68
|
-
class="q-pt-lg"
|
|
69
|
-
/>
|
|
70
|
-
</div>
|
|
71
|
-
</slot>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
</template>
|
|
75
|
-
|
|
76
|
-
<script setup>
|
|
77
|
-
import _ from 'lodash'
|
|
78
|
-
import { ref, computed, watch, toRefs, onBeforeMount, onBeforeUnmount } from 'vue'
|
|
79
|
-
import { Events } from '../../events.js'
|
|
80
|
-
import KAction from '../action/KAction.vue'
|
|
81
|
-
import KScrollArea from '../KScrollArea.vue'
|
|
82
|
-
import KStamp from '../KStamp.vue'
|
|
83
|
-
import { useCollection } from '../../composables'
|
|
84
|
-
import { loadComponent } from '../../utils/index.js'
|
|
85
|
-
|
|
86
|
-
const emit = defineEmits(['selection-changed', 'collection-refreshed'])
|
|
87
|
-
|
|
88
|
-
// Props
|
|
89
|
-
const props = defineProps({
|
|
90
|
-
name: {
|
|
91
|
-
type: String,
|
|
92
|
-
default: undefined
|
|
93
|
-
},
|
|
94
|
-
header: {
|
|
95
|
-
type: Array,
|
|
96
|
-
default: () => null
|
|
97
|
-
},
|
|
98
|
-
renderer: {
|
|
99
|
-
type: Object,
|
|
100
|
-
default: () => {
|
|
101
|
-
return {
|
|
102
|
-
component: 'collection/KCard'
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
width: {
|
|
107
|
-
type: Number,
|
|
108
|
-
default: 200
|
|
109
|
-
},
|
|
110
|
-
height: {
|
|
111
|
-
type: Number,
|
|
112
|
-
default: 300
|
|
113
|
-
},
|
|
114
|
-
gutter: {
|
|
115
|
-
type: Boolean,
|
|
116
|
-
default: true
|
|
117
|
-
},
|
|
118
|
-
dense: {
|
|
119
|
-
type: Boolean,
|
|
120
|
-
default: false
|
|
121
|
-
},
|
|
122
|
-
service: {
|
|
123
|
-
type: String,
|
|
124
|
-
required: true
|
|
125
|
-
},
|
|
126
|
-
baseQuery: {
|
|
127
|
-
type: Object,
|
|
128
|
-
default: () => {}
|
|
129
|
-
},
|
|
130
|
-
filterQuery: {
|
|
131
|
-
type: Object,
|
|
132
|
-
default: () => {}
|
|
133
|
-
},
|
|
134
|
-
listStrategy: {
|
|
135
|
-
type: String,
|
|
136
|
-
default: 'smart'
|
|
137
|
-
},
|
|
138
|
-
nbItemsPerPage: {
|
|
139
|
-
type: Number,
|
|
140
|
-
default: 12
|
|
141
|
-
},
|
|
142
|
-
processor: {
|
|
143
|
-
type: Function,
|
|
144
|
-
default: undefined
|
|
145
|
-
}
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
// Data
|
|
149
|
-
const scrollAreaRef = ref(null)
|
|
150
|
-
const hasScrollArea = ref(false)
|
|
151
|
-
const hasScrollAction = ref(false)
|
|
152
|
-
const headerHeight = ref(0)
|
|
153
|
-
// Configuration
|
|
154
|
-
const scrollOffset = 350
|
|
155
|
-
const scrollDuration = 250
|
|
156
|
-
|
|
157
|
-
// Computed
|
|
158
|
-
const rendererComponent = computed(() => loadComponent(props.renderer.component))
|
|
159
|
-
const scrollHeight = computed(() => props.height - headerHeight.value - (hasScrollAction.value ? 24 : 0))
|
|
160
|
-
|
|
161
|
-
// Always use append mode for columns
|
|
162
|
-
const { items, nbTotalItems, nbPages, currentPage, refreshCollection, resetCollection } =
|
|
163
|
-
useCollection(Object.assign({ appendItems: ref(true) }, toRefs(props)))
|
|
164
|
-
|
|
165
|
-
// Functions
|
|
166
|
-
function onHeaderResized (size) {
|
|
167
|
-
headerHeight.value = size.height
|
|
168
|
-
}
|
|
169
|
-
function onScrolled (info) {
|
|
170
|
-
hasScrollArea.value = info.verticalSize > scrollHeight.value
|
|
171
|
-
if (items.value.length < nbTotalItems.value) {
|
|
172
|
-
if (info.verticalPercentage === 1) {
|
|
173
|
-
if (items.value.length === currentPage.value * props.nbItemsPerPage) currentPage.value++
|
|
174
|
-
refreshCollection()
|
|
175
|
-
hasScrollAction.value = true
|
|
176
|
-
} else {
|
|
177
|
-
hasScrollAction.value = hasScrollArea.value
|
|
178
|
-
}
|
|
179
|
-
} else {
|
|
180
|
-
if (info.verticalPercentage === 1) {
|
|
181
|
-
hasScrollAction.value = false
|
|
182
|
-
} else {
|
|
183
|
-
hasScrollAction.value = hasScrollArea.value
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
function scrollDown () {
|
|
188
|
-
const position = scrollAreaRef.value.getScrollPosition('vertical')
|
|
189
|
-
scrollAreaRef.value.setScrollPosition('vertical', position + scrollOffset, scrollDuration)
|
|
190
|
-
}
|
|
191
|
-
function onItemSelected (item, section) {
|
|
192
|
-
emit('selection-changed', item, section)
|
|
193
|
-
}
|
|
194
|
-
function onCollectionRefreshed () {
|
|
195
|
-
emit('collection-refreshed', items.value)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Watch
|
|
199
|
-
watch(items, () => {
|
|
200
|
-
// On reset, reset as well scroll area
|
|
201
|
-
if (_.isEmpty(items.value) && scrollAreaRef.value) scrollAreaRef.value.setScrollPosition('vertical', 0)
|
|
202
|
-
// Emit events so that embbeding components can be aware of it
|
|
203
|
-
onCollectionRefreshed()
|
|
204
|
-
})
|
|
205
|
-
|
|
206
|
-
// Hooks
|
|
207
|
-
onBeforeMount(() => {
|
|
208
|
-
refreshCollection()
|
|
209
|
-
// Whenever the user abilities are updated, update collection as well
|
|
210
|
-
Events.on('user-abilities-changed', resetCollection)
|
|
211
|
-
})
|
|
212
|
-
|
|
213
|
-
onBeforeUnmount(() => {
|
|
214
|
-
Events.off('user-abilities-changed', resetCollection)
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
// Expose
|
|
218
|
-
defineExpose({
|
|
219
|
-
name: props.name,
|
|
220
|
-
items,
|
|
221
|
-
nbTotalItems,
|
|
222
|
-
nbPages,
|
|
223
|
-
currentPage,
|
|
224
|
-
refreshCollection,
|
|
225
|
-
resetCollection
|
|
226
|
-
})
|
|
227
|
-
</script>
|