@kalisio/kdk 2.0.1 → 2.1.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/.codeclimate.yml +0 -1
- package/.travis.test.sh +3 -0
- package/core/api/application.js +13 -9
- package/core/api/db.js +34 -30
- package/core/api/hooks/hooks.authentication.js +11 -0
- package/core/api/hooks/hooks.authorisations.js +7 -3
- package/core/api/hooks/hooks.model.js +32 -43
- package/core/api/hooks/hooks.organisations.js +26 -116
- package/core/api/hooks/{hooks.devices.js → hooks.push.js} +22 -10
- package/core/api/hooks/hooks.query.js +0 -5
- package/core/api/hooks/hooks.schemas.js +23 -3
- package/core/api/hooks/hooks.users.js +15 -22
- package/core/api/hooks/index.js +1 -4
- package/core/api/services/account/account.hooks.js +3 -3
- package/core/api/services/account/account.service.js +5 -6
- package/core/api/services/groups/groups.hooks.js +2 -4
- package/core/api/services/index.js +11 -16
- package/core/api/services/{devices/devices.hooks.js → push/push.hooks.js} +5 -5
- package/core/api/services/push/push.service.js +12 -0
- package/core/api/services/tags/tags.hooks.js +6 -20
- package/core/api/services/users/users.hooks.js +12 -13
- package/core/api/utils.js +11 -0
- package/core/client/api.js +6 -0
- package/core/client/capabilities.js +8 -12
- package/core/client/components/KAction.vue +10 -3
- package/core/client/components/KAvatar.vue +31 -35
- package/core/client/components/KChipsPane.vue +23 -0
- package/core/client/components/account/KAccount.vue +68 -0
- package/core/client/components/account/KDeleteAccountManager.vue +62 -0
- package/core/client/components/account/KEmailManager.vue +128 -0
- package/core/client/components/account/KPasswordManager.vue +90 -0
- package/core/client/components/account/KProfile.vue +109 -0
- package/core/client/components/account/KResetPassword.vue +100 -111
- package/core/client/components/account/KSendResetPassword.vue +71 -87
- package/core/client/components/account/KSubscription.vue +71 -0
- package/core/client/components/account/KSubscriptionsManager.vue +46 -0
- package/core/client/components/account/KVerifyEmailManager.vue +105 -0
- package/core/client/components/account/index.js +4 -2
- package/core/client/components/app/KAbout.vue +27 -14
- package/core/client/components/app/KPlatform.vue +2 -2
- package/core/client/components/app/KWelcome.vue +71 -45
- package/core/client/components/collection/KBoard.vue +50 -40
- package/core/client/components/collection/KCard.vue +16 -7
- package/core/client/components/collection/KColumn.vue +146 -111
- package/core/client/components/collection/KGrid.vue +77 -58
- package/core/client/components/collection/KHistory.vue +19 -3
- package/core/client/components/collection/KItem.vue +5 -1
- package/core/client/components/collection/KList.vue +80 -56
- package/core/client/components/collection/KTable.vue +181 -142
- package/core/client/components/editor/KEditor.vue +10 -3
- package/core/client/components/form/KFileField.vue +22 -8
- package/core/client/components/form/KForm.vue +27 -14
- package/core/client/components/form/KItemField.vue +2 -2
- package/core/client/components/form/KOptionsField.vue +11 -2
- package/core/client/components/form/KSelectField.vue +12 -3
- package/core/client/components/form/KTextField.vue +6 -0
- package/core/client/components/form/KTokenField.vue +80 -0
- package/core/client/components/layout/KOpener.vue +8 -8
- package/core/client/components/layout/KPage.vue +8 -4
- package/core/client/components/layout/KWindow.vue +172 -141
- package/core/client/components/media/KMediaBrowser.vue +28 -12
- package/core/client/components/media/KShape.vue +58 -56
- package/core/client/components/menu/KMenu.vue +22 -13
- package/core/client/components/menu/KRadialFab.vue +83 -56
- package/core/client/components/menu/KRadialFabItem.vue +39 -19
- package/core/client/components/screen/KLoginScreen.vue +0 -17
- package/core/client/components/screen/KScreen.vue +3 -3
- package/core/client/components/screen/KScreenFooter.vue +0 -3
- package/core/client/components/team/KAddMember.vue +1 -1
- package/core/client/components/team/KAddTag.vue +121 -0
- package/core/client/components/team/KMemberCard.vue +42 -13
- package/core/client/components/team/KMembersActivity.vue +9 -3
- package/core/client/components/team/KTagCard.vue +16 -1
- package/core/client/composables/collection.js +181 -0
- package/core/client/composables/index.js +2 -0
- package/core/client/composables/pwa.js +71 -0
- package/core/client/composables/session.js +6 -9
- package/core/client/composables/version.js +1 -22
- package/core/client/i18n/core_en.json +124 -153
- package/core/client/i18n/core_fr.json +124 -155
- package/core/client/index.js +37 -110
- package/core/client/layout.js +37 -14
- package/core/client/local-storage.js +4 -3
- package/core/client/mixins/mixin.account.js +9 -5
- package/core/client/mixins/mixin.base-editor.js +19 -3
- package/core/client/mixins/mixin.base-item.js +3 -3
- package/core/client/mixins/mixin.base-viewer.js +14 -0
- package/core/client/mixins/mixin.object-proxy.js +2 -21
- package/core/client/services/index.js +0 -1
- package/core/client/storage.js +19 -16
- package/core/client/theme.js +11 -5
- package/core/client/utils/index.js +5 -13
- package/core/client/utils/utils.account.js +47 -0
- package/core/client/utils/utils.colors.js +6 -2
- package/core/client/utils/utils.content.js +7 -5
- package/core/client/utils/utils.platform.js +1 -20
- package/core/client/utils/utils.push.js +53 -0
- package/core/client/utils/utils.pwa.js +63 -0
- package/core/client/utils/utils.session.js +27 -12
- package/core/common/permissions.js +12 -4
- package/core/common/schemas/tags.create.json +35 -0
- package/core/common/schemas/users.update-profile.json +1 -1
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/core/api/application.js.html +1849 -0
- package/coverage/core/api/authentication.js.html +694 -0
- package/coverage/core/api/db.js.html +763 -0
- package/coverage/core/api/hooks/hooks.account.js.html +169 -0
- package/coverage/core/api/hooks/hooks.authentication.js.html +274 -0
- package/coverage/core/api/hooks/hooks.authorisations.js.html +1213 -0
- package/coverage/core/api/hooks/hooks.groups.js.html +229 -0
- package/coverage/core/api/hooks/hooks.logger.js.html +163 -0
- package/coverage/core/api/hooks/hooks.model.js.html +994 -0
- package/coverage/core/api/hooks/hooks.organisations.js.html +553 -0
- package/coverage/core/api/hooks/hooks.push.js.html +232 -0
- package/coverage/core/api/hooks/hooks.query.js.html +838 -0
- package/coverage/core/api/hooks/hooks.schemas.js.html +304 -0
- package/coverage/core/api/hooks/hooks.service.js.html +319 -0
- package/coverage/core/api/hooks/hooks.storage.js.html +193 -0
- package/coverage/core/api/hooks/hooks.tags.js.html +850 -0
- package/coverage/core/api/hooks/hooks.users.js.html +826 -0
- package/coverage/core/api/hooks/index.html +296 -0
- package/coverage/core/api/hooks/index.js.html +121 -0
- package/coverage/core/api/index.html +191 -0
- package/coverage/core/api/index.js.html +148 -0
- package/coverage/core/api/marshall.js.html +355 -0
- package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/core/api/models/index.html +161 -0
- package/coverage/core/api/models/organisations.model.mongodb.js.html +94 -0
- package/coverage/core/api/models/tags.model.mongodb.js.html +115 -0
- package/coverage/core/api/models/users.model.mongodb.js.html +115 -0
- package/coverage/core/api/services/account/account.hooks.js.html +196 -0
- package/coverage/core/api/services/account/account.service.js.html +445 -0
- package/coverage/core/api/services/account/index.html +131 -0
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +502 -0
- package/coverage/core/api/services/authorisations/index.html +131 -0
- package/coverage/core/api/services/databases/databases.hooks.js.html +193 -0
- package/coverage/core/api/services/databases/databases.service.js.html +100 -0
- package/coverage/core/api/services/databases/index.html +131 -0
- package/coverage/core/api/services/groups/groups.hooks.js.html +178 -0
- package/coverage/core/api/services/groups/index.html +116 -0
- package/coverage/core/api/services/index.html +116 -0
- package/coverage/core/api/services/index.js.html +475 -0
- package/coverage/core/api/services/mailer/index.html +131 -0
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +190 -0
- package/coverage/core/api/services/mailer/mailer.service.js.html +118 -0
- package/coverage/core/api/services/organisations/index.html +131 -0
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +178 -0
- package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
- package/coverage/core/api/services/push/index.html +131 -0
- package/coverage/core/api/services/push/push.hooks.js.html +193 -0
- package/coverage/core/api/services/push/push.service.js.html +121 -0
- package/coverage/core/api/services/storage/index.html +131 -0
- package/coverage/core/api/services/storage/storage.hooks.js.html +190 -0
- package/coverage/core/api/services/storage/storage.service.js.html +172 -0
- package/coverage/core/api/services/tags/index.html +116 -0
- package/coverage/core/api/services/tags/tags.hooks.js.html +178 -0
- package/coverage/core/api/services/users/index.html +116 -0
- package/coverage/core/api/services/users/users.hooks.js.html +313 -0
- package/coverage/core/api/utils.js.html +118 -0
- package/coverage/core/common/errors.js.html +88 -0
- package/coverage/core/common/index.html +176 -0
- package/coverage/core/common/index.js.html +115 -0
- package/coverage/core/common/permissions.js.html +1039 -0
- package/coverage/core/common/schema.js.html +190 -0
- package/coverage/core/common/utils.js.html +220 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/core/api/application.js.html +1849 -0
- package/coverage/lcov-report/core/api/authentication.js.html +694 -0
- package/coverage/lcov-report/core/api/db.js.html +763 -0
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +169 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +274 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1213 -0
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +229 -0
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +163 -0
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +994 -0
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +553 -0
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +232 -0
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +838 -0
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +304 -0
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +319 -0
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +193 -0
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +850 -0
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +826 -0
- package/coverage/lcov-report/core/api/hooks/index.html +296 -0
- package/coverage/lcov-report/core/api/hooks/index.js.html +121 -0
- package/coverage/lcov-report/core/api/index.html +191 -0
- package/coverage/lcov-report/core/api/index.js.html +148 -0
- package/coverage/lcov-report/core/api/marshall.js.html +355 -0
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/lcov-report/core/api/models/index.html +161 -0
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +94 -0
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +115 -0
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +115 -0
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +196 -0
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +445 -0
- package/coverage/lcov-report/core/api/services/account/index.html +131 -0
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +502 -0
- package/coverage/lcov-report/core/api/services/authorisations/index.html +131 -0
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +193 -0
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +100 -0
- package/coverage/lcov-report/core/api/services/databases/index.html +131 -0
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/groups/index.html +116 -0
- package/coverage/lcov-report/core/api/services/index.html +116 -0
- package/coverage/lcov-report/core/api/services/index.js.html +475 -0
- package/coverage/lcov-report/core/api/services/mailer/index.html +131 -0
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +190 -0
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +118 -0
- package/coverage/lcov-report/core/api/services/organisations/index.html +131 -0
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
- package/coverage/lcov-report/core/api/services/push/index.html +131 -0
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +193 -0
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +121 -0
- package/coverage/lcov-report/core/api/services/storage/index.html +131 -0
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +190 -0
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +172 -0
- package/coverage/lcov-report/core/api/services/tags/index.html +116 -0
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +178 -0
- package/coverage/lcov-report/core/api/services/users/index.html +116 -0
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +313 -0
- package/coverage/lcov-report/core/api/utils.js.html +118 -0
- package/coverage/lcov-report/core/common/errors.js.html +88 -0
- package/coverage/lcov-report/core/common/index.html +176 -0
- package/coverage/lcov-report/core/common/index.js.html +115 -0
- package/coverage/lcov-report/core/common/permissions.js.html +1039 -0
- package/coverage/lcov-report/core/common/schema.js.html +190 -0
- package/coverage/lcov-report/core/common/utils.js.html +220 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +476 -0
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +340 -0
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +337 -0
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1168 -0
- package/coverage/lcov-report/map/api/hooks/index.html +161 -0
- package/coverage/lcov-report/map/api/hooks/index.js.html +94 -0
- package/coverage/lcov-report/map/api/index.html +131 -0
- package/coverage/lcov-report/map/api/index.js.html +139 -0
- package/coverage/lcov-report/map/api/marshall.js.html +178 -0
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +106 -0
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +127 -0
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +196 -0
- package/coverage/lcov-report/map/api/models/index.html +146 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +274 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +610 -0
- package/coverage/lcov-report/map/api/services/alerts/index.html +131 -0
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +313 -0
- package/coverage/lcov-report/map/api/services/catalog/index.html +116 -0
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1510 -0
- package/coverage/lcov-report/map/api/services/daptiles/index.html +116 -0
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +205 -0
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +241 -0
- package/coverage/lcov-report/map/api/services/features/index.html +131 -0
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +322 -0
- package/coverage/lcov-report/map/api/services/geocoder/index.html +131 -0
- package/coverage/lcov-report/map/api/services/index.html +116 -0
- package/coverage/lcov-report/map/api/services/index.js.html +769 -0
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +466 -0
- package/coverage/lcov-report/map/common/errors.js.html +94 -0
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +535 -0
- package/coverage/lcov-report/map/common/grid.js.html +1612 -0
- package/coverage/lcov-report/map/common/index.html +371 -0
- package/coverage/lcov-report/map/common/index.js.html +172 -0
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +556 -0
- package/coverage/lcov-report/map/common/moment-utils.js.html +157 -0
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +868 -0
- package/coverage/lcov-report/map/common/opendap-utils.js.html +826 -0
- package/coverage/lcov-report/map/common/permissions.js.html +118 -0
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +418 -0
- package/coverage/lcov-report/map/common/tms-utils.js.html +274 -0
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +364 -0
- package/coverage/lcov-report/map/common/wcs-utils.js.html +586 -0
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1033 -0
- package/coverage/lcov-report/map/common/wfs-utils.js.html +574 -0
- package/coverage/lcov-report/map/common/wms-utils.js.html +436 -0
- package/coverage/lcov-report/map/common/wmts-utils.js.html +547 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +10742 -0
- package/coverage/map/api/hooks/hooks.catalog.js.html +340 -0
- package/coverage/map/api/hooks/hooks.features.js.html +337 -0
- package/coverage/map/api/hooks/hooks.query.js.html +1168 -0
- package/coverage/map/api/hooks/index.html +161 -0
- package/coverage/map/api/hooks/index.js.html +94 -0
- package/coverage/map/api/index.html +131 -0
- package/coverage/map/api/index.js.html +139 -0
- package/coverage/map/api/marshall.js.html +178 -0
- package/coverage/map/api/models/alerts.model.mongodb.js.html +106 -0
- package/coverage/map/api/models/catalog.model.mongodb.js.html +127 -0
- package/coverage/map/api/models/features.model.mongodb.js.html +196 -0
- package/coverage/map/api/models/index.html +146 -0
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +274 -0
- package/coverage/map/api/services/alerts/alerts.service.js.html +610 -0
- package/coverage/map/api/services/alerts/index.html +131 -0
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +313 -0
- package/coverage/map/api/services/catalog/index.html +116 -0
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1510 -0
- package/coverage/map/api/services/daptiles/index.html +116 -0
- package/coverage/map/api/services/features/features.hooks.js.html +205 -0
- package/coverage/map/api/services/features/features.service.js.html +241 -0
- package/coverage/map/api/services/features/index.html +131 -0
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +322 -0
- package/coverage/map/api/services/geocoder/index.html +131 -0
- package/coverage/map/api/services/index.html +116 -0
- package/coverage/map/api/services/index.js.html +769 -0
- package/coverage/map/common/dynamic-grid-source.js.html +466 -0
- package/coverage/map/common/errors.js.html +94 -0
- package/coverage/map/common/geotiff-grid-source.js.html +535 -0
- package/coverage/map/common/grid.js.html +1612 -0
- package/coverage/map/common/index.html +371 -0
- package/coverage/map/common/index.js.html +172 -0
- package/coverage/map/common/meteo-model-grid-source.js.html +556 -0
- package/coverage/map/common/moment-utils.js.html +157 -0
- package/coverage/map/common/opendap-grid-source.js.html +868 -0
- package/coverage/map/common/opendap-utils.js.html +826 -0
- package/coverage/map/common/permissions.js.html +118 -0
- package/coverage/map/common/time-based-grid-source.js.html +418 -0
- package/coverage/map/common/tms-utils.js.html +274 -0
- package/coverage/map/common/wcs-grid-source.js.html +364 -0
- package/coverage/map/common/wcs-utils.js.html +586 -0
- package/coverage/map/common/weacast-grid-source.js.html +1033 -0
- package/coverage/map/common/wfs-utils.js.html +574 -0
- package/coverage/map/common/wms-utils.js.html +436 -0
- package/coverage/map/common/wmts-utils.js.html +547 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/tmp/coverage-59096-1692631696256-0.json +1 -0
- package/coverage/tmp/coverage-59108-1692631696233-0.json +1 -0
- package/coverage/tmp/coverage-59119-1692631696222-0.json +1 -0
- package/coverage/tmp/coverage-59131-1692631696200-0.json +1 -0
- package/coverage/tmp/coverage-59138-1692631696175-0.json +1 -0
- package/extras/css/core.variables.scss +5 -1
- package/extras/tours/core/account-profile.js +14 -31
- package/extras/tours/core/account.js +143 -0
- package/extras/tours/core/add-member.js +7 -6
- package/extras/tours/core/add-tag.js +13 -0
- package/extras/tours/core/create-tag.js +26 -0
- package/extras/tours/core/edit-member-role.js +13 -0
- package/extras/tours/core/join-group.js +0 -12
- package/extras/tours/core/login.js +0 -7
- package/extras/tours/core/members.js +13 -26
- package/extras/tours/core/send-reset-password.js +1 -1
- package/extras/tours/core/tags.js +17 -4
- package/extras/tours/map/navigation-bar.js +1 -1
- package/extras/tours/map/side-nav.js +3 -2
- package/map/api/hooks/hooks.query.js +5 -3
- package/map/client/cesium/utils.js +68 -0
- package/map/client/components/KFeatureActionButton.vue +27 -27
- package/map/client/components/KFeaturesChart.vue +1 -1
- package/map/client/components/KFeaturesTable.vue +2 -2
- package/map/client/components/KLayerEditionToolbar.vue +1 -0
- package/map/client/components/KPositionIndicator.vue +1 -1
- package/map/client/components/catalog/KViewSelector.vue +1 -2
- package/map/client/components/catalog/KViewsPanel.vue +17 -15
- package/map/client/components/form/KDirectionField.vue +0 -1
- package/map/client/components/form/KLocationField.vue +16 -29
- package/map/client/components/legend/KSymbolsLegend.vue +2 -1
- package/map/client/components/location/KLocationCardSection.vue +61 -0
- package/map/client/components/location/KLocationMap.vue +24 -13
- package/map/client/components/location/KLocationSearch.vue +144 -0
- package/map/client/components/location/KLocationTip.vue +29 -0
- package/map/client/components/tools/KGeolocateTool.vue +46 -0
- package/map/client/components/tools/KSearchTool.vue +93 -0
- package/map/client/components/widget/KElevationProfile.vue +2 -2
- package/map/client/components/widget/KInformationBox.vue +3 -3
- package/map/client/composables/location.js +35 -43
- package/map/client/geolocation.js +65 -8
- package/map/client/i18n/map_en.json +15 -13
- package/map/client/i18n/map_fr.json +15 -13
- package/map/client/init.js +10 -18
- package/map/client/leaflet/GradientPath.js +2 -1
- package/map/client/leaflet/utils.js +61 -0
- package/map/client/mixins/globe/mixin.base-globe.js +6 -5
- package/map/client/mixins/globe/mixin.popup.js +3 -0
- package/map/client/mixins/globe/mixin.style.js +9 -64
- package/map/client/mixins/globe/mixin.tooltip.js +3 -0
- package/map/client/mixins/index.js +0 -1
- package/map/client/mixins/map/mixin.base-map.js +13 -9
- package/map/client/mixins/map/mixin.edit-layers.js +82 -15
- package/map/client/mixins/map/mixin.geojson-layers.js +8 -1
- package/map/client/mixins/map/mixin.style.js +8 -56
- package/map/client/mixins/mixin.activity.js +20 -12
- package/map/client/mixins/mixin.feature-service.js +34 -1
- package/map/client/readers/reader.geojson.js +1 -1
- package/map/client/utils/utils.location.js +45 -0
- package/package.json +13 -14
- package/test/api/core/account.test.js +112 -126
- package/test/api/core/config/default.cjs +7 -11
- package/test/api/core/config/email-templates/confirmInvitation/html.ejs +1 -1
- package/test/api/core/config/email-templates/identityChange/html.ejs +6 -4
- package/test/api/core/config/email-templates/newDevice/html.ejs +1 -1
- package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -0
- package/test/api/core/config/email-templates/passwordChange/html.ejs +1 -1
- package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +6 -4
- package/test/api/core/config/email-templates/resetPwd/html.ejs +1 -1
- package/test/api/core/config/email-templates/sendResetPwd/html.ejs +8 -4
- package/test/api/core/hooks.test.js +166 -18
- package/test/api/core/index.test.js +32 -70
- package/test/api/core/push.test.js +191 -0
- package/test/api/core/team.test.js +38 -32
- package/test/api/core/test-log-2023-07-04.log +0 -0
- package/test/api/core/test-log-2023-07-10.log +2 -0
- package/test/api/core/test-log-2023-07-12.log +0 -0
- package/test/api/core/test-log-2023-07-18.log +78 -0
- package/test/api/core/test-log-2023-07-19.log +44 -0
- package/test/api/core/test-log-2023-08-01.log +162 -0
- package/test/api/core/test-log-2023-08-21.log +66 -0
- package/test/api/core/test-log-2023-08-22.log +96 -0
- package/test/api/core/test-log-2023-08-23.log +22 -0
- package/test/api/core/test-log-2023-09-20.log +22 -0
- package/test/api/map/alerts.test.js +1 -1
- package/test/api/map/test-log-2023-07-18.log +62 -0
- package/test/api/map/test-log-2023-07-19.log +13 -0
- package/test/api/map/test-log-2023-08-21.log +65 -0
- package/test/api/map/test-log-2023-09-20.log +60 -0
- package/test/client/core/account.js +15 -32
- package/test/client/core/api.js +99 -44
- package/test/client/core/layout.js +4 -0
- package/test/client/core/runner.js +66 -14
- package/test/client/core/time.js +1 -1
- package/test/client/map/controls.js +17 -3
- package/core/api/hooks/hooks.account.js +0 -28
- package/core/api/hooks/hooks.pusher.js +0 -215
- package/core/api/hooks/hooks.tags.js +0 -255
- package/core/api/services/devices/devices.service.js +0 -99
- package/core/api/services/pusher/pusher.channels.js +0 -3
- package/core/api/services/pusher/pusher.hooks.js +0 -36
- package/core/api/services/pusher/pusher.service.js +0 -449
- package/core/client/components/KInstallApp.vue +0 -43
- package/core/client/components/account/KAccountActivity.vue +0 -58
- package/core/client/components/account/KAccountDZ.vue +0 -66
- package/core/client/components/account/KAccountDevices.vue +0 -56
- package/core/client/components/account/KAccountSecurity.vue +0 -87
- package/core/client/components/account/KChangeIdentity.vue +0 -102
- package/core/client/components/account/KChangePassword.vue +0 -132
- package/core/client/components/account/KDeviceCard.vue +0 -75
- package/core/client/components/account/KIdentityPanel.vue +0 -34
- package/core/client/components/account/KResendVerifySignup.vue +0 -108
- package/core/client/components/account/KSendChangeIdentity.vue +0 -115
- package/core/client/components/account/KSignupAlert.vue +0 -63
- package/core/client/components/account/KVerifySignup.vue +0 -102
- package/core/client/components/form/KTagField.vue +0 -148
- package/core/common/schemas/members.update.json +0 -18
- package/extras/tours/core/account-dz.js +0 -37
- package/extras/tours/core/account-security.js +0 -52
- package/extras/tours/core/change-password.js +0 -34
- package/extras/tours/core/edit-member-tags.js +0 -18
- package/extras/tours/core/send-change-identity.js +0 -28
- package/map/client/components/KLocateUser.vue +0 -36
- package/map/client/components/KLocationInput.vue +0 -217
- package/map/client/components/KLocationMap.vue +0 -301
- package/map/client/components/KSearchLocation.vue +0 -88
- package/map/client/components/input/KPlaceChooser.vue +0 -78
- package/map/client/components/location/KLocation.vue +0 -24
- package/map/client/mixins/mixin.navigator.js +0 -36
- package/test/api/core/notifications.test.js +0 -502
|
@@ -2,105 +2,89 @@
|
|
|
2
2
|
<KScreen :title="$t('KSendResetPassword.TITLE')">
|
|
3
3
|
<div slot="screen-content">
|
|
4
4
|
<div class="column justify-center sm-gutter">
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
<div :class="textClass" v-if="message">
|
|
6
|
+
<p>
|
|
7
|
+
<q-icon name="las la-exclamation-circle" v-show="send"/>
|
|
8
|
+
|
|
9
|
+
{{ message }}.
|
|
10
|
+
</p>
|
|
11
|
+
</div>
|
|
12
|
+
<!-- Form -->
|
|
13
|
+
<KForm ref="formRef" :schema="schema" />
|
|
14
|
+
<!-- Actions -->
|
|
15
|
+
<div class="row justify-around">
|
|
16
|
+
<KAction
|
|
17
|
+
id="send-reset-password"
|
|
18
|
+
label="APPLY"
|
|
19
|
+
renderer="form-button"
|
|
20
|
+
:loading="processing"
|
|
21
|
+
:handler="apply"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
23
24
|
</div>
|
|
24
25
|
</div>
|
|
25
26
|
</KScreen>
|
|
26
27
|
</template>
|
|
27
28
|
|
|
28
|
-
<script>
|
|
29
|
+
<script setup>
|
|
29
30
|
import _ from 'lodash'
|
|
31
|
+
import { computed, ref } from 'vue'
|
|
32
|
+
import { useRouter } from 'vue-router'
|
|
33
|
+
import { i18n, utils } from '../..'
|
|
30
34
|
import KScreen from '../screen/KScreen.vue'
|
|
31
|
-
import KForm from '../form/KForm.vue'
|
|
32
|
-
import { account } from '../../mixins'
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
properties: {
|
|
53
|
-
email: {
|
|
54
|
-
type: 'string',
|
|
55
|
-
format: 'email',
|
|
56
|
-
field: {
|
|
57
|
-
component: 'form/KEmailField',
|
|
58
|
-
label: 'KSendResetPassword.EMAIL_FIELD_LABEL'
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
required: ['email']
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
computed: {
|
|
67
|
-
textClass () {
|
|
68
|
-
const classObject = {}
|
|
69
|
-
if (this.sent) {
|
|
70
|
-
classObject['text-positive'] = this.success
|
|
71
|
-
classObject['text-negative'] = !this.success
|
|
36
|
+
// Data
|
|
37
|
+
const router = useRouter()
|
|
38
|
+
const formRef = ref(null)
|
|
39
|
+
const message = ref(i18n.t('KSendResetPassword.MESSAGE'))
|
|
40
|
+
const processing = ref(false)
|
|
41
|
+
const send = ref(false)
|
|
42
|
+
const schema = ref({
|
|
43
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
44
|
+
$id: 'http://kalisio.xyz/schemas/send-reset-password#',
|
|
45
|
+
title: 'Send reset password form',
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
email: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
format: 'email',
|
|
51
|
+
field: {
|
|
52
|
+
component: 'form/KEmailField',
|
|
53
|
+
label: 'KSendResetPassword.EMAIL_FIELD_LABEL'
|
|
72
54
|
}
|
|
73
|
-
return classObject
|
|
74
55
|
}
|
|
75
56
|
},
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
57
|
+
required: ['email']
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
// Computed
|
|
61
|
+
const textClass = computed(() => {
|
|
62
|
+
const classObject = {}
|
|
63
|
+
classObject['self-center'] = true
|
|
64
|
+
if (send.value) classObject['text-negative'] = true
|
|
65
|
+
return classObject
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
// Functions
|
|
69
|
+
async function apply () {
|
|
70
|
+
const { isValid, values } = formRef.value.validate()
|
|
71
|
+
if (!isValid) return false
|
|
72
|
+
try {
|
|
73
|
+
processing.value = true
|
|
74
|
+
await utils.sendResetPassword(values.email)
|
|
75
|
+
processing.value = false
|
|
76
|
+
router.push({ path: `reset-password/${values.email}` })
|
|
77
|
+
} catch (error) {
|
|
78
|
+
processing.value = false
|
|
79
|
+
const type = _.get(error, 'errors.$className')
|
|
80
|
+
switch (type) {
|
|
81
|
+
case 'isVerified':
|
|
82
|
+
message.value = i18n.t('KSendResetPassword.ERROR_MESSAGE_IS_VERIFIED')
|
|
83
|
+
break
|
|
84
|
+
default:
|
|
85
|
+
message.value = i18n.t('KSendResetPassword.ERROR_MESSAGE_DEFAULT')
|
|
99
86
|
}
|
|
100
|
-
},
|
|
101
|
-
created () {
|
|
102
|
-
// Components initialization
|
|
103
|
-
this.message = this.$t('KSendResetPassword.MESSAGE')
|
|
104
87
|
}
|
|
88
|
+
send.value = true
|
|
105
89
|
}
|
|
106
90
|
</script>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<q-item>
|
|
3
|
+
<!-- Icon -->
|
|
4
|
+
<q-item-section avatar>
|
|
5
|
+
<q-icon :name="icon" />
|
|
6
|
+
</q-item-section>
|
|
7
|
+
<!-- Label -->
|
|
8
|
+
<q-item-section>
|
|
9
|
+
{{ label }}
|
|
10
|
+
</q-item-section>
|
|
11
|
+
<!-- Actions -->
|
|
12
|
+
<KPanel
|
|
13
|
+
:content="bindedActions"
|
|
14
|
+
/>
|
|
15
|
+
</q-item>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script setup>
|
|
19
|
+
import _ from 'lodash'
|
|
20
|
+
import { removeSubscription } from '@kalisio/feathers-webpush/client.js'
|
|
21
|
+
import { computed } from 'vue'
|
|
22
|
+
import { Dialog } from 'quasar'
|
|
23
|
+
import { Store, i18n, api, utils } from '../..'
|
|
24
|
+
import KPanel from '../KPanel.vue'
|
|
25
|
+
|
|
26
|
+
// Props
|
|
27
|
+
const props = defineProps({
|
|
28
|
+
subscription: {
|
|
29
|
+
type: Object,
|
|
30
|
+
required: true
|
|
31
|
+
},
|
|
32
|
+
actions: {
|
|
33
|
+
type: Array,
|
|
34
|
+
required: true
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
// Computed
|
|
39
|
+
const icon = computed(() => {
|
|
40
|
+
return 'lab la-' + _.get(props.subscription, 'browser.name')
|
|
41
|
+
})
|
|
42
|
+
const label = computed(() => {
|
|
43
|
+
return _.capitalize(_.get(props.subscription, 'browser.name')) + ' (' + _.get(props.subscription, 'browser.version') + ') - ' + _.capitalize(_.get(props.subscription, 'platform'))
|
|
44
|
+
})
|
|
45
|
+
const bindedActions = computed(() => {
|
|
46
|
+
return utils.bindContent(_.cloneDeep(props.actions), { unsubscribe })
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// Functions
|
|
50
|
+
function unsubscribe () {
|
|
51
|
+
const description = label.value
|
|
52
|
+
Dialog.create({
|
|
53
|
+
title: i18n.t('KSubscription.UNSUBSCRIBE_DIALOG_TITLE', { description }),
|
|
54
|
+
message: i18n.t('KSubscription.UNSUBSCRIBE_DIALOG_MESSAGE', { description }),
|
|
55
|
+
html: true,
|
|
56
|
+
ok: {
|
|
57
|
+
label: i18n.t('OK'),
|
|
58
|
+
flat: true
|
|
59
|
+
},
|
|
60
|
+
cancel: {
|
|
61
|
+
label: i18n.t('CANCEL'),
|
|
62
|
+
flat: true
|
|
63
|
+
}
|
|
64
|
+
}).onOk(async () => {
|
|
65
|
+
// Patch user subscriptions
|
|
66
|
+
const user = Store.get('user')
|
|
67
|
+
removeSubscription(user, props.subscription, 'subscriptions')
|
|
68
|
+
api.service('api/users').patch(Store.user._id, { subscriptions: user.subscriptions })
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
</script>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="q-pa-md column">
|
|
3
|
+
<div v-if="subscriptions.length > 0">
|
|
4
|
+
<q-list>
|
|
5
|
+
<template v-for="subscription in subscriptions" :key="subscription.endpoint">
|
|
6
|
+
<KSubscription
|
|
7
|
+
:subscription="subscription"
|
|
8
|
+
:actions="actions"
|
|
9
|
+
/>
|
|
10
|
+
</template>
|
|
11
|
+
</q-list>
|
|
12
|
+
</div>
|
|
13
|
+
<div v-else class="row col justify-center">
|
|
14
|
+
<KStamp
|
|
15
|
+
icon="las la-exclamation-circle"
|
|
16
|
+
icon-size="1.6rem"
|
|
17
|
+
:text="$t('KSubscriptionsManager.EMPTY')"
|
|
18
|
+
direction="horizontal"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script setup>
|
|
25
|
+
import _ from 'lodash'
|
|
26
|
+
import { computed } from 'vue'
|
|
27
|
+
import { Store } from '../../store.js'
|
|
28
|
+
import KSubscription from './KSubscription.vue'
|
|
29
|
+
import KStamp from '../KStamp.vue'
|
|
30
|
+
|
|
31
|
+
// Props
|
|
32
|
+
defineProps({
|
|
33
|
+
actions: {
|
|
34
|
+
type: Array,
|
|
35
|
+
default: () => []
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// Data
|
|
40
|
+
const User = Store.get('user')
|
|
41
|
+
|
|
42
|
+
// Computed
|
|
43
|
+
const subscriptions = computed(() => {
|
|
44
|
+
return _.get(User, 'subscriptions', [])
|
|
45
|
+
})
|
|
46
|
+
</script>
|
|
@@ -0,0 +1,105 @@
|
|
|
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>
|
|
@@ -47,6 +47,8 @@ const { clientVersionName, apiVersionName } = useVersion()
|
|
|
47
47
|
const platform = getPlatform()
|
|
48
48
|
// logo component
|
|
49
49
|
const logoComponent = ref(loadComponent(_.get(config, 'logoComponent', 'KLogo')))
|
|
50
|
+
// changelog url
|
|
51
|
+
const changelog = _.get(config, 'appChangelog')
|
|
50
52
|
// bug report
|
|
51
53
|
const bugReport = {
|
|
52
54
|
address: _.get(config, 'publisherContact'),
|
|
@@ -61,25 +63,36 @@ _.forOwn(platform, (value, key) => { bugReport.body += `${key}: ${value}%0D%0A`
|
|
|
61
63
|
bugReport.body += `domain: ${_.get(config, 'domain')}%0D%0A`
|
|
62
64
|
bugReport.body += `flavor: ${_.get(config, 'flavor')}%0D%0A`
|
|
63
65
|
// actions
|
|
64
|
-
const defaultActions = [
|
|
65
|
-
|
|
66
|
+
const defaultActions = [{
|
|
67
|
+
id: 'platform-info',
|
|
68
|
+
icon: 'las la-desktop',
|
|
69
|
+
label: 'KAbout.PLATFORM_INFO',
|
|
70
|
+
stack: true,
|
|
71
|
+
dialog: {
|
|
72
|
+
title: 'KAbout.PLATFORM_INFO',
|
|
73
|
+
component: 'app/KPlatform',
|
|
74
|
+
okAction: 'CLOSE',
|
|
75
|
+
widthPolicy: 'narrow'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
if (_.isNil(bugReport.address)) {
|
|
80
|
+
defaultActions.unshift({
|
|
66
81
|
id: 'report-bug',
|
|
67
82
|
icon: 'las la-bug',
|
|
68
83
|
label: 'KAbout.BUG_REPORT',
|
|
69
84
|
stack: true,
|
|
70
85
|
url: `mailto:${bugReport.address}?subject=${bugReport.subject}&body=${bugReport.body}`
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
if (!_.isNil(changelog)) {
|
|
89
|
+
defaultActions.unshift({
|
|
90
|
+
id: 'view-changelog',
|
|
91
|
+
icon: 'las la-history',
|
|
92
|
+
label: 'KAbout.VIEW_CHANGELOG',
|
|
75
93
|
stack: true,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
okAction: 'CLOSE',
|
|
80
|
-
widthPolicy: 'narrow'
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
]
|
|
94
|
+
url: changelog
|
|
95
|
+
})
|
|
96
|
+
}
|
|
84
97
|
const actions = ref(_.get(config, 'about.actions', defaultActions))
|
|
85
98
|
</script>
|
|
@@ -39,10 +39,10 @@ const platform = getPlatform()
|
|
|
39
39
|
// function
|
|
40
40
|
async function copy () {
|
|
41
41
|
try {
|
|
42
|
-
await copyToClipboard(JSON.stringify(platform
|
|
42
|
+
await copyToClipboard(JSON.stringify(platform, null, 2))
|
|
43
43
|
$q.notify({ type: 'positive', message: i18n.t('KPlatform.INFO_COPIED') })
|
|
44
44
|
} catch (error) {
|
|
45
|
-
$q.notify({ message: i18n.t('KPositionIndicator.CANNOT_COPY_INFO') })
|
|
45
|
+
$q.notify({ type: 'negative', message: i18n.t('KPositionIndicator.CANNOT_COPY_INFO') })
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
</script>
|
|
@@ -1,52 +1,72 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<q-dialog v-model="showWelcome" persistent>
|
|
3
|
-
<q-card class="q-pa-
|
|
3
|
+
<q-card class="q-pa-xs column items-center q-gutter-y-xs no-wrap">
|
|
4
4
|
<!-- Logo -->
|
|
5
|
-
<component
|
|
5
|
+
<component
|
|
6
|
+
:is="logoComponent"
|
|
7
|
+
:height="dense ? '70px' : '100px'"
|
|
8
|
+
/>
|
|
6
9
|
<!-- Carousel -->
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
<q-carousel
|
|
11
|
+
v-model="currentSlide"
|
|
12
|
+
swipeable
|
|
13
|
+
animated
|
|
14
|
+
navigation
|
|
15
|
+
transition-prev="scale"
|
|
16
|
+
transition-next="scale"
|
|
17
|
+
control-type="flat"
|
|
18
|
+
control-color="primary"
|
|
19
|
+
height="320px"
|
|
20
|
+
>
|
|
21
|
+
<q-carousel-slide
|
|
22
|
+
name="welcome"
|
|
23
|
+
class="column no-wrap justify-center text-center q-gutter-sm"
|
|
19
24
|
>
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
</
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
25
|
+
<div :class="dense ? 'text-weight-medium' : 'text-h6'">{{ $t('KWelcome.WELCOME_TITLE') }}</div>
|
|
26
|
+
<div>{{ $t('KWelcome.WELCOME_MESSAGE') }}</div>
|
|
27
|
+
<div>{{ $t('KWelcome.ONLINE_HELP') }}
|
|
28
|
+
<q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onOnlineHelp()"/>
|
|
29
|
+
</div>
|
|
30
|
+
</q-carousel-slide>
|
|
31
|
+
<q-carousel-slide
|
|
32
|
+
name="tour"
|
|
33
|
+
class="column no-wrap justify-center text-center q-gutter-sm"
|
|
34
|
+
>
|
|
35
|
+
<div>{{ $t('KWelcome.TOUR_MESSAGE') }}
|
|
36
|
+
<q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-external-link-square-alt" @click="onDefaultTour()"/>
|
|
37
|
+
</div>
|
|
38
|
+
<div>{{ $t('KWelcome.TOUR_LINK_MESSAGE') }}</div>
|
|
39
|
+
</q-carousel-slide>
|
|
40
|
+
<q-carousel-slide
|
|
41
|
+
name="goodbye"
|
|
42
|
+
class="column no-wrap justify-center text-center q-gutter-sm"
|
|
43
|
+
>
|
|
44
|
+
<div>
|
|
45
|
+
<span>
|
|
46
|
+
{{ $t('KWelcome.CONTEXTUAL_HELP') }}
|
|
47
|
+
<q-icon size="1.5em" class="text-primary cursor-pointer" name="las la-question-circle"/>
|
|
48
|
+
</span>
|
|
49
|
+
</div>
|
|
50
|
+
<div>{{ $t('KWelcome.GOODBYE_MESSAGE') }}</div>
|
|
51
|
+
</q-carousel-slide>
|
|
52
|
+
</q-carousel>
|
|
53
|
+
<div :class="dense ? 'q-py-xs' : 'q-py-md'">
|
|
54
|
+
<KAction
|
|
55
|
+
id="close-button"
|
|
56
|
+
label="CLOSE"
|
|
57
|
+
renderer="form-button"
|
|
58
|
+
:handler="() => hide()"
|
|
59
|
+
/>
|
|
49
60
|
</div>
|
|
61
|
+
<q-checkbox
|
|
62
|
+
v-model="toggle"
|
|
63
|
+
:label="$t('KWelcome.HIDE_WELCOME')"
|
|
64
|
+
color="primary"
|
|
65
|
+
size="xs"
|
|
66
|
+
:dense="dense"
|
|
67
|
+
@update:modelValue="onToggleIntroduction"
|
|
68
|
+
:class="dense ? 'q-pt-xs text-caption' : 'q-pt-md'"
|
|
69
|
+
/>
|
|
50
70
|
</q-card>
|
|
51
71
|
</q-dialog>
|
|
52
72
|
</template>
|
|
@@ -54,19 +74,25 @@
|
|
|
54
74
|
<script setup>
|
|
55
75
|
import _ from 'lodash'
|
|
56
76
|
import config from 'config'
|
|
57
|
-
import { ref, onBeforeUnmount } from 'vue'
|
|
58
|
-
import { openURL } from 'quasar'
|
|
77
|
+
import { ref, computed, onBeforeUnmount } from 'vue'
|
|
78
|
+
import { openURL, useQuasar } from 'quasar'
|
|
59
79
|
import { Store, api } from '../..'
|
|
60
80
|
import { loadComponent } from '../../utils'
|
|
61
81
|
import KAction from '../KAction.vue'
|
|
62
82
|
|
|
63
83
|
// Data
|
|
84
|
+
const $q = useQuasar()
|
|
64
85
|
const logoComponent = ref(loadComponent(_.get(config, 'logoComponent', 'KLogo')))
|
|
65
86
|
const defaultTour = _.get(config, 'welcome.tour', 'home')
|
|
66
87
|
const showWelcome = ref(false)
|
|
67
88
|
const currentSlide = ref('welcome')
|
|
68
89
|
const toggle = ref(false)
|
|
69
90
|
|
|
91
|
+
// Computed
|
|
92
|
+
const dense = computed(() => {
|
|
93
|
+
return $q.screen.lt.sm
|
|
94
|
+
})
|
|
95
|
+
|
|
70
96
|
// functions
|
|
71
97
|
function getWelcomeKey () {
|
|
72
98
|
return _.get(config, 'appName').toLowerCase() + '-welcome'
|