@kalisio/kdk 2.4.1 → 2.5.2
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 +9 -104
- 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 -31
- package/core/api/services/index.js +42 -50
- package/core/api/services/messages/messages.hooks.js +4 -3
- package/core/api/services/users/users.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 +7 -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 +172 -460
- 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 +52 -52
- 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 +136 -136
- 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 +55 -328
- package/coverage/core/api/hooks/index.html +58 -88
- package/coverage/core/api/hooks/index.js.html +4 -10
- package/coverage/core/api/index.html +39 -54
- package/coverage/core/api/index.js.html +1 -1
- package/coverage/core/api/marshall.js.html +1 -1
- 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 +120 -117
- package/coverage/core/api/services/authorisations/index.html +15 -15
- 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 +86 -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 +121 -166
- 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 +172 -460
- 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 +52 -52
- 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 +136 -136
- 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 +55 -328
- package/coverage/lcov-report/core/api/hooks/index.html +58 -88
- package/coverage/lcov-report/core/api/hooks/index.js.html +4 -10
- package/coverage/lcov-report/core/api/index.html +39 -54
- package/coverage/lcov-report/core/api/index.js.html +1 -1
- package/coverage/lcov-report/core/api/marshall.js.html +1 -1
- package/coverage/lcov-report/core/api/models/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 +120 -117
- package/coverage/lcov-report/core/api/services/authorisations/index.html +15 -15
- 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 +86 -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 +121 -166
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +33 -27
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +4 -4
- package/coverage/lcov-report/map/api/hooks/index.html +5 -5
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +1 -1
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/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 +10 -7
- 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 +171 -42
- 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/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 +5 -5
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
- package/coverage/lcov.info +2314 -3167
- package/coverage/map/api/hooks/hooks.catalog.js.html +33 -27
- package/coverage/map/api/hooks/hooks.features.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +4 -4
- package/coverage/map/api/hooks/index.html +5 -5
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +1 -1
- package/coverage/map/api/models/projects.model.mongodb.js.html +1 -1
- package/coverage/map/api/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 +10 -7
- 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 +171 -42
- 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/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 +5 -5
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +1 -1
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +1 -1
- package/coverage/tmp/{coverage-280506-1731704745613-0.json → coverage-122123-1739872365211-0.json} +1 -1
- package/coverage/tmp/{coverage-280518-1731704745599-0.json → coverage-122135-1739872365196-0.json} +1 -1
- package/coverage/tmp/{coverage-280529-1731704745588-0.json → coverage-122146-1739872365184-0.json} +1 -1
- package/coverage/tmp/{coverage-280541-1731704745574-0.json → coverage-122158-1739872365169-0.json} +1 -1
- package/coverage/tmp/{coverage-280548-1731704745545-0.json → coverage-122165-1739872365141-0.json} +1 -1
- 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 +19 -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/stickies/KAttribution.vue +115 -0
- 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 +187 -128
- 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 +222 -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 +77 -151
- 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-11-05.log → test-log-2025-05-26.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/api/map/{test-log-2024-10-28.log → test-log-2025-05-26.log} +4 -3
- 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/map/client/components/KAttribution.vue +0 -108
- 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-06.log +0 -23
- 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-15.log +0 -23
- 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/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">80.27% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>232/289</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">66.23% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>51/77</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">75% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>8
|
|
42
|
+
<span class='fraction'>6/8</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">80.27% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>232/289</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -353,104 +353,7 @@
|
|
|
353
353
|
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
354
|
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
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>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
453
|
-
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
454
357
|
<span class="cline-any cline-yes">1x</span>
|
|
455
358
|
<span class="cline-any cline-yes">1x</span>
|
|
456
359
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -488,12 +391,12 @@
|
|
|
488
391
|
<span class="cline-any cline-yes">2x</span>
|
|
489
392
|
<span class="cline-any cline-yes">1x</span>
|
|
490
393
|
<span class="cline-any cline-yes">1x</span>
|
|
491
|
-
<span class="cline-any cline-yes">
|
|
394
|
+
<span class="cline-any cline-yes">4x</span>
|
|
492
395
|
<span class="cline-any cline-no"> </span>
|
|
493
396
|
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-yes">
|
|
495
|
-
<span class="cline-any cline-yes">
|
|
496
|
-
<span class="cline-any cline-yes">
|
|
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>
|
|
497
400
|
<span class="cline-any cline-yes">1x</span>
|
|
498
401
|
<span class="cline-any cline-yes">1x</span>
|
|
499
402
|
<span class="cline-any cline-no"> </span>
|
|
@@ -504,12 +407,12 @@
|
|
|
504
407
|
<span class="cline-any cline-no"> </span>
|
|
505
408
|
<span class="cline-any cline-yes">1x</span>
|
|
506
409
|
<span class="cline-any cline-yes">1x</span>
|
|
507
|
-
<span class="cline-any cline-yes">
|
|
410
|
+
<span class="cline-any cline-yes">4x</span>
|
|
508
411
|
<span class="cline-any cline-no"> </span>
|
|
509
412
|
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-yes">
|
|
511
|
-
<span class="cline-any cline-yes">
|
|
512
|
-
<span class="cline-any cline-yes">
|
|
413
|
+
<span class="cline-any cline-yes">4x</span>
|
|
414
|
+
<span class="cline-any cline-yes">4x</span>
|
|
415
|
+
<span class="cline-any cline-yes">4x</span>
|
|
513
416
|
<span class="cline-any cline-yes">1x</span>
|
|
514
417
|
<span class="cline-any cline-yes">1x</span>
|
|
515
418
|
<span class="cline-any cline-no"> </span>
|
|
@@ -520,26 +423,9 @@
|
|
|
520
423
|
<span class="cline-any cline-no"> </span>
|
|
521
424
|
<span class="cline-any cline-yes">1x</span>
|
|
522
425
|
<span class="cline-any cline-yes">1x</span>
|
|
523
|
-
<span class="cline-any cline-yes">
|
|
426
|
+
<span class="cline-any cline-yes">4x</span>
|
|
524
427
|
<span class="cline-any cline-no"> </span>
|
|
525
428
|
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-yes">6x</span>
|
|
527
|
-
<span class="cline-any cline-yes">6x</span>
|
|
528
|
-
<span class="cline-any cline-yes">6x</span>
|
|
529
|
-
<span class="cline-any cline-yes">6x</span>
|
|
530
|
-
<span class="cline-any cline-yes">6x</span>
|
|
531
|
-
<span class="cline-any cline-yes">6x</span>
|
|
532
|
-
<span class="cline-any cline-yes">6x</span>
|
|
533
|
-
<span class="cline-any cline-yes">4x</span>
|
|
534
|
-
<span class="cline-any cline-yes">4x</span>
|
|
535
|
-
<span class="cline-any cline-yes">4x</span>
|
|
536
|
-
<span class="cline-any cline-yes">6x</span>
|
|
537
|
-
<span class="cline-any cline-yes">6x</span>
|
|
538
|
-
<span class="cline-any cline-yes">4x</span>
|
|
539
|
-
<span class="cline-any cline-yes">4x</span>
|
|
540
|
-
<span class="cline-any cline-yes">4x</span>
|
|
541
|
-
<span class="cline-any cline-yes">4x</span>
|
|
542
|
-
<span class="cline-any cline-yes">4x</span>
|
|
543
429
|
<span class="cline-any cline-yes">4x</span>
|
|
544
430
|
<span class="cline-any cline-yes">4x</span>
|
|
545
431
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -547,252 +433,134 @@
|
|
|
547
433
|
<span class="cline-any cline-yes">4x</span>
|
|
548
434
|
<span class="cline-any cline-yes">4x</span>
|
|
549
435
|
<span class="cline-any cline-yes">4x</span>
|
|
436
|
+
<span class="cline-any cline-yes">3x</span>
|
|
437
|
+
<span class="cline-any cline-yes">3x</span>
|
|
438
|
+
<span class="cline-any cline-yes">3x</span>
|
|
550
439
|
<span class="cline-any cline-yes">4x</span>
|
|
551
440
|
<span class="cline-any cline-yes">4x</span>
|
|
441
|
+
<span class="cline-any cline-yes">3x</span>
|
|
442
|
+
<span class="cline-any cline-yes">3x</span>
|
|
443
|
+
<span class="cline-any cline-yes">3x</span>
|
|
444
|
+
<span class="cline-any cline-yes">3x</span>
|
|
445
|
+
<span class="cline-any cline-yes">3x</span>
|
|
446
|
+
<span class="cline-any cline-yes">3x</span>
|
|
447
|
+
<span class="cline-any cline-yes">3x</span>
|
|
448
|
+
<span class="cline-any cline-yes">3x</span>
|
|
449
|
+
<span class="cline-any cline-yes">3x</span>
|
|
450
|
+
<span class="cline-any cline-yes">3x</span>
|
|
451
|
+
<span class="cline-any cline-yes">3x</span>
|
|
452
|
+
<span class="cline-any cline-yes">3x</span>
|
|
453
|
+
<span class="cline-any cline-yes">3x</span>
|
|
454
|
+
<span class="cline-any cline-yes">3x</span>
|
|
552
455
|
<span class="cline-any cline-no"> </span>
|
|
553
456
|
<span class="cline-any cline-no"> </span>
|
|
554
457
|
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-yes">4x</span>
|
|
556
|
-
<span class="cline-any cline-yes">4x</span>
|
|
557
|
-
<span class="cline-any cline-yes">4x</span>
|
|
558
|
-
<span class="cline-any cline-yes">4x</span>
|
|
559
|
-
<span class="cline-any cline-yes">4x</span>
|
|
560
|
-
<span class="cline-any cline-yes">4x</span>
|
|
561
|
-
<span class="cline-any cline-yes">4x</span>
|
|
562
|
-
<span class="cline-any cline-yes">4x</span>
|
|
563
|
-
<span class="cline-any cline-yes">4x</span>
|
|
564
|
-
<span class="cline-any cline-yes">4x</span>
|
|
565
|
-
<span class="cline-any cline-yes">4x</span>
|
|
566
|
-
<span class="cline-any cline-yes">4x</span>
|
|
567
|
-
<span class="cline-any cline-yes">4x</span>
|
|
568
|
-
<span class="cline-any cline-yes">4x</span>
|
|
569
|
-
<span class="cline-any cline-yes">4x</span>
|
|
570
|
-
<span class="cline-any cline-yes">1x</span>
|
|
571
|
-
<span class="cline-any cline-yes">4x</span>
|
|
572
458
|
<span class="cline-any cline-yes">3x</span>
|
|
573
459
|
<span class="cline-any cline-yes">3x</span>
|
|
574
|
-
<span class="cline-any cline-yes">
|
|
575
|
-
<span class="cline-any cline-yes">
|
|
576
|
-
<span class="cline-any cline-yes">
|
|
577
|
-
<span class="cline-any cline-yes">
|
|
460
|
+
<span class="cline-any cline-yes">3x</span>
|
|
461
|
+
<span class="cline-any cline-yes">3x</span>
|
|
462
|
+
<span class="cline-any cline-yes">3x</span>
|
|
463
|
+
<span class="cline-any cline-yes">3x</span>
|
|
464
|
+
<span class="cline-any cline-yes">3x</span>
|
|
465
|
+
<span class="cline-any cline-yes">3x</span>
|
|
466
|
+
<span class="cline-any cline-yes">3x</span>
|
|
467
|
+
<span class="cline-any cline-yes">3x</span>
|
|
468
|
+
<span class="cline-any cline-yes">3x</span>
|
|
469
|
+
<span class="cline-any cline-yes">3x</span>
|
|
470
|
+
<span class="cline-any cline-yes">3x</span>
|
|
471
|
+
<span class="cline-any cline-yes">3x</span>
|
|
472
|
+
<span class="cline-any cline-yes">3x</span>
|
|
578
473
|
<span class="cline-any cline-yes">1x</span>
|
|
579
474
|
<span class="cline-any cline-yes">3x</span>
|
|
475
|
+
<span class="cline-any cline-yes">2x</span>
|
|
476
|
+
<span class="cline-any cline-yes">2x</span>
|
|
580
477
|
<span class="cline-any cline-yes">3x</span>
|
|
581
478
|
<span class="cline-any cline-yes">3x</span>
|
|
479
|
+
<span class="cline-any cline-yes">1x</span>
|
|
480
|
+
<span class="cline-any cline-yes">1x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">2x</span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</span>
|
|
484
|
+
<span class="cline-any cline-yes">2x</span>
|
|
485
|
+
<span class="cline-any cline-yes">2x</span>
|
|
582
486
|
<span class="cline-any cline-yes">3x</span>
|
|
583
|
-
<span class="cline-any cline-yes">4x</span>
|
|
584
487
|
<span class="cline-any cline-yes">1x</span>
|
|
585
|
-
<span class="cline-any cline-yes">
|
|
488
|
+
<span class="cline-any cline-yes">1x</span>
|
|
586
489
|
<span class="cline-any cline-no"> </span>
|
|
587
490
|
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-yes">
|
|
491
|
+
<span class="cline-any cline-yes">3x</span>
|
|
589
492
|
<span class="cline-any cline-yes">1x</span>
|
|
590
493
|
<span class="cline-any cline-yes">1x</span>
|
|
591
494
|
<span class="cline-any cline-yes">1x</span>
|
|
592
495
|
<span class="cline-any cline-yes">1x</span>
|
|
593
496
|
<span class="cline-any cline-yes">1x</span>
|
|
497
|
+
<span class="cline-any cline-yes">3x</span>
|
|
498
|
+
<span class="cline-any cline-yes">2x</span>
|
|
499
|
+
<span class="cline-any cline-yes">2x</span>
|
|
594
500
|
<span class="cline-any cline-yes">4x</span>
|
|
595
|
-
<span class="cline-any cline-yes">4x</span>
|
|
596
|
-
<span class="cline-any cline-yes">4x</span>
|
|
597
|
-
<span class="cline-any cline-yes">6x</span>
|
|
598
501
|
<span class="cline-any cline-yes">1x</span>
|
|
599
502
|
<span class="cline-any cline-yes">1x</span>
|
|
600
|
-
<span class="cline-any cline-yes">
|
|
503
|
+
<span class="cline-any cline-yes">106x</span>
|
|
601
504
|
<span class="cline-any cline-no"> </span>
|
|
602
505
|
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-yes">
|
|
604
|
-
<span class="cline-any cline-yes">
|
|
605
|
-
<span class="cline-any cline-yes">
|
|
606
|
-
<span class="cline-any cline-yes">
|
|
607
|
-
<span class="cline-any cline-yes">
|
|
608
|
-
<span class="cline-any cline-yes">
|
|
609
|
-
<span class="cline-any cline-yes">
|
|
610
|
-
<span class="cline-any cline-yes">
|
|
611
|
-
<span class="cline-any cline-yes">
|
|
612
|
-
<span class="cline-any cline-yes">
|
|
613
|
-
<span class="cline-any cline-yes">
|
|
614
|
-
<span class="cline-any cline-yes">
|
|
615
|
-
<span class="cline-any cline-yes">
|
|
616
|
-
<span class="cline-any cline-yes">
|
|
617
|
-
<span class="cline-any cline-yes">
|
|
618
|
-
<span class="cline-any cline-yes">
|
|
619
|
-
<span class="cline-any cline-yes">
|
|
620
|
-
<span class="cline-any cline-yes">
|
|
621
|
-
<span class="cline-any cline-yes">
|
|
622
|
-
<span class="cline-any cline-yes">
|
|
623
|
-
<span class="cline-any cline-yes">
|
|
624
|
-
<span class="cline-any cline-yes">
|
|
506
|
+
<span class="cline-any cline-yes">106x</span>
|
|
507
|
+
<span class="cline-any cline-yes">106x</span>
|
|
508
|
+
<span class="cline-any cline-yes">106x</span>
|
|
509
|
+
<span class="cline-any cline-yes">106x</span>
|
|
510
|
+
<span class="cline-any cline-yes">106x</span>
|
|
511
|
+
<span class="cline-any cline-yes">106x</span>
|
|
512
|
+
<span class="cline-any cline-yes">106x</span>
|
|
513
|
+
<span class="cline-any cline-yes">106x</span>
|
|
514
|
+
<span class="cline-any cline-yes">106x</span>
|
|
515
|
+
<span class="cline-any cline-yes">106x</span>
|
|
516
|
+
<span class="cline-any cline-yes">106x</span>
|
|
517
|
+
<span class="cline-any cline-yes">106x</span>
|
|
518
|
+
<span class="cline-any cline-yes">10x</span>
|
|
519
|
+
<span class="cline-any cline-yes">10x</span>
|
|
520
|
+
<span class="cline-any cline-yes">10x</span>
|
|
521
|
+
<span class="cline-any cline-yes">106x</span>
|
|
522
|
+
<span class="cline-any cline-yes">106x</span>
|
|
523
|
+
<span class="cline-any cline-yes">5x</span>
|
|
524
|
+
<span class="cline-any cline-yes">5x</span>
|
|
525
|
+
<span class="cline-any cline-yes">5x</span>
|
|
526
|
+
<span class="cline-any cline-yes">106x</span>
|
|
527
|
+
<span class="cline-any cline-yes">106x</span>
|
|
625
528
|
<span class="cline-any cline-no"> </span>
|
|
626
529
|
<span class="cline-any cline-no"> </span>
|
|
627
530
|
<span class="cline-any cline-no"> </span>
|
|
628
|
-
<span class="cline-any cline-yes">
|
|
629
|
-
<span class="cline-any cline-yes">
|
|
630
|
-
<span class="cline-any cline-yes">77x</span>
|
|
631
|
-
<span class="cline-any cline-yes">77x</span>
|
|
632
|
-
<span class="cline-any cline-yes">77x</span>
|
|
633
|
-
<span class="cline-any cline-yes">77x</span>
|
|
634
|
-
<span class="cline-any cline-yes">77x</span>
|
|
635
|
-
<span class="cline-any cline-yes">278x</span>
|
|
636
|
-
<span class="cline-any cline-yes">278x</span>
|
|
637
|
-
<span class="cline-any cline-yes">278x</span>
|
|
638
|
-
<span class="cline-any cline-yes">63x</span>
|
|
639
|
-
<span class="cline-any cline-yes">63x</span>
|
|
640
|
-
<span class="cline-any cline-yes">63x</span>
|
|
641
|
-
<span class="cline-any cline-yes">63x</span>
|
|
642
|
-
<span class="cline-any cline-yes">63x</span>
|
|
531
|
+
<span class="cline-any cline-yes">106x</span>
|
|
532
|
+
<span class="cline-any cline-yes">106x</span>
|
|
643
533
|
<span class="cline-any cline-yes">6x</span>
|
|
644
534
|
<span class="cline-any cline-yes">6x</span>
|
|
645
535
|
<span class="cline-any cline-yes">6x</span>
|
|
646
|
-
<span class="cline-any cline-no"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
536
|
<span class="cline-any cline-yes">6x</span>
|
|
649
|
-
<span class="cline-any cline-yes">63x</span>
|
|
650
|
-
<span class="cline-any cline-yes">63x</span>
|
|
651
|
-
<span class="cline-any cline-yes">63x</span>
|
|
652
537
|
<span class="cline-any cline-yes">6x</span>
|
|
653
|
-
<span class="cline-any cline-yes">
|
|
654
|
-
<span class="cline-any cline-yes">
|
|
655
|
-
<span class="cline-any cline-yes">
|
|
656
|
-
<span class="cline-any cline-yes">
|
|
657
|
-
<span class="cline-any cline-yes">
|
|
658
|
-
<span class="cline-any cline-yes">3x</span>
|
|
659
|
-
<span class="cline-any cline-yes">60x</span>
|
|
660
|
-
<span class="cline-any cline-yes">63x</span>
|
|
661
|
-
<span class="cline-any cline-yes">44x</span>
|
|
662
|
-
<span class="cline-any cline-yes">44x</span>
|
|
663
|
-
<span class="cline-any cline-yes">44x</span>
|
|
664
|
-
<span class="cline-any cline-yes">44x</span>
|
|
665
|
-
<span class="cline-any cline-yes">44x</span>
|
|
666
|
-
<span class="cline-any cline-yes">19x</span>
|
|
667
|
-
<span class="cline-any cline-yes">19x</span>
|
|
668
|
-
<span class="cline-any cline-yes">19x</span>
|
|
538
|
+
<span class="cline-any cline-yes">106x</span>
|
|
539
|
+
<span class="cline-any cline-yes">106x</span>
|
|
540
|
+
<span class="cline-any cline-yes">106x</span>
|
|
541
|
+
<span class="cline-any cline-yes">4x</span>
|
|
542
|
+
<span class="cline-any cline-yes">4x</span>
|
|
669
543
|
<span class="cline-any cline-yes">4x</span>
|
|
670
544
|
<span class="cline-any cline-yes">4x</span>
|
|
671
545
|
<span class="cline-any cline-yes">4x</span>
|
|
672
|
-
<span class="cline-any cline-yes">44x</span>
|
|
673
|
-
<span class="cline-any cline-yes">25x</span>
|
|
674
|
-
<span class="cline-any cline-yes">25x</span>
|
|
675
|
-
<span class="cline-any cline-yes">25x</span>
|
|
676
|
-
<span class="cline-any cline-yes">25x</span>
|
|
677
|
-
<span class="cline-any cline-yes">25x</span>
|
|
678
|
-
<span class="cline-any cline-yes">24x</span>
|
|
679
|
-
<span class="cline-any cline-yes">23x</span>
|
|
680
|
-
<span class="cline-any cline-yes">23x</span>
|
|
681
|
-
<span class="cline-any cline-yes">24x</span>
|
|
682
|
-
<span class="cline-any cline-yes">24x</span>
|
|
683
|
-
<span class="cline-any cline-yes">25x</span>
|
|
684
|
-
<span class="cline-any cline-yes">1x</span>
|
|
685
|
-
<span class="cline-any cline-yes">1x</span>
|
|
686
|
-
<span class="cline-any cline-yes">1x</span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
|
-
<span class="cline-any cline-yes">1x</span>
|
|
691
|
-
<span class="cline-any cline-yes">25x</span>
|
|
692
|
-
<span class="cline-any cline-yes">40x</span>
|
|
693
|
-
<span class="cline-any cline-yes">40x</span>
|
|
694
|
-
<span class="cline-any cline-yes">40x</span>
|
|
695
|
-
<span class="cline-any cline-yes">63x</span>
|
|
696
|
-
<span class="cline-any cline-yes">14x</span>
|
|
697
|
-
<span class="cline-any cline-yes">14x</span>
|
|
698
|
-
<span class="cline-any cline-yes">14x</span>
|
|
699
|
-
<span class="cline-any cline-yes">14x</span>
|
|
700
|
-
<span class="cline-any cline-yes">14x</span>
|
|
701
|
-
<span class="cline-any cline-yes">14x</span>
|
|
702
|
-
<span class="cline-any cline-yes">14x</span>
|
|
703
|
-
<span class="cline-any cline-yes">14x</span>
|
|
704
|
-
<span class="cline-any cline-yes">14x</span>
|
|
705
|
-
<span class="cline-any cline-yes">1x</span>
|
|
706
|
-
<span class="cline-any cline-yes">1x</span>
|
|
707
|
-
<span class="cline-any cline-yes">1x</span>
|
|
708
|
-
<span class="cline-any cline-yes">13x</span>
|
|
709
|
-
<span class="cline-any cline-yes">14x</span>
|
|
710
546
|
<span class="cline-any cline-yes">2x</span>
|
|
711
547
|
<span class="cline-any cline-yes">2x</span>
|
|
712
|
-
<span class="cline-any cline-yes">13x</span>
|
|
713
|
-
<span class="cline-any cline-yes">13x</span>
|
|
714
|
-
<span class="cline-any cline-yes">13x</span>
|
|
715
|
-
<span class="cline-any cline-yes">13x</span>
|
|
716
|
-
<span class="cline-any cline-yes">278x</span>
|
|
717
|
-
<span class="cline-any cline-yes">215x</span>
|
|
718
|
-
<span class="cline-any cline-yes">215x</span>
|
|
719
|
-
<span class="cline-any cline-yes">257x</span>
|
|
720
|
-
<span class="cline-any cline-yes">257x</span>
|
|
721
|
-
<span class="cline-any cline-yes">257x</span>
|
|
722
|
-
<span class="cline-any cline-yes">278x</span>
|
|
723
|
-
<span class="cline-any cline-yes">1x</span>
|
|
724
|
-
<span class="cline-any cline-yes">1x</span>
|
|
725
|
-
<span class="cline-any cline-yes">1x</span>
|
|
726
|
-
<span class="cline-any cline-yes">8x</span>
|
|
727
|
-
<span class="cline-any cline-yes">8x</span>
|
|
728
|
-
<span class="cline-any cline-yes">8x</span>
|
|
729
|
-
<span class="cline-any cline-yes">8x</span>
|
|
730
|
-
<span class="cline-any cline-yes">8x</span>
|
|
731
|
-
<span class="cline-any cline-yes">8x</span>
|
|
732
|
-
<span class="cline-any cline-yes">8x</span>
|
|
733
|
-
<span class="cline-any cline-yes">8x</span>
|
|
734
|
-
<span class="cline-any cline-yes">8x</span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
|
-
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-yes">8x</span>
|
|
738
|
-
<span class="cline-any cline-yes">8x</span>
|
|
739
|
-
<span class="cline-any cline-yes">8x</span>
|
|
740
|
-
<span class="cline-any cline-yes">8x</span>
|
|
741
|
-
<span class="cline-any cline-yes">1x</span>
|
|
742
|
-
<span class="cline-any cline-yes">1x</span>
|
|
743
|
-
<span class="cline-any cline-yes">1x</span>
|
|
744
548
|
<span class="cline-any cline-yes">2x</span>
|
|
745
|
-
<span class="cline-any cline-yes">13x</span>
|
|
746
|
-
<span class="cline-any cline-yes">13x</span>
|
|
747
|
-
<span class="cline-any cline-yes">13x</span>
|
|
748
|
-
<span class="cline-any cline-yes">13x</span>
|
|
749
|
-
<span class="cline-any cline-yes">13x</span>
|
|
750
|
-
<span class="cline-any cline-yes">13x</span>
|
|
751
|
-
<span class="cline-any cline-yes">13x</span>
|
|
752
|
-
<span class="cline-any cline-yes">13x</span>
|
|
753
|
-
<span class="cline-any cline-yes">13x</span>
|
|
754
|
-
<span class="cline-any cline-yes">13x</span>
|
|
755
|
-
<span class="cline-any cline-yes">13x</span>
|
|
756
|
-
<span class="cline-any cline-yes">13x</span>
|
|
757
|
-
<span class="cline-any cline-yes">13x</span>
|
|
758
|
-
<span class="cline-any cline-yes">11x</span>
|
|
759
|
-
<span class="cline-any cline-yes">13x</span>
|
|
760
|
-
<span class="cline-any cline-yes">5x</span>
|
|
761
|
-
<span class="cline-any cline-yes">5x</span>
|
|
762
|
-
<span class="cline-any cline-yes">5x</span>
|
|
763
|
-
<span class="cline-any cline-yes">5x</span>
|
|
764
|
-
<span class="cline-any cline-yes">5x</span>
|
|
765
|
-
<span class="cline-any cline-yes">5x</span>
|
|
766
|
-
<span class="cline-any cline-yes">5x</span>
|
|
767
|
-
<span class="cline-any cline-yes">5x</span>
|
|
768
|
-
<span class="cline-any cline-yes">5x</span>
|
|
769
|
-
<span class="cline-any cline-yes">5x</span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-no"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
549
|
<span class="cline-any cline-no"> </span>
|
|
775
550
|
<span class="cline-any cline-no"> </span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-no"> </span>
|
|
778
|
-
<span class="cline-any cline-no"> </span>
|
|
779
|
-
<span class="cline-any cline-yes">5x</span>
|
|
780
|
-
<span class="cline-any cline-yes">11x</span>
|
|
781
|
-
<span class="cline-any cline-yes">13x</span>
|
|
782
551
|
<span class="cline-any cline-yes">2x</span>
|
|
783
|
-
<span class="cline-any cline-yes">1x</span>
|
|
784
|
-
<span class="cline-any cline-yes">1x</span>
|
|
785
|
-
<span class="cline-any cline-yes">4x</span>
|
|
786
|
-
<span class="cline-any cline-yes">4x</span>
|
|
787
552
|
<span class="cline-any cline-yes">4x</span>
|
|
788
553
|
<span class="cline-any cline-yes">4x</span>
|
|
789
554
|
<span class="cline-any cline-yes">4x</span>
|
|
555
|
+
<span class="cline-any cline-yes">2x</span>
|
|
790
556
|
<span class="cline-any cline-yes">4x</span>
|
|
791
557
|
<span class="cline-any cline-yes">4x</span>
|
|
792
558
|
<span class="cline-any cline-yes">4x</span>
|
|
793
559
|
<span class="cline-any cline-yes">1x</span>
|
|
794
560
|
<span class="cline-any cline-yes">1x</span>
|
|
795
561
|
<span class="cline-any cline-yes">1x</span>
|
|
562
|
+
<span class="cline-any cline-yes">3x</span>
|
|
563
|
+
<span class="cline-any cline-yes">4x</span>
|
|
796
564
|
<span class="cline-any cline-yes">1x</span>
|
|
797
565
|
<span class="cline-any cline-yes">1x</span>
|
|
798
566
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -801,18 +569,10 @@
|
|
|
801
569
|
<span class="cline-any cline-yes">1x</span>
|
|
802
570
|
<span class="cline-any cline-yes">1x</span>
|
|
803
571
|
<span class="cline-any cline-yes">1x</span>
|
|
804
|
-
<span class="cline-any cline-yes">1x</span>
|
|
805
|
-
<span class="cline-any cline-yes">1x</span>
|
|
806
|
-
<span class="cline-any cline-yes">1x</span>
|
|
807
|
-
<span class="cline-any cline-yes">4x</span>
|
|
808
|
-
<span class="cline-any cline-yes">4x</span>
|
|
809
|
-
<span class="cline-any cline-yes">4x</span>
|
|
810
|
-
<span class="cline-any cline-yes">4x</span>
|
|
811
|
-
<span class="cline-any cline-yes">1x</span>
|
|
812
|
-
<span class="cline-any cline-yes">1x</span>
|
|
813
572
|
<span class="cline-any cline-no"> </span>
|
|
814
573
|
<span class="cline-any cline-no"> </span>
|
|
815
574
|
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-yes">1x</span>
|
|
816
576
|
<span class="cline-any cline-no"> </span>
|
|
817
577
|
<span class="cline-any cline-no"> </span>
|
|
818
578
|
<span class="cline-any cline-no"> </span>
|
|
@@ -832,9 +592,57 @@
|
|
|
832
592
|
<span class="cline-any cline-no"> </span>
|
|
833
593
|
<span class="cline-any cline-no"> </span>
|
|
834
594
|
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-yes">1x</span>
|
|
596
|
+
<span class="cline-any cline-yes">1x</span>
|
|
597
|
+
<span class="cline-any cline-yes">1x</span>
|
|
598
|
+
<span class="cline-any cline-yes">4x</span>
|
|
599
|
+
<span class="cline-any cline-yes">2x</span>
|
|
600
|
+
<span class="cline-any cline-yes">2x</span>
|
|
601
|
+
<span class="cline-any cline-yes">2x</span>
|
|
602
|
+
<span class="cline-any cline-yes">2x</span>
|
|
603
|
+
<span class="cline-any cline-yes">2x</span>
|
|
604
|
+
<span class="cline-any cline-yes">2x</span>
|
|
605
|
+
<span class="cline-any cline-yes">2x</span>
|
|
606
|
+
<span class="cline-any cline-yes">2x</span>
|
|
607
|
+
<span class="cline-any cline-yes">2x</span>
|
|
835
608
|
<span class="cline-any cline-no"> </span>
|
|
836
609
|
<span class="cline-any cline-no"> </span>
|
|
837
610
|
<span class="cline-any cline-no"> </span>
|
|
611
|
+
<span class="cline-any cline-yes">2x</span>
|
|
612
|
+
<span class="cline-any cline-yes">2x</span>
|
|
613
|
+
<span class="cline-any cline-yes">1x</span>
|
|
614
|
+
<span class="cline-any cline-yes">1x</span>
|
|
615
|
+
<span class="cline-any cline-yes">2x</span>
|
|
616
|
+
<span class="cline-any cline-yes">2x</span>
|
|
617
|
+
<span class="cline-any cline-yes">2x</span>
|
|
618
|
+
<span class="cline-any cline-yes">2x</span>
|
|
619
|
+
<span class="cline-any cline-yes">106x</span>
|
|
620
|
+
<span class="cline-any cline-yes">102x</span>
|
|
621
|
+
<span class="cline-any cline-yes">102x</span>
|
|
622
|
+
<span class="cline-any cline-yes">103x</span>
|
|
623
|
+
<span class="cline-any cline-yes">103x</span>
|
|
624
|
+
<span class="cline-any cline-yes">103x</span>
|
|
625
|
+
<span class="cline-any cline-yes">106x</span>
|
|
626
|
+
<span class="cline-any cline-yes">1x</span>
|
|
627
|
+
<span class="cline-any cline-yes">1x</span>
|
|
628
|
+
<span class="cline-any cline-yes">1x</span>
|
|
629
|
+
<span class="cline-any cline-yes">5x</span>
|
|
630
|
+
<span class="cline-any cline-yes">5x</span>
|
|
631
|
+
<span class="cline-any cline-yes">5x</span>
|
|
632
|
+
<span class="cline-any cline-yes">5x</span>
|
|
633
|
+
<span class="cline-any cline-yes">5x</span>
|
|
634
|
+
<span class="cline-any cline-yes">5x</span>
|
|
635
|
+
<span class="cline-any cline-yes">5x</span>
|
|
636
|
+
<span class="cline-any cline-yes">5x</span>
|
|
637
|
+
<span class="cline-any cline-yes">5x</span>
|
|
638
|
+
<span class="cline-any cline-no"> </span>
|
|
639
|
+
<span class="cline-any cline-no"> </span>
|
|
640
|
+
<span class="cline-any cline-yes">5x</span>
|
|
641
|
+
<span class="cline-any cline-yes">5x</span>
|
|
642
|
+
<span class="cline-any cline-yes">5x</span>
|
|
643
|
+
<span class="cline-any cline-yes">5x</span>
|
|
644
|
+
<span class="cline-any cline-yes">1x</span>
|
|
645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
838
646
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
839
647
|
import makeDebug from 'debug'
|
|
840
648
|
import common from 'feathers-hooks-common'
|
|
@@ -845,7 +653,6 @@ import {
|
|
|
845
653
|
hasServiceAbilities, hasResourceAbilities, getQueryForAbilities,
|
|
846
654
|
Roles, RoleNames, countSubjectsForResource
|
|
847
655
|
} from '../../common/permissions.js'
|
|
848
|
-
import { isTagEqual } from '../utils.js'
|
|
849
656
|
|
|
850
657
|
const { getItems, replaceItems } = common
|
|
851
658
|
const { Forbidden } = errors
|
|
@@ -862,7 +669,7 @@ export function createJWT (options = {}) {
|
|
|
862
669
|
const accessTokens = await Promise.all(items.map(item => hook.app.getService('authentication').createAccessToken(
|
|
863
670
|
// Provided function can be used to pick or omit properties in JWT payload
|
|
864
671
|
(typeof options.payload === 'function' ? options.payload(user) : {}),
|
|
865
|
-
// Provided function can be used for custom options
|
|
672
|
+
// Provided function can be used for custom options depending on the user,
|
|
866
673
|
// then we merge with default auth options for global properties like aud, iss, etc.
|
|
867
674
|
_.merge({}, defaults, (typeof options.jwt === 'function' ? options.jwt(user) : options)))
|
|
868
675
|
))
|
|
@@ -1048,33 +855,33 @@ export async function authorise (hook) {
|
|
|
1048
855
|
// simply check against the object we'd like to create
|
|
1049
856
|
// Support custom methods as create operation as they have similar signature
|
|
1050
857
|
const DEFAULT_METHODS = ['find', 'get', 'create', 'update', 'patch', 'remove']
|
|
1051
|
-
if ((operation === 'create')
|
|
858
|
+
if ((operation === 'create') <span class="branch-0 cbranch-no" title="branch not covered" >|| !DEFAULT_METHODS.includes(operation))</span> {
|
|
1052
859
|
const resource = hook.data
|
|
1053
860
|
debug('Target resource is ', resource)
|
|
1054
|
-
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) {
|
|
1055
|
-
debug('Resource access not granted')
|
|
1056
|
-
throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)
|
|
1057
|
-
}
|
|
1058
|
-
} else {
|
|
1059
|
-
// When we find/update/patch/remove multiple items this ensures that
|
|
1060
|
-
// only the ones authorised by constraints on the resources will be fetched
|
|
1061
|
-
// This avoid fetching all first then check it one by one
|
|
1062
|
-
const dbQuery = objectifyIDs(getQueryForAbilities(abilities, operation, resourceType))
|
|
1063
|
-
if (dbQuery) {
|
|
1064
|
-
hook.params.query = _.transform(hook.params.query, (result, value, key) => {
|
|
1065
|
-
|
|
1066
|
-
else result[key] = value
|
|
1067
|
-
}, {})
|
|
1068
|
-
_.merge(hook.params.query, dbQuery)
|
|
1069
|
-
} else {
|
|
1070
|
-
if (operation === 'find') { // You don't have right to read any items but you have access to the service so the result is empty
|
|
1071
|
-
hook.result = (!_.get(hook, 'params.paginate', true)
|
|
1072
|
-
|
|
861
|
+
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
865
|
+
}<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
|
|
866
|
+
<span class="cstat-no" title="statement not covered" > // When we find/update/patch/remove multiple items this ensures that</span>
|
|
867
|
+
<span class="cstat-no" title="statement not covered" > // only the ones authorised by constraints on the resources will be fetched</span>
|
|
868
|
+
<span class="cstat-no" title="statement not covered" > // This avoid fetching all first then check it one by one</span>
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > const dbQuery = objectifyIDs(getQueryForAbilities(abilities, operation, resourceType))</span>
|
|
870
|
+
<span class="cstat-no" title="statement not covered" > if (dbQuery) {</span>
|
|
871
|
+
<span class="cstat-no" title="statement not covered" > hook.params.query = _.transform(hook.params.query, (result, value, key) => {</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > if (key === '$or') result.$and = [{ $or: value }]</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" > else result[key] = value</span>
|
|
874
|
+
<span class="cstat-no" title="statement not covered" > }, {})</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > _.merge(hook.params.query, dbQuery)</span>
|
|
876
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > if (operation === 'find') { // You don't have right to read any items but you have access to the service so the result is empty</span>
|
|
878
|
+
<span class="cstat-no" title="statement not covered" > hook.result = (!_.get(hook, 'params.paginate', true) ? [] : { total: 0, skip: 0, data: [] })</span>
|
|
879
|
+
<span class="cstat-no" title="statement not covered" > } else { // You don't have the right to update/patch/remove any items so any tentative should throw</span>
|
|
1073
880
|
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
1074
881
|
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
1075
882
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
883
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
884
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1078
885
|
debug('Resource access granted')
|
|
1079
886
|
// Some specific services might not expose a get function, in this case we cannot check for authorisation
|
|
1080
887
|
// this has to be implemented by the service itself
|
|
@@ -1087,10 +894,10 @@ export async function authorise (hook) {
|
|
|
1087
894
|
const resource = await hook.service.get(hook.id, params)
|
|
1088
895
|
debug('Target resource is', resource)
|
|
1089
896
|
// Then check against the object we'd like to manage
|
|
1090
|
-
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) {
|
|
1091
|
-
debug('Resource access not granted')
|
|
1092
|
-
throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)
|
|
1093
|
-
}
|
|
897
|
+
if (!hasResourceAbilities(abilities, operation, resourceType, context, resource)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
898
|
+
<span class="cstat-no" title="statement not covered" > debug('Resource access not granted')</span>
|
|
899
|
+
<span class="cstat-no" title="statement not covered" > throw new Forbidden(`You are not allowed to perform ${operation} operation on ${resourceType}`)</span>
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1094
901
|
// Avoid fetching again the object in this case
|
|
1095
902
|
if (operation === 'get') {
|
|
1096
903
|
hook.result = resource
|
|
@@ -1126,101 +933,6 @@ export function updateAbilities (options = {}) {
|
|
|
1126
933
|
}
|
|
1127
934
|
}
|
|
1128
935
|
|
|
1129
|
-
export function preventRemovingLastOwner (resourceScope) {
|
|
1130
|
-
return async function (hook) {
|
|
1131
|
-
// By pass check ?
|
|
1132
|
-
if (hook.params.force) <span class="branch-0 cbranch-no" title="branch not covered" >return hook</span>
|
|
1133
|
-
const params = hook.params
|
|
1134
|
-
const data = hook.data || {}
|
|
1135
|
-
const query = params.query || {}
|
|
1136
|
-
const scope = data.scope || query.scope
|
|
1137
|
-
const grantedPermissions = data.permissions || query.permissions
|
|
1138
|
-
const grantedRole = (grantedPermissions ? Roles[grantedPermissions] : undefined)
|
|
1139
|
-
const resource = hook.params.resource
|
|
1140
|
-
const subjects = hook.params.subjects
|
|
1141
|
-
const subjectService = hook.params.subjectsService
|
|
1142
|
-
// On create check if we try to downgrade permissions otherwise let pass through
|
|
1143
|
-
if (!_.isUndefined(grantedRole) && (grantedRole === Roles.owner)) return hook
|
|
1144
|
-
|
|
1145
|
-
if ((scope === resourceScope) && resource && resource._id) {
|
|
1146
|
-
// Count existing owners
|
|
1147
|
-
const owners = await countSubjectsForResource(subjectService, resourceScope, resource._id, Roles.owner)
|
|
1148
|
-
// Now count owners we change/remove permissions on
|
|
1149
|
-
const removedOwners = subjects.reduce((count, subject) => {
|
|
1150
|
-
const resources = _.get(subject, resourceScope, [])
|
|
1151
|
-
const ownedResource = _.find(resources, { _id: resource._id, permissions: RoleNames[Roles.owner] })
|
|
1152
|
-
return (ownedResource <span class="branch-0 cbranch-no" title="branch not covered" >? count + 1 </span>: count)
|
|
1153
|
-
}, 0)
|
|
1154
|
-
// If none remains stop
|
|
1155
|
-
if (removedOwners >= owners.total) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1156
|
-
<span class="cstat-no" title="statement not covered" > debug('Cannot remove the last owner of resource ', resource)</span>
|
|
1157
|
-
<span class="cstat-no" title="statement not covered" > const resourceName = resource.name ? resource.name : resource._id.toString()</span>
|
|
1158
|
-
<span class="cstat-no" title="statement not covered" > throw new Forbidden('You are not allowed to remove the last owner of resource ' + resourceName, {</span>
|
|
1159
|
-
<span class="cstat-no" title="statement not covered" > translation: {</span>
|
|
1160
|
-
<span class="cstat-no" title="statement not covered" > key: 'CANNOT_REMOVE_LAST_OWNER',</span>
|
|
1161
|
-
<span class="cstat-no" title="statement not covered" > params: { resource: resourceName }</span>
|
|
1162
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1163
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
1164
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1165
|
-
}
|
|
1166
|
-
return hook
|
|
1167
|
-
}
|
|
1168
|
-
}
|
|
1169
|
-
|
|
1170
|
-
export async function removeOrganisationGroupsAuthorisations (hook) {
|
|
1171
|
-
const app = hook.app
|
|
1172
|
-
const authorisationService = app.getService('authorisations')
|
|
1173
|
-
const org = hook.params.resource
|
|
1174
|
-
const user = hook.params.user
|
|
1175
|
-
// Unset membership for the all org groups
|
|
1176
|
-
const orgGroupService = app.getService('groups', org)
|
|
1177
|
-
const groups = await orgGroupService.find({ paginate: false })
|
|
1178
|
-
await Promise.all(groups.map(group => {
|
|
1179
|
-
// Unset membership on group for the all org users
|
|
1180
|
-
return authorisationService.remove(group._id.toString(), {
|
|
1181
|
-
query: {
|
|
1182
|
-
scope: 'groups'
|
|
1183
|
-
},
|
|
1184
|
-
user,
|
|
1185
|
-
force: hook.params.force,
|
|
1186
|
-
// Because we already have resource set it as objects to avoid populating
|
|
1187
|
-
// Moreover used as an after hook the resource might not already exist anymore
|
|
1188
|
-
subjects: hook.params.subjects,
|
|
1189
|
-
subjectsService: hook.params.subjectsService,
|
|
1190
|
-
resource: group,
|
|
1191
|
-
resourcesService: orgGroupService
|
|
1192
|
-
})
|
|
1193
|
-
}))
|
|
1194
|
-
debug('Authorisations unset on groups for organisation ' + org._id)
|
|
1195
|
-
return hook
|
|
1196
|
-
}
|
|
1197
|
-
|
|
1198
|
-
export <span class="fstat-no" title="function not covered" >async function removeOrganisationTagsAuthorisations (hook) {</span>
|
|
1199
|
-
<span class="cstat-no" title="statement not covered" > const app = hook.app</span>
|
|
1200
|
-
<span class="cstat-no" title="statement not covered" > const org = hook.params.resource</span>
|
|
1201
|
-
<span class="cstat-no" title="statement not covered" > const subjectService = hook.params.subjectsService</span>
|
|
1202
|
-
<span class="cstat-no" title="statement not covered" > const orgTagsService = app.getService('tags', org)</span>
|
|
1203
|
-
<span class="cstat-no" title="statement not covered" > const subjects = hook.params.subjects || []</span>
|
|
1204
|
-
<span class="cstat-no" title="statement not covered" > if (subjects.length === 0) return hook</span>
|
|
1205
|
-
<span class="cstat-no" title="statement not covered" > // Retrieve org tags</span>
|
|
1206
|
-
<span class="cstat-no" title="statement not covered" > const orgTags = await orgTagsService.find({ paginate: false })</span>
|
|
1207
|
-
<span class="cstat-no" title="statement not covered" > const promises = []</span>
|
|
1208
|
-
<span class="cstat-no" title="statement not covered" > subjects.forEach(subject => {</span>
|
|
1209
|
-
<span class="cstat-no" title="statement not covered" > const tags = subject.tags || []</span>
|
|
1210
|
-
<span class="cstat-no" title="statement not covered" > // Find tags from org</span>
|
|
1211
|
-
<span class="cstat-no" title="statement not covered" > const fromOrg = _.intersectionWith(tags, orgTags, isTagEqual)</span>
|
|
1212
|
-
<span class="cstat-no" title="statement not covered" > // Clear removed tags</span>
|
|
1213
|
-
<span class="cstat-no" title="statement not covered" > const notFromOrg = _.differenceWith(tags, orgTags, isTagEqual)</span>
|
|
1214
|
-
<span class="cstat-no" title="statement not covered" > // Update subject if required</span>
|
|
1215
|
-
<span class="cstat-no" title="statement not covered" > if (fromOrg.length > 0) {</span>
|
|
1216
|
-
<span class="cstat-no" title="statement not covered" > promises.push(subjectService.patch(subject._id.toString(), { tags: notFromOrg }))</span>
|
|
1217
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1218
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
1219
|
-
<span class="cstat-no" title="statement not covered" > // Perform subject updates in parallel</span>
|
|
1220
|
-
<span class="cstat-no" title="statement not covered" > await Promise.all(promises)</span>
|
|
1221
|
-
<span class="cstat-no" title="statement not covered" > debug(`Tags unset on ${promises.length} subjects for organisation ` + org._id)</span>
|
|
1222
|
-
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
1223
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1224
936
|
</pre></td></tr></table></pre>
|
|
1225
937
|
|
|
1226
938
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -1228,7 +940,7 @@ export <span class="fstat-no" title="function not covered" >async function remov
|
|
|
1228
940
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1229
941
|
Code coverage generated by
|
|
1230
942
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1231
|
-
at
|
|
943
|
+
at 2025-02-18T09:52:45.637Z
|
|
1232
944
|
</div>
|
|
1233
945
|
<script src="../../../prettify.js"></script>
|
|
1234
946
|
<script>
|