@kalisio/kdk 2.3.2 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -1
- package/.github/workflows/main.yaml +3 -3
- package/README.md +1 -0
- package/core/api/db.js +6 -1
- package/core/api/hooks/hooks.model.js +1 -1
- package/core/api/hooks/hooks.schemas.js +0 -2
- package/core/api/models/messages.model.mongodb.js +13 -0
- package/core/api/services/authorisations/authorisations.service.js +13 -4
- package/core/api/services/index.js +19 -0
- package/core/api/services/messages/messages.hooks.js +38 -0
- package/core/client/api.js +7 -32
- package/core/client/capabilities.js +2 -2
- package/core/client/components/KActivity.vue +29 -6
- package/core/client/components/KContent.vue +2 -2
- package/core/client/components/KDialog.vue +4 -7
- package/core/client/components/KStamp.vue +3 -9
- package/core/client/components/KStore.vue +2 -4
- package/core/client/components/KTab.vue +95 -0
- package/core/client/components/action/KAction.vue +15 -2
- package/core/client/components/action/KBugReportAction.vue +4 -2
- package/core/client/components/action/KToggleFullscreenAction.vue +25 -0
- package/core/client/components/app/KSettings.vue +17 -13
- package/core/client/components/chart/KDataTable.vue +6 -9
- package/core/client/components/chart/KTimeSeriesChart.vue +62 -49
- package/core/client/components/collection/KBoard.vue +22 -33
- package/core/client/components/collection/KCard.vue +71 -56
- package/core/client/components/collection/KCardSection.vue +20 -10
- package/core/client/components/collection/KDescriptionCardSection.vue +47 -0
- package/core/client/components/collection/KGrid.vue +234 -54
- package/core/client/components/collection/KScrollDown.vue +97 -0
- package/core/client/components/collection/KScrollToTop.vue +93 -0
- package/core/client/components/collection/KTable.vue +87 -33
- package/core/client/components/collection/KTimeLine.vue +406 -0
- package/core/client/components/collection/index.js +1 -5
- package/core/client/components/document/KDocument.vue +20 -55
- package/core/client/components/document/KHtml.vue +17 -7
- package/core/client/components/document/KImage.vue +78 -0
- package/core/client/components/document/KMarkdown.vue +12 -16
- package/core/client/components/document/KPdf.vue +69 -0
- package/core/client/components/form/KFileField.vue +2 -2
- package/core/client/components/form/KSelectField.vue +2 -1
- package/core/client/components/form/KUnitField.vue +3 -1
- package/core/client/components/layout/KFab.vue +9 -10
- package/core/client/components/layout/KLayout.vue +104 -6
- package/core/client/components/layout/KOpener.vue +14 -19
- package/core/client/components/layout/KPage.vue +195 -105
- package/core/client/components/layout/KWindow.vue +54 -32
- package/core/client/components/layout/index.js +0 -2
- package/core/client/components/media/KRibbon.vue +95 -0
- package/core/client/components/menu/KMenu.vue +4 -4
- package/core/client/components/team/KGroupsActivity.vue +25 -27
- package/core/client/components/team/KMembersActivity.vue +21 -23
- package/core/client/components/team/KOrganisationsActivity.vue +20 -22
- package/core/client/components/team/KTagsActivity.vue +21 -23
- package/core/client/components/time/KAbsoluteTimeRange.vue +70 -170
- package/core/client/composables/activity.js +14 -12
- package/core/client/composables/collection.js +3 -1
- package/core/client/composables/counter.js +51 -0
- package/core/client/composables/index.js +3 -0
- package/core/client/composables/layout.js +13 -2
- package/core/client/composables/messages.js +15 -0
- package/core/client/composables/pwa.js +1 -1
- package/core/client/composables/schema.js +6 -6
- package/core/client/composables/screen.js +23 -0
- package/core/client/directives/index.js +1 -0
- package/core/client/directives/v-hover.js +23 -0
- package/core/client/document.js +61 -0
- package/core/client/exporter.js +1 -1
- package/core/client/filter.js +0 -1
- package/core/client/guards.js +1 -1
- package/core/client/i18n/core_en.json +14 -8
- package/core/client/i18n/core_fr.json +15 -9
- package/core/client/index.js +9 -3
- package/core/client/layout.js +129 -29
- package/core/client/local-storage.js +1 -1
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-activity.js +23 -13
- package/core/client/mixins/mixin.base-item.js +6 -3
- package/core/client/services/index.js +4 -1
- package/core/client/services/local-settings.service.js +4 -0
- package/core/client/storage.js +1 -1
- package/core/client/store.js +1 -1
- package/core/client/template-context.js +17 -0
- package/core/client/units.js +49 -27
- package/core/client/utils/index.js +3 -2
- package/core/client/utils/utils.actions.js +4 -0
- package/core/client/utils/utils.colors.js +155 -2
- package/core/client/utils/utils.items.js +26 -0
- package/core/client/utils/utils.math.js +3 -0
- package/core/client/utils/utils.platform.js +3 -1
- package/core/client/utils/utils.screen.js +82 -0
- package/core/client/utils/utils.time.js +0 -1
- package/core/common/schemas/settings.update.json +12 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/core/api/application.js.html +1870 -0
- package/coverage/core/api/authentication.js.html +742 -0
- package/coverage/core/api/db.js.html +793 -0
- package/coverage/core/api/hooks/hooks.authentication.js.html +313 -0
- package/coverage/core/api/hooks/hooks.authorisations.js.html +1243 -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 +955 -0
- package/coverage/core/api/hooks/hooks.organisations.js.html +541 -0
- package/coverage/core/api/hooks/hooks.push.js.html +253 -0
- package/coverage/core/api/hooks/hooks.query.js.html +862 -0
- package/coverage/core/api/hooks/hooks.schemas.js.html +298 -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.users.js.html +868 -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 +448 -0
- package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/core/api/models/index.html +176 -0
- package/coverage/core/api/models/messages.model.mongodb.js.html +121 -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 +208 -0
- package/coverage/core/api/services/account/account.service.js.html +436 -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 +529 -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/import-export/import-export.hooks.js.html +184 -0
- package/coverage/core/api/services/import-export/import-export.service.js.html +118 -0
- package/coverage/core/api/services/import-export/index.html +131 -0
- package/coverage/core/api/services/index.html +116 -0
- package/coverage/core/api/services/index.js.html +556 -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/messages/index.html +116 -0
- package/coverage/core/api/services/messages/messages.hooks.js.html +199 -0
- package/coverage/core/api/services/organisations/index.html +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 +190 -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 +307 -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 +1048 -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 +506 -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 +1870 -0
- package/coverage/lcov-report/core/api/authentication.js.html +742 -0
- package/coverage/lcov-report/core/api/db.js.html +793 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +313 -0
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1243 -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 +955 -0
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +541 -0
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +253 -0
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +862 -0
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +298 -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.users.js.html +868 -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 +448 -0
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
- package/coverage/lcov-report/core/api/models/index.html +176 -0
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +121 -0
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +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 +208 -0
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +436 -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 +529 -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/import-export/import-export.hooks.js.html +184 -0
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +118 -0
- package/coverage/lcov-report/core/api/services/import-export/index.html +131 -0
- package/coverage/lcov-report/core/api/services/index.html +116 -0
- package/coverage/lcov-report/core/api/services/index.js.html +556 -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/messages/index.html +116 -0
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +199 -0
- package/coverage/lcov-report/core/api/services/organisations/index.html +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 +190 -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 +307 -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 +1048 -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 +506 -0
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +457 -0
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +397 -0
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1309 -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 +161 -0
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +109 -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 +310 -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 +241 -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/index.html +116 -0
- package/coverage/lcov-report/map/api/services/index.js.html +817 -0
- package/coverage/lcov-report/map/api/services/projects/index.html +116 -0
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +439 -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 +541 -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 +124 -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 +451 -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 +11245 -0
- package/coverage/map/api/hooks/hooks.catalog.js.html +457 -0
- package/coverage/map/api/hooks/hooks.features.js.html +397 -0
- package/coverage/map/api/hooks/hooks.query.js.html +1309 -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 +161 -0
- package/coverage/map/api/models/projects.model.mongodb.js.html +109 -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 +310 -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 +241 -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/index.html +116 -0
- package/coverage/map/api/services/index.js.html +817 -0
- package/coverage/map/api/services/projects/index.html +116 -0
- package/coverage/map/api/services/projects/projects.hooks.js.html +439 -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 +541 -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 +124 -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 +451 -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-280506-1731704745613-0.json +1 -0
- package/coverage/tmp/coverage-280518-1731704745599-0.json +1 -0
- package/coverage/tmp/coverage-280529-1731704745588-0.json +1 -0
- package/coverage/tmp/coverage-280541-1731704745574-0.json +1 -0
- package/coverage/tmp/coverage-280548-1731704745545-0.json +1 -0
- package/extras/css/core.variables.scss +32 -8
- package/extras/icons/attribution.png +0 -0
- package/map/api/services/catalog/catalog.hooks.js +5 -7
- package/map/api/services/features/features.hooks.js +1 -1
- package/map/client/cesium/utils/utils.style.js +11 -2
- package/map/client/components/KAttribution.vue +108 -0
- package/map/client/components/KPositionIndicator.vue +11 -18
- package/map/client/components/KProjectMenu.vue +4 -4
- package/map/client/components/catalog/KCategoryItem.vue +74 -0
- package/map/client/components/catalog/KLayerCategories.vue +24 -12
- package/map/client/components/catalog/KLayersPanel.vue +139 -116
- package/map/client/components/catalog/KProjectSelector.vue +29 -17
- package/map/client/components/catalog/KProjectsPanel.vue +19 -35
- package/map/client/components/catalog/KViewSelector.vue +37 -25
- package/map/client/components/catalog/KViewsPanel.vue +19 -35
- package/map/client/components/form/KLocationField.vue +1 -2
- package/map/client/components/legend/KLegend.vue +34 -34
- package/map/client/components/location/KLocationCardSection.vue +18 -22
- package/map/client/components/location/KLocationMap.vue +36 -38
- package/map/client/components/location/KLocationTimeLineCard.vue +147 -0
- package/map/client/components/location/KLocationTip.vue +12 -2
- package/map/client/components/widget/KInformationBox.vue +0 -4
- package/map/client/components/widget/KStackableTimeSeries.vue +8 -1
- package/map/client/components/widget/KTimeSeries.vue +1 -1
- package/map/client/composables/highlight.js +29 -31
- package/map/client/composables/probe.js +7 -3
- package/map/client/composables/weather.js +71 -31
- package/map/client/i18n/map_en.json +3 -0
- package/map/client/i18n/map_fr.json +3 -0
- package/map/client/init.js +4 -3
- package/map/client/leaflet/ShapeMarker.js +1 -1
- package/map/client/leaflet/utils/utils.events.js +1 -1
- package/map/client/leaflet/utils/utils.style.js +20 -8
- package/map/client/mixins/globe/mixin.base-globe.js +111 -13
- package/map/client/mixins/globe/mixin.file-layers.js +10 -10
- package/map/client/mixins/globe/mixin.geojson-layers.js +90 -15
- package/map/client/mixins/globe/mixin.style.js +2 -0
- package/map/client/mixins/index.js +0 -1
- package/map/client/mixins/map/index.js +1 -0
- package/map/client/mixins/map/mixin.base-map.js +21 -2
- package/map/client/mixins/map/mixin.canvas-layers.js +7 -2
- package/map/client/mixins/map/mixin.edit-layers.js +12 -4
- package/map/client/mixins/map/mixin.file-layers.js +3 -0
- package/map/client/mixins/map/mixin.geojson-layers.js +90 -5
- package/map/client/mixins/map/mixin.pmtiles-layers.js +106 -0
- package/map/client/mixins/mixin.activity.js +8 -3
- package/map/client/mixins/mixin.feature-service.js +73 -32
- package/map/client/mixins/mixin.levels.js +1 -0
- package/map/client/mixins/mixin.weacast.js +10 -87
- package/map/client/utils/index.js +1 -0
- package/map/client/utils/utils.capture.js +1 -1
- package/map/client/utils/utils.catalog.js +7 -7
- package/map/client/utils/utils.features.js +59 -1
- package/map/client/utils/utils.layers.js +8 -0
- package/map/client/utils/utils.time-series.js +121 -0
- package/map/client/utils/utils.weacast.js +102 -0
- package/package.json +6 -6
- package/scripts/init_runner.sh +2 -2
- package/scripts/kash/CHANGELOG.md +12 -0
- package/scripts/kash/README.md +2 -0
- package/scripts/kash/kash.sh +34 -32
- package/scripts/run_tests.sh +2 -2
- package/scripts/setup_workspace.sh +24 -6
- package/test/api/core/hooks.test.js +6 -3
- package/test/api/core/test-log-2023-12-19.log +7 -0
- package/test/api/core/test-log-2024-01-04.log +14 -0
- package/test/api/core/test-log-2024-05-14.log +6 -0
- package/test/api/core/{test-log-2024-04-23.log → test-log-2024-06-06.log} +3 -3
- package/test/api/core/test-log-2024-06-26.log +25 -0
- package/test/api/core/test-log-2024-06-28.log +2 -0
- package/test/api/core/test-log-2024-07-09.log +0 -0
- package/test/api/core/test-log-2024-08-13.log +69 -0
- package/test/api/core/test-log-2024-10-28.log +53 -0
- package/test/api/core/test-log-2024-11-05.log +30 -0
- package/test/api/core/test-log-2024-11-15.log +23 -0
- package/test/api/map/alerts.test.js +3 -1
- package/test/api/map/config/layers.json +3 -1
- package/test/api/map/index.test.js +18 -1
- package/test/api/map/test-log-2023-11-24.log +121 -0
- package/test/api/map/test-log-2023-12-12.log +29 -0
- package/test/api/map/test-log-2023-12-13.log +5 -0
- package/test/api/map/test-log-2024-01-04.log +2 -0
- package/test/api/map/test-log-2024-01-11.log +1 -0
- package/test/api/map/test-log-2024-01-25.log +19 -0
- package/test/api/map/test-log-2024-06-06.log +39 -0
- package/test/api/map/test-log-2024-08-13.log +13 -0
- package/test/api/map/test-log-2024-08-20.log +55 -0
- package/test/api/map/test-log-2024-09-09.log +92 -0
- package/test/api/map/test-log-2024-10-28.log +11 -0
- package/test/client/core/utils.js +13 -0
- package/test/client/map/api.js +34 -0
- package/test/client/map/catalog.js +6 -2
- package/test/client/map/index.js +1 -0
- package/test/client/map/utils.js +4 -2
- package/core/client/components/collection/KList.vue +0 -135
- package/core/client/components/layout/KPageSticky.vue +0 -53
- package/core/client/mixins/mixin.base-collection.js +0 -162
- package/core/client/utils/utils.data.js +0 -22
- package/map/client/mixins/mixin.catalog-panel.js +0 -26
- package/test/api/core/test-log-2024-04-22.log +0 -84
|
@@ -15,12 +15,7 @@ $warning: #d09931 !default;
|
|
|
15
15
|
$tooltip-fontsize: 12px !default;
|
|
16
16
|
$tooltip-background: $accent !default;
|
|
17
17
|
|
|
18
|
-
// Pane
|
|
19
|
-
$left-pane-width: 320px !default;
|
|
20
|
-
|
|
21
18
|
// Window
|
|
22
|
-
$window-min-width: 300px !default;
|
|
23
|
-
$window-min-height: 300px !default;
|
|
24
19
|
$window-background: #ffffff !default;
|
|
25
20
|
$window-border-style: solid !default;
|
|
26
21
|
$window-border-width: 1px !default;
|
|
@@ -31,10 +26,39 @@ $window-header-background: #eeeeee !default;
|
|
|
31
26
|
$window-header-hover-background: #dddddd !default;
|
|
32
27
|
$window-controls-size: 1rem !default;
|
|
33
28
|
|
|
34
|
-
// Sticky
|
|
35
|
-
$sticky-z-index: 1000 !default;
|
|
36
|
-
|
|
37
29
|
// Table: quasar has eg $table-hover-background but nothing for background
|
|
38
30
|
$table-background: #fff !default;
|
|
39
31
|
|
|
32
|
+
// Scrollbar
|
|
33
|
+
.q-scrollarea__thumb {
|
|
34
|
+
background: $primary;
|
|
35
|
+
border-radius: 3px;
|
|
36
|
+
opacity: .2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* TODO try to specify style the same as above
|
|
40
|
+
::-webkit-scrollbar {
|
|
41
|
+
height: 10px;
|
|
42
|
+
width: 10px;
|
|
43
|
+
background: transparent;
|
|
44
|
+
overflow: visible;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
::-webkit-scrollbar-thumb {
|
|
48
|
+
width: 10px;
|
|
49
|
+
background-color: $primary;
|
|
50
|
+
border-radius: 3px;
|
|
51
|
+
-webkit-transition: background-color .28s ease-in-out;
|
|
52
|
+
transition: background-color .28s ease-in-out;
|
|
53
|
+
opacity: .2;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
::-webkit-scrollbar-thumb:hover {
|
|
57
|
+
background: $primary
|
|
58
|
+
}*/
|
|
40
59
|
|
|
60
|
+
// Anchor
|
|
61
|
+
a {
|
|
62
|
+
color: $accent;
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
Binary file
|
|
@@ -15,8 +15,7 @@ export default {
|
|
|
15
15
|
get: [],
|
|
16
16
|
create: [
|
|
17
17
|
coreHooks.checkUnique({ field: 'name', query: (query, hook) => { query.type = _.get(hook, 'data.type') } }),
|
|
18
|
-
coreHooks.
|
|
19
|
-
coreHooks.convertToString(['schema.content', 'filters']),
|
|
18
|
+
coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),
|
|
20
19
|
setNow('createdAt', 'updatedAt'),
|
|
21
20
|
// This allow to use keys for base queries like 'properties.xxx': 'yyy'
|
|
22
21
|
(hook) => { _.set(hook, 'params.mongodb.checkKeys', false) }
|
|
@@ -24,16 +23,14 @@ export default {
|
|
|
24
23
|
update: [
|
|
25
24
|
coreHooks.populatePreviousObject,
|
|
26
25
|
coreHooks.checkUnique({ field: 'name', query: (query, hook) => { query.type = _.get(hook, 'params.previousItem.type') } }),
|
|
27
|
-
coreHooks.
|
|
28
|
-
coreHooks.convertToString(['schema.content', 'filters']),
|
|
26
|
+
coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),
|
|
29
27
|
discard('createdAt', 'updatedAt'),
|
|
30
28
|
setNow('updatedAt')
|
|
31
29
|
],
|
|
32
30
|
patch: [
|
|
33
31
|
coreHooks.populatePreviousObject,
|
|
34
32
|
coreHooks.checkUnique({ field: 'name', query: (query, hook) => { query.type = _.get(hook, 'params.previousItem.type') } }),
|
|
35
|
-
coreHooks.
|
|
36
|
-
coreHooks.convertToString(['schema.content', 'filters']),
|
|
33
|
+
coreHooks.convertToString(['baseQuery', 'schema.content', 'filters']),
|
|
37
34
|
discard('createdAt', 'updatedAt'),
|
|
38
35
|
setNow('updatedAt')
|
|
39
36
|
],
|
|
@@ -44,7 +41,8 @@ export default {
|
|
|
44
41
|
|
|
45
42
|
after: {
|
|
46
43
|
all: [
|
|
47
|
-
coreHooks.convertToJson(['schema.content', 'filters'])
|
|
44
|
+
coreHooks.convertToJson(['baseQuery', 'schema.content', 'filters']),
|
|
45
|
+
coreHooks.convertObjectIDs(['baseQuery.layer'])
|
|
48
46
|
],
|
|
49
47
|
find: [
|
|
50
48
|
// Merge built-in categoriessublegends with user-defined ones for global catalog only
|
|
@@ -20,7 +20,7 @@ export default {
|
|
|
20
20
|
before: {
|
|
21
21
|
all: [coreHooks.marshallTimeQuery, coreHooks.convertObjectIDs(['layer'])],
|
|
22
22
|
find: [coreHooks.marshallComparisonQuery, coreHooks.marshallSortQuery, marshallSpatialQuery,
|
|
23
|
-
coreHooks.distinct, aggregateFeaturesQuery, coreHooks.aggregationQuery, fuzzySearch, coreHooks.diacriticSearch],
|
|
23
|
+
coreHooks.distinct, aggregateFeaturesQuery, coreHooks.aggregationQuery, fuzzySearch, coreHooks.diacriticSearch()],
|
|
24
24
|
get: [],
|
|
25
25
|
create: [coreHooks.processTimes(['time']), fullResult, emitEvents],
|
|
26
26
|
update: [coreHooks.processTimes(['time']), fullResult, emitEvents],
|
|
@@ -2,7 +2,7 @@ import _ from 'lodash'
|
|
|
2
2
|
import chroma from 'chroma-js'
|
|
3
3
|
import moment from 'moment'
|
|
4
4
|
import { Color } from 'cesium'
|
|
5
|
-
import { Time, Units } from '../../../../core/client/index.js'
|
|
5
|
+
import { Time, Units, TemplateContext } from '../../../../core/client/index.js'
|
|
6
6
|
import { convertPointStyleToSimpleStyle, convertLineStyleToSimpleStyle, convertPolygonStyleToSimpleStyle, convertSimpleStyleColors,
|
|
7
7
|
convertSimpleStyleToPointStyle, convertSimpleStyleToLineStyle, convertSimpleStyleToPolygonStyle,
|
|
8
8
|
PointStyleTemplateMappings, LineStyleTemplateMappings, PolygonStyleTemplateMappings } from '../../utils/utils.style.js'
|
|
@@ -47,7 +47,7 @@ function processStyle (style, feature, options, mappings) {
|
|
|
47
47
|
const cesiumOptions = options.cesium || options
|
|
48
48
|
// We allow to template style properties according to feature,
|
|
49
49
|
// because it can be slow you have to specify a subset of properties
|
|
50
|
-
const context = { properties: feature.properties, feature, chroma, moment, Units, Time }
|
|
50
|
+
const context = Object.assign({ properties: feature.properties, feature, chroma, moment, Units, Time }, TemplateContext.get())
|
|
51
51
|
if (cesiumOptions.template) {
|
|
52
52
|
// Create the map of variables
|
|
53
53
|
if (options.variables) context.variables = _.reduce(options.variables,
|
|
@@ -56,6 +56,15 @@ function processStyle (style, feature, options, mappings) {
|
|
|
56
56
|
_.set(style, _.get(mappings, _.kebabCase(entry.property), entry.property), entry.compiler(context))
|
|
57
57
|
})
|
|
58
58
|
}
|
|
59
|
+
|
|
60
|
+
// visibility attribute can be used to hide individual features
|
|
61
|
+
// visibility is true by default but can also be a string when it's
|
|
62
|
+
// a result of a lodash steing template evaluation
|
|
63
|
+
let visibility = _.get(style, 'style.visibility', true)
|
|
64
|
+
if (typeof visibility === 'string') visibility = visibility === 'true'
|
|
65
|
+
// The 'kdk-hidden-features' pane is created when the leaflet map is initialized
|
|
66
|
+
// if (!visibility) _.set(style, `style.${type}.pane`, 'kdk-hidden-features')
|
|
67
|
+
|
|
59
68
|
return style
|
|
60
69
|
}
|
|
61
70
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="q-pa-sm">
|
|
3
|
+
<KShape
|
|
4
|
+
class="text-weight-bold"
|
|
5
|
+
:options="{
|
|
6
|
+
shape: 'circle',
|
|
7
|
+
color: 'white',
|
|
8
|
+
stroke: {
|
|
9
|
+
color: 'primary',
|
|
10
|
+
width: '2'
|
|
11
|
+
},
|
|
12
|
+
text: {
|
|
13
|
+
label: 'i',
|
|
14
|
+
color: 'primary'
|
|
15
|
+
}
|
|
16
|
+
}"
|
|
17
|
+
/>
|
|
18
|
+
<q-popup-proxy
|
|
19
|
+
id="attributions-popup"
|
|
20
|
+
transition-show="scale"
|
|
21
|
+
transition-hide="scale"
|
|
22
|
+
anchor="center left"
|
|
23
|
+
self="bottom right"
|
|
24
|
+
>
|
|
25
|
+
<div
|
|
26
|
+
id="attributions-banner"
|
|
27
|
+
class="bg-white text-primary text-center q-col-gutter-y-xs"
|
|
28
|
+
>
|
|
29
|
+
<!-- Header Content -->
|
|
30
|
+
<div v-if="header">
|
|
31
|
+
<KContent :content="header" :class="headerClass" />
|
|
32
|
+
</div>
|
|
33
|
+
<!-- Main Content -->
|
|
34
|
+
<div
|
|
35
|
+
id="attributions-content"
|
|
36
|
+
v-html="sanitizedAttributions"
|
|
37
|
+
class="text-caption q-py-none q-px-sm"
|
|
38
|
+
/>
|
|
39
|
+
<!-- Footer Content -->
|
|
40
|
+
<div v-if="footer">
|
|
41
|
+
<KContent :content="footer" :class="footerClass" />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</q-popup-proxy>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<script setup>
|
|
49
|
+
import _ from 'lodash'
|
|
50
|
+
import logger from 'loglevel'
|
|
51
|
+
import config from 'config'
|
|
52
|
+
import { ref, computed, watch } from 'vue'
|
|
53
|
+
import { Document } from '../../../core/client/document.js'
|
|
54
|
+
import { KShape } from '../../../core/client/components/media'
|
|
55
|
+
import { useCurrentActivity } from '../composables'
|
|
56
|
+
import KContent from '../../../core/client/components/KContent.vue'
|
|
57
|
+
|
|
58
|
+
// Data
|
|
59
|
+
const { CurrentActivity } = useCurrentActivity({ selection: false, probe: false })
|
|
60
|
+
const attributions = ref({})
|
|
61
|
+
const header = ref(_.get(config, 'attribution.header', []))
|
|
62
|
+
const headerClass = ref(_.get(config, 'attribution.headerClass', ''))
|
|
63
|
+
const footer = ref(_.get(config, 'attribution.footer', []))
|
|
64
|
+
const footerClass = ref(_.get(config, 'attribution.footerClass', ''))
|
|
65
|
+
|
|
66
|
+
// Computed
|
|
67
|
+
const sanitizedAttributions = computed(() => {
|
|
68
|
+
let content = ''
|
|
69
|
+
_.forOwn(attributions.value, (attribution, layer) => {
|
|
70
|
+
content += `${attribution}<br>`
|
|
71
|
+
})
|
|
72
|
+
return Document.sanitizeHtml(content)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
// Watch
|
|
76
|
+
watch(CurrentActivity, (newActivity, oldActivity) => {
|
|
77
|
+
if (oldActivity) {
|
|
78
|
+
// remove listeners
|
|
79
|
+
oldActivity.value.$engineEvents.off('layer-shown', onShowLayer)
|
|
80
|
+
oldActivity.value.$engineEvents.off('layer-hidden', onHideLayer)
|
|
81
|
+
}
|
|
82
|
+
if (newActivity) {
|
|
83
|
+
// setup attribution
|
|
84
|
+
newActivity.getLayers().forEach((layer) => {
|
|
85
|
+
if (newActivity.isLayerVisible(layer.name)) {
|
|
86
|
+
onShowLayer(layer)
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
// install listeners
|
|
90
|
+
newActivity.$engineEvents.on('layer-shown', onShowLayer)
|
|
91
|
+
newActivity.$engineEvents.on('layer-hidden', onHideLayer)
|
|
92
|
+
}
|
|
93
|
+
}, { immediate: true })
|
|
94
|
+
|
|
95
|
+
// Functions
|
|
96
|
+
function onShowLayer (layer) {
|
|
97
|
+
if (layer.attribution) {
|
|
98
|
+
logger.debug(`[KDK] Add ${layer.name} to attribution`)
|
|
99
|
+
_.set(attributions.value, _.kebabCase(layer.name), layer.attribution)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function onHideLayer (layer) {
|
|
103
|
+
if (layer.attribution) {
|
|
104
|
+
logger.debug(`[KDK] Remove ${layer.name} from attribution`)
|
|
105
|
+
_.unset(attributions.value, _.kebabCase(layer.name))
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
</script>
|
|
@@ -28,8 +28,8 @@ export default {
|
|
|
28
28
|
inject: ['kActivity'],
|
|
29
29
|
props: {
|
|
30
30
|
size: {
|
|
31
|
-
type:
|
|
32
|
-
default:
|
|
31
|
+
type: Number,
|
|
32
|
+
default: 48
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
data () {
|
|
@@ -61,30 +61,23 @@ export default {
|
|
|
61
61
|
id: 'position-target',
|
|
62
62
|
component: 'QImg',
|
|
63
63
|
src: 'icons/kdk/target.svg',
|
|
64
|
-
height: this.size
|
|
65
|
-
width: this.size
|
|
66
|
-
|
|
64
|
+
height: `${this.size}px`,
|
|
65
|
+
width: `${this.size}px`,
|
|
66
|
+
position: 'center',
|
|
67
|
+
offset: [0, -this.size / 2],
|
|
68
|
+
style: 'pointer-events: none; background-color: #00000020; border-radius: 50%;'
|
|
67
69
|
}
|
|
68
70
|
kdkCoreUtils.bindContent(target, this.kActivity)
|
|
69
|
-
const
|
|
71
|
+
const stickies = Layout.getStickies().components
|
|
70
72
|
// Required to use splice when modifying an object inside an array to make it reactive
|
|
71
|
-
|
|
73
|
+
stickies.splice(stickies.length, 0, target)
|
|
72
74
|
this.kActivity.$engineEvents.on('move', this.updatePosition)
|
|
73
75
|
},
|
|
74
76
|
beforeUnmount () {
|
|
75
|
-
const
|
|
77
|
+
const stickies = Layout.getStickies().components
|
|
76
78
|
// Required to use splice when modifying an object inside an array to make it reactive
|
|
77
|
-
|
|
79
|
+
stickies.splice(_.findIndex(stickies, component => component.id === 'position-target'), 1)
|
|
78
80
|
this.kActivity.$engineEvents.off('move', this.updatePosition)
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
83
|
</script>
|
|
82
|
-
|
|
83
|
-
<style lang="scss">
|
|
84
|
-
.k-position-indicator {
|
|
85
|
-
pointer-events: none;
|
|
86
|
-
border-radius: 50%;
|
|
87
|
-
background-color: #00000020;
|
|
88
|
-
z-index: $sticky-z-index;
|
|
89
|
-
}
|
|
90
|
-
</style>
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
menu-anchor="bottom middle"
|
|
18
18
|
menu-self="top middle">
|
|
19
19
|
<template v-slot:default>
|
|
20
|
-
<
|
|
20
|
+
<KGrid
|
|
21
21
|
service="projects"
|
|
22
22
|
:base-query="{ _id: { $ne: projectId } }"
|
|
23
|
-
@selection-changed="onProjectSelected"
|
|
24
23
|
:dense="true"
|
|
24
|
+
@selection-changed="onProjectSelected"
|
|
25
25
|
/>
|
|
26
26
|
</template>
|
|
27
27
|
</q-btn-dropdown>
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
|
|
31
31
|
<script>
|
|
32
32
|
import _ from 'lodash'
|
|
33
|
-
import {
|
|
33
|
+
import { KGrid } from '../../../core/client/components'
|
|
34
34
|
import { useProject } from '../composables'
|
|
35
35
|
|
|
36
36
|
export default {
|
|
37
37
|
components: {
|
|
38
|
-
|
|
38
|
+
KGrid
|
|
39
39
|
},
|
|
40
40
|
inject: ['kActivity'],
|
|
41
41
|
computed: {
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<q-expansion-item
|
|
3
|
+
:header-class="headerClass"
|
|
4
|
+
:icon="icon"
|
|
5
|
+
:label="name"
|
|
6
|
+
:default-opened="defaultOpened"
|
|
7
|
+
expand-separator
|
|
8
|
+
@update:model-value="onToggled"
|
|
9
|
+
>
|
|
10
|
+
<component
|
|
11
|
+
:is="category.componentInstance"
|
|
12
|
+
:layers="layers"
|
|
13
|
+
:forecastModels="forecastModels"
|
|
14
|
+
:options="category.options || category">
|
|
15
|
+
</component>
|
|
16
|
+
</q-expansion-item>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script setup>
|
|
20
|
+
import _ from 'lodash'
|
|
21
|
+
import { computed } from 'vue'
|
|
22
|
+
import { i18n, LocalStorage } from '../../../../core/client'
|
|
23
|
+
|
|
24
|
+
// Props
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
category: {
|
|
27
|
+
type: Object,
|
|
28
|
+
required: true
|
|
29
|
+
},
|
|
30
|
+
layers: {
|
|
31
|
+
type: Array,
|
|
32
|
+
required: true
|
|
33
|
+
},
|
|
34
|
+
forecastModels: {
|
|
35
|
+
type: Array,
|
|
36
|
+
default: () => []
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
// Data
|
|
41
|
+
const localStorageKey = 'catalog-categories'
|
|
42
|
+
|
|
43
|
+
// Computed
|
|
44
|
+
const name = computed(() => {
|
|
45
|
+
return i18n.tie(props.category.name)
|
|
46
|
+
})
|
|
47
|
+
const headerClass = computed(() => {
|
|
48
|
+
const defaultClass = 'text-' + _.get(props.category, 'icon.color', 'primary')
|
|
49
|
+
return _.get(props.category, 'headerClass', defaultClass)
|
|
50
|
+
})
|
|
51
|
+
const icon = computed(() => {
|
|
52
|
+
_.get(props.category, 'icon.name', _.get(props.category, 'icon'))
|
|
53
|
+
})
|
|
54
|
+
const defaultOpened = computed(() => {
|
|
55
|
+
const states = LocalStorage.get(localStorageKey)
|
|
56
|
+
if (states && _.has(states, getId())) return states[getId()]
|
|
57
|
+
// if category explicitly specify default opened state, use that
|
|
58
|
+
if (_.has(props.category, 'options.open')) return props.category.options.open
|
|
59
|
+
// otherwise, default open when there's only one category
|
|
60
|
+
// return this.filteredCategories.length === 1
|
|
61
|
+
// robin: to not break existing apps, just return false when options.open is not defined
|
|
62
|
+
return false
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
// Functions
|
|
66
|
+
function getId () {
|
|
67
|
+
return _.kebabCase(_.replace(props.category.name, 'Categories.', ''))
|
|
68
|
+
}
|
|
69
|
+
function onToggled (value) {
|
|
70
|
+
const states = LocalStorage.get(localStorageKey, {})
|
|
71
|
+
states[getId()] = value
|
|
72
|
+
LocalStorage.set(localStorageKey, states)
|
|
73
|
+
}
|
|
74
|
+
</script>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<KModal
|
|
3
3
|
id="layer-categories-modal"
|
|
4
4
|
:title="title"
|
|
5
5
|
:toolbar="toolbar"
|
|
@@ -8,37 +8,48 @@
|
|
|
8
8
|
>
|
|
9
9
|
<div id="layer-categories-content">
|
|
10
10
|
<q-card-section id="layer-categories-list" v-if="mode === 'list'">
|
|
11
|
-
<
|
|
11
|
+
<KGrid
|
|
12
12
|
style="min-height: 50px; min-width: 200px"
|
|
13
13
|
service="catalog"
|
|
14
14
|
:renderer="categoryRenderer"
|
|
15
|
-
:nbItemsPerPage="
|
|
15
|
+
:nbItemsPerPage="12"
|
|
16
16
|
:base-query="baseQuery"
|
|
17
17
|
:filter-query="filter.query"
|
|
18
|
-
|
|
18
|
+
:append-items="true"
|
|
19
|
+
@collection-refreshed="refreshCategories"
|
|
20
|
+
/>
|
|
19
21
|
</q-card-section>
|
|
20
22
|
<q-card-section id="layer-category-add" v-if="mode === 'add'">
|
|
21
|
-
<
|
|
23
|
+
<KForm
|
|
24
|
+
:ref="onAddFormCreated"
|
|
25
|
+
:schema="categorySchema"
|
|
26
|
+
style="min-width: 300px"
|
|
27
|
+
/>
|
|
22
28
|
</q-card-section>
|
|
23
29
|
<q-card-section id="layer-category-edit" v-if="mode === 'edit'">
|
|
24
|
-
<
|
|
30
|
+
<KForm
|
|
31
|
+
:ref="onEditFormCreated"
|
|
32
|
+
:schema="categorySchema"
|
|
33
|
+
style="min-width: 300px"
|
|
34
|
+
@form-ready="onEditFormReady"
|
|
35
|
+
/>
|
|
25
36
|
</q-card-section>
|
|
26
37
|
</div>
|
|
27
|
-
</
|
|
38
|
+
</KModal>
|
|
28
39
|
</template>
|
|
29
40
|
|
|
30
41
|
<script>
|
|
31
42
|
import _ from 'lodash'
|
|
32
43
|
import { mixins as kCoreMixins } from '../../../../core/client'
|
|
33
|
-
import { KModal, KAction, KPanel,
|
|
44
|
+
import { KModal, KGrid, KAction, KPanel, KForm } from '../../../../core/client/components'
|
|
34
45
|
|
|
35
46
|
export default {
|
|
36
|
-
name: 'k-layer-categories',
|
|
37
47
|
components: {
|
|
38
48
|
KModal,
|
|
49
|
+
KGrid,
|
|
39
50
|
KAction,
|
|
40
51
|
KPanel,
|
|
41
|
-
|
|
52
|
+
KForm
|
|
42
53
|
},
|
|
43
54
|
mixins: [
|
|
44
55
|
kCoreMixins.baseModal
|
|
@@ -187,10 +198,11 @@ export default {
|
|
|
187
198
|
filter: this.$store.get('filter'),
|
|
188
199
|
sorter: this.$store.get('sorter'),
|
|
189
200
|
mode: 'list',
|
|
190
|
-
count:
|
|
201
|
+
count: undefined,
|
|
191
202
|
savingCategory: false,
|
|
192
203
|
categoryRenderer: {
|
|
193
204
|
component: 'collection/KItem',
|
|
205
|
+
class: 'col-12',
|
|
194
206
|
actions: [{
|
|
195
207
|
id: 'edit-layer-category',
|
|
196
208
|
icon: 'las la-file-alt',
|
|
@@ -246,7 +258,7 @@ export default {
|
|
|
246
258
|
if (!_.isEmpty(category.layers)) category.description = category.layers.join(',')
|
|
247
259
|
})
|
|
248
260
|
} else {
|
|
249
|
-
if (
|
|
261
|
+
if (this.count === 0 && _.isEmpty(this.filter.pattern)) this.mode = 'add'
|
|
250
262
|
}
|
|
251
263
|
},
|
|
252
264
|
onAddFormCreated (ref) {
|