@kalisio/kdk 2.4.1 → 2.5.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/core/api/application.js +12 -12
- package/core/api/authentication.js +51 -7
- package/core/api/hooks/hooks.authentication.js +1 -59
- package/core/api/hooks/hooks.authorisations.js +8 -102
- package/core/api/hooks/hooks.model.js +4 -0
- package/core/api/hooks/hooks.push.js +18 -14
- package/core/api/hooks/hooks.users.js +0 -91
- package/core/api/hooks/index.js +0 -2
- package/core/api/services/account/account.service.js +1 -1
- package/core/api/services/authorisations/authorisations.service.js +28 -29
- package/core/api/services/index.js +38 -50
- package/core/api/services/messages/messages.hooks.js +4 -3
- package/core/api/services/users/users.service.js +5 -0
- package/core/client/api.js +182 -71
- package/core/client/broadcaster.js +20 -0
- package/core/client/capabilities.js +17 -7
- package/core/client/components/KActivity.vue +29 -34
- package/core/client/components/KAvatar.vue +0 -6
- package/core/client/components/KChip.vue +142 -39
- package/core/client/components/KContent.vue +13 -32
- package/core/client/components/KDialog.vue +29 -8
- package/core/client/components/KEditor.vue +120 -0
- package/core/client/components/KFollower.vue +75 -0
- package/core/client/components/KLogo.vue +2 -3
- package/core/client/components/KModal.vue +30 -10
- package/core/client/components/KSponsor.vue +1 -1
- package/core/client/components/KTextArea.vue +2 -5
- package/core/client/components/account/KDeleteAccountManager.vue +1 -1
- package/core/client/components/account/KProfile.vue +52 -14
- package/core/client/components/account/KSubscription.vue +19 -9
- package/core/client/components/account/KSubscriptionsManager.vue +10 -11
- package/core/client/components/action/KAction.vue +44 -24
- package/core/client/components/action/KBugReportAction.vue +4 -5
- package/core/client/components/action/KToggleStickyVisibility.vue +41 -0
- package/core/client/components/action/KToggleWidgetVisibility.vue +41 -0
- package/core/client/components/app/KPlatform.vue +122 -35
- package/core/client/components/app/KRequestProgressBar.vue +59 -0
- package/core/client/components/app/KSettings.vue +13 -2
- package/core/client/components/app/KTour.vue +2 -2
- package/core/client/components/chart/KTimeSeriesChart.vue +11 -3
- package/core/client/components/collection/KCard.vue +27 -33
- package/core/client/components/collection/KCardSection.vue +3 -23
- package/core/client/components/collection/KColumn.vue +0 -5
- package/core/client/components/collection/KDescriptionCardSection.vue +10 -5
- package/core/client/components/collection/KFilterView.vue +15 -0
- package/core/client/components/collection/KGrid.vue +4 -9
- package/core/client/components/collection/KHistory.vue +0 -5
- package/core/client/components/collection/KHistoryEntry.vue +0 -2
- package/core/client/components/collection/KItem.vue +1 -2
- package/core/client/components/collection/KSearchFilterControl.vue +139 -0
- package/core/client/components/collection/KTable.vue +1 -4
- package/core/client/components/collection/KTagsFilterControl.vue +70 -0
- package/core/client/components/collection/KTagsFilterView.vue +61 -0
- package/core/client/components/collection/KTimeFilterControl.vue +40 -0
- package/core/client/components/collection/KTimeFilterView.vue +106 -0
- package/core/client/components/collection/KTimeLine.vue +18 -11
- package/core/client/components/document/KBrowser.vue +283 -0
- package/core/client/components/document/KCsv.vue +52 -0
- package/core/client/components/document/KDocument.vue +19 -5
- package/core/client/components/document/KImage.vue +50 -19
- package/core/client/components/document/KMarkdown.vue +10 -2
- package/core/client/components/document/KUploader.vue +126 -0
- package/core/client/components/document/KVideo.vue +39 -0
- package/core/client/components/form/KDateField.vue +70 -0
- package/core/client/components/form/KDateTimeRangeField.vue +6 -17
- package/core/client/components/form/KDatetimeField.vue +6 -13
- package/core/client/components/form/KForm.vue +8 -8
- package/core/client/components/form/KOptionsField.vue +2 -0
- package/core/client/components/form/KResolutionField.vue +54 -52
- package/core/client/components/form/KSelectField.vue +27 -13
- package/core/client/components/form/KTextareaField.vue +23 -5
- package/core/client/components/graphics/KIcon.vue +64 -0
- package/core/client/components/index.js +1 -3
- package/core/client/components/input/KColorPicker.vue +70 -0
- package/core/client/components/input/KIconPicker.vue +188 -0
- package/core/client/components/input/KShapePicker.vue +81 -0
- package/core/client/components/input/index.js +7 -1
- package/core/client/components/layout/KFab.vue +1 -1
- package/core/client/components/layout/KLayout.vue +14 -2
- package/core/client/components/layout/KOpener.vue +9 -11
- package/core/client/components/layout/KPage.vue +31 -17
- package/core/client/components/layout/KWindow.vue +34 -18
- package/core/client/components/menu/KMenu.vue +52 -36
- package/core/client/components/menu/KSubMenu.vue +105 -0
- package/core/client/components/messages/KMessageCard.vue +207 -0
- package/core/client/components/messages/KMessageComposer.vue +199 -0
- package/core/client/components/messages/KMessagesTimeLine.vue +137 -0
- package/core/client/components/messages/index.js +7 -0
- package/core/client/components/screen/KErrorScreen.vue +2 -3
- package/core/client/components/screen/KLogoutScreen.vue +3 -1
- package/core/client/components/screen/KOAuthLoginScreen.vue +15 -0
- package/core/client/components/screen/KOAuthLogoutScreen.vue +33 -0
- package/core/client/components/screen/KUnauthorizedScreen.vue +16 -0
- package/core/client/components/time/KAbsoluteTimeRange.vue +7 -14
- package/core/client/components/time/KDate.vue +55 -28
- package/core/client/components/time/KDateTime.vue +93 -37
- package/core/client/components/time/KDateTimeRange.vue +197 -52
- package/core/client/components/time/KTime.vue +55 -27
- package/core/client/composables/activity.js +40 -30
- package/core/client/composables/{counter.js → collection-counter.js} +2 -4
- package/core/client/composables/collection-filter.js +111 -0
- package/core/client/composables/collection-timerange.js +56 -0
- package/core/client/composables/collection.js +13 -11
- package/core/client/composables/context.js +92 -0
- package/core/client/composables/errors.js +83 -0
- package/core/client/composables/index.js +5 -1
- package/core/client/composables/layout.js +14 -11
- package/core/client/composables/messages.js +4 -4
- package/core/client/composables/pwa.js +20 -27
- package/core/client/composables/schema.js +1 -1
- package/core/client/composables/screen.js +21 -9
- package/core/client/composables/selection.js +16 -4
- package/core/client/composables/session.js +13 -7
- package/core/client/composables/store.js +2 -1
- package/core/client/context.js +38 -0
- package/core/client/directives/v-hover.js +7 -4
- package/core/client/document.js +43 -15
- package/core/client/events.js +2 -2
- package/core/client/exporter.js +5 -4
- package/core/client/filter.js +1 -8
- package/core/client/guards.js +3 -3
- package/core/client/hooks/hooks.logger.js +1 -1
- package/core/client/hooks/hooks.offline.js +32 -0
- package/core/client/hooks/index.js +2 -1
- package/core/client/i18n/core_en.json +95 -268
- package/core/client/i18n/core_fr.json +181 -353
- package/core/client/index.js +22 -8
- package/core/client/layout.js +64 -25
- package/core/client/local-cache.js +67 -0
- package/core/client/local-storage.js +6 -2
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-activity.js +22 -10
- package/core/client/mixins/mixin.base-editor.js +1 -1
- package/core/client/mixins/mixin.base-field.js +10 -1
- package/core/client/mixins/mixin.base-item.js +14 -11
- package/core/client/mixins/mixin.service.js +1 -5
- package/core/client/platform.js +44 -0
- package/core/client/readers/reader.blob.js +3 -3
- package/core/client/readers/reader.csv.js +2 -2
- package/core/client/readers/reader.json.js +2 -2
- package/core/client/services/index.js +7 -11
- package/core/client/storage.js +43 -8
- package/core/client/template-context.js +14 -14
- package/core/client/time.js +2 -2
- package/core/client/units.js +7 -4
- package/core/client/utils/index.js +6 -5
- package/core/client/utils/utils.collection.js +71 -0
- package/core/client/utils/utils.colors.js +29 -8
- package/core/client/utils/utils.content.js +14 -14
- package/core/client/utils/utils.files.js +17 -0
- package/core/client/utils/utils.items.js +4 -0
- package/core/client/utils/utils.math.js +18 -1
- package/core/client/utils/utils.push.js +22 -13
- package/core/client/utils/utils.screen.js +6 -2
- package/core/client/utils/utils.services.js +42 -0
- package/core/client/utils/utils.session.js +48 -12
- package/core/client/utils/utils.shapes.js +15 -11
- package/core/common/permissions.js +3 -108
- package/core/common/schemas/messages.update.json +16 -0
- package/core/common/schemas/settings.update.json +27 -8
- package/core/common/utils.js +2 -0
- package/core/common/utils.offline.js +38 -0
- package/coverage/core/api/application.js.html +296 -296
- package/coverage/core/api/authentication.js.html +206 -74
- package/coverage/core/api/db.js.html +61 -61
- package/coverage/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/core/api/hooks/hooks.schemas.js.html +1 -1
- package/coverage/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/core/api/hooks/hooks.users.js.html +54 -327
- package/coverage/core/api/hooks/index.html +64 -94
- package/coverage/core/api/hooks/index.js.html +4 -10
- package/coverage/core/api/index.html +41 -56
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +9 -9
- package/coverage/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/index.html +13 -58
- package/coverage/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/core/api/models/organisations.model.mongodb.js.html +3 -3
- package/coverage/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/core/api/models/users.model.mongodb.js.html +1 -1
- package/coverage/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/core/api/services/account/account.service.js.html +67 -67
- package/coverage/core/api/services/account/index.html +16 -16
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +141 -144
- package/coverage/core/api/services/authorisations/index.html +19 -19
- package/coverage/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/core/api/services/databases/index.html +32 -32
- package/coverage/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/core/api/services/groups/index.html +1 -1
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +1 -1
- package/coverage/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/core/api/services/import-export/index.html +1 -1
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +118 -154
- package/coverage/core/api/services/mailer/index.html +1 -1
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/core/api/services/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +89 -86
- package/coverage/core/api/services/organisations/index.html +1 -1
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/core/api/services/organisations/organisations.service.js.html +23 -23
- package/coverage/core/api/services/push/index.html +1 -1
- package/coverage/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/core/api/services/push/push.service.js.html +1 -1
- package/coverage/core/api/services/storage/index.html +5 -5
- package/coverage/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/core/api/services/storage/storage.service.js.html +27 -27
- package/coverage/core/api/services/tags/index.html +1 -1
- package/coverage/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/core/api/services/users/index.html +23 -8
- package/coverage/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/core/api/services/users/users.service.js.html +100 -0
- package/coverage/core/api/utils.js.html +1 -1
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +1 -1
- package/coverage/core/common/permissions.js.html +195 -510
- package/coverage/core/common/schema.js.html +1 -1
- package/coverage/core/common/utils.js.html +12 -6
- package/coverage/core/common/utils.offline.js.html +199 -0
- package/coverage/index.html +142 -172
- package/coverage/lcov-report/core/api/application.js.html +296 -296
- package/coverage/lcov-report/core/api/authentication.js.html +206 -74
- package/coverage/lcov-report/core/api/db.js.html +61 -61
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +15 -189
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +180 -462
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +16 -16
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +69 -57
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +58 -46
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +142 -142
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +1 -1
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +54 -327
- package/coverage/lcov-report/core/api/hooks/index.html +64 -94
- package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
- package/coverage/lcov-report/core/api/index.html +41 -56
- package/coverage/lcov-report/core/api/index.js.html +1 -1
- package/coverage/lcov-report/core/api/marshall.js.html +9 -9
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/index.html +13 -58
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +35 -35
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +3 -3
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/account/index.html +16 -16
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +141 -144
- package/coverage/lcov-report/core/api/services/authorisations/index.html +19 -19
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +82 -82
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +20 -20
- package/coverage/lcov-report/core/api/services/databases/index.html +32 -32
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/index.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/import-export/index.html +1 -1
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +118 -154
- package/coverage/lcov-report/core/api/services/mailer/index.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +89 -86
- package/coverage/lcov-report/core/api/services/organisations/index.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +23 -23
- package/coverage/lcov-report/core/api/services/push/index.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/index.html +5 -5
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +27 -27
- package/coverage/lcov-report/core/api/services/tags/index.html +1 -1
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/index.html +23 -8
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +100 -0
- package/coverage/lcov-report/core/api/utils.js.html +1 -1
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +1 -1
- package/coverage/lcov-report/core/common/permissions.js.html +195 -510
- package/coverage/lcov-report/core/common/schema.js.html +1 -1
- package/coverage/lcov-report/core/common/utils.js.html +12 -6
- package/coverage/lcov-report/core/common/utils.offline.js.html +199 -0
- package/coverage/lcov-report/index.html +142 -172
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +20 -44
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +49 -7
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +22 -7
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +112 -0
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +29 -11
- package/coverage/lcov-report/map/api/services/catalog/index.html +5 -5
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +78 -9
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +307 -4
- package/coverage/lcov-report/map/api/services/features/index.html +7 -7
- package/coverage/lcov-report/map/api/services/index.html +5 -5
- package/coverage/lcov-report/map/api/services/index.js.html +287 -50
- package/coverage/lcov-report/map/api/services/projects/index.html +1 -1
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/styles/index.html +116 -0
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +196 -0
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +8 -5
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +7 -7
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +10 -4
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/lcov-report/map/common/wcs-utils.js.html +9 -9
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- 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 +2581 -3278
- package/coverage/map/api/hooks/hooks.catalog.js.html +125 -29
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +20 -44
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +49 -7
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +22 -7
- package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/styles.model.mongodb.js.html +112 -0
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +29 -11
- package/coverage/map/api/services/catalog/index.html +5 -5
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +78 -9
- package/coverage/map/api/services/features/features.service.js.html +307 -4
- package/coverage/map/api/services/features/index.html +7 -7
- package/coverage/map/api/services/index.html +5 -5
- package/coverage/map/api/services/index.js.html +287 -50
- package/coverage/map/api/services/projects/index.html +1 -1
- package/coverage/map/api/services/projects/projects.hooks.js.html +1 -1
- package/coverage/map/api/services/styles/index.html +116 -0
- package/coverage/map/api/services/styles/styles.hooks.js.html +196 -0
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +8 -5
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +7 -7
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +10 -4
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +6 -6
- package/coverage/map/common/wcs-grid-source.js.html +3 -3
- package/coverage/map/common/wcs-utils.js.html +9 -9
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- 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-323534-1747828879483-0.json +1 -0
- package/coverage/tmp/coverage-323546-1747828879453-0.json +1 -0
- package/coverage/tmp/coverage-323557-1747828879439-0.json +1 -0
- package/coverage/tmp/coverage-323569-1747828879416-0.json +1 -0
- package/coverage/tmp/coverage-323576-1747828879390-0.json +1 -0
- package/extras/configs/helpers.js +78 -0
- package/extras/configs/panes.left.js +118 -0
- package/extras/configs/panes.top.js +222 -0
- package/extras/configs/stickies.js +57 -0
- package/extras/configs/widgets.left.js +23 -0
- package/extras/configs/widgets.top.js +73 -0
- package/extras/css/core.variables.scss +8 -0
- package/extras/images/north.svg +3 -0
- package/extras/tours/map/side-nav.js +3 -3
- package/map/api/hooks/hooks.catalog.js +56 -23
- package/map/api/hooks/hooks.query.js +16 -24
- package/map/api/models/catalog.model.mongodb.js +16 -2
- package/{core/api/models/groups.model.mongodb.js → map/api/models/styles.model.mongodb.js} +2 -1
- package/map/api/services/catalog/catalog.hooks.js +13 -7
- package/map/api/services/features/features.hooks.js +28 -5
- package/map/api/services/features/features.service.js +101 -0
- package/map/api/services/index.js +125 -46
- package/map/api/services/styles/styles.hooks.js +37 -0
- package/map/client/cesium/utils/index.js +1 -0
- package/map/client/cesium/utils/utils.cesium.js +397 -0
- package/map/client/cesium/utils/utils.features.js +8 -0
- package/map/client/cesium/utils/utils.geojson.js +59 -0
- package/map/client/cesium/utils/utils.style.js +134 -17
- package/map/client/components/KEditLayerData.vue +17 -79
- package/map/client/components/KFeatureEditor.vue +2 -7
- package/map/client/components/KFeaturesChart.vue +2 -6
- package/map/client/components/KFeaturesFilterEditor.vue +300 -0
- package/map/client/components/KFeaturesFilterManager.vue +196 -0
- package/map/client/components/KFeaturesTable.vue +0 -5
- package/map/client/components/KFilterCondition.vue +303 -0
- package/map/client/components/KLayerEditionToolbar.vue +4 -3
- package/map/client/components/KLayerEditor.vue +451 -36
- package/map/client/components/KMeasureTool.vue +36 -9
- package/map/client/components/KProjectMenu.vue +14 -8
- package/map/client/components/catalog/KAddLayer.vue +0 -4
- package/map/client/components/catalog/KBaseLayersSelector.vue +42 -46
- package/map/client/components/catalog/KConnectLayer.vue +295 -291
- package/map/client/components/catalog/KCreateLayer.vue +141 -146
- package/map/client/components/catalog/KCreateOfflineView.vue +100 -0
- package/map/client/components/catalog/KCreateView.vue +2 -8
- package/map/client/components/catalog/KFilteredLayerItem.vue +72 -25
- package/map/client/components/catalog/KImportLayer.vue +121 -129
- package/map/client/components/catalog/KLayerItem.vue +44 -32
- package/map/client/components/catalog/KLayersPanel.vue +45 -17
- package/map/client/components/catalog/KLayersSelector.vue +51 -50
- package/map/client/components/catalog/KProjectManager.vue +4 -8
- package/map/client/components/catalog/KProjectSelector.vue +33 -2
- package/map/client/components/catalog/KProjectsPanel.vue +84 -106
- package/map/client/components/catalog/KSelectLayers.vue +56 -69
- package/map/client/components/catalog/KSelectViews.vue +56 -69
- package/map/client/components/catalog/KViewSelector.vue +32 -2
- package/map/client/components/catalog/KViewsPanel.vue +178 -110
- package/map/client/components/catalog/KWeatherLayersSelector.vue +77 -85
- package/map/client/components/form/KLocationField.vue +21 -2
- package/map/client/components/form/KOwsLayerField.vue +1 -1
- package/map/client/components/form/KOwsServiceField.vue +102 -63
- package/map/client/components/form/KSelectLayersField.vue +1 -1
- package/map/client/components/form/KSelectViewsField.vue +1 -1
- package/map/client/components/form/KTimezoneField.vue +0 -1
- package/map/client/components/legend/KLegend.vue +4 -4
- package/map/client/components/location/KLocationCardSection.vue +16 -0
- package/map/client/components/location/KLocationMap.vue +3 -2
- package/map/client/components/location/KLocationSearch.vue +46 -8
- package/map/client/components/location/KLocationTimeLineCard.vue +25 -3
- package/map/client/components/location/KLocationTip.vue +57 -10
- package/map/client/components/selection/KFeaturesSelection.vue +71 -0
- package/map/client/components/selection/KSelectedLayerFeatures.vue +343 -0
- package/map/client/components/{KAttribution.vue → stickies/KAttribution.vue} +39 -33
- package/map/client/components/stickies/KLevelSlider.vue +114 -0
- package/map/client/components/stickies/KNorthArrow.vue +26 -0
- package/map/client/components/stickies/KPosition.vue +103 -0
- package/map/client/components/stickies/KTarget.vue +34 -0
- package/map/client/components/styles/KLayerStyleAction.vue +58 -0
- package/map/client/components/styles/KStyleEditor.vue +273 -0
- package/map/client/components/styles/KStyleEditorSection.vue +79 -0
- package/map/client/components/styles/KStyleManager.vue +183 -0
- package/map/client/components/styles/KStylePreview.vue +64 -0
- package/map/client/components/styles/KStylePreviewItem.vue +68 -0
- package/map/client/components/styles/KStylePropertiesGroup.vue +76 -0
- package/map/client/components/styles/KStyleProperty.vue +136 -0
- package/map/client/components/styles/KStyleTip.vue +118 -0
- package/map/client/components/tools/KGeolocateTool.vue +3 -2
- package/map/client/components/tools/KSearchTool.vue +34 -6
- package/map/client/components/widget/KMapillaryViewer.vue +1 -1
- package/map/client/components/widget/KStackableTimeSeries.vue +8 -5
- package/map/client/composables/activity.js +29 -43
- package/map/client/composables/catalog.js +1 -1
- package/map/client/composables/highlight.js +117 -57
- package/map/client/composables/location.js +33 -14
- package/map/client/composables/project.js +9 -10
- package/map/client/composables/selection.js +136 -23
- package/map/client/geocoder.js +104 -0
- package/map/client/geolocation.js +1 -1
- package/map/client/globe.js +3 -0
- package/map/client/hooks/hooks.offline.js +95 -0
- package/map/client/hooks/index.js +1 -0
- package/map/client/i18n/map_en.json +159 -94
- package/map/client/i18n/map_fr.json +186 -127
- package/map/client/index.js +3 -0
- package/map/client/init.js +44 -8
- package/map/client/leaflet/BoxSelection.js +2 -2
- package/map/client/leaflet/GradientPath.js +84 -4
- package/map/client/leaflet/WindBarb.js +323 -0
- package/map/client/leaflet/utils/index.js +1 -0
- package/map/client/leaflet/utils/utils.events.js +8 -3
- package/map/client/leaflet/utils/utils.geojson.js +221 -0
- package/map/client/leaflet/utils/utils.style.js +10 -9
- package/map/client/map.js +3 -0
- package/map/client/mixins/globe/mixin.base-globe.js +151 -19
- package/map/client/mixins/globe/mixin.geojson-layers.js +208 -86
- package/map/client/mixins/globe/mixin.popup.js +3 -2
- package/map/client/mixins/globe/mixin.style.js +3 -1
- package/map/client/mixins/globe/mixin.tooltip.js +3 -2
- package/map/client/mixins/map/index.js +1 -3
- package/map/client/mixins/map/mixin.base-map.js +267 -79
- package/map/client/mixins/map/mixin.canvas-layers.js +44 -10
- package/map/client/mixins/map/mixin.edit-layers.js +142 -57
- package/map/client/mixins/map/mixin.geojson-layers.js +127 -204
- package/map/client/mixins/map/mixin.pmtiles-layers.js +24 -11
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +1 -2
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +2 -1
- package/map/client/mixins/mixin.activity.js +61 -41
- package/map/client/mixins/mixin.context.js +19 -14
- package/map/client/mixins/mixin.feature-selection.js +0 -1
- package/map/client/mixins/mixin.feature-service.js +41 -59
- package/map/client/mixins/mixin.weacast.js +1 -1
- package/map/client/navigator.js +38 -0
- package/map/client/pixi-utils.js +1 -1
- package/map/client/planets.js +1 -1
- package/map/client/readers/reader.kml.js +57 -1
- package/map/client/utils/index.js +1 -0
- package/map/client/utils/utils.capture.js +10 -7
- package/map/client/utils/utils.catalog.js +2 -2
- package/map/client/utils/utils.features.js +193 -39
- package/map/client/utils/utils.js +0 -21
- package/map/client/utils/utils.layers.js +381 -4
- package/map/client/utils/utils.location.js +39 -74
- package/map/client/utils/utils.offline.js +89 -0
- package/map/client/utils/utils.style.js +133 -80
- package/map/common/geotiff-grid-source.js +2 -1
- package/map/common/permissions.js +2 -0
- package/map/common/schemas/capture.create.json +4 -4
- package/map/common/schemas/catalog.update.json +18 -2
- package/map/common/schemas/projects.create.json +2 -2
- package/map/common/schemas/projects.update.json +2 -2
- package/map/common/tms-utils.js +5 -5
- package/map/common/wcs-grid-source.js +2 -2
- package/map/common/wcs-utils.js +8 -8
- package/map/common/wfs-utils.js +10 -10
- package/map/common/wms-utils.js +7 -7
- package/map/common/wmts-utils.js +6 -6
- package/package.json +7 -4
- package/test/api/core/account.test.js +0 -72
- package/test/api/core/authentication.test.js +184 -0
- package/test/api/core/config/default.cjs +1 -3
- package/test/api/core/index.test.js +33 -96
- package/test/api/core/offline.test.js +55 -0
- package/test/api/core/push.test.js +3 -3
- package/test/api/core/{test-log-2024-06-06.log → test-log-2025-02-05.log} +3 -3
- package/test/api/core/{test-log-2024-11-15.log → test-log-2025-05-21.log} +1 -9
- package/test/api/map/alerts.test.js +1 -1
- package/test/api/map/config/default.cjs +2 -1
- package/test/api/map/data/vigicrues.observations.Q.json +47042 -0
- package/test/api/map/index.test.js +113 -9
- package/test/api/map/style.test.js +62 -0
- package/test/client/core/layout.js +2 -2
- package/test/client/core/runner.js +1 -1
- package/test/client/core/utils.js +52 -0
- package/test/client/map/catalog.js +1 -0
- package/core/api/hooks/hooks.groups.js +0 -48
- package/core/api/hooks/hooks.organisations.js +0 -152
- package/core/api/models/organisations.model.mongodb.js +0 -3
- package/core/api/models/tags.model.mongodb.js +0 -10
- package/core/api/services/groups/groups.hooks.js +0 -31
- package/core/api/services/organisations/organisations.hooks.js +0 -31
- package/core/api/services/organisations/organisations.service.js +0 -86
- package/core/api/services/tags/tags.hooks.js +0 -31
- package/core/api/utils.js +0 -11
- package/core/client/components/KChipsPane.vue +0 -103
- package/core/client/components/document/index.js +0 -9
- package/core/client/components/team/KAddMember.vue +0 -378
- package/core/client/components/team/KAddTag.vue +0 -121
- package/core/client/components/team/KChangeRole.vue +0 -118
- package/core/client/components/team/KGroupCard.vue +0 -110
- package/core/client/components/team/KGroupsActivity.vue +0 -78
- package/core/client/components/team/KJoinGroup.vue +0 -132
- package/core/client/components/team/KMemberCard.vue +0 -328
- package/core/client/components/team/KMemberFilter.vue +0 -49
- package/core/client/components/team/KMembersActivity.vue +0 -136
- package/core/client/components/team/KOrganisationsActivity.vue +0 -51
- package/core/client/components/team/KTagCard.vue +0 -72
- package/core/client/components/team/KTagsActivity.vue +0 -73
- package/core/client/components/team/index.js +0 -9
- package/core/client/mixins/mixin.base-context.js +0 -54
- package/core/client/utils/utils.platform.js +0 -12
- package/core/common/schemas/groups.create.json +0 -28
- package/core/common/schemas/groups.update.json +0 -28
- package/core/common/schemas/organisations.create.json +0 -28
- package/core/common/schemas/organisations.update.json +0 -49
- package/core/common/schemas/tags.create.json +0 -35
- package/core/common/schemas/tags.update.json +0 -35
- package/coverage/tmp/coverage-280506-1731704745613-0.json +0 -1
- package/coverage/tmp/coverage-280518-1731704745599-0.json +0 -1
- package/coverage/tmp/coverage-280529-1731704745588-0.json +0 -1
- package/coverage/tmp/coverage-280541-1731704745574-0.json +0 -1
- package/coverage/tmp/coverage-280548-1731704745545-0.json +0 -1
- package/map/client/components/KFeaturesFilter.vue +0 -259
- package/map/client/components/KLayerStyleEditor.vue +0 -118
- package/map/client/components/KLayerStyleForm.vue +0 -740
- package/map/client/components/KLevelSlider.vue +0 -100
- package/map/client/components/KNorth.vue +0 -31
- package/map/client/components/KPositionIndicator.vue +0 -83
- package/map/client/components/catalog/KCreateProject.vue +0 -100
- package/map/client/mixins/map/mixin.forecast-layers.js +0 -81
- package/map/client/mixins/map/mixin.georaster-layers.js +0 -107
- package/test/api/core/team.test.js +0 -670
- package/test/api/core/test-log-2023-12-19.log +0 -7
- package/test/api/core/test-log-2024-01-04.log +0 -14
- package/test/api/core/test-log-2024-05-14.log +0 -6
- package/test/api/core/test-log-2024-06-26.log +0 -25
- package/test/api/core/test-log-2024-06-28.log +0 -2
- package/test/api/core/test-log-2024-07-09.log +0 -0
- package/test/api/core/test-log-2024-08-13.log +0 -69
- package/test/api/core/test-log-2024-10-28.log +0 -53
- package/test/api/core/test-log-2024-11-05.log +0 -30
- package/test/api/core/test-log-2024-11-18.log +0 -0
- package/test/api/core/test-log-2024-12-03.log +0 -30
- package/test/api/map/test-log-2023-11-24.log +0 -121
- package/test/api/map/test-log-2023-12-12.log +0 -29
- package/test/api/map/test-log-2023-12-13.log +0 -5
- package/test/api/map/test-log-2024-01-04.log +0 -2
- package/test/api/map/test-log-2024-01-11.log +0 -1
- package/test/api/map/test-log-2024-01-25.log +0 -19
- package/test/api/map/test-log-2024-06-06.log +0 -39
- package/test/api/map/test-log-2024-08-13.log +0 -13
- package/test/api/map/test-log-2024-08-20.log +0 -55
- package/test/api/map/test-log-2024-09-09.log +0 -92
- package/test/api/map/test-log-2024-10-28.log +0 -11
- /package/extras/{logos → images}/kalisio.png +0 -0
- /package/extras/{icons → images}/target.svg +0 -0
- /package/test/api/map/data/{vigicrues.observations.json → vigicrues.observations.H.json} +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">65.74% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>142/216</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">72.22% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>13/18</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">35.29% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>6/17</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">65.74% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>142/216</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 medium'></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>
|
|
@@ -279,290 +279,28 @@
|
|
|
279
279
|
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
280
|
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
281
|
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
388
|
-
<span class="cline-any cline-yes">1x</span>
|
|
389
|
-
<span class="cline-any cline-yes">1x</span>
|
|
390
|
-
<span class="cline-any cline-yes">1x</span>
|
|
391
|
-
<span class="cline-any cline-yes">1x</span>
|
|
392
|
-
<span class="cline-any cline-yes">1x</span>
|
|
393
|
-
<span class="cline-any cline-yes">1x</span>
|
|
394
|
-
<span class="cline-any cline-yes">1x</span>
|
|
395
|
-
<span class="cline-any cline-yes">1x</span>
|
|
396
|
-
<span class="cline-any cline-yes">1x</span>
|
|
397
|
-
<span class="cline-any cline-yes">1x</span>
|
|
398
|
-
<span class="cline-any cline-yes">1x</span>
|
|
399
|
-
<span class="cline-any cline-yes">1x</span>
|
|
400
|
-
<span class="cline-any cline-yes">1x</span>
|
|
401
|
-
<span class="cline-any cline-yes">1x</span>
|
|
402
|
-
<span class="cline-any cline-yes">1x</span>
|
|
403
|
-
<span class="cline-any cline-yes">1x</span>
|
|
404
|
-
<span class="cline-any cline-yes">1x</span>
|
|
405
|
-
<span class="cline-any cline-yes">1x</span>
|
|
406
|
-
<span class="cline-any cline-yes">1x</span>
|
|
407
|
-
<span class="cline-any cline-yes">1x</span>
|
|
408
|
-
<span class="cline-any cline-yes">1x</span>
|
|
409
|
-
<span class="cline-any cline-yes">1x</span>
|
|
410
|
-
<span class="cline-any cline-yes">1x</span>
|
|
411
|
-
<span class="cline-any cline-yes">1x</span>
|
|
412
|
-
<span class="cline-any cline-yes">1x</span>
|
|
413
|
-
<span class="cline-any cline-yes">1x</span>
|
|
414
|
-
<span class="cline-any cline-yes">1x</span>
|
|
415
|
-
<span class="cline-any cline-yes">1x</span>
|
|
416
|
-
<span class="cline-any cline-yes">1x</span>
|
|
417
|
-
<span class="cline-any cline-yes">1x</span>
|
|
418
|
-
<span class="cline-any cline-yes">1x</span>
|
|
419
|
-
<span class="cline-any cline-yes">44x</span>
|
|
420
|
-
<span class="cline-any cline-yes">44x</span>
|
|
421
|
-
<span class="cline-any cline-yes">44x</span>
|
|
422
|
-
<span class="cline-any cline-yes">44x</span>
|
|
423
|
-
<span class="cline-any cline-yes">44x</span>
|
|
424
|
-
<span class="cline-any cline-yes">44x</span>
|
|
425
|
-
<span class="cline-any cline-yes">24x</span>
|
|
426
|
-
<span class="cline-any cline-yes">24x</span>
|
|
427
|
-
<span class="cline-any cline-yes">24x</span>
|
|
428
|
-
<span class="cline-any cline-yes">44x</span>
|
|
429
|
-
<span class="cline-any cline-yes">16x</span>
|
|
430
|
-
<span class="cline-any cline-yes">16x</span>
|
|
431
|
-
<span class="cline-any cline-yes">44x</span>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
432
283
|
<span class="cline-any cline-yes">1x</span>
|
|
433
284
|
<span class="cline-any cline-yes">1x</span>
|
|
434
285
|
<span class="cline-any cline-yes">1x</span>
|
|
435
|
-
<span class="cline-any cline-yes">49x</span>
|
|
436
|
-
<span class="cline-any cline-yes">49x</span>
|
|
437
|
-
<span class="cline-any cline-yes">49x</span>
|
|
438
|
-
<span class="cline-any cline-yes">49x</span>
|
|
439
|
-
<span class="cline-any cline-yes">49x</span>
|
|
440
|
-
<span class="cline-any cline-yes">49x</span>
|
|
441
|
-
<span class="cline-any cline-yes">49x</span>
|
|
442
|
-
<span class="cline-any cline-yes">49x</span>
|
|
443
|
-
<span class="cline-any cline-yes">49x</span>
|
|
444
|
-
<span class="cline-any cline-yes">49x</span>
|
|
445
|
-
<span class="cline-any cline-yes">49x</span>
|
|
446
|
-
<span class="cline-any cline-yes">49x</span>
|
|
447
|
-
<span class="cline-any cline-yes">49x</span>
|
|
448
|
-
<span class="cline-any cline-yes">39x</span>
|
|
449
|
-
<span class="cline-any cline-yes">39x</span>
|
|
450
|
-
<span class="cline-any cline-yes">39x</span>
|
|
451
|
-
<span class="cline-any cline-yes">39x</span>
|
|
452
|
-
<span class="cline-any cline-yes">39x</span>
|
|
453
|
-
<span class="cline-any cline-yes">39x</span>
|
|
454
|
-
<span class="cline-any cline-yes">39x</span>
|
|
455
|
-
<span class="cline-any cline-yes">39x</span>
|
|
456
|
-
<span class="cline-any cline-yes">39x</span>
|
|
457
|
-
<span class="cline-any cline-yes">39x</span>
|
|
458
|
-
<span class="cline-any cline-yes">39x</span>
|
|
459
|
-
<span class="cline-any cline-yes">39x</span>
|
|
460
|
-
<span class="cline-any cline-yes">39x</span>
|
|
461
|
-
<span class="cline-any cline-yes">39x</span>
|
|
462
|
-
<span class="cline-any cline-yes">39x</span>
|
|
463
|
-
<span class="cline-any cline-yes">39x</span>
|
|
464
|
-
<span class="cline-any cline-yes">39x</span>
|
|
465
|
-
<span class="cline-any cline-yes">39x</span>
|
|
466
|
-
<span class="cline-any cline-yes">39x</span>
|
|
467
|
-
<span class="cline-any cline-yes">49x</span>
|
|
468
286
|
<span class="cline-any cline-yes">1x</span>
|
|
469
287
|
<span class="cline-any cline-yes">1x</span>
|
|
470
288
|
<span class="cline-any cline-yes">1x</span>
|
|
471
|
-
<span class="cline-any cline-yes">49x</span>
|
|
472
|
-
<span class="cline-any cline-yes">49x</span>
|
|
473
|
-
<span class="cline-any cline-yes">49x</span>
|
|
474
|
-
<span class="cline-any cline-yes">49x</span>
|
|
475
|
-
<span class="cline-any cline-yes">125x</span>
|
|
476
|
-
<span class="cline-any cline-yes">49x</span>
|
|
477
|
-
<span class="cline-any cline-yes">49x</span>
|
|
478
|
-
<span class="cline-any cline-yes">49x</span>
|
|
479
|
-
<span class="cline-any cline-yes">49x</span>
|
|
480
|
-
<span class="cline-any cline-yes">49x</span>
|
|
481
|
-
<span class="cline-any cline-yes">49x</span>
|
|
482
|
-
<span class="cline-any cline-yes">33x</span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-no"> </span>
|
|
485
|
-
<span class="cline-any cline-yes">33x</span>
|
|
486
|
-
<span class="cline-any cline-yes">49x</span>
|
|
487
|
-
<span class="cline-any cline-yes">49x</span>
|
|
488
|
-
<span class="cline-any cline-yes">49x</span>
|
|
489
|
-
<span class="cline-any cline-yes">49x</span>
|
|
490
289
|
<span class="cline-any cline-yes">1x</span>
|
|
491
290
|
<span class="cline-any cline-yes">1x</span>
|
|
492
|
-
<span class="cline-any cline-yes">8x</span>
|
|
493
|
-
<span class="cline-any cline-yes">3x</span>
|
|
494
|
-
<span class="cline-any cline-yes">3x</span>
|
|
495
|
-
<span class="cline-any cline-yes">8x</span>
|
|
496
291
|
<span class="cline-any cline-yes">1x</span>
|
|
497
292
|
<span class="cline-any cline-yes">1x</span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
293
|
<span class="cline-any cline-yes">1x</span>
|
|
501
294
|
<span class="cline-any cline-yes">1x</span>
|
|
502
|
-
<span class="cline-any cline-yes">63x</span>
|
|
503
|
-
<span class="cline-any cline-yes">63x</span>
|
|
504
|
-
<span class="cline-any cline-yes">63x</span>
|
|
505
|
-
<span class="cline-any cline-yes">63x</span>
|
|
506
|
-
<span class="cline-any cline-yes">63x</span>
|
|
507
|
-
<span class="cline-any cline-yes">63x</span>
|
|
508
|
-
<span class="cline-any cline-yes">63x</span>
|
|
509
|
-
<span class="cline-any cline-yes">63x</span>
|
|
510
|
-
<span class="cline-any cline-yes">3x</span>
|
|
511
|
-
<span class="cline-any cline-yes">63x</span>
|
|
512
|
-
<span class="cline-any cline-yes">1x</span>
|
|
513
295
|
<span class="cline-any cline-yes">1x</span>
|
|
514
|
-
<span class="cline-any cline-yes">33x</span>
|
|
515
|
-
<span class="cline-any cline-yes">33x</span>
|
|
516
|
-
<span class="cline-any cline-yes">33x</span>
|
|
517
|
-
<span class="cline-any cline-yes">33x</span>
|
|
518
|
-
<span class="cline-any cline-yes">33x</span>
|
|
519
|
-
<span class="cline-any cline-yes">33x</span>
|
|
520
|
-
<span class="cline-any cline-yes">33x</span>
|
|
521
|
-
<span class="cline-any cline-yes">33x</span>
|
|
522
|
-
<span class="cline-any cline-yes">33x</span>
|
|
523
|
-
<span class="cline-any cline-yes">33x</span>
|
|
524
|
-
<span class="cline-any cline-yes">33x</span>
|
|
525
296
|
<span class="cline-any cline-yes">1x</span>
|
|
526
297
|
<span class="cline-any cline-yes">1x</span>
|
|
527
298
|
<span class="cline-any cline-yes">1x</span>
|
|
528
|
-
<span class="cline-any cline-yes">42x</span>
|
|
529
|
-
<span class="cline-any cline-yes">63x</span>
|
|
530
|
-
<span class="cline-any cline-yes">63x</span>
|
|
531
|
-
<span class="cline-any cline-yes">63x</span>
|
|
532
|
-
<span class="cline-any cline-yes">9x</span>
|
|
533
|
-
<span class="cline-any cline-yes">63x</span>
|
|
534
|
-
<span class="cline-any cline-yes">9x</span>
|
|
535
|
-
<span class="cline-any cline-yes">9x</span>
|
|
536
|
-
<span class="cline-any cline-yes">9x</span>
|
|
537
|
-
<span class="cline-any cline-yes">9x</span>
|
|
538
|
-
<span class="cline-any cline-yes">9x</span>
|
|
539
|
-
<span class="cline-any cline-yes">54x</span>
|
|
540
|
-
<span class="cline-any cline-yes">6x</span>
|
|
541
|
-
<span class="cline-any cline-yes">6x</span>
|
|
542
|
-
<span class="cline-any cline-yes">6x</span>
|
|
543
|
-
<span class="cline-any cline-yes">6x</span>
|
|
544
|
-
<span class="cline-any cline-yes">42x</span>
|
|
545
|
-
<span class="cline-any cline-yes">42x</span>
|
|
546
|
-
<span class="cline-any cline-yes">42x</span>
|
|
547
299
|
<span class="cline-any cline-yes">1x</span>
|
|
548
300
|
<span class="cline-any cline-yes">1x</span>
|
|
549
301
|
<span class="cline-any cline-yes">1x</span>
|
|
550
302
|
<span class="cline-any cline-yes">1x</span>
|
|
551
|
-
<span class="cline-any cline-yes">25x</span>
|
|
552
|
-
<span class="cline-any cline-yes">25x</span>
|
|
553
|
-
<span class="cline-any cline-yes">25x</span>
|
|
554
|
-
<span class="cline-any cline-yes">25x</span>
|
|
555
|
-
<span class="cline-any cline-yes">25x</span>
|
|
556
|
-
<span class="cline-any cline-yes">25x</span>
|
|
557
|
-
<span class="cline-any cline-yes">25x</span>
|
|
558
303
|
<span class="cline-any cline-yes">1x</span>
|
|
559
|
-
<span class="cline-any cline-yes">6x</span>
|
|
560
|
-
<span class="cline-any cline-yes">6x</span>
|
|
561
|
-
<span class="cline-any cline-yes">6x</span>
|
|
562
|
-
<span class="cline-any cline-yes">6x</span>
|
|
563
|
-
<span class="cline-any cline-yes">6x</span>
|
|
564
|
-
<span class="cline-any cline-yes">6x</span>
|
|
565
|
-
<span class="cline-any cline-yes">6x</span>
|
|
566
304
|
<span class="cline-any cline-yes">1x</span>
|
|
567
305
|
<span class="cline-any cline-yes">1x</span>
|
|
568
306
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -572,105 +310,151 @@
|
|
|
572
310
|
<span class="cline-any cline-yes">1x</span>
|
|
573
311
|
<span class="cline-any cline-yes">1x</span>
|
|
574
312
|
<span class="cline-any cline-yes">1x</span>
|
|
575
|
-
<span class="cline-any cline-yes">5x</span>
|
|
576
|
-
<span class="cline-any cline-yes">5x</span>
|
|
577
|
-
<span class="cline-any cline-yes">5x</span>
|
|
578
|
-
<span class="cline-any cline-yes">5x</span>
|
|
579
|
-
<span class="cline-any cline-yes">5x</span>
|
|
580
|
-
<span class="cline-any cline-yes">5x</span>
|
|
581
|
-
<span class="cline-any cline-yes">5x</span>
|
|
582
313
|
<span class="cline-any cline-yes">1x</span>
|
|
314
|
+
<span class="cline-any cline-no"> </span>
|
|
315
|
+
<span class="cline-any cline-no"> </span>
|
|
316
|
+
<span class="cline-any cline-no"> </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>
|
|
583
327
|
<span class="cline-any cline-yes">1x</span>
|
|
584
328
|
<span class="cline-any cline-yes">1x</span>
|
|
585
|
-
<span class="cline-any cline-yes">38x</span>
|
|
586
|
-
<span class="cline-any cline-yes">34x</span>
|
|
587
|
-
<span class="cline-any cline-yes">34x</span>
|
|
588
|
-
<span class="cline-any cline-yes">34x</span>
|
|
589
|
-
<span class="cline-any cline-yes">34x</span>
|
|
590
|
-
<span class="cline-any cline-yes">34x</span>
|
|
591
|
-
<span class="cline-any cline-yes">32x</span>
|
|
592
|
-
<span class="cline-any cline-yes">44x</span>
|
|
593
|
-
<span class="cline-any cline-yes">44x</span>
|
|
594
|
-
<span class="cline-any cline-yes">44x</span>
|
|
595
|
-
<span class="cline-any cline-yes">44x</span>
|
|
596
|
-
<span class="cline-any cline-yes">44x</span>
|
|
597
|
-
<span class="cline-any cline-yes">44x</span>
|
|
598
|
-
<span class="cline-any cline-yes">44x</span>
|
|
599
|
-
<span class="cline-any cline-yes">44x</span>
|
|
600
|
-
<span class="cline-any cline-yes">44x</span>
|
|
601
|
-
<span class="cline-any cline-yes">44x</span>
|
|
602
|
-
<span class="cline-any cline-yes">44x</span>
|
|
603
|
-
<span class="cline-any cline-yes">44x</span>
|
|
604
|
-
<span class="cline-any cline-yes">44x</span>
|
|
605
|
-
<span class="cline-any cline-yes">44x</span>
|
|
606
|
-
<span class="cline-any cline-yes">44x</span>
|
|
607
|
-
<span class="cline-any cline-yes">44x</span>
|
|
608
|
-
<span class="cline-any cline-yes">44x</span>
|
|
609
|
-
<span class="cline-any cline-yes">44x</span>
|
|
610
|
-
<span class="cline-any cline-yes">44x</span>
|
|
611
|
-
<span class="cline-any cline-yes">24x</span>
|
|
612
|
-
<span class="cline-any cline-yes">24x</span>
|
|
613
|
-
<span class="cline-any cline-yes">24x</span>
|
|
614
|
-
<span class="cline-any cline-yes">24x</span>
|
|
615
|
-
<span class="cline-any cline-yes">24x</span>
|
|
616
|
-
<span class="cline-any cline-yes">24x</span>
|
|
617
|
-
<span class="cline-any cline-yes">24x</span>
|
|
618
|
-
<span class="cline-any cline-yes">24x</span>
|
|
619
|
-
<span class="cline-any cline-yes">44x</span>
|
|
620
|
-
<span class="cline-any cline-yes">32x</span>
|
|
621
|
-
<span class="cline-any cline-yes">32x</span>
|
|
622
|
-
<span class="cline-any cline-yes">34x</span>
|
|
623
|
-
<span class="cline-any cline-yes">38x</span>
|
|
624
329
|
<span class="cline-any cline-yes">1x</span>
|
|
330
|
+
<span class="cline-any cline-yes">9x</span>
|
|
331
|
+
<span class="cline-any cline-yes">9x</span>
|
|
332
|
+
<span class="cline-any cline-yes">9x</span>
|
|
333
|
+
<span class="cline-any cline-yes">9x</span>
|
|
334
|
+
<span class="cline-any cline-yes">9x</span>
|
|
335
|
+
<span class="cline-any cline-yes">9x</span>
|
|
336
|
+
<span class="cline-any cline-yes">9x</span>
|
|
337
|
+
<span class="cline-any cline-yes">9x</span>
|
|
338
|
+
<span class="cline-any cline-yes">9x</span>
|
|
339
|
+
<span class="cline-any cline-yes">9x</span>
|
|
340
|
+
<span class="cline-any cline-yes">9x</span>
|
|
341
|
+
<span class="cline-any cline-yes">9x</span>
|
|
342
|
+
<span class="cline-any cline-yes">9x</span>
|
|
343
|
+
<span class="cline-any cline-yes">3x</span>
|
|
344
|
+
<span class="cline-any cline-yes">3x</span>
|
|
345
|
+
<span class="cline-any cline-yes">3x</span>
|
|
346
|
+
<span class="cline-any cline-yes">3x</span>
|
|
347
|
+
<span class="cline-any cline-yes">3x</span>
|
|
348
|
+
<span class="cline-any cline-yes">3x</span>
|
|
349
|
+
<span class="cline-any cline-yes">3x</span>
|
|
350
|
+
<span class="cline-any cline-yes">3x</span>
|
|
351
|
+
<span class="cline-any cline-yes">3x</span>
|
|
352
|
+
<span class="cline-any cline-yes">3x</span>
|
|
353
|
+
<span class="cline-any cline-yes">3x</span>
|
|
354
|
+
<span class="cline-any cline-yes">3x</span>
|
|
355
|
+
<span class="cline-any cline-yes">3x</span>
|
|
356
|
+
<span class="cline-any cline-yes">3x</span>
|
|
357
|
+
<span class="cline-any cline-yes">3x</span>
|
|
358
|
+
<span class="cline-any cline-yes">3x</span>
|
|
359
|
+
<span class="cline-any cline-yes">3x</span>
|
|
360
|
+
<span class="cline-any cline-yes">3x</span>
|
|
361
|
+
<span class="cline-any cline-yes">3x</span>
|
|
362
|
+
<span class="cline-any cline-yes">9x</span>
|
|
625
363
|
<span class="cline-any cline-yes">1x</span>
|
|
626
364
|
<span class="cline-any cline-yes">1x</span>
|
|
627
|
-
<span class="cline-any cline-yes">38x</span>
|
|
628
|
-
<span class="cline-any cline-yes">34x</span>
|
|
629
|
-
<span class="cline-any cline-yes">20x</span>
|
|
630
|
-
<span class="cline-any cline-yes">10x</span>
|
|
631
|
-
<span class="cline-any cline-yes">10x</span>
|
|
632
|
-
<span class="cline-any cline-yes">10x</span>
|
|
633
|
-
<span class="cline-any cline-yes">10x</span>
|
|
634
|
-
<span class="cline-any cline-yes">10x</span>
|
|
635
|
-
<span class="cline-any cline-yes">10x</span>
|
|
636
|
-
<span class="cline-any cline-yes">10x</span>
|
|
637
|
-
<span class="cline-any cline-yes">10x</span>
|
|
638
|
-
<span class="cline-any cline-yes">2x</span>
|
|
639
|
-
<span class="cline-any cline-yes">2x</span>
|
|
640
|
-
<span class="cline-any cline-yes">10x</span>
|
|
641
|
-
<span class="cline-any cline-yes">20x</span>
|
|
642
|
-
<span class="cline-any cline-yes">20x</span>
|
|
643
|
-
<span class="cline-any cline-yes">34x</span>
|
|
644
|
-
<span class="cline-any cline-yes">38x</span>
|
|
645
365
|
<span class="cline-any cline-yes">1x</span>
|
|
366
|
+
<span class="cline-any cline-yes">9x</span>
|
|
367
|
+
<span class="cline-any cline-yes">9x</span>
|
|
368
|
+
<span class="cline-any cline-yes">9x</span>
|
|
369
|
+
<span class="cline-any cline-yes">9x</span>
|
|
370
|
+
<span class="cline-any cline-yes">9x</span>
|
|
371
|
+
<span class="cline-any cline-yes">9x</span>
|
|
372
|
+
<span class="cline-any cline-yes">9x</span>
|
|
373
|
+
<span class="cline-any cline-yes">9x</span>
|
|
374
|
+
<span class="cline-any cline-yes">9x</span>
|
|
375
|
+
<span class="cline-any cline-yes">9x</span>
|
|
376
|
+
<span class="cline-any cline-yes">9x</span>
|
|
377
|
+
<span class="cline-any cline-yes">3x</span>
|
|
378
|
+
<span class="cline-any cline-no"> </span>
|
|
379
|
+
<span class="cline-any cline-no"> </span>
|
|
380
|
+
<span class="cline-any cline-yes">3x</span>
|
|
381
|
+
<span class="cline-any cline-yes">9x</span>
|
|
382
|
+
<span class="cline-any cline-yes">9x</span>
|
|
383
|
+
<span class="cline-any cline-yes">9x</span>
|
|
384
|
+
<span class="cline-any cline-yes">9x</span>
|
|
646
385
|
<span class="cline-any cline-yes">1x</span>
|
|
647
386
|
<span class="cline-any cline-yes">1x</span>
|
|
387
|
+
<span class="cline-any cline-yes">5x</span>
|
|
648
388
|
<span class="cline-any cline-yes">1x</span>
|
|
649
389
|
<span class="cline-any cline-yes">1x</span>
|
|
390
|
+
<span class="cline-any cline-yes">5x</span>
|
|
650
391
|
<span class="cline-any cline-yes">1x</span>
|
|
651
392
|
<span class="cline-any cline-yes">1x</span>
|
|
652
393
|
<span class="cline-any cline-no"> </span>
|
|
653
394
|
<span class="cline-any cline-no"> </span>
|
|
654
395
|
<span class="cline-any cline-yes">1x</span>
|
|
655
396
|
<span class="cline-any cline-yes">1x</span>
|
|
397
|
+
<span class="cline-any cline-yes">4x</span>
|
|
398
|
+
<span class="cline-any cline-yes">4x</span>
|
|
399
|
+
<span class="cline-any cline-yes">4x</span>
|
|
400
|
+
<span class="cline-any cline-yes">4x</span>
|
|
401
|
+
<span class="cline-any cline-yes">4x</span>
|
|
402
|
+
<span class="cline-any cline-yes">4x</span>
|
|
403
|
+
<span class="cline-any cline-yes">4x</span>
|
|
404
|
+
<span class="cline-any cline-yes">4x</span>
|
|
405
|
+
<span class="cline-any cline-yes">4x</span>
|
|
656
406
|
<span class="cline-any cline-yes">1x</span>
|
|
657
|
-
<span class="cline-any cline-
|
|
658
|
-
<span class="cline-any cline-no"> </span>
|
|
407
|
+
<span class="cline-any cline-yes">4x</span>
|
|
659
408
|
<span class="cline-any cline-yes">1x</span>
|
|
660
409
|
<span class="cline-any cline-yes">1x</span>
|
|
661
|
-
<span class="cline-any cline-
|
|
662
|
-
<span class="cline-any cline-
|
|
410
|
+
<span class="cline-any cline-yes">3x</span>
|
|
411
|
+
<span class="cline-any cline-yes">3x</span>
|
|
412
|
+
<span class="cline-any cline-yes">3x</span>
|
|
413
|
+
<span class="cline-any cline-yes">3x</span>
|
|
414
|
+
<span class="cline-any cline-yes">3x</span>
|
|
415
|
+
<span class="cline-any cline-yes">3x</span>
|
|
416
|
+
<span class="cline-any cline-yes">3x</span>
|
|
417
|
+
<span class="cline-any cline-yes">3x</span>
|
|
418
|
+
<span class="cline-any cline-yes">3x</span>
|
|
419
|
+
<span class="cline-any cline-yes">3x</span>
|
|
420
|
+
<span class="cline-any cline-yes">3x</span>
|
|
663
421
|
<span class="cline-any cline-yes">1x</span>
|
|
664
422
|
<span class="cline-any cline-yes">1x</span>
|
|
665
423
|
<span class="cline-any cline-yes">1x</span>
|
|
666
424
|
<span class="cline-any cline-no"> </span>
|
|
667
425
|
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
428
|
+
<span class="cline-any cline-no"> </span>
|
|
429
|
+
<span class="cline-any cline-no"> </span>
|
|
430
|
+
<span class="cline-any cline-no"> </span>
|
|
431
|
+
<span class="cline-any cline-no"> </span>
|
|
432
|
+
<span class="cline-any cline-no"> </span>
|
|
433
|
+
<span class="cline-any cline-no"> </span>
|
|
434
|
+
<span class="cline-any cline-no"> </span>
|
|
435
|
+
<span class="cline-any cline-no"> </span>
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
439
|
+
<span class="cline-any cline-no"> </span>
|
|
440
|
+
<span class="cline-any cline-no"> </span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
443
|
+
<span class="cline-any cline-yes">1x</span>
|
|
444
|
+
<span class="cline-any cline-yes">1x</span>
|
|
668
445
|
<span class="cline-any cline-yes">1x</span>
|
|
669
446
|
<span class="cline-any cline-yes">1x</span>
|
|
670
447
|
<span class="cline-any cline-no"> </span>
|
|
671
448
|
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-no"> </span>
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-no"> </span>
|
|
672
454
|
<span class="cline-any cline-yes">1x</span>
|
|
673
|
-
<span class="cline-any cline-
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-no"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
674
458
|
<span class="cline-any cline-no"> </span>
|
|
675
459
|
<span class="cline-any cline-no"> </span>
|
|
676
460
|
<span class="cline-any cline-no"> </span>
|
|
@@ -681,10 +465,16 @@
|
|
|
681
465
|
<span class="cline-any cline-no"> </span>
|
|
682
466
|
<span class="cline-any cline-no"> </span>
|
|
683
467
|
<span class="cline-any cline-no"> </span>
|
|
468
|
+
<span class="cline-any cline-no"> </span>
|
|
684
469
|
<span class="cline-any cline-yes">1x</span>
|
|
685
470
|
<span class="cline-any cline-yes">1x</span>
|
|
686
471
|
<span class="cline-any cline-no"> </span>
|
|
687
472
|
<span class="cline-any cline-no"> </span>
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
474
|
+
<span class="cline-any cline-no"> </span>
|
|
475
|
+
<span class="cline-any cline-no"> </span>
|
|
476
|
+
<span class="cline-any cline-no"> </span>
|
|
477
|
+
<span class="cline-any cline-no"> </span>
|
|
688
478
|
<span class="cline-any cline-yes">1x</span>
|
|
689
479
|
<span class="cline-any cline-yes">1x</span>
|
|
690
480
|
<span class="cline-any cline-no"> </span>
|
|
@@ -736,20 +526,20 @@ let hooks = []
|
|
|
736
526
|
export const RESOURCE_TYPE = 'type'
|
|
737
527
|
export const RESOURCE_TYPE_KEY = Symbol.for(RESOURCE_TYPE)
|
|
738
528
|
|
|
739
|
-
export function defineResourceRules (subject, resource, resourceService, can) {
|
|
740
|
-
const role = Roles[resource.permissions]
|
|
741
|
-
|
|
742
|
-
if (role >= Roles.member) {
|
|
743
|
-
can('read', resourceService, { _id: resource._id })
|
|
744
|
-
}
|
|
745
|
-
if (role >= Roles.manager) {
|
|
746
|
-
can('update', resourceService, { _id: resource._id })
|
|
747
|
-
can(['create', 'remove'], 'authorisations', { resource: resource._id })
|
|
748
|
-
}
|
|
749
|
-
if (role >= Roles.owner) {
|
|
750
|
-
can('remove', resourceService, { _id: resource._id })
|
|
751
|
-
}
|
|
752
|
-
}
|
|
529
|
+
export <span class="fstat-no" title="function not covered" >function defineResourceRules (subject, resource, resourceService, can) {</span>
|
|
530
|
+
<span class="cstat-no" title="statement not covered" > const role = Roles[resource.permissions]</span>
|
|
531
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
532
|
+
<span class="cstat-no" title="statement not covered" > if (role >= Roles.member) {</span>
|
|
533
|
+
<span class="cstat-no" title="statement not covered" > can('read', resourceService, { _id: resource._id })</span>
|
|
534
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
535
|
+
<span class="cstat-no" title="statement not covered" > if (role >= Roles.manager) {</span>
|
|
536
|
+
<span class="cstat-no" title="statement not covered" > can('update', resourceService, { _id: resource._id })</span>
|
|
537
|
+
<span class="cstat-no" title="statement not covered" > can(['create', 'remove'], 'authorisations', { resource: resource._id })</span>
|
|
538
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
539
|
+
<span class="cstat-no" title="statement not covered" > if (role >= Roles.owner) {</span>
|
|
540
|
+
<span class="cstat-no" title="statement not covered" > can('remove', resourceService, { _id: resource._id })</span>
|
|
541
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
542
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
753
543
|
|
|
754
544
|
// Hook computing default abilities for a given user
|
|
755
545
|
export function defineUserAbilities (subject, can, cannot) {
|
|
@@ -822,13 +612,14 @@ defineAbilities.unregisterHook = <span class="fstat-no" title="function not cove
|
|
|
822
612
|
export function hasServiceAbilities (abilities, service) {
|
|
823
613
|
if (!abilities) <span class="branch-0 cbranch-no" title="branch not covered" >return false</span>
|
|
824
614
|
// The unique identifier of a service is its path not its name.
|
|
825
|
-
// Indeed we have for instance a 'groups' service in each
|
|
615
|
+
// Indeed we have for instance a 'groups' service in each context
|
|
826
616
|
// Take care that in client we have the service path while on server we have the actual object
|
|
827
617
|
const path = typeof service === 'string' <span class="branch-0 cbranch-no" title="branch not covered" >? service </span>: service.getPath()
|
|
828
618
|
// */groups will allow to access any groups service in any context
|
|
619
|
+
const allContextsPath = _.replace(path, /^.*\//, '*/')
|
|
829
620
|
return abilities.can('service', path) ||
|
|
830
621
|
abilities.can('service', `*/${path}`) ||
|
|
831
|
-
abilities.can('service',
|
|
622
|
+
abilities.can('service', allContextsPath)
|
|
832
623
|
}
|
|
833
624
|
|
|
834
625
|
export function hasResourceAbilities (abilities, operation, resourceType, context, resource) {
|
|
@@ -837,7 +628,7 @@ export function hasResourceAbilities (abilities, operation, resourceType, contex
|
|
|
837
628
|
const object = Object.assign({}, resource)
|
|
838
629
|
object[RESOURCE_TYPE_KEY] = resourceType
|
|
839
630
|
// Add a virtual context to take it into account for object having no link to it
|
|
840
|
-
if (context) object.context = (typeof context === 'object' ? context._id.toString()
|
|
631
|
+
if (context) <span class="branch-0 cbranch-no" title="branch not covered" >object.context = (typeof context === 'object' ? context._id.toString() : context.toString())</span>
|
|
841
632
|
|
|
842
633
|
const result = abilities.can(operation, object)
|
|
843
634
|
|
|
@@ -845,166 +636,60 @@ export function hasResourceAbilities (abilities, operation, resourceType, contex
|
|
|
845
636
|
}
|
|
846
637
|
|
|
847
638
|
// Utility function used to remove the virtual context from query
|
|
848
|
-
export function removeContext (query) {
|
|
849
|
-
_.forOwn(query, (value, key) => {
|
|
850
|
-
// Process current attributes or recurse
|
|
851
|
-
// Take care to nested fields like 'field._id'
|
|
852
|
-
if (key === 'context') {
|
|
853
|
-
delete query.context
|
|
854
|
-
} else if (Array.isArray(value)) {
|
|
855
|
-
value.forEach(item => removeContext(item))
|
|
856
|
-
// Remove empty objects from array
|
|
857
|
-
// _.remove(value, item => _.isEmpty(item))
|
|
858
|
-
// Remove empty arrays from query
|
|
859
|
-
|
|
860
|
-
} else if (typeof value === 'object') {
|
|
861
|
-
removeContext(value)
|
|
862
|
-
// Remove empty objects from query
|
|
863
|
-
|
|
864
|
-
}
|
|
865
|
-
})
|
|
866
|
-
return query
|
|
867
|
-
}
|
|
639
|
+
export <span class="fstat-no" title="function not covered" >function removeContext (query) {</span>
|
|
640
|
+
<span class="cstat-no" title="statement not covered" > _.forOwn(query, (value, key) => {</span>
|
|
641
|
+
<span class="cstat-no" title="statement not covered" > // Process current attributes or recurse</span>
|
|
642
|
+
<span class="cstat-no" title="statement not covered" > // Take care to nested fields like 'field._id'</span>
|
|
643
|
+
<span class="cstat-no" title="statement not covered" > if (key === 'context') {</span>
|
|
644
|
+
<span class="cstat-no" title="statement not covered" > delete query.context</span>
|
|
645
|
+
<span class="cstat-no" title="statement not covered" > } else if (Array.isArray(value)) {</span>
|
|
646
|
+
<span class="cstat-no" title="statement not covered" > value.forEach(item => removeContext(item))</span>
|
|
647
|
+
<span class="cstat-no" title="statement not covered" > // Remove empty objects from array</span>
|
|
648
|
+
<span class="cstat-no" title="statement not covered" > // _.remove(value, item => _.isEmpty(item))</span>
|
|
649
|
+
<span class="cstat-no" title="statement not covered" > // Remove empty arrays from query</span>
|
|
650
|
+
<span class="cstat-no" title="statement not covered" > if (_.isEmpty(value)) delete query[key]</span>
|
|
651
|
+
<span class="cstat-no" title="statement not covered" > } else if (typeof value === 'object') {</span>
|
|
652
|
+
<span class="cstat-no" title="statement not covered" > removeContext(value)</span>
|
|
653
|
+
<span class="cstat-no" title="statement not covered" > // Remove empty objects from query</span>
|
|
654
|
+
<span class="cstat-no" title="statement not covered" > if (_.isEmpty(value)) delete query[key]</span>
|
|
655
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
656
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
657
|
+
<span class="cstat-no" title="statement not covered" > return query</span>
|
|
658
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
868
659
|
|
|
869
660
|
// Get the query used to filter the objects according to given abilities
|
|
870
661
|
// A null query indicates that access should not be granted
|
|
871
|
-
export function getQueryForAbilities (abilities, operation, resourceType) {
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
const query = toMongoQuery(abilities, resourceType, operation)
|
|
875
|
-
// Remove any context to avoid taking it into account because it is not really stored on objects
|
|
876
|
-
// We clone the object here because of references to the abilities rules (see https://github.com/kalisio/kdk/issues/384)
|
|
877
|
-
return (query ? removeContext(_.cloneDeep(query)) : null)
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
function buildSubjectsQueryForResource (resourceScope, resourceId, role) {
|
|
881
|
-
const query = { [resourceScope]: { $elemMatch: { _id: resourceId } } }
|
|
882
|
-
if (role) {
|
|
883
|
-
_.set(query[resourceScope], '$elemMatch.permissions', (typeof role === 'string' <span class="branch-0 cbranch-no" title="branch not covered" >? role </span>: RoleNames[role]))
|
|
884
|
-
}
|
|
885
|
-
return query
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
export function findSubjectsForResource (subjectService, resourceScope, resourceId, role) {
|
|
889
|
-
// Build the query
|
|
890
|
-
const query = buildSubjectsQueryForResource(resourceScope, resourceId, role)
|
|
891
|
-
// Execute the query
|
|
892
|
-
return subjectService.find({ query })
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
export function countSubjectsForResource (subjectService, resourceScope, resourceId, role) {
|
|
896
|
-
// Build the query
|
|
897
|
-
const query = buildSubjectsQueryForResource(resourceScope, resourceId, role)
|
|
898
|
-
// Indicate we'd only like to count
|
|
899
|
-
query.$limit = 0
|
|
900
|
-
// Execute the query
|
|
901
|
-
return subjectService.find({ query })
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
// Hook computing organisation abilities for a given user
|
|
905
|
-
export function defineOrganisationAbilities (subject, can, cannot) {
|
|
906
|
-
if (subject) {
|
|
907
|
-
// Create new organisations
|
|
908
|
-
can('service', 'organisations')
|
|
909
|
-
can('create', 'organisations')
|
|
910
|
-
|
|
911
|
-
if (subject.organisations) {
|
|
912
|
-
subject.organisations.forEach(organisation => {
|
|
913
|
-
if (organisation._id) {
|
|
914
|
-
// Generic rules for resources
|
|
915
|
-
defineResourceRules(subject, organisation, 'organisations', can)
|
|
916
|
-
// Specific rules for organisations
|
|
917
|
-
const role = Roles[organisation.permissions]
|
|
918
|
-
if (role >= Roles.member) {
|
|
919
|
-
// The unique identifier of a service is its path not its name.
|
|
920
|
-
// Indeed we have for instance a 'groups' service in each organisation.
|
|
921
|
-
can('service', organisation._id.toString() + '/members')
|
|
922
|
-
can('read', 'members', { context: organisation._id })
|
|
923
|
-
can('service', organisation._id.toString() + '/tags')
|
|
924
|
-
// Tags are public
|
|
925
|
-
can('read', 'tags', { context: organisation._id })
|
|
926
|
-
// Groups are private
|
|
927
|
-
can('service', organisation._id.toString() + '/groups')
|
|
928
|
-
can('service', organisation._id.toString() + '/storage')
|
|
929
|
-
can(['read', 'create', 'remove', 'createMultipartUpload', 'completeMultipartUpload', 'uploadPart', 'putObject'], 'storage', { context: organisation._id })
|
|
930
|
-
}
|
|
931
|
-
if (role >= Roles.manager) {
|
|
932
|
-
can('update', 'members', { context: organisation._id })
|
|
933
|
-
// Managers can manage all groups/tags
|
|
934
|
-
can('all', 'groups', { context: organisation._id })
|
|
935
|
-
can(['create', 'remove'], 'authorisations', { resourcesService: organisation._id.toString() + '/groups', scope: 'groups' })
|
|
936
|
-
can('all', 'tags', { context: organisation._id })
|
|
937
|
-
// Remove invited members
|
|
938
|
-
can(['remove'], 'users', { 'sponsor.organisationId': organisation._id })
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
})
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
|
|
946
|
-
// Hook computing group abilities for a given user
|
|
947
|
-
export function defineGroupAbilities (subject, can, cannot) {
|
|
948
|
-
if (subject) {
|
|
949
|
-
if (subject.groups) {
|
|
950
|
-
subject.groups.forEach(group => {
|
|
951
|
-
if (group._id) {
|
|
952
|
-
// Specific rules for groups
|
|
953
|
-
const role = Roles[group.permissions]
|
|
954
|
-
|
|
955
|
-
if (role >= Roles.member) {
|
|
956
|
-
can('read', 'groups', { _id: group._id })
|
|
957
|
-
}
|
|
958
|
-
if (role >= Roles.manager) {
|
|
959
|
-
can(['create', 'remove'], 'authorisations', { resource: group._id, permissions: 'member' })
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
})
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
// Helper functions to find the members of a given organisation
|
|
968
|
-
export function findMembersOfOrganisation (usersService, organisationId, role) {
|
|
969
|
-
return findSubjectsForResource(usersService, 'organisations', organisationId, role)
|
|
970
|
-
}
|
|
971
|
-
|
|
972
|
-
export <span class="fstat-no" title="function not covered" >function countMembersOfOrganisation (usersService, organisationId, role) {</span>
|
|
973
|
-
<span class="cstat-no" title="statement not covered" > return countSubjectsForResource(usersService, 'organisations', organisationId, role)</span>
|
|
974
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
975
|
-
|
|
976
|
-
// Helper functions to find the members of a given group
|
|
977
|
-
export <span class="fstat-no" title="function not covered" >function findMembersOfGroup (membersService, groupId, role) {</span>
|
|
978
|
-
<span class="cstat-no" title="statement not covered" > return findSubjectsForResource(membersService, 'groups', groupId, role)</span>
|
|
979
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
980
|
-
|
|
981
|
-
export <span class="fstat-no" title="function not covered" >function countMembersOfGroup (membersService, groupId, role) {</span>
|
|
982
|
-
<span class="cstat-no" title="statement not covered" > return countSubjectsForResource(membersService, 'groups', groupId, role)</span>
|
|
983
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
984
|
-
|
|
985
|
-
// Helper functions to find the members with a given tag
|
|
986
|
-
export <span class="fstat-no" title="function not covered" >function findMembersWithTag (membersService, tagId) {</span>
|
|
987
|
-
<span class="cstat-no" title="statement not covered" > return findSubjectsForResource(membersService, 'tags', tagId)</span>
|
|
988
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
989
|
-
|
|
990
|
-
export <span class="fstat-no" title="function not covered" >function countMembersWithTag (membersService, tagId) {</span>
|
|
991
|
-
<span class="cstat-no" title="statement not covered" > return countSubjectsForResource(membersService, 'tags', tagId)</span>
|
|
662
|
+
export <span class="fstat-no" title="function not covered" >function getQueryForAbilities (abilities, operation, resourceType) {</span>
|
|
663
|
+
<span class="cstat-no" title="statement not covered" > if (!abilities) return null</span>
|
|
664
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
665
|
+
<span class="cstat-no" title="statement not covered" > const query = toMongoQuery(abilities, resourceType, operation)</span>
|
|
666
|
+
<span class="cstat-no" title="statement not covered" > // Remove any context to avoid taking it into account because it is not really stored on objects</span>
|
|
667
|
+
<span class="cstat-no" title="statement not covered" > // We clone the object here because of references to the abilities rules (see https://github.com/kalisio/kdk/issues/384)</span>
|
|
668
|
+
<span class="cstat-no" title="statement not covered" > return (query ? removeContext(_.cloneDeep(query)) : null)</span>
|
|
992
669
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
993
670
|
|
|
994
|
-
|
|
995
|
-
<span class="cstat-no" title="statement not covered" > const
|
|
996
|
-
<span class="cstat-no" title="statement not covered" > if (
|
|
997
|
-
<span class="cstat-no" title="statement not covered" >
|
|
671
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function buildSubjectsQueryForResource (resourceScope, resourceId, role) {</span></span>
|
|
672
|
+
<span class="cstat-no" title="statement not covered" > const query = { [resourceScope]: { $elemMatch: { _id: resourceId } } }</span>
|
|
673
|
+
<span class="cstat-no" title="statement not covered" > if (role) {</span>
|
|
674
|
+
<span class="cstat-no" title="statement not covered" > _.set(query[resourceScope], '$elemMatch.permissions', (typeof role === 'string' ? role : RoleNames[role]))</span>
|
|
675
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
676
|
+
<span class="cstat-no" title="statement not covered" > return query</span>
|
|
998
677
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
999
678
|
|
|
1000
|
-
export <span class="fstat-no" title="function not covered" >function
|
|
1001
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1002
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1003
|
-
<span class="cstat-no" title="statement not covered" >
|
|
679
|
+
export <span class="fstat-no" title="function not covered" >function findSubjectsForResource (subjectService, resourceScope, resourceId, role) {</span>
|
|
680
|
+
<span class="cstat-no" title="statement not covered" > // Build the query</span>
|
|
681
|
+
<span class="cstat-no" title="statement not covered" > const query = buildSubjectsQueryForResource(resourceScope, resourceId, role)</span>
|
|
682
|
+
<span class="cstat-no" title="statement not covered" > // Execute the query</span>
|
|
683
|
+
<span class="cstat-no" title="statement not covered" > return subjectService.find({ query })</span>
|
|
1004
684
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1005
685
|
|
|
1006
|
-
export <span class="fstat-no" title="function not covered" >function
|
|
1007
|
-
<span class="cstat-no" title="statement not covered" >
|
|
686
|
+
export <span class="fstat-no" title="function not covered" >function countSubjectsForResource (subjectService, resourceScope, resourceId, role) {</span>
|
|
687
|
+
<span class="cstat-no" title="statement not covered" > // Build the query</span>
|
|
688
|
+
<span class="cstat-no" title="statement not covered" > const query = buildSubjectsQueryForResource(resourceScope, resourceId, role)</span>
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > // Indicate we'd only like to count</span>
|
|
690
|
+
<span class="cstat-no" title="statement not covered" > query.$limit = 0</span>
|
|
691
|
+
<span class="cstat-no" title="statement not covered" > // Execute the query</span>
|
|
692
|
+
<span class="cstat-no" title="statement not covered" > return subjectService.find({ query })</span>
|
|
1008
693
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1009
694
|
|
|
1010
695
|
export <span class="fstat-no" title="function not covered" >function isSeniorRole (roleName, juniorName) {</span>
|
|
@@ -1033,7 +718,7 @@ export <span class="fstat-no" title="function not covered" >function getJuniorRo
|
|
|
1033
718
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1034
719
|
Code coverage generated by
|
|
1035
720
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1036
|
-
at
|
|
721
|
+
at 2025-05-21T12:01:19.803Z
|
|
1037
722
|
</div>
|
|
1038
723
|
<script src="../../prettify.js"></script>
|
|
1039
724
|
<script>
|