@kalisio/kdk 2.5.3 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yaml +35 -6
- package/.vscode/settings.json +5 -0
- package/client.globe.js +8 -0
- package/client.js +8 -0
- package/client.map.js +8 -0
- package/core/api/hooks/hooks.push.js +3 -2
- package/core/api/hooks/hooks.tags.js +56 -0
- package/core/api/models/tags.model.mongodb.js +8 -0
- package/core/api/services/index.js +33 -2
- package/core/api/services/tags/tags.hooks.js +47 -0
- package/core/client/api.js +5 -5
- package/core/client/components/KActivity.vue +3 -2
- package/core/client/components/KChip.vue +2 -2
- package/core/client/components/KEditor.vue +3 -1
- package/core/client/components/KFollower.vue +4 -4
- package/core/client/components/KStore.vue +1 -1
- package/core/client/components/KTab.vue +20 -7
- package/core/client/components/account/KProfile.vue +9 -25
- package/core/client/components/action/KAction.vue +10 -10
- package/core/client/components/action/KToggleFullscreenAction.vue +2 -11
- package/core/client/components/app/KHome.vue +3 -2
- package/core/client/components/collection/KFilter.vue +5 -4
- package/core/client/components/collection/KGrid.vue +5 -1
- package/core/client/components/collection/KItemsFilter.vue +47 -0
- package/core/client/components/collection/KItemsSorter.vue +42 -0
- package/core/client/components/collection/KScrollDown.vue +2 -2
- package/core/client/components/collection/KSearchFilterControl.vue +3 -2
- package/core/client/components/collection/KSorter.vue +33 -37
- package/core/client/components/collection/KTagsFilterControl.vue +14 -40
- package/core/client/components/collection/KTagsFilterView.vue +10 -45
- package/core/client/components/collection/KTimeFilterControl.vue +6 -7
- package/core/client/components/collection/KTimeFilterView.vue +13 -22
- package/core/client/components/collection/KTimeLine.vue +18 -9
- package/core/client/components/form/KColorField.vue +13 -6
- package/core/client/components/form/KColorScaleField.vue +7 -12
- package/core/client/components/form/KFileField.vue +118 -89
- package/core/client/components/form/KForm.vue +30 -18
- package/core/client/components/form/KIconField.vue +4 -1
- package/core/client/components/form/KNumberField.vue +9 -2
- package/core/client/components/form/KSelectField.vue +1 -4
- package/core/client/components/form/KTagField.vue +229 -0
- package/core/client/components/form/KTextField.vue +4 -0
- package/core/client/components/form/KTextareaField.vue +3 -1
- package/core/client/components/input/KShapePicker.vue +3 -3
- package/core/client/components/layout/KFab.vue +32 -20
- package/core/client/components/layout/KPage.vue +11 -6
- package/core/client/components/layout/KWindow.vue +6 -1
- package/core/client/components/media/index.js +2 -6
- package/core/client/components/menu/KMenu.vue +12 -10
- package/core/client/components/menu/KSubMenu.vue +12 -12
- package/core/client/components/messages/KMessageCard.vue +13 -12
- package/core/client/components/messages/KMessageComposer.vue +13 -9
- package/core/client/components/messages/KMessagesTimeLine.vue +16 -8
- package/core/client/components/tags/KTagFilter.vue +99 -0
- package/core/client/components/tags/KTagItem.vue +65 -0
- package/core/client/components/tags/KTagManager.vue +198 -0
- package/core/client/components/tags/KTagSelection.vue +82 -0
- package/core/client/components/time/KDate.vue +3 -17
- package/core/client/components/time/KDateTime.vue +1 -1
- package/core/client/components/time/KTime.vue +0 -4
- package/core/client/composables/collection-filter.js +41 -2
- package/core/client/composables/collection.js +3 -3
- package/core/client/composables/index.js +1 -0
- package/core/client/composables/pwa.js +13 -0
- package/core/client/composables/session.js +7 -8
- package/core/client/composables/user.js +36 -0
- package/core/client/directives/index.js +1 -0
- package/core/client/directives/v-drop-file.js +174 -0
- package/core/client/document.js +2 -1
- package/core/client/exporter.js +17 -3
- package/core/client/i18n/core_en.json +34 -7
- package/core/client/i18n/core_fr.json +36 -9
- package/core/client/i18n.js +26 -11
- package/core/client/layout.js +5 -5
- package/core/client/mixins/mixin.base-activity.js +8 -5
- package/core/client/mixins/mixin.base-editor.js +2 -1
- package/core/client/mixins/mixin.base-field.js +3 -2
- package/core/client/mixins/mixin.base-item.js +12 -10
- package/core/client/mixins/mixin.service.js +3 -1
- package/core/client/platform.js +0 -3
- package/core/client/readers/reader.json.js +2 -2
- package/core/client/utils/index.js +2 -0
- package/core/client/utils/utils.collection.js +6 -6
- package/core/client/utils/utils.colors.js +473 -173
- package/core/client/utils/utils.files.js +19 -0
- package/core/client/utils/utils.locale.js +13 -17
- package/core/client/utils/utils.services.js +27 -0
- package/core/client/utils/utils.shapes.js +2 -2
- package/core/client/utils/utils.tags.js +17 -0
- package/core/client/utils/utils.tours.js +31 -0
- package/core/common/permissions.js +3 -0
- package/core/common/schemas/tags.update.json +35 -0
- package/core/common/schemas/users.update-profile.json +1 -1
- package/core/common/utils.js +5 -5
- package/coverage/core/api/application.js.html +464 -464
- package/coverage/core/api/authentication.js.html +219 -351
- package/coverage/core/api/db.js.html +194 -209
- package/coverage/core/api/hooks/hooks.authentication.js.html +208 -34
- package/coverage/core/api/hooks/hooks.authorisations.js.html +717 -432
- package/coverage/core/api/hooks/hooks.groups.js.html +52 -52
- package/coverage/core/api/hooks/hooks.logger.js.html +43 -43
- package/coverage/core/api/hooks/hooks.model.js.html +300 -312
- package/coverage/core/api/hooks/hooks.organisations.js.html +264 -264
- package/coverage/core/api/hooks/hooks.push.js.html +107 -119
- package/coverage/core/api/hooks/hooks.query.js.html +279 -279
- package/coverage/core/api/hooks/hooks.schemas.js.html +135 -135
- package/coverage/core/api/hooks/hooks.service.js.html +28 -28
- package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
- package/coverage/core/api/hooks/hooks.users.js.html +478 -205
- package/coverage/core/api/hooks/index.html +132 -102
- package/coverage/core/api/hooks/index.js.html +19 -13
- package/coverage/core/api/index.html +69 -54
- package/coverage/core/api/index.js.html +25 -25
- package/coverage/core/api/marshall.js.html +127 -127
- package/coverage/core/api/models/groups.model.mongodb.js.html +26 -26
- package/coverage/core/api/models/index.html +66 -21
- package/coverage/core/api/models/messages.model.mongodb.js.html +27 -39
- package/coverage/core/api/models/organisations.model.mongodb.js.html +16 -16
- package/coverage/core/api/models/tags.model.mongodb.js.html +30 -30
- package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
- package/coverage/core/api/services/account/account.hooks.js.html +46 -46
- package/coverage/core/api/services/account/account.service.js.html +139 -139
- package/coverage/core/api/services/account/index.html +22 -22
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +230 -221
- package/coverage/core/api/services/authorisations/index.html +20 -20
- package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/core/api/services/databases/index.html +1 -1
- package/coverage/core/api/services/groups/groups.hooks.js.html +72 -72
- package/coverage/core/api/services/groups/index.html +21 -21
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/core/api/services/import-export/index.html +32 -32
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +195 -171
- package/coverage/core/api/services/mailer/index.html +32 -32
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/core/api/services/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +76 -94
- package/coverage/core/api/services/organisations/index.html +32 -32
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +72 -72
- package/coverage/core/api/services/organisations/organisations.service.js.html +163 -163
- package/coverage/core/api/services/push/index.html +32 -32
- package/coverage/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/core/api/services/push/push.service.js.html +34 -34
- package/coverage/core/api/services/storage/index.html +29 -29
- package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/core/api/services/storage/storage.service.js.html +37 -37
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +72 -72
- package/coverage/core/api/services/users/index.html +12 -27
- package/coverage/core/api/services/users/users.hooks.js.html +84 -87
- package/coverage/core/api/utils.js.html +1 -1
- package/coverage/core/common/errors.js.html +2 -2
- package/coverage/core/common/index.html +32 -47
- package/coverage/core/common/index.js.html +11 -11
- package/coverage/core/common/permissions.js.html +579 -264
- package/coverage/core/common/schema.js.html +26 -26
- package/coverage/core/common/utils.js.html +59 -65
- package/coverage/index.html +286 -256
- package/coverage/lcov-report/core/api/application.js.html +464 -464
- package/coverage/lcov-report/core/api/authentication.js.html +219 -351
- package/coverage/lcov-report/core/api/db.js.html +194 -209
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +208 -34
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +717 -432
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +52 -52
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +43 -43
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +300 -312
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +264 -264
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +107 -119
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +279 -279
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +135 -135
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +478 -205
- package/coverage/lcov-report/core/api/hooks/index.html +132 -102
- package/coverage/lcov-report/core/api/hooks/index.js.html +19 -13
- package/coverage/lcov-report/core/api/index.html +69 -54
- package/coverage/lcov-report/core/api/index.js.html +25 -25
- package/coverage/lcov-report/core/api/marshall.js.html +127 -127
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +26 -26
- package/coverage/lcov-report/core/api/models/index.html +66 -21
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +27 -39
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +16 -16
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +30 -30
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +46 -46
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +139 -139
- package/coverage/lcov-report/core/api/services/account/index.html +22 -22
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +230 -221
- package/coverage/lcov-report/core/api/services/authorisations/index.html +20 -20
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/groups/index.html +21 -21
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +195 -171
- package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +76 -94
- package/coverage/lcov-report/core/api/services/organisations/index.html +32 -32
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +163 -163
- package/coverage/lcov-report/core/api/services/push/index.html +32 -32
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
- package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +37 -37
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/users/index.html +12 -27
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +84 -87
- package/coverage/lcov-report/core/api/utils.js.html +1 -1
- package/coverage/lcov-report/core/common/errors.js.html +2 -2
- package/coverage/lcov-report/core/common/index.html +32 -47
- package/coverage/lcov-report/core/common/index.js.html +11 -11
- package/coverage/lcov-report/core/common/permissions.js.html +579 -264
- package/coverage/lcov-report/core/common/schema.js.html +26 -26
- package/coverage/lcov-report/core/common/utils.js.html +59 -65
- package/coverage/lcov-report/index.html +286 -256
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +257 -353
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +810 -795
- package/coverage/lcov-report/map/api/hooks/index.html +54 -54
- package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
- package/coverage/lcov-report/map/api/index.html +32 -32
- package/coverage/lcov-report/map/api/index.js.html +46 -46
- package/coverage/lcov-report/map/api/marshall.js.html +72 -72
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +27 -69
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
- package/coverage/lcov-report/map/api/models/index.html +54 -69
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
- package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +160 -178
- package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +114 -183
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +56 -359
- package/coverage/lcov-report/map/api/services/features/index.html +31 -31
- package/coverage/lcov-report/map/api/services/index.html +21 -21
- package/coverage/lcov-report/map/api/services/index.js.html +258 -495
- package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/lcov-report/map/common/errors.js.html +16 -16
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -270
- package/coverage/lcov-report/map/common/grid.js.html +554 -554
- package/coverage/lcov-report/map/common/index.html +158 -158
- package/coverage/lcov-report/map/common/index.js.html +68 -68
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
- package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
- package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
- package/coverage/lcov-report/map/common/permissions.js.html +36 -42
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
- package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
- package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
- package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
- package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
- package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
- package/coverage/lcov.info +7793 -8564
- package/coverage/map/api/hooks/hooks.catalog.js.html +257 -353
- package/coverage/map/api/hooks/hooks.features.js.html +218 -218
- package/coverage/map/api/hooks/hooks.query.js.html +810 -795
- package/coverage/map/api/hooks/index.html +54 -54
- package/coverage/map/api/hooks/index.js.html +16 -16
- package/coverage/map/api/index.html +32 -32
- package/coverage/map/api/index.js.html +46 -46
- package/coverage/map/api/marshall.js.html +72 -72
- package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
- package/coverage/map/api/models/catalog.model.mongodb.js.html +27 -69
- package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
- package/coverage/map/api/models/index.html +54 -69
- package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
- package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
- package/coverage/map/api/services/alerts/index.html +32 -32
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +160 -178
- package/coverage/map/api/services/catalog/index.html +21 -21
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +114 -183
- package/coverage/map/api/services/features/features.service.js.html +56 -359
- package/coverage/map/api/services/features/index.html +31 -31
- package/coverage/map/api/services/index.html +21 -21
- package/coverage/map/api/services/index.js.html +258 -495
- package/coverage/map/api/services/projects/index.html +21 -21
- package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
- package/coverage/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/map/common/errors.js.html +16 -16
- package/coverage/map/common/geotiff-grid-source.js.html +267 -270
- package/coverage/map/common/grid.js.html +554 -554
- package/coverage/map/common/index.html +158 -158
- package/coverage/map/common/index.js.html +68 -68
- package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
- package/coverage/map/common/moment-utils.js.html +18 -18
- package/coverage/map/common/opendap-grid-source.js.html +484 -484
- package/coverage/map/common/opendap-utils.js.html +353 -353
- package/coverage/map/common/permissions.js.html +36 -42
- package/coverage/map/common/time-based-grid-source.js.html +59 -59
- package/coverage/map/common/tms-utils.js.html +6 -6
- package/coverage/map/common/wcs-grid-source.js.html +190 -190
- package/coverage/map/common/wcs-utils.js.html +339 -339
- package/coverage/map/common/weacast-grid-source.js.html +345 -345
- package/coverage/map/common/wfs-utils.js.html +11 -11
- package/coverage/map/common/wms-utils.js.html +8 -8
- package/coverage/map/common/wmts-utils.js.html +7 -7
- package/coverage/tmp/coverage-151166-1723543324307-0.json +1 -0
- package/coverage/tmp/coverage-151178-1723543324283-0.json +1 -0
- package/coverage/tmp/coverage-151189-1723543324271-0.json +1 -0
- package/coverage/tmp/coverage-151201-1723543324248-0.json +1 -0
- package/coverage/tmp/coverage-151208-1723543324227-0.json +1 -0
- package/extras/configs/panes.top.js +33 -11
- package/extras/configs/stickies.js +26 -16
- package/extras/configs/widgets.left.js +13 -1
- package/extras/libs/jsts.min.js +8 -0
- package/{test/client/core/account.js → extras/tests/core/account.mjs} +4 -4
- package/extras/tests/core/api.mjs +114 -0
- package/{test/client/core/collection.js → extras/tests/core/collection.mjs} +8 -8
- package/{test/client/core/dialogs.js → extras/tests/core/dialogs.mjs} +1 -1
- package/extras/tests/core/index.mjs +9 -0
- package/{test/client/core/layout.js → extras/tests/core/layout.mjs} +7 -3
- package/{test/client/core/runner.js → extras/tests/core/runner.mjs} +3 -3
- package/{test/client/core/screens.js → extras/tests/core/screens.mjs} +1 -1
- package/{test/client/core/utils.js → extras/tests/core/utils.mjs} +79 -26
- package/extras/tests/index.mjs +4 -0
- package/{test/client/map/api.js → extras/tests/map/api.mjs} +1 -1
- package/{test/client/map/catalog.js → extras/tests/map/catalog.mjs} +18 -18
- package/{test/client/map/controls.js → extras/tests/map/controls.mjs} +3 -3
- package/extras/tests/map/index.mjs +5 -0
- package/{test/client/map/time.js → extras/tests/map/time.mjs} +3 -3
- package/{test/client/map/utils.js → extras/tests/map/utils.mjs} +6 -5
- package/extras/tours/fab.js +36 -0
- package/extras/tours/layout.js +49 -0
- package/extras/tours/pane.left.js +78 -0
- package/extras/tours/pane.right.js +145 -0
- package/extras/tours/pane.top.js +239 -0
- package/map/api/config/layers.cjs +28 -13
- package/map/api/hooks/hooks.query.js +12 -7
- package/map/api/models/catalog.model.mongodb.js +17 -6
- package/map/api/services/catalog/catalog.hooks.js +1 -1
- package/map/api/services/index.js +18 -1
- package/map/client/cesium/utils/utils.cesium.js +25 -65
- package/map/client/cesium/utils/utils.features.js +1 -0
- package/map/client/cesium/utils/utils.geojson.js +1 -0
- package/map/client/cesium/utils/utils.style.js +7 -6
- package/map/client/components/KFeatureEditor.vue +3 -3
- package/map/client/components/KFeaturesChart.vue +4 -4
- package/map/client/components/KFeaturesFilterEditor.vue +19 -13
- package/map/client/components/KFeaturesFilterManager.vue +7 -4
- package/map/client/components/KFeaturesTable.vue +2 -2
- package/map/client/components/KLayerEditor.vue +6 -6
- package/map/client/components/KMeasureTool.vue +2 -1
- package/map/client/components/catalog/KBaseLayersSelector.vue +1 -1
- package/map/client/components/catalog/KCategoryItem.vue +15 -1
- package/map/client/components/catalog/KConnectLayer.vue +2 -2
- package/map/client/components/catalog/KCreateView.vue +3 -2
- package/map/client/components/catalog/KFilteredLayerItem.vue +26 -6
- package/map/client/components/catalog/KImportLayer.vue +6 -3
- package/map/client/components/catalog/KLayerCategories.vue +6 -6
- package/map/client/components/catalog/KLayerItem.vue +12 -2
- package/map/client/components/catalog/KLayersList.vue +180 -0
- package/map/client/components/catalog/KLayersPanel.vue +146 -36
- package/map/client/components/catalog/KLayersSelector.vue +96 -48
- package/map/client/components/catalog/KProjectEditor.vue +0 -9
- package/map/client/components/catalog/KProjectSelector.vue +3 -2
- package/map/client/components/catalog/KProjectsPanel.vue +23 -8
- package/map/client/components/catalog/KViewsPanel.vue +18 -8
- package/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
- package/map/client/components/form/KDirectionField.vue +3 -6
- package/map/client/components/form/KLayerCategoryField.vue +2 -2
- package/map/client/components/form/KOwsServiceField.vue +25 -24
- package/map/client/components/form/KSelectLayersField.vue +4 -4
- package/map/client/components/form/KSelectViewsField.vue +4 -4
- package/map/client/components/legend/KLayerLegend.vue +11 -2
- package/map/client/components/legend/KLegend.vue +44 -51
- package/map/client/components/location/KLocationCardSection.vue +6 -7
- package/map/client/components/location/KLocationMap.vue +23 -13
- package/map/client/components/stickies/KPosition.vue +5 -0
- package/map/client/components/stickies/KZoomControl.vue +70 -0
- package/map/client/components/styles/KLayerStyleAction.vue +59 -12
- package/map/client/components/styles/KStyleEditor.vue +71 -8
- package/map/client/components/styles/KStyleEditorSection.vue +82 -33
- package/map/client/components/styles/KStyleManager.vue +119 -59
- package/map/client/components/styles/KStylePreview.vue +9 -25
- package/map/client/components/styles/KStylePreviewItem.vue +22 -1
- package/map/client/components/tools/KSearchTool.vue +1 -1
- package/map/client/components/widget/KElevationProfile.vue +20 -17
- package/map/client/components/widget/KInformationBox.vue +5 -5
- package/map/client/components/widget/KMapillaryViewer.vue +2 -1
- package/map/client/components/widget/KTimeSeries.vue +11 -9
- package/map/client/globe.js +2 -0
- package/map/client/i18n/map_en.json +30 -7
- package/map/client/i18n/map_fr.json +30 -7
- package/map/client/leaflet/GradientPath.js +61 -24
- package/map/client/leaflet/ShapeMarker.js +12 -5
- package/map/client/leaflet/TiledMeshLayer.js +3 -3
- package/map/client/leaflet/utils/utils.geojson.js +66 -8
- package/map/client/leaflet/utils/utils.style.js +14 -15
- package/map/client/mixins/globe/mixin.base-globe.js +190 -34
- package/map/client/mixins/globe/mixin.file-layers.js +3 -0
- package/map/client/mixins/globe/mixin.geojson-layers.js +179 -31
- package/map/client/mixins/globe/mixin.opendap-layers.js +2 -1
- package/map/client/mixins/globe/mixin.style.js +23 -1
- package/map/client/mixins/globe/mixin.tooltip.js +14 -2
- package/map/client/mixins/map/mixin.base-map.js +156 -58
- package/map/client/mixins/map/mixin.edit-layers.js +18 -15
- package/map/client/mixins/map/mixin.geojson-layers.js +181 -106
- package/map/client/mixins/map/mixin.heatmap-layers.js +3 -2
- package/map/client/mixins/map/mixin.map-activity.js +6 -1
- package/map/client/mixins/map/mixin.mapillary-layers.js +2 -1
- package/map/client/mixins/map/mixin.pmtiles-layers.js +3 -3
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +3 -2
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +3 -2
- package/map/client/mixins/mixin.activity.js +199 -55
- package/map/client/mixins/mixin.context.js +11 -11
- package/map/client/mixins/mixin.feature-service.js +11 -9
- package/map/client/mixins/mixin.weacast.js +5 -3
- package/map/client/readers/reader.geojson.js +3 -1
- package/map/client/utils/utils.capture.js +3 -3
- package/map/client/utils/utils.catalog.js +9 -5
- package/map/client/utils/utils.features.js +120 -54
- package/map/client/utils/utils.js +25 -10
- package/map/client/utils/utils.layers.js +148 -24
- package/map/client/utils/utils.location.js +26 -9
- package/map/client/utils/utils.schema.js +2 -1
- package/map/client/utils/utils.style.js +53 -9
- package/map/common/geotiff-grid-source.js +1 -3
- package/map/common/opendap-utils.js +0 -1
- package/map/common/tms-utils.js +0 -1
- package/map/common/wcs-utils.js +0 -1
- package/map/common/wfs-utils.js +0 -1
- package/map/common/wms-utils.js +7 -1
- package/map/common/wmts-utils.js +0 -1
- package/package.json +12 -12
- package/scripts/init_runner.sh +3 -3
- package/scripts/kash/CHANGELOG.md +27 -0
- package/scripts/kash/kash.sh +556 -237
- package/scripts/kash/scripts/run_tests.sh +44 -5
- package/scripts/setup_workspace.sh +23 -13
- package/test/api/core/config/default.cjs +2 -1
- package/test/api/core/tags.test.js +62 -0
- package/test/api/core/test-log-2024-04-22.log +84 -0
- package/test/api/core/{test-log-2025-02-05.log → test-log-2024-04-23.log} +3 -3
- package/test/api/core/test-log-2024-08-13.log +3 -0
- package/test/api/map/config/default.cjs +2 -1
- package/test/api/map/config/layers.json +9 -0
- package/test/api/map/data/openradiation.json +13811 -0
- package/test/api/map/grid-sources.test.js +1 -3
- package/test/api/map/index.test.js +60 -1
- package/test/api/map/style.test.js +30 -1
- package/test/api/map/test-log-2025-03-08.log +0 -0
- package/test.api.js +1 -1
- package/vite/App.vue +18 -0
- package/vite/AppWithGlobe.vue +84 -0
- package/vite/GlobeActivity.vue +58 -0
- package/vite/MapActivity.vue +63 -0
- package/vite/MapActivityWithGlobe.vue +63 -0
- package/vite/README.md +169 -0
- package/vite/config.js +221 -0
- package/vite/index_with_globe.html +50 -0
- package/vite/index_with_map.html +50 -0
- package/vite/package.json +173 -0
- package/vite/quasar.variables.scss +17 -0
- package/vite/vite.config.js +166 -0
- package/vite/yarn.lock +11641 -0
- package/core/client/components/media/KImageViewer.vue +0 -68
- package/core/client/components/media/KMarkdownViewer.vue +0 -55
- package/core/client/components/media/KMediaBrowser.vue +0 -301
- package/coverage/core/api/services/users/users.service.js.html +0 -100
- package/coverage/core/common/utils.offline.js.html +0 -199
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
- package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
- package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -196
- package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/map/api/services/styles/index.html +0 -116
- package/coverage/map/api/services/styles/styles.hooks.js.html +0 -196
- package/coverage/tmp/coverage-151198-1753351220086-0.json +0 -1
- package/coverage/tmp/coverage-151210-1753351220070-0.json +0 -1
- package/coverage/tmp/coverage-151221-1753351129816-0.json +0 -1
- package/coverage/tmp/coverage-151233-1753351129803-0.json +0 -1
- package/coverage/tmp/coverage-151240-1753351129770-0.json +0 -1
- package/coverage/tmp/coverage-151307-1753351220058-0.json +0 -1
- package/coverage/tmp/coverage-151319-1753351220044-0.json +0 -1
- package/coverage/tmp/coverage-151326-1753351220010-0.json +0 -1
- package/extras/tours/core/account-profile.js +0 -32
- package/extras/tours/core/account.js +0 -143
- package/extras/tours/core/add-member.js +0 -75
- package/extras/tours/core/add-tag.js +0 -13
- package/extras/tours/core/create-group.js +0 -19
- package/extras/tours/core/create-organisation.js +0 -19
- package/extras/tours/core/create-tag.js +0 -26
- package/extras/tours/core/edit-member-role.js +0 -13
- package/extras/tours/core/groups.js +0 -65
- package/extras/tours/core/join-group.js +0 -13
- package/extras/tours/core/login.js +0 -41
- package/extras/tours/core/members.js +0 -108
- package/extras/tours/core/register.js +0 -61
- package/extras/tours/core/send-reset-password.js +0 -14
- package/extras/tours/core/tags.js +0 -65
- package/extras/tours/map/catalog-panel.js +0 -112
- package/extras/tours/map/fab.js +0 -26
- package/extras/tours/map/navigation-bar.js +0 -187
- package/extras/tours/map/side-nav.js +0 -36
- package/test/api/core/test-log-2025-05-21.log +0 -15
- package/test/api/core/test-log-2025-06-25.log +0 -9
- package/test/api/core/test-log-2025-07-24.log +0 -44
- package/test/api/map/test-log-2025-05-27.log +0 -13
- package/test/api/map/test-log-2025-06-23.log +0 -7
- package/test/api/map/test-log-2025-07-24.log +0 -11
- package/test/client/core/api.js +0 -361
- package/test/client/core/index.js +0 -9
- package/test/client/index.js +0 -4
- package/test/client/map/index.js +0 -5
- package/test.client.js +0 -1
- /package/{test/client/core/time.js → extras/tests/core/time.mjs} +0 -0
- /package/extras/tours/{map/add-layer.js → add-layer.js} +0 -0
- /package/extras/tours/{map/catalog-categories.js → catalog-categories.js} +0 -0
- /package/extras/tours/{map/connect-layer.js → connect-layer.js} +0 -0
- /package/extras/tours/{map/create-layer.js → create-layer.js} +0 -0
- /package/extras/tours/{map/create-view.js → create-view.js} +0 -0
- /package/extras/tours/{map/import-layer.js → import-layer.js} +0 -0
- /package/extras/tours/{map/timeline.js → pane.bottom.js} +0 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">9.86% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>15/152</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1/1</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>0/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">9.86% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>15/152</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -220,305 +220,305 @@
|
|
|
220
220
|
<span class="cline-any cline-yes">1x</span>
|
|
221
221
|
<span class="cline-any cline-yes">1x</span>
|
|
222
222
|
<span class="cline-any cline-yes">1x</span>
|
|
223
|
-
<span class="cline-any cline-yes">2x</span>
|
|
224
|
-
<span class="cline-any cline-no"> </span>
|
|
225
|
-
<span class="cline-any cline-no"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">2x</span>
|
|
227
|
-
<span class="cline-any cline-yes">2x</span>
|
|
228
|
-
<span class="cline-any cline-yes">2x</span>
|
|
229
|
-
<span class="cline-any cline-yes">2x</span>
|
|
230
|
-
<span class="cline-any cline-yes">2x</span>
|
|
231
|
-
<span class="cline-any cline-yes">2x</span>
|
|
232
|
-
<span class="cline-any cline-yes">2x</span>
|
|
233
|
-
<span class="cline-any cline-yes">2x</span>
|
|
234
|
-
<span class="cline-any cline-yes">2x</span>
|
|
235
|
-
<span class="cline-any cline-yes">2x</span>
|
|
236
|
-
<span class="cline-any cline-yes">2x</span>
|
|
237
|
-
<span class="cline-any cline-yes">2x</span>
|
|
238
|
-
<span class="cline-any cline-yes">2x</span>
|
|
239
|
-
<span class="cline-any cline-yes">2x</span>
|
|
240
|
-
<span class="cline-any cline-yes">2x</span>
|
|
241
|
-
<span class="cline-any cline-yes">2x</span>
|
|
242
|
-
<span class="cline-any cline-yes">2x</span>
|
|
243
|
-
<span class="cline-any cline-yes">2x</span>
|
|
244
|
-
<span class="cline-any cline-yes">2x</span>
|
|
245
|
-
<span class="cline-any cline-yes">2x</span>
|
|
246
|
-
<span class="cline-any cline-yes">2x</span>
|
|
247
|
-
<span class="cline-any cline-yes">1x</span>
|
|
248
|
-
<span class="cline-any cline-yes">1x</span>
|
|
249
|
-
<span class="cline-any cline-yes">2x</span>
|
|
250
|
-
<span class="cline-any cline-no"> </span>
|
|
251
|
-
<span class="cline-any cline-no"> </span>
|
|
252
|
-
<span class="cline-any cline-yes">2x</span>
|
|
253
|
-
<span class="cline-any cline-yes">2x</span>
|
|
254
|
-
<span class="cline-any cline-yes">2x</span>
|
|
255
|
-
<span class="cline-any cline-yes">2x</span>
|
|
256
|
-
<span class="cline-any cline-yes">2x</span>
|
|
257
|
-
<span class="cline-any cline-yes">2x</span>
|
|
258
|
-
<span class="cline-any cline-yes">2x</span>
|
|
259
|
-
<span class="cline-any cline-yes">2x</span>
|
|
260
|
-
<span class="cline-any cline-yes">2x</span>
|
|
261
|
-
<span class="cline-any cline-yes">2x</span>
|
|
262
|
-
<span class="cline-any cline-yes">2x</span>
|
|
263
|
-
<span class="cline-any cline-yes">2x</span>
|
|
264
|
-
<span class="cline-any cline-yes">2x</span>
|
|
265
|
-
<span class="cline-any cline-yes">2x</span>
|
|
266
|
-
<span class="cline-any cline-yes">1x</span>
|
|
267
|
-
<span class="cline-any cline-yes">1x</span>
|
|
268
|
-
<span class="cline-any cline-yes">2x</span>
|
|
269
|
-
<span class="cline-any cline-no"> </span>
|
|
270
|
-
<span class="cline-any cline-no"> </span>
|
|
271
|
-
<span class="cline-any cline-yes">2x</span>
|
|
272
|
-
<span class="cline-any cline-yes">2x</span>
|
|
273
|
-
<span class="cline-any cline-yes">2x</span>
|
|
274
|
-
<span class="cline-any cline-yes">2x</span>
|
|
275
|
-
<span class="cline-any cline-yes">2x</span>
|
|
276
|
-
<span class="cline-any cline-yes">2x</span>
|
|
277
|
-
<span class="cline-any cline-yes">2x</span>
|
|
278
|
-
<span class="cline-any cline-yes">2x</span>
|
|
279
|
-
<span class="cline-any cline-yes">2x</span>
|
|
280
|
-
<span class="cline-any cline-yes">2x</span>
|
|
281
|
-
<span class="cline-any cline-yes">2x</span>
|
|
282
|
-
<span class="cline-any cline-yes">2x</span>
|
|
283
|
-
<span class="cline-any cline-yes">2x</span>
|
|
284
|
-
<span class="cline-any cline-yes">2x</span>
|
|
285
|
-
<span class="cline-any cline-yes">2x</span>
|
|
286
|
-
<span class="cline-any cline-yes">2x</span>
|
|
287
|
-
<span class="cline-any cline-yes">2x</span>
|
|
288
|
-
<span class="cline-any cline-yes">2x</span>
|
|
289
|
-
<span class="cline-any cline-yes">2x</span>
|
|
290
|
-
<span class="cline-any cline-yes">2x</span>
|
|
291
|
-
<span class="cline-any cline-yes">1x</span>
|
|
292
|
-
<span class="cline-any cline-yes">1x</span>
|
|
293
|
-
<span class="cline-any cline-yes">2x</span>
|
|
294
|
-
<span class="cline-any cline-no"> </span>
|
|
295
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
-
<span class="cline-any cline-yes">2x</span>
|
|
297
|
-
<span class="cline-any cline-yes">2x</span>
|
|
298
|
-
<span class="cline-any cline-yes">2x</span>
|
|
299
|
-
<span class="cline-any cline-yes">2x</span>
|
|
300
|
-
<span class="cline-any cline-yes">2x</span>
|
|
301
|
-
<span class="cline-any cline-yes">2x</span>
|
|
302
|
-
<span class="cline-any cline-yes">2x</span>
|
|
303
|
-
<span class="cline-any cline-yes">2x</span>
|
|
304
|
-
<span class="cline-any cline-yes">2x</span>
|
|
305
|
-
<span class="cline-any cline-yes">2x</span>
|
|
306
|
-
<span class="cline-any cline-yes">2x</span>
|
|
307
|
-
<span class="cline-any cline-yes">2x</span>
|
|
308
|
-
<span class="cline-any cline-yes">2x</span>
|
|
309
|
-
<span class="cline-any cline-yes">2x</span>
|
|
310
|
-
<span class="cline-any cline-yes">2x</span>
|
|
311
|
-
<span class="cline-any cline-yes">2x</span>
|
|
312
|
-
<span class="cline-any cline-yes">2x</span>
|
|
313
|
-
<span class="cline-any cline-yes">2x</span>
|
|
314
|
-
<span class="cline-any cline-yes">2x</span>
|
|
315
|
-
<span class="cline-any cline-yes">1x</span>
|
|
316
|
-
<span class="cline-any cline-yes">1x</span>
|
|
317
|
-
<span class="cline-any cline-yes">1x</span>
|
|
318
|
-
<span class="cline-any cline-yes">1x</span>
|
|
319
223
|
<span class="cline-any cline-no"> </span>
|
|
320
224
|
<span class="cline-any cline-no"> </span>
|
|
321
|
-
<span class="cline-any cline-
|
|
322
|
-
<span class="cline-any cline-
|
|
323
|
-
<span class="cline-any cline-
|
|
324
|
-
<span class="cline-any cline-
|
|
325
|
-
<span class="cline-any cline-
|
|
326
|
-
<span class="cline-any cline-
|
|
327
|
-
<span class="cline-any cline-
|
|
328
|
-
<span class="cline-any cline-
|
|
329
|
-
<span class="cline-any cline-
|
|
330
|
-
<span class="cline-any cline-
|
|
331
|
-
<span class="cline-any cline-
|
|
332
|
-
<span class="cline-any cline-
|
|
333
|
-
<span class="cline-any cline-
|
|
334
|
-
<span class="cline-any cline-
|
|
335
|
-
<span class="cline-any cline-
|
|
336
|
-
<span class="cline-any cline-
|
|
337
|
-
<span class="cline-any cline-
|
|
338
|
-
<span class="cline-any cline-
|
|
339
|
-
<span class="cline-any cline-
|
|
340
|
-
<span class="cline-any cline-
|
|
341
|
-
<span class="cline-any cline-yes">1x</span>
|
|
225
|
+
<span class="cline-any cline-no"> </span>
|
|
226
|
+
<span class="cline-any cline-no"> </span>
|
|
227
|
+
<span class="cline-any cline-no"> </span>
|
|
228
|
+
<span class="cline-any cline-no"> </span>
|
|
229
|
+
<span class="cline-any cline-no"> </span>
|
|
230
|
+
<span class="cline-any cline-no"> </span>
|
|
231
|
+
<span class="cline-any cline-no"> </span>
|
|
232
|
+
<span class="cline-any cline-no"> </span>
|
|
233
|
+
<span class="cline-any cline-no"> </span>
|
|
234
|
+
<span class="cline-any cline-no"> </span>
|
|
235
|
+
<span class="cline-any cline-no"> </span>
|
|
236
|
+
<span class="cline-any cline-no"> </span>
|
|
237
|
+
<span class="cline-any cline-no"> </span>
|
|
238
|
+
<span class="cline-any cline-no"> </span>
|
|
239
|
+
<span class="cline-any cline-no"> </span>
|
|
240
|
+
<span class="cline-any cline-no"> </span>
|
|
241
|
+
<span class="cline-any cline-no"> </span>
|
|
242
|
+
<span class="cline-any cline-no"> </span>
|
|
243
|
+
<span class="cline-any cline-no"> </span>
|
|
244
|
+
<span class="cline-any cline-no"> </span>
|
|
342
245
|
<span class="cline-any cline-no"> </span>
|
|
343
246
|
<span class="cline-any cline-no"> </span>
|
|
344
247
|
<span class="cline-any cline-yes">1x</span>
|
|
345
248
|
<span class="cline-any cline-yes">1x</span>
|
|
249
|
+
<span class="cline-any cline-no"> </span>
|
|
250
|
+
<span class="cline-any cline-no"> </span>
|
|
251
|
+
<span class="cline-any cline-no"> </span>
|
|
252
|
+
<span class="cline-any cline-no"> </span>
|
|
253
|
+
<span class="cline-any cline-no"> </span>
|
|
254
|
+
<span class="cline-any cline-no"> </span>
|
|
255
|
+
<span class="cline-any cline-no"> </span>
|
|
256
|
+
<span class="cline-any cline-no"> </span>
|
|
257
|
+
<span class="cline-any cline-no"> </span>
|
|
258
|
+
<span class="cline-any cline-no"> </span>
|
|
259
|
+
<span class="cline-any cline-no"> </span>
|
|
260
|
+
<span class="cline-any cline-no"> </span>
|
|
261
|
+
<span class="cline-any cline-no"> </span>
|
|
262
|
+
<span class="cline-any cline-no"> </span>
|
|
263
|
+
<span class="cline-any cline-no"> </span>
|
|
264
|
+
<span class="cline-any cline-no"> </span>
|
|
265
|
+
<span class="cline-any cline-no"> </span>
|
|
346
266
|
<span class="cline-any cline-yes">1x</span>
|
|
347
267
|
<span class="cline-any cline-yes">1x</span>
|
|
268
|
+
<span class="cline-any cline-no"> </span>
|
|
269
|
+
<span class="cline-any cline-no"> </span>
|
|
270
|
+
<span class="cline-any cline-no"> </span>
|
|
271
|
+
<span class="cline-any cline-no"> </span>
|
|
272
|
+
<span class="cline-any cline-no"> </span>
|
|
273
|
+
<span class="cline-any cline-no"> </span>
|
|
274
|
+
<span class="cline-any cline-no"> </span>
|
|
275
|
+
<span class="cline-any cline-no"> </span>
|
|
276
|
+
<span class="cline-any cline-no"> </span>
|
|
277
|
+
<span class="cline-any cline-no"> </span>
|
|
278
|
+
<span class="cline-any cline-no"> </span>
|
|
279
|
+
<span class="cline-any cline-no"> </span>
|
|
280
|
+
<span class="cline-any cline-no"> </span>
|
|
281
|
+
<span class="cline-any cline-no"> </span>
|
|
282
|
+
<span class="cline-any cline-no"> </span>
|
|
283
|
+
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<span class="cline-any cline-no"> </span>
|
|
285
|
+
<span class="cline-any cline-no"> </span>
|
|
286
|
+
<span class="cline-any cline-no"> </span>
|
|
287
|
+
<span class="cline-any cline-no"> </span>
|
|
288
|
+
<span class="cline-any cline-no"> </span>
|
|
289
|
+
<span class="cline-any cline-no"> </span>
|
|
290
|
+
<span class="cline-any cline-no"> </span>
|
|
348
291
|
<span class="cline-any cline-yes">1x</span>
|
|
349
292
|
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-no"> </span>
|
|
294
|
+
<span class="cline-any cline-no"> </span>
|
|
295
|
+
<span class="cline-any cline-no"> </span>
|
|
296
|
+
<span class="cline-any cline-no"> </span>
|
|
297
|
+
<span class="cline-any cline-no"> </span>
|
|
298
|
+
<span class="cline-any cline-no"> </span>
|
|
299
|
+
<span class="cline-any cline-no"> </span>
|
|
300
|
+
<span class="cline-any cline-no"> </span>
|
|
301
|
+
<span class="cline-any cline-no"> </span>
|
|
302
|
+
<span class="cline-any cline-no"> </span>
|
|
303
|
+
<span class="cline-any cline-no"> </span>
|
|
304
|
+
<span class="cline-any cline-no"> </span>
|
|
305
|
+
<span class="cline-any cline-no"> </span>
|
|
306
|
+
<span class="cline-any cline-no"> </span>
|
|
307
|
+
<span class="cline-any cline-no"> </span>
|
|
308
|
+
<span class="cline-any cline-no"> </span>
|
|
309
|
+
<span class="cline-any cline-no"> </span>
|
|
310
|
+
<span class="cline-any cline-no"> </span>
|
|
311
|
+
<span class="cline-any cline-no"> </span>
|
|
312
|
+
<span class="cline-any cline-no"> </span>
|
|
313
|
+
<span class="cline-any cline-no"> </span>
|
|
314
|
+
<span class="cline-any cline-no"> </span>
|
|
350
315
|
<span class="cline-any cline-yes">1x</span>
|
|
351
316
|
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
318
|
+
<span class="cline-any cline-no"> </span>
|
|
319
|
+
<span class="cline-any cline-no"> </span>
|
|
320
|
+
<span class="cline-any cline-no"> </span>
|
|
321
|
+
<span class="cline-any cline-no"> </span>
|
|
322
|
+
<span class="cline-any cline-no"> </span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
324
|
+
<span class="cline-any cline-no"> </span>
|
|
325
|
+
<span class="cline-any cline-no"> </span>
|
|
326
|
+
<span class="cline-any cline-no"> </span>
|
|
327
|
+
<span class="cline-any cline-no"> </span>
|
|
328
|
+
<span class="cline-any cline-no"> </span>
|
|
329
|
+
<span class="cline-any cline-no"> </span>
|
|
330
|
+
<span class="cline-any cline-no"> </span>
|
|
331
|
+
<span class="cline-any cline-no"> </span>
|
|
332
|
+
<span class="cline-any cline-no"> </span>
|
|
333
|
+
<span class="cline-any cline-no"> </span>
|
|
334
|
+
<span class="cline-any cline-no"> </span>
|
|
335
|
+
<span class="cline-any cline-no"> </span>
|
|
336
|
+
<span class="cline-any cline-no"> </span>
|
|
337
|
+
<span class="cline-any cline-no"> </span>
|
|
338
|
+
<span class="cline-any cline-no"> </span>
|
|
339
|
+
<span class="cline-any cline-no"> </span>
|
|
340
|
+
<span class="cline-any cline-no"> </span>
|
|
341
|
+
<span class="cline-any cline-no"> </span>
|
|
342
|
+
<span class="cline-any cline-no"> </span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-no"> </span>
|
|
345
|
+
<span class="cline-any cline-no"> </span>
|
|
346
|
+
<span class="cline-any cline-no"> </span>
|
|
347
|
+
<span class="cline-any cline-no"> </span>
|
|
348
|
+
<span class="cline-any cline-no"> </span>
|
|
349
|
+
<span class="cline-any cline-no"> </span>
|
|
350
|
+
<span class="cline-any cline-no"> </span>
|
|
352
351
|
<span class="cline-any cline-yes">1x</span>
|
|
353
352
|
<span class="cline-any cline-yes">1x</span>
|
|
354
|
-
<span class="cline-any cline-yes">2x</span>
|
|
355
353
|
<span class="cline-any cline-no"> </span>
|
|
356
354
|
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-yes">2x</span>
|
|
358
|
-
<span class="cline-any cline-yes">2x</span>
|
|
359
|
-
<span class="cline-any cline-yes">2x</span>
|
|
360
|
-
<span class="cline-any cline-yes">2x</span>
|
|
361
|
-
<span class="cline-any cline-yes">2x</span>
|
|
362
355
|
<span class="cline-any cline-no"> </span>
|
|
363
356
|
<span class="cline-any cline-no"> </span>
|
|
364
357
|
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-
|
|
366
|
-
<span class="cline-any cline-
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
369
|
-
<span class="cline-any cline-
|
|
358
|
+
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-no"> </span>
|
|
361
|
+
<span class="cline-any cline-no"> </span>
|
|
362
|
+
<span class="cline-any cline-no"> </span>
|
|
363
|
+
<span class="cline-any cline-no"> </span>
|
|
364
|
+
<span class="cline-any cline-no"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-no"> </span>
|
|
368
|
+
<span class="cline-any cline-no"> </span>
|
|
369
|
+
<span class="cline-any cline-no"> </span>
|
|
370
370
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
371
371
|
import makeDebug from 'debug'
|
|
372
372
|
const debug = makeDebug('kdk:core:organisations:hooks')
|
|
373
373
|
|
|
374
|
-
export async function createOrganisationServices (hook) {
|
|
375
|
-
|
|
374
|
+
export <span class="fstat-no" title="function not covered" >async function createOrganisationServices (hook) {</span>
|
|
375
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
376
376
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'createOrganisationServices\' hook should only be used as a \'after\' hook.')</span>
|
|
377
377
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
378
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
379
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
380
|
+
<span class="cstat-no" title="statement not covered" > const organisationService = hook.service</span>
|
|
381
|
+
<span class="cstat-no" title="statement not covered" > const databaseService = app.getService('databases')</span>
|
|
382
|
+
<span class="cstat-no" title="statement not covered" > const name = hook.result._id.toString()</span>
|
|
383
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
384
|
+
<span class="cstat-no" title="statement not covered" > // First we create the organisation DB</span>
|
|
385
|
+
<span class="cstat-no" title="statement not covered" > await databaseService.create({</span>
|
|
386
|
+
<span class="cstat-no" title="statement not covered" > name</span>
|
|
387
|
+
<span class="cstat-no" title="statement not covered" > }, {</span>
|
|
388
|
+
<span class="cstat-no" title="statement not covered" > user: hook.params.user</span>
|
|
389
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
390
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
391
|
+
<span class="cstat-no" title="statement not covered" > debug('DB created for organisation ' + hook.result.name)</span>
|
|
392
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
393
|
+
<span class="cstat-no" title="statement not covered" > // Jump from infos/stats to real DB object</span>
|
|
394
|
+
<span class="cstat-no" title="statement not covered" > const db = app.db.client.db(name)</span>
|
|
395
|
+
<span class="cstat-no" title="statement not covered" > await organisationService.createOrganisationServices(hook.result, db)</span>
|
|
396
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
397
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
398
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
378
399
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
const databaseService = app.getService('databases')
|
|
382
|
-
const name = hook.result._id.toString()
|
|
383
|
-
|
|
384
|
-
// First we create the organisation DB
|
|
385
|
-
await databaseService.create({
|
|
386
|
-
name
|
|
387
|
-
}, {
|
|
388
|
-
user: hook.params.user
|
|
389
|
-
})
|
|
390
|
-
|
|
391
|
-
debug('DB created for organisation ' + hook.result.name)
|
|
392
|
-
|
|
393
|
-
// Jump from infos/stats to real DB object
|
|
394
|
-
const db = app.db.client.db(name)
|
|
395
|
-
await organisationService.createOrganisationServices(hook.result, db)
|
|
396
|
-
|
|
397
|
-
return hook
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
export async function removeOrganisationServices (hook) {
|
|
401
|
-
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
400
|
+
export <span class="fstat-no" title="function not covered" >async function removeOrganisationServices (hook) {</span>
|
|
401
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
402
402
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'removeOrganisationServices\' hook should only be used as a \'after\' hook.')</span>
|
|
403
403
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
404
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
405
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
406
|
+
<span class="cstat-no" title="statement not covered" > const organisationService = hook.service</span>
|
|
407
|
+
<span class="cstat-no" title="statement not covered" > const databaseService = app.getService('databases')</span>
|
|
408
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
409
|
+
<span class="cstat-no" title="statement not covered" > // Then we remove the organisation DB</span>
|
|
410
|
+
<span class="cstat-no" title="statement not covered" > await databaseService.remove(hook.result._id.toString(), {</span>
|
|
411
|
+
<span class="cstat-no" title="statement not covered" > user: hook.params.user</span>
|
|
412
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
413
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
414
|
+
<span class="cstat-no" title="statement not covered" > debug('DB removed for organisation ' + hook.result.name)</span>
|
|
415
|
+
<span class="cstat-no" title="statement not covered" > await organisationService.removeOrganisationServices(hook.result)</span>
|
|
416
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
417
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
404
418
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const databaseService = app.getService('databases')
|
|
408
|
-
|
|
409
|
-
// Then we remove the organisation DB
|
|
410
|
-
await databaseService.remove(hook.result._id.toString(), {
|
|
411
|
-
user: hook.params.user
|
|
412
|
-
})
|
|
413
|
-
|
|
414
|
-
debug('DB removed for organisation ' + hook.result.name)
|
|
415
|
-
await organisationService.removeOrganisationServices(hook.result)
|
|
416
|
-
return hook
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
export async function createOrganisationAuthorisations (hook) {
|
|
420
|
-
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
419
|
+
export <span class="fstat-no" title="function not covered" >async function createOrganisationAuthorisations (hook) {</span>
|
|
420
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
421
421
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'createOrganisationAuthorisations\' hook should only be used as a \'after\' hook.')</span>
|
|
422
422
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
423
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
424
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
425
|
+
<span class="cstat-no" title="statement not covered" > const authorisationService = app.getService('authorisations')</span>
|
|
426
|
+
<span class="cstat-no" title="statement not covered" > const userService = app.getService('users')</span>
|
|
427
|
+
<span class="cstat-no" title="statement not covered" > // Set membership for the owner</span>
|
|
428
|
+
<span class="cstat-no" title="statement not covered" > await authorisationService.create({</span>
|
|
429
|
+
<span class="cstat-no" title="statement not covered" > scope: 'organisations',</span>
|
|
430
|
+
<span class="cstat-no" title="statement not covered" > permissions: 'owner' // Owner by default</span>
|
|
431
|
+
<span class="cstat-no" title="statement not covered" > }, {</span>
|
|
432
|
+
<span class="cstat-no" title="statement not covered" > user: hook.params.user,</span>
|
|
433
|
+
<span class="cstat-no" title="statement not covered" > // Because we already have subject/resource set it as objects to avoid populating</span>
|
|
434
|
+
<span class="cstat-no" title="statement not covered" > subjects: [hook.params.user],</span>
|
|
435
|
+
<span class="cstat-no" title="statement not covered" > subjectsService: userService,</span>
|
|
436
|
+
<span class="cstat-no" title="statement not covered" > resource: hook.result,</span>
|
|
437
|
+
<span class="cstat-no" title="statement not covered" > resourcesService: hook.service</span>
|
|
438
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
439
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
440
|
+
<span class="cstat-no" title="statement not covered" > debug('Organisation ownership set for user ' + hook.result._id)</span>
|
|
441
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
442
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
423
443
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
const userService = app.getService('users')
|
|
427
|
-
// Set membership for the owner
|
|
428
|
-
await authorisationService.create({
|
|
429
|
-
scope: 'organisations',
|
|
430
|
-
permissions: 'owner' // Owner by default
|
|
431
|
-
}, {
|
|
432
|
-
user: hook.params.user,
|
|
433
|
-
// Because we already have subject/resource set it as objects to avoid populating
|
|
434
|
-
subjects: [hook.params.user],
|
|
435
|
-
subjectsService: userService,
|
|
436
|
-
resource: hook.result,
|
|
437
|
-
resourcesService: hook.service
|
|
438
|
-
})
|
|
439
|
-
|
|
440
|
-
debug('Organisation ownership set for user ' + hook.result._id)
|
|
441
|
-
return hook
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
export async function removeOrganisationAuthorisations (hook) {
|
|
445
|
-
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
444
|
+
export <span class="fstat-no" title="function not covered" >async function removeOrganisationAuthorisations (hook) {</span>
|
|
445
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
446
446
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'removeOrganisationAuthorisations\' hook should only be used as a \'after\' hook.')</span>
|
|
447
447
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
448
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
449
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
450
|
+
<span class="cstat-no" title="statement not covered" > const authorisationService = app.getService('authorisations')</span>
|
|
451
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
452
|
+
<span class="cstat-no" title="statement not covered" > // Unset membership for the all org users</span>
|
|
453
|
+
<span class="cstat-no" title="statement not covered" > await authorisationService.remove(hook.result._id.toString(), {</span>
|
|
454
|
+
<span class="cstat-no" title="statement not covered" > query: {</span>
|
|
455
|
+
<span class="cstat-no" title="statement not covered" > subjectsService: hook.result._id.toString() + '/members',</span>
|
|
456
|
+
<span class="cstat-no" title="statement not covered" > scope: 'organisations'</span>
|
|
457
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
458
|
+
<span class="cstat-no" title="statement not covered" > user: hook.params.user,</span>
|
|
459
|
+
<span class="cstat-no" title="statement not covered" > // Because we already have resource set it as objects to avoid populating</span>
|
|
460
|
+
<span class="cstat-no" title="statement not covered" > // Moreover used as an after hook the resource might not already exist anymore</span>
|
|
461
|
+
<span class="cstat-no" title="statement not covered" > resource: hook.result,</span>
|
|
462
|
+
<span class="cstat-no" title="statement not covered" > resourcesService: hook.service</span>
|
|
463
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
464
|
+
<span class="cstat-no" title="statement not covered" > debug('Authorisations unset for organisation ' + hook.result._id)</span>
|
|
465
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
466
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
448
467
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
// Unset membership for the all org users
|
|
453
|
-
await authorisationService.remove(hook.result._id.toString(), {
|
|
454
|
-
query: {
|
|
455
|
-
subjectsService: hook.result._id.toString() + '/members',
|
|
456
|
-
scope: 'organisations'
|
|
457
|
-
},
|
|
458
|
-
user: hook.params.user,
|
|
459
|
-
// Because we already have resource set it as objects to avoid populating
|
|
460
|
-
// Moreover used as an after hook the resource might not already exist anymore
|
|
461
|
-
resource: hook.result,
|
|
462
|
-
resourcesService: hook.service
|
|
463
|
-
})
|
|
464
|
-
debug('Authorisations unset for organisation ' + hook.result._id)
|
|
465
|
-
return hook
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
export function updateOrganisationResource (resourceScope) {
|
|
469
|
-
return async function (hook) {
|
|
470
|
-
if (hook.type !== 'after') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
468
|
+
export <span class="fstat-no" title="function not covered" >function updateOrganisationResource (resourceScope) {</span>
|
|
469
|
+
<span class="cstat-no" title="statement not covered" > return async function (hook) {</span>
|
|
470
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
471
471
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'updateOrganisationResource\' hook should only be used as a \'after\' hook.')</span>
|
|
472
472
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
473
|
-
// Only applicable to update/remove operations
|
|
474
|
-
if ((hook.method === 'get' || hook.method === 'find' || hook.method === 'create'))
|
|
475
|
-
|
|
476
|
-
const app = hook.app
|
|
477
|
-
// Retrieve the list of members
|
|
478
|
-
const context = hook.service.getContextId()
|
|
479
|
-
// Use members service if any or global users service
|
|
480
|
-
|
|
481
|
-
const members = await orgMembersService.find({
|
|
482
|
-
query: { [resourceScope]: { $elemMatch: { _id: hook.result._id } } }
|
|
483
|
-
paginate: false
|
|
484
|
-
})
|
|
485
|
-
// Update each members
|
|
486
|
-
await Promise.all(members.map(member => {
|
|
487
|
-
const resources = _.get(member, resourceScope, [])
|
|
488
|
-
const resource = _.find(resources, item => item._id.toString() === hook.result._id.toString())
|
|
489
|
-
|
|
490
|
-
// Check for removal or update
|
|
491
|
-
if (hook.method === 'remove') {
|
|
492
|
-
_.remove(resources, item => resource._id.toString() === item._id.toString())
|
|
493
|
-
|
|
473
|
+
<span class="cstat-no" title="statement not covered" > // Only applicable to update/remove operations</span>
|
|
474
|
+
<span class="cstat-no" title="statement not covered" > if ((hook.method === 'get' || hook.method === 'find' || hook.method === 'create')) return hook</span>
|
|
475
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
476
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
477
|
+
<span class="cstat-no" title="statement not covered" > // Retrieve the list of members</span>
|
|
478
|
+
<span class="cstat-no" title="statement not covered" > const context = hook.service.getContextId()</span>
|
|
479
|
+
<span class="cstat-no" title="statement not covered" > // Use members service if any or global users service</span>
|
|
480
|
+
<span class="cstat-no" title="statement not covered" > const orgMembersService = (context ? app.getService('members', context) : app.getService('users'))</span>
|
|
481
|
+
<span class="cstat-no" title="statement not covered" > const members = await orgMembersService.find({</span>
|
|
482
|
+
<span class="cstat-no" title="statement not covered" > query: { [resourceScope]: { $elemMatch: { _id: hook.result._id } } },</span>
|
|
483
|
+
<span class="cstat-no" title="statement not covered" > paginate: false</span>
|
|
484
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
485
|
+
<span class="cstat-no" title="statement not covered" > // Update each members</span>
|
|
486
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(members.map(member => {</span>
|
|
487
|
+
<span class="cstat-no" title="statement not covered" > const resources = _.get(member, resourceScope, [])</span>
|
|
488
|
+
<span class="cstat-no" title="statement not covered" > const resource = _.find(resources, item => item._id.toString() === hook.result._id.toString())</span>
|
|
489
|
+
<span class="cstat-no" title="statement not covered" > if (!resource) return Promise.resolve()</span>
|
|
490
|
+
<span class="cstat-no" title="statement not covered" > // Check for removal or update</span>
|
|
491
|
+
<span class="cstat-no" title="statement not covered" > if (hook.method === 'remove') {</span>
|
|
492
|
+
<span class="cstat-no" title="statement not covered" > _.remove(resources, item => resource._id.toString() === item._id.toString())</span>
|
|
493
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
494
494
|
<span class="cstat-no" title="statement not covered" > Object.assign(resource, hook.result)</span>
|
|
495
495
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
496
|
-
return orgMembersService.patch(member._id, { [resourceScope]: resources })
|
|
497
|
-
}))
|
|
498
|
-
|
|
499
|
-
debug(`Updated resource ${hook.result._id} on scope ${resourceScope} for members of organisation ` + hook.result._id)
|
|
500
|
-
return hook
|
|
501
|
-
}
|
|
502
|
-
}
|
|
496
|
+
<span class="cstat-no" title="statement not covered" > return orgMembersService.patch(member._id, { [resourceScope]: resources })</span>
|
|
497
|
+
<span class="cstat-no" title="statement not covered" > }))</span>
|
|
498
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
499
|
+
<span class="cstat-no" title="statement not covered" > debug(`Updated resource ${hook.result._id} on scope ${resourceScope} for members of organisation ` + hook.result._id)</span>
|
|
500
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
501
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
502
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
503
503
|
|
|
504
|
-
export function removeOrganisationResources (resourceScope) {
|
|
505
|
-
return async function (hook) {
|
|
506
|
-
|
|
504
|
+
export <span class="fstat-no" title="function not covered" >function removeOrganisationResources (resourceScope) {</span>
|
|
505
|
+
<span class="cstat-no" title="statement not covered" > return async function (hook) {</span>
|
|
506
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
507
507
|
<span class="cstat-no" title="statement not covered" > throw new Error('The \'removeOrganisationResources\' hook should only be used as a \'after\' hook.')</span>
|
|
508
508
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
509
|
-
|
|
510
|
-
const app = hook.app
|
|
511
|
-
const orgResourceService = app.getService(resourceScope, hook.result)
|
|
512
|
-
const resources = await orgResourceService.find({ paginate: false })
|
|
513
|
-
await Promise.all(resources.map(resource => {
|
|
509
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
510
|
+
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
511
|
+
<span class="cstat-no" title="statement not covered" > const orgResourceService = app.getService(resourceScope, hook.result)</span>
|
|
512
|
+
<span class="cstat-no" title="statement not covered" > const resources = await orgResourceService.find({ paginate: false })</span>
|
|
513
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(resources.map(resource => {</span>
|
|
514
514
|
<span class="cstat-no" title="statement not covered" > return orgResourceService.remove(resource._id.toString(), {</span>
|
|
515
515
|
<span class="cstat-no" title="statement not covered" > user: hook.params.user</span>
|
|
516
516
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
517
|
-
}))
|
|
518
|
-
debug(`Removed ${resourceScope} for organisation ` + hook.result._id)
|
|
519
|
-
return hook
|
|
520
|
-
}
|
|
521
|
-
}
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > }))</span>
|
|
518
|
+
<span class="cstat-no" title="statement not covered" > debug(`Removed ${resourceScope} for organisation ` + hook.result._id)</span>
|
|
519
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
520
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
521
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
522
522
|
</pre></td></tr></table></pre>
|
|
523
523
|
|
|
524
524
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -526,7 +526,7 @@ export function removeOrganisationResources (resourceScope) {
|
|
|
526
526
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
527
527
|
Code coverage generated by
|
|
528
528
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
529
|
-
at
|
|
529
|
+
at 2024-08-13T10:02:04.843Z
|
|
530
530
|
</div>
|
|
531
531
|
<script src="../../../prettify.js"></script>
|
|
532
532
|
<script>
|