@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
|
@@ -6,26 +6,42 @@ import { uid } from 'quasar'
|
|
|
6
6
|
import { Time, Units } from '../../../../core.client.js'
|
|
7
7
|
import { fetchGeoJson, getFeatureId, processFeatures, getFeatureStyleType, isInMemoryLayer } from '../../utils.js'
|
|
8
8
|
import { convertSimpleStyleToPointStyle, convertSimpleStyleToLineStyle, convertSimpleStyleToPolygonStyle } from '../../utils/utils.style.js'
|
|
9
|
-
import { convertToCesiumFromSimpleStyle, getPointSimpleStyle, getLineSimpleStyle, getPolygonSimpleStyle } from '../../cesium/utils/utils.style.js'
|
|
9
|
+
import { convertToCesiumFromSimpleStyle, getPointSimpleStyle, getLineSimpleStyle, getPolygonSimpleStyle, convertToCesiumFromStyle } from '../../cesium/utils/utils.style.js'
|
|
10
|
+
import { createPrimitiveWithMovingTexture, findPrimitiveForEntity } from '../../cesium/utils/utils.cesium.js'
|
|
11
|
+
import { hasUnitInCesiumLayerTemplate, updateCesiumGeoJsonEntity, GeoJsonCesiumLayerFilters } from '../../cesium/utils/utils.geojson.js'
|
|
10
12
|
|
|
11
13
|
// Custom entity types that can be created from a base entity like eg a polyline
|
|
12
|
-
const CustomTypes = ['wall', 'corridor']
|
|
14
|
+
const CustomTypes = ['wall', 'corridor', 'stroke']
|
|
13
15
|
// Generate an id for a custom entity type, eg 'wall'
|
|
14
16
|
function getCustomEntityId (id, type) {
|
|
15
17
|
return `${id}-${type}`
|
|
16
18
|
}
|
|
19
|
+
// Generate original id from a custom id
|
|
20
|
+
function getOriginalEntityId (customId, type) {
|
|
21
|
+
const suffix = `-${type}`
|
|
22
|
+
return customId.endsWith(suffix) ? customId.slice(0, -suffix.length) : ''
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function addCustomPrimitive (activity, dataSource, id, primitive, material) {
|
|
26
|
+
const oldCustom = dataSource.primitives.get(id)
|
|
27
|
+
if (oldCustom) {
|
|
28
|
+
activity.viewer.scene.primitives.remove(oldCustom.primitive)
|
|
29
|
+
const index = activity.cesiumMaterials.indexOf(oldCustom.material)
|
|
30
|
+
activity.cesiumMaterials.splice(index, 1)
|
|
31
|
+
}
|
|
32
|
+
dataSource.primitives.set(id, { primitive, material })
|
|
33
|
+
activity.viewer.scene.primitives.add(primitive)
|
|
34
|
+
activity.cesiumMaterials.push(material)
|
|
35
|
+
}
|
|
17
36
|
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (source.polyline) destination.polyline = source.polyline
|
|
27
|
-
// Polygons
|
|
28
|
-
if (source.polygon) destination.polygon = source.polygon
|
|
37
|
+
function removeCustomPrimitiveById (activity, dataSource, id) {
|
|
38
|
+
const custom = dataSource.primitives.get(id)
|
|
39
|
+
if (custom) {
|
|
40
|
+
activity.viewer.scene.primitives.remove(custom.primitive)
|
|
41
|
+
const index = activity.cesiumMaterials.indexOf(custom.material)
|
|
42
|
+
activity.cesiumMaterials.splice(index, 1)
|
|
43
|
+
dataSource.primitives.delete(id)
|
|
44
|
+
}
|
|
29
45
|
}
|
|
30
46
|
|
|
31
47
|
export const geojsonLayers = {
|
|
@@ -42,9 +58,9 @@ export const geojsonLayers = {
|
|
|
42
58
|
},
|
|
43
59
|
async loadGeoJson (dataSource, geoJson, options, updateOptions = {}) {
|
|
44
60
|
const cesiumOptions = options.cesium
|
|
61
|
+
const features = (Array.isArray(geoJson) ? geoJson : (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson]))
|
|
45
62
|
// Remove mode
|
|
46
63
|
if (_.get(updateOptions, 'remove', false)) {
|
|
47
|
-
let features = (geoJson.type === 'FeatureCollection' ? geoJson.features : [geoJson])
|
|
48
64
|
features.forEach(feature => {
|
|
49
65
|
const id = getFeatureId(feature, options)
|
|
50
66
|
CustomTypes.forEach(type => {
|
|
@@ -52,10 +68,14 @@ export const geojsonLayers = {
|
|
|
52
68
|
if (dataSource.entities.getById(id)) dataSource.entities.removeById(id)
|
|
53
69
|
// Take care that in case of a custom entity we add it in addition to or instead the original line
|
|
54
70
|
if (dataSource.entities.getById(customId)) dataSource.entities.removeById(customId)
|
|
71
|
+
// These are special primitives created to support animated walls & corridors
|
|
72
|
+
removeCustomPrimitiveById(this, dataSource, customId)
|
|
55
73
|
})
|
|
56
74
|
})
|
|
75
|
+
|
|
57
76
|
return
|
|
58
77
|
}
|
|
78
|
+
|
|
59
79
|
// We use a separated source in order to load data otherwise Cesium will replace previous ones, causing flickering
|
|
60
80
|
const loadingDataSource = new GeoJsonDataSource()
|
|
61
81
|
loadingDataSource.notFromDrop = true
|
|
@@ -63,22 +83,35 @@ export const geojsonLayers = {
|
|
|
63
83
|
// Now we process loaded entities to merge with existing ones if any or add new ones
|
|
64
84
|
let entities = loadingDataSource.entities.values
|
|
65
85
|
entities.forEach(entity => {
|
|
86
|
+
// Find matching feature if any and keep track of it as Cesium only keeps properties
|
|
87
|
+
entity.feature = features.find(feature => getFeatureId(feature, options) === entity.id)
|
|
66
88
|
const previousEntity = dataSource.entities.getById(entity.id)
|
|
67
|
-
if (previousEntity)
|
|
89
|
+
if (previousEntity) updateCesiumGeoJsonEntity(entity, previousEntity)
|
|
68
90
|
else dataSource.entities.add(entity)
|
|
69
91
|
})
|
|
70
92
|
// Remove any entity not existing anymore
|
|
71
93
|
if (_.get(updateOptions, 'removeMissing', cesiumOptions.removeMissing)) {
|
|
94
|
+
const entitiesToRemove = []
|
|
72
95
|
dataSource.entities.values.forEach(entity => {
|
|
73
96
|
const id = entity.id
|
|
97
|
+
if (!loadingDataSource.entities.getById(id)) entitiesToRemove.push(id)
|
|
74
98
|
CustomTypes.forEach(type => {
|
|
75
99
|
const customId = getCustomEntityId(id, type)
|
|
76
|
-
if (!loadingDataSource.entities.getById(id)) dataSource.entities.removeById(id)
|
|
77
100
|
// Take care that in case of a custom entity we add it in addition to or instead the original line
|
|
78
|
-
if (dataSource.entities.getById(customId))
|
|
101
|
+
if (dataSource.entities.getById(customId)) entitiesToRemove.push(customId)
|
|
79
102
|
})
|
|
80
103
|
})
|
|
104
|
+
entitiesToRemove.forEach(id => dataSource.entities.removeById(id))
|
|
105
|
+
// Cleanup custom primitives if needed too
|
|
106
|
+
for (const id of dataSource.primitives.keys()) {
|
|
107
|
+
CustomTypes.forEach(type => {
|
|
108
|
+
const entityId = getOriginalEntityId(id, type)
|
|
109
|
+
if (entityId && !loadingDataSource.entities.contains(entityId))
|
|
110
|
+
removeCustomPrimitiveById(this, dataSource, id)
|
|
111
|
+
})
|
|
112
|
+
}
|
|
81
113
|
}
|
|
114
|
+
|
|
82
115
|
// Process specific entities
|
|
83
116
|
entities = dataSource.entities.values
|
|
84
117
|
const entitiesToAdd = []
|
|
@@ -110,56 +143,81 @@ export const geojsonLayers = {
|
|
|
110
143
|
entitiesToRemove.push(entity)
|
|
111
144
|
}
|
|
112
145
|
// Walls
|
|
113
|
-
const wall = _.get(properties, 'wall')
|
|
146
|
+
const wall = _.get(properties, 'wall') || _.get(properties, 'entityStyle.wall')
|
|
114
147
|
if (wall && entity.polyline) {
|
|
115
148
|
const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleOrDefaults(properties)
|
|
116
149
|
// Simply push the entity, other options like font will be set using styling options
|
|
117
150
|
// This one will come in addition to the original line
|
|
118
151
|
const wallId = getCustomEntityId(entity.id, 'wall')
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
material: new ColorMaterialProperty(fill),
|
|
128
|
-
outlineColor: new ConstantProperty(stroke),
|
|
129
|
-
outlineWidth: strokeWidth,
|
|
130
|
-
outline: new ConstantProperty(true)
|
|
152
|
+
|
|
153
|
+
const texture = _.get(properties, 'entityStyle.wall.material.image')
|
|
154
|
+
if (texture && _.get(properties, 'entityStyle.wall.animateMaterialAlongPath', false)) {
|
|
155
|
+
const options = _.get(properties, 'entityStyle.wall')
|
|
156
|
+
options.positions = entity.polyline.positions.getValue(0)
|
|
157
|
+
const { primitive, material } = createPrimitiveWithMovingTexture('wall', options)
|
|
158
|
+
if (primitive) {
|
|
159
|
+
addCustomPrimitive(this, dataSource, wallId, primitive, material)
|
|
131
160
|
}
|
|
132
|
-
|
|
161
|
+
entitiesToRemove.push(entity)
|
|
162
|
+
} else {
|
|
163
|
+
entitiesToAdd.push({
|
|
164
|
+
id: wallId,
|
|
165
|
+
parent: entity,
|
|
166
|
+
name: entity.name ? entity.name : wallId,
|
|
167
|
+
description: entity.description.getValue(0),
|
|
168
|
+
properties: entity.properties.getValue(0),
|
|
169
|
+
wall: {
|
|
170
|
+
positions: entity.polyline.positions.getValue(0),
|
|
171
|
+
material: new ColorMaterialProperty(fill),
|
|
172
|
+
outlineColor: new ConstantProperty(stroke),
|
|
173
|
+
outlineWidth: strokeWidth,
|
|
174
|
+
outline: new ConstantProperty(true)
|
|
175
|
+
}
|
|
176
|
+
})
|
|
177
|
+
}
|
|
133
178
|
}
|
|
134
179
|
// Corridors
|
|
135
|
-
const corridor = _.get(properties, 'corridor')
|
|
180
|
+
const corridor = _.get(properties, 'corridor') || _.get(properties, 'entityStyle.corridor')
|
|
136
181
|
if (corridor && entity.polyline) {
|
|
137
182
|
const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleOrDefaults(properties)
|
|
138
183
|
// Simply push the entity, other options like width be set using styling options
|
|
139
184
|
// This one will come in replacement to the original line
|
|
140
185
|
const corridorId = getCustomEntityId(entity.id, 'corridor')
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
material: new ColorMaterialProperty(fill),
|
|
150
|
-
outlineColor: new ConstantProperty(stroke),
|
|
151
|
-
outlineWidth: strokeWidth,
|
|
152
|
-
outline: new ConstantProperty(true)
|
|
186
|
+
|
|
187
|
+
const texture = _.get(properties, 'entityStyle.corridor.material.image')
|
|
188
|
+
if (texture && _.get(properties, 'entityStyle.corridor.animateMaterialAlongPath', false)) {
|
|
189
|
+
const options = _.get(properties, 'entityStyle.corridor')
|
|
190
|
+
options.positions = entity.polyline.positions.getValue(0)
|
|
191
|
+
const { primitive, material } = createPrimitiveWithMovingTexture('corridor', options)
|
|
192
|
+
if (primitive) {
|
|
193
|
+
addCustomPrimitive(this, dataSource, corridorId, primitive, material)
|
|
153
194
|
}
|
|
154
|
-
|
|
155
|
-
|
|
195
|
+
entitiesToRemove.push(entity)
|
|
196
|
+
} else {
|
|
197
|
+
entitiesToAdd.push({
|
|
198
|
+
id: corridorId,
|
|
199
|
+
parent: entity,
|
|
200
|
+
name: entity.name ? entity.name : corridorId,
|
|
201
|
+
description: entity.description.getValue(0),
|
|
202
|
+
properties: entity.properties.getValue(0),
|
|
203
|
+
corridor: {
|
|
204
|
+
positions: entity.polyline.positions.getValue(0),
|
|
205
|
+
material: new ColorMaterialProperty(fill),
|
|
206
|
+
outlineColor: new ConstantProperty(stroke),
|
|
207
|
+
outlineWidth: strokeWidth,
|
|
208
|
+
outline: new ConstantProperty(true)
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
entitiesToRemove.push(entity)
|
|
212
|
+
}
|
|
156
213
|
}
|
|
157
214
|
// Billboard with 'none' shape should be removed as Cesium creates it even if the maki icon id is unknown
|
|
158
215
|
if (entity.billboard && (_.get(properties, 'marker-symbol') === 'none')) {
|
|
159
216
|
entitiesToRemove.push(entity)
|
|
160
217
|
}
|
|
161
218
|
// Labels
|
|
162
|
-
const text = _.get(properties, 'icon-text')
|
|
219
|
+
const text = _.get(properties, 'icon-text') || _.get(properties, 'entityStyle.label.text')
|
|
220
|
+
const billboardImage = _.get(properties, 'entityStyle.billboard.image')
|
|
163
221
|
if (text) {
|
|
164
222
|
const { stroke, strokeWidth, fill } = this.convertFromSimpleStyleOrDefaults(properties)
|
|
165
223
|
// Simply push the entity, other options like font will be set using styling options
|
|
@@ -175,10 +233,38 @@ export const geojsonLayers = {
|
|
|
175
233
|
fillColor: new ConstantProperty(fill),
|
|
176
234
|
outlineColor: new ConstantProperty(stroke),
|
|
177
235
|
outlineWidth: strokeWidth
|
|
178
|
-
}
|
|
236
|
+
},
|
|
237
|
+
billboard: billboardImage ? { image: billboardImage } : undefined
|
|
179
238
|
})
|
|
180
239
|
entitiesToRemove.push(entity)
|
|
181
240
|
}
|
|
241
|
+
// Clamped to ground polygons with stroke
|
|
242
|
+
// Need to add a new entity for stroke since Cesium does not support it
|
|
243
|
+
if (_.get(entity, 'polygon') && _.get(properties, 'entityStyle.polygon.perPositionHeight') === false) {
|
|
244
|
+
const strokeId = getCustomEntityId(entity.id, 'stroke')
|
|
245
|
+
const { stroke, strokeWidth } = this.convertFromSimpleStyleOrDefaults(properties)
|
|
246
|
+
const nullAltitude = _.every(_.get(entity, 'feature.geometry.coordinates[0]', []), coord => {
|
|
247
|
+
return coord.length > 2 && coord[2] === 0
|
|
248
|
+
})
|
|
249
|
+
if (nullAltitude) {
|
|
250
|
+
const strokeEntity = {
|
|
251
|
+
id: strokeId,
|
|
252
|
+
name: entity.name ? entity.name : strokeId,
|
|
253
|
+
description: entity.description.getValue(0),
|
|
254
|
+
properties: entity.properties.getValue(0),
|
|
255
|
+
polyline: {
|
|
256
|
+
positions: entity.polygon.hierarchy.getValue().positions,
|
|
257
|
+
width: strokeWidth,
|
|
258
|
+
material: stroke,
|
|
259
|
+
clampToGround: true
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
entitiesToAdd.push(strokeEntity)
|
|
263
|
+
if (dataSource.entities.getById(strokeEntity.id)) {
|
|
264
|
+
entitiesToRemove.push(strokeEntity)
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
182
268
|
}
|
|
183
269
|
entitiesToRemove.forEach(entity => dataSource.entities.remove(entity))
|
|
184
270
|
entitiesToAdd.forEach(entity => dataSource.entities.add(entity))
|
|
@@ -200,7 +286,8 @@ export const geojsonLayers = {
|
|
|
200
286
|
await this.loadGeoJson(dataSource, this.getFeatures(options), options, updateOptions)
|
|
201
287
|
} else if (options.service) { // Check for feature service layers only, in this case update in place
|
|
202
288
|
// If no probe reference, nothing to be initialized
|
|
203
|
-
|
|
289
|
+
// Get original layer options to ensure we have the latest ones while getting features (e.g. filters toggle)
|
|
290
|
+
await this.loadGeoJson(dataSource, this.getFeatures(Object.assign({}, options, this.getLayerByName(options.name))), options, updateOptions)
|
|
204
291
|
} else if (sourceTemplate) {
|
|
205
292
|
const sourceToFetch = dataSource.sourceCompiler({ time: Time.getCurrentTime() })
|
|
206
293
|
if (!dataSource.lastFetchedSource || (dataSource.lastFetchedSource !== sourceToFetch)) {
|
|
@@ -239,16 +326,49 @@ export const geojsonLayers = {
|
|
|
239
326
|
if (!options.featureId && !feature._id) feature._id = uid().toString()
|
|
240
327
|
// Cesium expect id to be in a 'id' property
|
|
241
328
|
feature.id = getFeatureId(feature, options)
|
|
329
|
+
|
|
330
|
+
let type = getFeatureStyleType(feature)
|
|
331
|
+
if (_.has(feature, 'properties.entityStyle')) {
|
|
332
|
+
// Walls and corridors must be treated as polygons in style editor
|
|
333
|
+
if (_.has(feature, 'properties.entityStyle.wall')) type = 'polygon'
|
|
334
|
+
else if (_.has(feature, 'properties.entityStyle.corridor')) type = 'polygon'
|
|
335
|
+
}
|
|
336
|
+
if (_.get(feature, 'style.extrude')) type = 'polygon'
|
|
337
|
+
|
|
338
|
+
if (!_.has(feature, 'style')) {
|
|
339
|
+
// No style means first load
|
|
340
|
+
// Get feature style from properties (simple style)
|
|
341
|
+
const style = type === 'point'
|
|
342
|
+
? convertSimpleStyleToPointStyle(feature.properties)
|
|
343
|
+
: type === 'line'
|
|
344
|
+
? convertSimpleStyleToLineStyle(feature.properties)
|
|
345
|
+
: convertSimpleStyleToPolygonStyle(feature.properties)
|
|
346
|
+
_.set(feature, 'style', style)
|
|
347
|
+
}
|
|
348
|
+
|
|
242
349
|
// We cannot access data outside the properties object of a feature in Cesium
|
|
243
350
|
// As a consequence we copy back any style information inside
|
|
244
351
|
// We need to convert to simple-style spec as cesium manages this only
|
|
245
352
|
// We also need to merge all styling properties as some entities requires eg both line/polygon style (wall polylines or corridor polygons)
|
|
246
|
-
const
|
|
353
|
+
const stylePerType = {
|
|
354
|
+
point: getPointSimpleStyle(feature, options, engine),
|
|
355
|
+
line: getLineSimpleStyle(feature, options, engine),
|
|
356
|
+
polygon: getPolygonSimpleStyle(feature, options, engine)
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Apply the style according to the feature type to the end to prevent overriding
|
|
360
|
+
const simpleStyle = Object.assign(...Object.values(stylePerType), stylePerType[type])
|
|
361
|
+
|
|
247
362
|
// Manage our extended simple-style spec
|
|
248
363
|
const text = _.get(feature, 'style.text.label')
|
|
249
364
|
if (text) simpleStyle['icon-text'] = text
|
|
250
365
|
if (!feature.properties) feature.properties = simpleStyle
|
|
251
366
|
else Object.assign(feature.properties, simpleStyle)
|
|
367
|
+
|
|
368
|
+
const cesiumStyle = convertToCesiumFromStyle(feature, options)
|
|
369
|
+
_.mergeWith(feature, cesiumStyle, (objValue, srcValue) => {
|
|
370
|
+
if (_.isArray(objValue)) return srcValue
|
|
371
|
+
})
|
|
252
372
|
}
|
|
253
373
|
// For activities
|
|
254
374
|
if (_.has(this, 'activityOptions.engine.cluster')) {
|
|
@@ -314,6 +434,10 @@ export const geojsonLayers = {
|
|
|
314
434
|
if (!dataSource || !dataSource.name) {
|
|
315
435
|
dataSource = new GeoJsonDataSource()
|
|
316
436
|
dataSource.notFromDrop = true
|
|
437
|
+
|
|
438
|
+
// This is where we'll store custom primitives used for animated walls/corridors.
|
|
439
|
+
// Key is feature id, value is associated primitive object
|
|
440
|
+
dataSource.primitives = new Map()
|
|
317
441
|
// Check for realtime layers
|
|
318
442
|
if (cesiumOptions.realtime) {
|
|
319
443
|
await this.createCesiumRealtimeGeoJsonLayer(dataSource, options)
|
|
@@ -346,16 +470,18 @@ export const geojsonLayers = {
|
|
|
346
470
|
// Retrieve the layer
|
|
347
471
|
const layer = this.getCesiumLayerByName(name)
|
|
348
472
|
if (!layer) return // Cannot update invisible layer
|
|
349
|
-
|
|
473
|
+
// Update the geoJson layer
|
|
474
|
+
// Need to await to make zoomToLayer work properly on load
|
|
475
|
+
if (typeof layer.updateGeoJson === 'function') await layer.updateGeoJson(geoJson, updateOptions)
|
|
350
476
|
|
|
351
477
|
// We keep geojson data for in memory layer in a cache since
|
|
352
478
|
// these layers will be destroyed when hidden. We need to be able to restore
|
|
353
479
|
// them when they get shown again
|
|
354
480
|
const baseLayer = this.getLayerByName(name)
|
|
355
481
|
if (isInMemoryLayer(baseLayer)) {
|
|
356
|
-
this.geojsonCache[name] =
|
|
482
|
+
this.geojsonCache[name] = await this.toGeoJson(name)
|
|
357
483
|
}
|
|
358
|
-
this.onLayerUpdated(baseLayer, layer, { features: geoJson.features || [geoJson] })
|
|
484
|
+
this.onLayerUpdated(baseLayer, layer, { features: geoJson ? geoJson.features || [geoJson] : [] })
|
|
359
485
|
},
|
|
360
486
|
onLayerUpdated (layer, cesiumLayer, data) {
|
|
361
487
|
this.$emit('layer-updated', layer, cesiumLayer, data)
|
|
@@ -363,19 +489,7 @@ export const geojsonLayers = {
|
|
|
363
489
|
},
|
|
364
490
|
onCurrentTimeChangedGeoJsonLayers (time) {
|
|
365
491
|
// Need to update layers that require an update at a given frequency
|
|
366
|
-
const geoJsonlayers = _.values(this.layers).filter(sift(
|
|
367
|
-
// Possible for realtime layers only
|
|
368
|
-
'cesium.type': 'geoJson',
|
|
369
|
-
'cesium.realtime': true,
|
|
370
|
-
$or: [ // Supported by template URL or time-based features service
|
|
371
|
-
{ 'cesium.sourceTemplate': { $exists: true } },
|
|
372
|
-
{ service: { $exists: true } }
|
|
373
|
-
],
|
|
374
|
-
// Skip layers powered by realtime service events
|
|
375
|
-
serviceEvents: { $ne: true },
|
|
376
|
-
// Skip invisible layers
|
|
377
|
-
isVisible: true
|
|
378
|
-
}))
|
|
492
|
+
const geoJsonlayers = _.values(this.layers).filter(sift(GeoJsonCesiumLayerFilters.TimeUpdate))
|
|
379
493
|
geoJsonlayers.forEach(async geoJsonlayer => {
|
|
380
494
|
// Retrieve the layer
|
|
381
495
|
const dataSource = this.getCesiumLayerByName(geoJsonlayer.name)
|
|
@@ -391,32 +505,15 @@ export const geojsonLayers = {
|
|
|
391
505
|
const units = _.map(Units.getUnits(quantity), 'name')
|
|
392
506
|
// Need to update layers with variables affected by the unit change,
|
|
393
507
|
// ie which style depends on it
|
|
394
|
-
let geoJsonlayers = _.values(this.layers).filter(sift(
|
|
395
|
-
'cesium.type': 'geoJson',
|
|
396
|
-
'cesium.realtime': true,
|
|
397
|
-
// Not sure why but this does not seem to work with sift
|
|
398
|
-
//'variables': { $elemMatch: { unit: { $in: units } } },
|
|
399
|
-
'variables': { $exists: true },
|
|
400
|
-
isVisible: true,
|
|
401
|
-
'cesium.style': { $exists: true },
|
|
402
|
-
'cesium.template': { $exists: true }
|
|
403
|
-
}))
|
|
508
|
+
let geoJsonlayers = _.values(this.layers).filter(sift(GeoJsonCesiumLayerFilters.UnitUpdate))
|
|
404
509
|
// Check for each layer if it uses the target unit and templated style uses the unit system or not
|
|
405
510
|
geoJsonlayers = geoJsonlayers.filter(layer => {
|
|
406
|
-
|
|
407
|
-
if (_.isEmpty(unit)) return false
|
|
408
|
-
for (const template of layer.cesium.template) {
|
|
409
|
-
if (template.startsWith('style.')) {
|
|
410
|
-
const style = _.get(layer.cesium, template)
|
|
411
|
-
if ((typeof style === 'string') && style.includes('Units')) return true
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
return false
|
|
511
|
+
return hasUnitInCesiumLayerTemplate(units, layer)
|
|
415
512
|
})
|
|
416
513
|
// Then retrieve the engine layers and update
|
|
417
514
|
geoJsonlayers.forEach(layer => {
|
|
418
515
|
// Retrieve the layer
|
|
419
|
-
const dataSource = this.getCesiumLayerByName(
|
|
516
|
+
const dataSource = this.getCesiumLayerByName(layer.name)
|
|
420
517
|
dataSource.updateGeoJson()
|
|
421
518
|
})
|
|
422
519
|
})
|
|
@@ -439,6 +536,31 @@ export const geojsonLayers = {
|
|
|
439
536
|
if (_.has(this.geojsonCache, layer.name)) {
|
|
440
537
|
delete this.geojsonCache[layer.name]
|
|
441
538
|
}
|
|
539
|
+
},
|
|
540
|
+
selectFeaturesForPostProcess (effect, layerName, featureIds) {
|
|
541
|
+
// Make sure post process is enabled
|
|
542
|
+
const stage = this.getPostProcessStage(effect)
|
|
543
|
+
if (!stage) return
|
|
544
|
+
// Make sure layer exists
|
|
545
|
+
const layer = this.getCesiumLayerByName(layerName)
|
|
546
|
+
if (!layer) return
|
|
547
|
+
// Expect layer to be a datasource
|
|
548
|
+
if (!layer.entities) return
|
|
549
|
+
|
|
550
|
+
const ids = Array.isArray(featureIds) ? featureIds : [ featureIds ]
|
|
551
|
+
const primitives = []
|
|
552
|
+
ids.forEach((id) => {
|
|
553
|
+
// Lookup entity based on featureId
|
|
554
|
+
const entity = layer.entities.getById(id)
|
|
555
|
+
if (!entity) return
|
|
556
|
+
// Lookup associated primitive
|
|
557
|
+
const primitive = findPrimitiveForEntity(entity, this.viewer)
|
|
558
|
+
if (!primitive) return
|
|
559
|
+
|
|
560
|
+
primitives.push(primitive)
|
|
561
|
+
})
|
|
562
|
+
|
|
563
|
+
stage.selected = primitives
|
|
442
564
|
}
|
|
443
565
|
},
|
|
444
566
|
created () {
|
|
@@ -23,8 +23,9 @@ export const popup = {
|
|
|
23
23
|
if (!text) {
|
|
24
24
|
if (popupStyle.template) {
|
|
25
25
|
const compiler = popupStyle.compiler
|
|
26
|
-
//
|
|
27
|
-
|
|
26
|
+
// The whole feature is lost by Cesium so that top-level properties have disappeared
|
|
27
|
+
// but we try to keep track of it eg in GeoJson layers
|
|
28
|
+
text = compiler({ feature: entity.feature || { properties }, properties, $t: this.$t, Units, Time, moment })
|
|
28
29
|
} else if (popupStyle.pick) {
|
|
29
30
|
properties = _.pick(properties, popupStyle.pick)
|
|
30
31
|
} else if (popupStyle.omit) {
|
|
@@ -57,7 +57,9 @@ export const style = {
|
|
|
57
57
|
const entityStyle = _.cloneDeep(cesiumOptions.entityStyle)
|
|
58
58
|
entityStyleTemplate.forEach(entry => {
|
|
59
59
|
// Perform templating, set using simple spec mapping first then raw if property not found
|
|
60
|
-
|
|
60
|
+
// The whole feature is lost by Cesium so that top-level properties have disappeared
|
|
61
|
+
// but we try to keep track of it eg in GeoJson layers
|
|
62
|
+
let value = entry.compiler({ feature: entity.feature || { properties }, properties, chroma, moment, Units, Time })
|
|
61
63
|
const property = entry.property
|
|
62
64
|
// Handle specific case of orientation
|
|
63
65
|
if ((property === 'orientation') && entity.position) {
|
|
@@ -38,8 +38,9 @@ export const tooltip = {
|
|
|
38
38
|
if (text && (typeof text.toString === 'function')) text = text.toString()
|
|
39
39
|
} else if (tooltipStyle.template) {
|
|
40
40
|
const compiler = tooltipStyle.compiler
|
|
41
|
-
//
|
|
42
|
-
|
|
41
|
+
// The whole feature is lost by Cesium so that top-level properties have disappeared
|
|
42
|
+
// but we try to keep track of it eg in GeoJson layers
|
|
43
|
+
text = compiler({ feature: entity.feature || { properties }, properties, $t: this.$t, Units, Time, moment })
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
if (text) {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export * from './mixin.base-map.js'
|
|
2
2
|
export * from './mixin.geojson-layers.js'
|
|
3
3
|
export * from './mixin.file-layers.js'
|
|
4
|
-
export * from './mixin.forecast-layers.js'
|
|
5
|
-
export * from './mixin.georaster-layers.js'
|
|
6
4
|
export * from './mixin.edit-layers.js'
|
|
7
5
|
export * from './mixin.style.js'
|
|
8
6
|
export * from './mixin.tooltip.js'
|
|
@@ -14,4 +12,4 @@ export * from './mixin.heatmap-layers.js'
|
|
|
14
12
|
export * from './mixin.mapillary-layers.js'
|
|
15
13
|
export * from './mixin.gsmap-layers.js'
|
|
16
14
|
export * from './mixin.canvas-layers.js'
|
|
17
|
-
export * from './mixin.pmtiles-layers.js'
|
|
15
|
+
export * from './mixin.pmtiles-layers.js'
|