@provoly/dashboard 0.19.1 → 0.19.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/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +2 -1
- package/dataset/style/_o-pry-dataset-card.scss +48 -1
- package/dataset/style/_o-pry-dataset.scss +4 -5
- package/esm2022/admin/admin-routing.module.mjs +5 -5
- package/esm2022/admin/admin.module.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +4 -4
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +8 -7
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +4 -4
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +4 -4
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +4 -4
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +4 -4
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +4 -4
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +4 -4
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +4 -4
- package/esm2022/admin/components/admin-title/admin-title.component.mjs +4 -4
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +4 -4
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +4 -4
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +4 -4
- package/esm2022/admin/components/admin.component.mjs +4 -4
- package/esm2022/admin/components/association/association.component.mjs +4 -4
- package/esm2022/admin/store/admin.effects.mjs +4 -4
- package/esm2022/admin/store/admin.service.mjs +4 -4
- package/esm2022/components/card/card.component.mjs +19 -19
- package/esm2022/components/card/card.module.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/components/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/components/color-picker/color-picker.component.mjs +4 -4
- package/esm2022/components/color-picker/color-picker.module.mjs +5 -5
- package/esm2022/components/expand-panel/expand-panel.component.mjs +7 -7
- package/esm2022/components/expand-panel/expand-panel.module.mjs +5 -5
- package/esm2022/components/filter/filter.module.mjs +5 -5
- package/esm2022/components/filter/filter.pipe.mjs +4 -4
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +4 -4
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -5
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +4 -4
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +4 -4
- package/esm2022/components/metadata-editor/style/css.component.mjs +4 -4
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +4 -4
- package/esm2022/components/scheme-picker/scheme-picker.module.mjs +5 -5
- package/esm2022/components/scheme-picker/scheme.service.mjs +4 -4
- package/esm2022/components/sinceDate/sinceDate.module.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +4 -4
- package/esm2022/components/stepper/step/step.component.mjs +4 -4
- package/esm2022/components/stepper/step-title.directive.mjs +4 -4
- package/esm2022/components/stepper/stepper.component.mjs +4 -4
- package/esm2022/components/stepper/stepper.module.mjs +5 -5
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +14 -6
- package/esm2022/dataset/components/dataset.component.mjs +4 -4
- package/esm2022/dataset/dataset.module.mjs +5 -5
- package/esm2022/dataset/style/css.component.mjs +5 -5
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/filters/autocomplete/style/css.component.mjs +4 -4
- package/esm2022/filters/date/date-filter.component.mjs +4 -4
- package/esm2022/filters/date/date-filter.module.mjs +5 -5
- package/esm2022/filters/list/list-filter.component.mjs +4 -4
- package/esm2022/filters/list/list-filter.module.mjs +5 -5
- package/esm2022/filters/list/style/css.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.module.mjs +5 -5
- package/esm2022/filters/text/text-filter.component.mjs +4 -4
- package/esm2022/filters/text/text-filter.module.mjs +5 -5
- package/esm2022/import/components/import.component.mjs +4 -4
- package/esm2022/import/import-routing.module.mjs +5 -5
- package/esm2022/import/import.module.mjs +5 -5
- package/esm2022/import/store/import.effects.mjs +4 -4
- package/esm2022/import/store/import.service.mjs +4 -4
- package/esm2022/import/style/css.component.mjs +4 -4
- package/esm2022/lib/core/access/access.directive.mjs +4 -4
- package/esm2022/lib/core/access/access.guard.mjs +4 -4
- package/esm2022/lib/core/access/access.service.mjs +4 -4
- package/esm2022/lib/core/auth/geoAuth.service.mjs +4 -4
- package/esm2022/lib/core/components/about/about.component.mjs +4 -4
- package/esm2022/lib/core/components/about/pry-about.module.mjs +5 -5
- package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +4 -4
- package/esm2022/lib/core/components/accordion/accordion.component.mjs +4 -4
- package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +4 -4
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +4 -4
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +4 -4
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +4 -4
- package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +5 -5
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +7 -11
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +4 -4
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/icon/icon.component.mjs +4 -4
- package/esm2022/lib/core/components/icon/icon.module.mjs +5 -5
- package/esm2022/lib/core/components/modal/modal.component.mjs +4 -4
- package/esm2022/lib/core/components/modal/pry-modal.module.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +4 -4
- package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +5 -5
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +4 -4
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +4 -4
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +4 -4
- package/esm2022/lib/core/components/overlay/overlay.directive.mjs +4 -4
- package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/range/range.component.mjs +4 -4
- package/esm2022/lib/core/components/range/range.module.mjs +5 -5
- package/esm2022/lib/core/components/select/select.component.mjs +4 -4
- package/esm2022/lib/core/components/select/select.module.mjs +5 -5
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +4 -4
- package/esm2022/lib/core/components/share/share.component.mjs +4 -4
- package/esm2022/lib/core/components/share/share.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-header.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-table.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort.module.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab-group.component.mjs +4 -4
- package/esm2022/lib/core/components/tabs/tab.component.mjs +4 -4
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -4
- package/esm2022/lib/core/components/toggle/toggle.module.mjs +5 -5
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +4 -4
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +4 -4
- package/esm2022/lib/core/components/upload/upload.component.mjs +4 -4
- package/esm2022/lib/core/core.module.mjs +5 -5
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +4 -4
- package/esm2022/lib/core/i18n/i18n.module.mjs +5 -5
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -4
- package/esm2022/lib/core/i18n/i18n.service.mjs +4 -4
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +4 -4
- package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +4 -4
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +4 -4
- package/esm2022/lib/core/store/category/category.effects.mjs +4 -4
- package/esm2022/lib/core/store/category/category.service.mjs +4 -4
- package/esm2022/lib/core/store/class/class.effects.mjs +4 -4
- package/esm2022/lib/core/store/class/class.service.mjs +4 -4
- package/esm2022/lib/core/store/config/config.effects.mjs +4 -4
- package/esm2022/lib/core/store/config/config.service.mjs +4 -4
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +4 -4
- package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +4 -4
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +4 -4
- package/esm2022/lib/core/store/field/field.effects.mjs +4 -4
- package/esm2022/lib/core/store/field/field.interface.mjs +2 -1
- package/esm2022/lib/core/store/field/field.service.mjs +4 -4
- package/esm2022/lib/core/store/image/image.effects.mjs +4 -4
- package/esm2022/lib/core/store/image/image.service.mjs +4 -4
- package/esm2022/lib/core/store/item/item.effects.mjs +4 -4
- package/esm2022/lib/core/store/item/item.service.mjs +4 -4
- package/esm2022/lib/core/store/raw/raw.service.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +4 -4
- package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +4 -4
- package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +5 -5
- package/esm2022/lib/core/store/search/search.service.mjs +8 -13
- package/esm2022/lib/core/symbol/symbol.service.mjs +4 -4
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +4 -4
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +4 -4
- package/esm2022/lib/core/ws/websocket.service.mjs +4 -4
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +4 -4
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +4 -4
- package/esm2022/lib/dashboard/base-widget.module.mjs +5 -5
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +8 -8
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +4 -4
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +8 -6
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +4 -4
- package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +4 -4
- package/esm2022/lib/dashboard/dashboard.module.mjs +12 -8
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +4 -4
- package/esm2022/lib/dashboard/filter/base-filter.module.mjs +5 -5
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +4 -4
- package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +4 -4
- package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +4 -4
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +4 -4
- package/esm2022/lib/dashboard/guard/default-view.guard.mjs +4 -4
- package/esm2022/lib/dashboard/item-utils.mjs +15 -14
- package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +4 -4
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -2
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +54 -21
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
- package/esm2022/lib/dashboard/store/manifest-utils.class.mjs +10 -7
- package/esm2022/lib/dashboard/store/manifest.service.mjs +4 -4
- package/esm2022/lib/dashboard/store/proxy.utils.mjs +76 -0
- package/esm2022/lib/dashboard/store/refresh.service.mjs +12 -7
- package/esm2022/lib/dashboard/store/title.service.mjs +4 -4
- package/esm2022/lib/dashboard/store/wms.service.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +5 -5
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +4 -4
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +4 -4
- package/esm2022/notification/components/notification/notification.component.mjs +4 -4
- package/esm2022/notification/notification.module.mjs +5 -5
- package/esm2022/notification/store/notification.effects.mjs +4 -4
- package/esm2022/notification/store/notification.service.mjs +4 -4
- package/esm2022/notification/style/css.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +4 -4
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +4 -4
- package/esm2022/pipeline/pipeline.module.mjs +5 -5
- package/esm2022/pipeline/store/pipeline.effects.mjs +4 -4
- package/esm2022/pipeline/store/pipeline.service.mjs +4 -4
- package/esm2022/pipeline/style/css.component.mjs +4 -4
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +4 -4
- package/esm2022/pipeline-components/filter/filter.module.mjs +5 -5
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +4 -4
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +5 -5
- package/esm2022/pipeline-components/noop/component/noop.component.mjs +4 -4
- package/esm2022/pipeline-components/noop/noop.module.mjs +5 -5
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +4 -4
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +5 -5
- package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +4 -4
- package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +5 -5
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +17 -30
- package/esm2022/presentation/components/presentation.component.mjs +6 -33
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +4 -4
- package/esm2022/presentation/presentation.module.mjs +5 -5
- package/esm2022/presentation/style/css.component.mjs +5 -5
- package/esm2022/restitution/components/restitution/restitution.component.mjs +24 -8
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +4 -4
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +4 -4
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +4 -4
- package/esm2022/restitution/restitution.module.mjs +5 -5
- package/esm2022/restitution/style/css.component.mjs +5 -5
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +4 -4
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +9 -5
- package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +4 -4
- package/esm2022/search/components/save-query/save-query.component.mjs +4 -4
- package/esm2022/search/components/save-query-button/save-query-button.component.mjs +4 -4
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +4 -4
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +4 -4
- package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +4 -4
- package/esm2022/search/search-home/search-home.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +4 -4
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +4 -4
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +4 -4
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -4
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +4 -4
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +4 -4
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +4 -4
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +4 -4
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +4 -4
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
- package/esm2022/search/search-tools/search-tools.component.mjs +4 -4
- package/esm2022/search/search.module.mjs +5 -5
- package/esm2022/search/style/css.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +4 -4
- package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +4 -4
- package/esm2022/supervision/components/supervision.component.mjs +4 -4
- package/esm2022/supervision/store/supervision.effects.mjs +4 -4
- package/esm2022/supervision/store/supervision.service.mjs +4 -4
- package/esm2022/supervision/supervision-routing.module.mjs +5 -5
- package/esm2022/supervision/supervision.module.mjs +5 -5
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +7 -5
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +4 -4
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +4 -4
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +4 -4
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +4 -4
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +4 -4
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +4 -4
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +11 -7
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +4 -4
- package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +4 -4
- package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +4 -4
- package/esm2022/toolbox/components/toolbox.component.mjs +4 -4
- package/esm2022/toolbox/style/css.component.mjs +4 -4
- package/esm2022/toolbox/toolbox.module.mjs +5 -5
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +4 -4
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -5
- package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +4 -4
- package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +23 -11
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +5 -5
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +4 -4
- package/esm2022/widgets/widget-chart/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-chart/widget-chart.module.mjs +5 -5
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +4 -4
- package/esm2022/widgets/widget-detail/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-detail/widget-detail.module.mjs +5 -5
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +4 -4
- package/esm2022/widgets/widget-graph/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-graph/widget-graph.module.mjs +5 -5
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +4 -4
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +4 -4
- package/esm2022/widgets/widget-iframe/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +5 -5
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +4 -4
- package/esm2022/widgets/widget-image/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-image/widget-image.module.mjs +5 -5
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -4
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +144 -18
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +10 -2
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +10 -2
- package/esm2022/widgets/widget-map/interaction/layer-slider.class.mjs +63 -0
- package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +21 -16
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +4 -4
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +24 -12
- package/esm2022/widgets/widget-map/public-api.mjs +2 -1
- package/esm2022/widgets/widget-map/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +42 -1
- package/esm2022/widgets/widget-map/widget-map.module.mjs +5 -5
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +11 -6
- package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +4 -4
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -4
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +4 -4
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +5 -5
- package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +4 -4
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +4 -4
- package/esm2022/widgets/widget-table/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-table/widget-table.module.mjs +5 -5
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +4 -4
- package/esm2022/widgets/widget-template/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-template/widget-template.module.mjs +5 -5
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +4 -4
- package/esm2022/widgets/widget-tile/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +5 -5
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +4 -4
- package/esm2022/widgets/widget-vega/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +5 -5
- package/fesm2022/provoly-dashboard-admin.mjs +261 -260
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-card.mjs +22 -22
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-color-picker.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +16 -16
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +10 -10
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-stepper.mjs +13 -13
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +28 -20
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +10 -10
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +7 -7
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +10 -10
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +7 -7
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +7 -7
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +20 -20
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +19 -19
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +7 -7
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +7 -7
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +7 -7
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +7 -7
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +7 -7
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +28 -28
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +31 -71
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +40 -24
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +79 -75
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +41 -41
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +56 -50
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -7
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +29 -17
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +13 -13
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +323 -63
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +36 -31
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +10 -10
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +666 -552
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +1 -5
- package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
- package/lib/core/store/field/field.interface.d.ts +1 -0
- package/lib/core/store/search/search.actions.d.ts +4 -0
- package/lib/core/store/search/search.service.d.ts +1 -6
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +4 -1
- package/lib/dashboard/dashboard.module.d.ts +2 -0
- package/lib/dashboard/item-utils.d.ts +2 -3
- package/lib/dashboard/store/dashboard.actions.d.ts +5 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +24 -5
- package/lib/dashboard/store/dashboard.selectors.d.ts +13 -7
- package/lib/dashboard/store/manifest-utils.class.d.ts +4 -1
- package/lib/dashboard/store/proxy.utils.d.ts +24 -0
- package/package.json +13 -13
- package/presentation/style/_o-pry-presentation.scss +1 -1
- package/styles/components/_o-widget.scss +57 -2
- package/styles-theme/components-theme/_o-widget.theme.scss +1 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +8 -0
- package/widgets/widget-map/component/widget-map.component.d.ts +41 -3
- package/widgets/widget-map/i18n/en.translations.d.ts +8 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +8 -0
- package/widgets/widget-map/interaction/layer-slider.class.d.ts +10 -0
- package/widgets/widget-map/interaction/selection-interaction.class.d.ts +2 -3
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +1 -0
- package/widgets/widget-map/public-api.d.ts +1 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +16 -5
- package/widgets/widget-map/style/_o-widget-map.scss +75 -1
- package/widgets/widget-map/utils/xml-utils.class.d.ts +10 -0
|
@@ -15,10 +15,10 @@ import { getWidth, getTopLeft, createEmpty, boundingExtent } from 'ol/extent';
|
|
|
15
15
|
import { Heatmap, Tile } from 'ol/layer';
|
|
16
16
|
import { toLonLat, get, transform, fromLonLat } from 'ol/proj';
|
|
17
17
|
import { register } from 'ol/proj/proj4';
|
|
18
|
-
import { Vector, TileWMS, WMTS, XYZ, Cluster } from 'ol/source';
|
|
18
|
+
import { Vector, TileWMS, WMTS, XYZ, Cluster, DataTile } from 'ol/source';
|
|
19
19
|
import proj4 from 'proj4';
|
|
20
|
-
import { map, combineLatest, filter,
|
|
21
|
-
import { ScaleLine } from 'ol/control';
|
|
20
|
+
import { BehaviorSubject, map, combineLatest, filter, distinctUntilChanged, startWith, debounceTime, delay, mergeMap, of, from, switchMap } from 'rxjs';
|
|
21
|
+
import { ScaleLine, Attribution, defaults } from 'ol/control';
|
|
22
22
|
import { Polygon, Circle as Circle$1, LineString } from 'ol/geom';
|
|
23
23
|
import PointerInteraction from 'ol/interaction/Pointer';
|
|
24
24
|
import TileLayer from 'ol/layer/Tile';
|
|
@@ -32,11 +32,14 @@ import { GeoJSON, MVT } from 'ol/format';
|
|
|
32
32
|
import VectorTile from 'ol/source/VectorTile';
|
|
33
33
|
import CircleStyle from 'ol/style/Circle';
|
|
34
34
|
import WMTSTileGrid from 'ol/tilegrid/WMTS';
|
|
35
|
+
import { getRenderPixel } from 'ol/render';
|
|
36
|
+
import WebGLTileLayer from 'ol/layer/WebGLTile';
|
|
35
37
|
import * as i1 from '@ngrx/store';
|
|
36
38
|
|
|
37
39
|
class SelectionInteraction extends PointerInteraction {
|
|
38
40
|
constructor() {
|
|
39
41
|
super({});
|
|
42
|
+
this.selectionType$ = new BehaviorSubject('move');
|
|
40
43
|
this.currentRectangle = new RenderBox('ol-rectangle-selection');
|
|
41
44
|
this.lassoCoordinates = [];
|
|
42
45
|
this.currentLassoFeature = null;
|
|
@@ -47,13 +50,11 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
47
50
|
})
|
|
48
51
|
});
|
|
49
52
|
this.coordinates = null;
|
|
50
|
-
this.cursor = 'pointer';
|
|
51
53
|
this.features = [];
|
|
52
|
-
this.previousCursor = undefined;
|
|
53
54
|
widgetMapConfig.actions$.subscribe((actions) => {
|
|
54
55
|
// @ts-ignore
|
|
55
56
|
this.actions = actions.filter((action) => action !== 'export' && action !== 'upload');
|
|
56
|
-
this.selectionType
|
|
57
|
+
this.selectionType$.next(this.actions[0]);
|
|
57
58
|
});
|
|
58
59
|
this.overlayForLasso = new VectorLayer({
|
|
59
60
|
source: new VectorSource({
|
|
@@ -71,10 +72,10 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
71
72
|
}
|
|
72
73
|
handleDownEvent(evt) {
|
|
73
74
|
const map = evt.map;
|
|
74
|
-
if (this.selectionType === 'move') {
|
|
75
|
+
if (this.selectionType$.getValue() === 'move') {
|
|
75
76
|
return false;
|
|
76
77
|
}
|
|
77
|
-
if (this.selectionType === 'click') {
|
|
78
|
+
if (this.selectionType$.getValue() === 'click') {
|
|
78
79
|
this.features = [
|
|
79
80
|
...new Set(map
|
|
80
81
|
.getFeaturesAtPixel(evt.pixel)
|
|
@@ -84,12 +85,12 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
84
85
|
// Click and move are collisionning. Need to make another button if needed right now click is aborted
|
|
85
86
|
return true;
|
|
86
87
|
}
|
|
87
|
-
if (['rectangle', 'zoom'].includes(this.selectionType)) {
|
|
88
|
+
if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {
|
|
88
89
|
this.coordinates = evt.pixel;
|
|
89
90
|
this.currentRectangle.setMap(evt.map);
|
|
90
91
|
this.currentRectangle.setPixels(this.coordinates, this.coordinates);
|
|
91
92
|
}
|
|
92
|
-
if (this.selectionType === 'lasso') {
|
|
93
|
+
if (this.selectionType$.getValue() === 'lasso') {
|
|
93
94
|
this.getMap()?.addLayer(this.overlayForLasso);
|
|
94
95
|
this.lassoCoordinates = [evt.coordinate];
|
|
95
96
|
if (!this.currentLassoFeature) {
|
|
@@ -103,11 +104,11 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
103
104
|
return [coordinates.concat(coordinates[0])];
|
|
104
105
|
}
|
|
105
106
|
handleDragEvent(evt) {
|
|
106
|
-
if (['rectangle', 'zoom'].includes(this.selectionType)) {
|
|
107
|
+
if (['rectangle', 'zoom'].includes(this.selectionType$.getValue())) {
|
|
107
108
|
this.currentRectangle.setPixels(this.coordinates ?? [0, 0], evt.pixel);
|
|
108
109
|
return true;
|
|
109
110
|
}
|
|
110
|
-
if (this.selectionType === 'lasso') {
|
|
111
|
+
if (this.selectionType$.getValue() === 'lasso') {
|
|
111
112
|
this.lassoCoordinates.push(evt.coordinate);
|
|
112
113
|
this.currentLassoFeature?.getGeometry()?.setCoordinates(this.getPolygonCoordinates(this.lassoCoordinates));
|
|
113
114
|
return true;
|
|
@@ -115,10 +116,10 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
115
116
|
return false;
|
|
116
117
|
}
|
|
117
118
|
handleUpEvent() {
|
|
118
|
-
if (this.selectionType === 'click' && this.features.length > 0) {
|
|
119
|
+
if (this.selectionType$.getValue() === 'click' && this.features.length > 0) {
|
|
119
120
|
this.store?.dispatch(DashboardActions.selectMany({ ids: this.features }));
|
|
120
121
|
}
|
|
121
|
-
if (this.selectionType === 'lasso') {
|
|
122
|
+
if (this.selectionType$.getValue() === 'lasso') {
|
|
122
123
|
const geometry = this.currentLassoFeature?.getGeometry();
|
|
123
124
|
const boxFeatures = this.getMap()
|
|
124
125
|
?.getAllLayers()
|
|
@@ -134,6 +135,11 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
134
135
|
case 'marker':
|
|
135
136
|
return geometry?.intersectsCoordinate(feature.getGeometry().getCoordinates());
|
|
136
137
|
case 'bubble':
|
|
138
|
+
return feature
|
|
139
|
+
.getGeometry()
|
|
140
|
+
.getCenter()
|
|
141
|
+
.map((coords) => geometry?.intersectsCoordinate(coords))
|
|
142
|
+
.reduce((a, b) => a || b, false);
|
|
137
143
|
case 'line':
|
|
138
144
|
return feature
|
|
139
145
|
.getGeometry()
|
|
@@ -158,7 +164,7 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
158
164
|
this.getMap()?.removeLayer(this.overlayForLasso);
|
|
159
165
|
this.lassoCoordinates = [];
|
|
160
166
|
}
|
|
161
|
-
if (this.selectionType === 'rectangle') {
|
|
167
|
+
if (this.selectionType$.getValue() === 'rectangle') {
|
|
162
168
|
this.currentRectangle.setMap(null);
|
|
163
169
|
const extent = this.currentRectangle.getGeometry().getExtent();
|
|
164
170
|
const boxFeatures = this.getMap()
|
|
@@ -174,14 +180,14 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
174
180
|
];
|
|
175
181
|
this.store?.dispatch(DashboardActions.selectMany({ ids }));
|
|
176
182
|
}
|
|
177
|
-
if (this.selectionType === 'zoom') {
|
|
183
|
+
if (this.selectionType$.getValue() === 'zoom') {
|
|
178
184
|
this.currentRectangle.setMap(null);
|
|
179
185
|
const extent = this.currentRectangle.getGeometry().getExtent();
|
|
180
186
|
this.getMap()
|
|
181
187
|
?.getView()
|
|
182
188
|
.fit(extent, { padding: [20, 20, 70, 70], duration: 200 });
|
|
183
189
|
}
|
|
184
|
-
if (this.selectionType === 'lasso') {
|
|
190
|
+
if (this.selectionType$.getValue() === 'lasso') {
|
|
185
191
|
this.getMap()?.removeLayer(this.overlayForLasso);
|
|
186
192
|
}
|
|
187
193
|
this.changeSelection(this.actions[0]);
|
|
@@ -190,7 +196,7 @@ class SelectionInteraction extends PointerInteraction {
|
|
|
190
196
|
return false;
|
|
191
197
|
}
|
|
192
198
|
changeSelection(type) {
|
|
193
|
-
this.selectionType
|
|
199
|
+
this.selectionType$.next(type);
|
|
194
200
|
}
|
|
195
201
|
}
|
|
196
202
|
|
|
@@ -399,6 +405,27 @@ class XMLUtils {
|
|
|
399
405
|
}
|
|
400
406
|
return null;
|
|
401
407
|
}
|
|
408
|
+
static allLayers(doc) {
|
|
409
|
+
const result = [];
|
|
410
|
+
if (doc) {
|
|
411
|
+
const WMSCapability = XMLUtils.find(doc.childNodes, 'WMS_Capabilities');
|
|
412
|
+
if (WMSCapability) {
|
|
413
|
+
const Capabilities = XMLUtils.find(WMSCapability.childNodes, 'Capability');
|
|
414
|
+
if (Capabilities) {
|
|
415
|
+
const layerBloc = XMLUtils.find(Capabilities.childNodes, 'Layer');
|
|
416
|
+
if (layerBloc && layerBloc.childNodes) {
|
|
417
|
+
for (let i = 0; i < layerBloc.childNodes.length; i++) {
|
|
418
|
+
const node = layerBloc.childNodes[i];
|
|
419
|
+
if (node.nodeName === 'Layer') {
|
|
420
|
+
result.push(node);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return result;
|
|
428
|
+
}
|
|
402
429
|
static getLayerExtent(paramLayer, map, doc) {
|
|
403
430
|
if (!doc) {
|
|
404
431
|
return null;
|
|
@@ -420,6 +447,26 @@ class XMLUtils {
|
|
|
420
447
|
}
|
|
421
448
|
return null;
|
|
422
449
|
}
|
|
450
|
+
static getPossibleLayerStyles(doc) {
|
|
451
|
+
if (!doc) {
|
|
452
|
+
return {};
|
|
453
|
+
}
|
|
454
|
+
const layers = XMLUtils.allLayers(doc);
|
|
455
|
+
return layers.map((layer) => {
|
|
456
|
+
const layerName = XMLUtils.find(layer.childNodes, 'Name')?.textContent ?? '';
|
|
457
|
+
const styles = XMLUtils.findAll(layer.childNodes, 'Style');
|
|
458
|
+
const stylesArray = styles.map((style) => ({
|
|
459
|
+
id: XMLUtils.find(style.childNodes, 'Name')?.textContent,
|
|
460
|
+
label: XMLUtils.find(style.childNodes, 'Title')?.textContent ??
|
|
461
|
+
XMLUtils.find(style.childNodes, 'Name')?.textContent
|
|
462
|
+
}));
|
|
463
|
+
const uniquesStyles = [...new Set(stylesArray.map((style) => style.id))].map((styleId) => stylesArray.find((styleInArray) => styleInArray.id === styleId));
|
|
464
|
+
return {
|
|
465
|
+
param: layerName,
|
|
466
|
+
styles: uniquesStyles
|
|
467
|
+
};
|
|
468
|
+
}).reduce((p, c) => ({ ...p, [c.param]: c }), {});
|
|
469
|
+
}
|
|
423
470
|
}
|
|
424
471
|
|
|
425
472
|
class WidgetMapLayerService {
|
|
@@ -753,10 +800,10 @@ class WidgetMapLayerService {
|
|
|
753
800
|
return 'marker';
|
|
754
801
|
}
|
|
755
802
|
}
|
|
756
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
757
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
803
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
804
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, providedIn: 'root' }); }
|
|
758
805
|
}
|
|
759
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
806
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLayerService, decorators: [{
|
|
760
807
|
type: Injectable,
|
|
761
808
|
args: [{
|
|
762
809
|
providedIn: 'root'
|
|
@@ -989,7 +1036,7 @@ class WidgetMapUtils {
|
|
|
989
1036
|
return layers.sort((l1, l2) => (l1.order ?? 1) - (l2.order ?? 1));
|
|
990
1037
|
}
|
|
991
1038
|
static readGeometry(projection, item, type, attribute) {
|
|
992
|
-
if (!attribute
|
|
1039
|
+
if (!attribute) {
|
|
993
1040
|
// @ts-ignore
|
|
994
1041
|
return null;
|
|
995
1042
|
}
|
|
@@ -1071,13 +1118,75 @@ class WidgetMapUtils {
|
|
|
1071
1118
|
static { this.BACKGROUND_ORDER = 9999; }
|
|
1072
1119
|
}
|
|
1073
1120
|
|
|
1121
|
+
class LayerSlider {
|
|
1122
|
+
init(map, slider) {
|
|
1123
|
+
this.map = map;
|
|
1124
|
+
this.slider = slider;
|
|
1125
|
+
return this;
|
|
1126
|
+
}
|
|
1127
|
+
applySlide(type, layer) {
|
|
1128
|
+
layer.on('prerender', (event) => {
|
|
1129
|
+
const mapSize = this.map.getSize();
|
|
1130
|
+
if (mapSize) {
|
|
1131
|
+
if (event.context instanceof CanvasRenderingContext2D) {
|
|
1132
|
+
const width = mapSize[0] * (parseFloat(this.slider.value) / 100);
|
|
1133
|
+
let tl = getRenderPixel(event, [0, 0]);
|
|
1134
|
+
let tr = getRenderPixel(event, [width, 0]);
|
|
1135
|
+
let bl = getRenderPixel(event, [0, mapSize[1]]);
|
|
1136
|
+
let br = getRenderPixel(event, [width, mapSize[1]]);
|
|
1137
|
+
if (type === 'right') {
|
|
1138
|
+
tl = getRenderPixel(event, [width, 0]);
|
|
1139
|
+
tr = getRenderPixel(event, [mapSize[0], 0]);
|
|
1140
|
+
bl = getRenderPixel(event, [width, mapSize[1]]);
|
|
1141
|
+
br = getRenderPixel(event, mapSize);
|
|
1142
|
+
}
|
|
1143
|
+
const ctx = event.context;
|
|
1144
|
+
ctx.save();
|
|
1145
|
+
ctx.beginPath();
|
|
1146
|
+
ctx.moveTo(tl[0], tl[1]);
|
|
1147
|
+
ctx.lineTo(bl[0], bl[1]);
|
|
1148
|
+
ctx.lineTo(br[0], br[1]);
|
|
1149
|
+
ctx.lineTo(tr[0], tr[1]);
|
|
1150
|
+
ctx.closePath();
|
|
1151
|
+
ctx.clip();
|
|
1152
|
+
}
|
|
1153
|
+
else {
|
|
1154
|
+
const gl = event.context;
|
|
1155
|
+
const bottomLeft = getRenderPixel(event, [0, mapSize[1]]);
|
|
1156
|
+
const topRight = getRenderPixel(event, [mapSize[0], 0]);
|
|
1157
|
+
const leftWidth = (topRight[0] - bottomLeft[0]) * (parseFloat(this.slider.value) / 100);
|
|
1158
|
+
const rightWidth = (topRight[0] - bottomLeft[0]) * (1 - parseFloat(this.slider.value) / 100);
|
|
1159
|
+
const height = topRight[1] - bottomLeft[1];
|
|
1160
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
1161
|
+
if (type === 'right') {
|
|
1162
|
+
gl.scissor(bottomLeft[0] + leftWidth, bottomLeft[1], rightWidth, height);
|
|
1163
|
+
}
|
|
1164
|
+
else {
|
|
1165
|
+
gl.scissor(bottomLeft[0], bottomLeft[1], leftWidth, height);
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
});
|
|
1170
|
+
layer.on('postrender', (event) => {
|
|
1171
|
+
if (event.context instanceof CanvasRenderingContext2D) {
|
|
1172
|
+
const ctx = event.context;
|
|
1173
|
+
ctx.restore();
|
|
1174
|
+
}
|
|
1175
|
+
else {
|
|
1176
|
+
const gl = event.context;
|
|
1177
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
1178
|
+
}
|
|
1179
|
+
});
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1074
1183
|
class PryWidgetMapCssComponent {
|
|
1075
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
1076
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
1184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryWidgetMapCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css", ngImport: i0, template: '', isInline: true, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:white}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-zoom>button{padding:0;border:none;background:white}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-layer-legend{z-index:2;right:.5rem;overflow:hidden}.m-layer-legend.ol-control{display:flex;flex-direction:column;align-items:flex-start;border:none;background:white}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{align-self:flex-end;width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;right:.5rem;overflow:hidden;display:flex;flex-direction:column;align-items:normal}.m-layer-switcher.ol-control{border:none;background:white;align-self:flex-end}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem;align-self:flex-end}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1077
1186
|
}
|
|
1078
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
1187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryWidgetMapCssComponent, decorators: [{
|
|
1079
1188
|
type: Component,
|
|
1080
|
-
args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution{top:.3125rem;bottom:unset}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}\n", ".m-layer-legend{z-index:2;
|
|
1189
|
+
args: [{ selector: 'pry-widget-map-css', template: '', encapsulation: ViewEncapsulation.None, styles: [":root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:grabbing}.ol-grab{cursor:move;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.o-widget--map{display:flex;flex-direction:column}.o-widget--map div.ol-scale-bar{position:absolute;left:initial;right:8px;bottom:8px}.o-map-wrapper{display:flex;width:100%;flex:1 1}.o-map{width:100%;height:100%}#map,.map-frame{height:100%}.layer-switcher{top:5rem;left:.5rem;right:unset;border-width:.0625rem;border-style:solid;border-radius:.4375rem}.layer-switcher button{background-size:30px;background-position:unset;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTIwLjA4MyAxNS4ybDEuMjAyLjcyMWEuNS41IDAgMCAxIDAgLjg1OGwtOC43NyA1LjI2MmExIDEgMCAwIDEtMS4wMyAwbC04Ljc3LTUuMjYyYS41LjUgMCAwIDEgMC0uODU4bDEuMjAyLS43MjFMMTIgMjAuMDVsOC4wODMtNC44NXptMC00LjdsMS4yMDIuNzIxYS41LjUgMCAwIDEgMCAuODU4TDEyIDE3LjY1bC05LjI4NS01LjU3MWEuNS41IDAgMCAxIDAtLjg1OGwxLjIwMi0uNzIxTDEyIDE1LjM1bDguMDgzLTQuODV6bS03LjU2OS05LjE5MWw4Ljc3MSA1LjI2MmEuNS41IDAgMCAxIDAgLjg1OEwxMiAxMyAyLjcxNSA3LjQyOWEuNS41IDAgMCAxIDAtLjg1OGw4Ljc3LTUuMjYyYTEgMSAwIDAgMSAxLjAzIDB6TTEyIDMuMzMyTDUuODg3IDcgMTIgMTAuNjY4IDE4LjExMyA3IDEyIDMuMzMyeiIvPjwvc3ZnPg==)}.layer-switcher.shown.ol-control:hover{background-color:#fff9}.ol-attribution,.ol-zoom{top:.3125rem;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-attribution>button,.ol-zoom>button{padding:0;border:none;background:white}.ol-zoom{top:.3125rem;right:.5rem;left:unset;bottom:unset;border-radius:.375rem;padding:0;border:none;background:white}.ol-zoom>button{padding:0;border:none;background:white}.a-form-field[type=radio]:read-only{pointer-events:auto}.a-tooltip--move[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 20px)}.a-tooltip--click[data-tooltip]:not([data-tooltip-position]):after{left:calc(50% + 10px)}.o-map-slider{position:absolute;width:100%;margin-top:-.625rem;z-index:1;-webkit-appearance:none;appearance:none;background:transparent;cursor:grab}.o-map-slider.-hidden{visibility:hidden;pointer-events:none}.o-map-slider::-webkit-slider-runnable-track{background:none}.o-map-slider::-moz-range-track{background:none}.o-map-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}.o-map-slider::-moz-range-thumb{border:none;border-radius:0;background-color:#113b6e;height:125rem;margin-top:-121.875rem;width:.25rem}\n", ".m-layer-legend{z-index:2;right:.5rem;overflow:hidden}.m-layer-legend.ol-control{display:flex;flex-direction:column;align-items:flex-start;border:none;background:white}.m-layer-legend button{background-color:#fafafa!important;color:#000}.m-layer-legend .-hidden{display:none}.m-layer-legend__toggle{align-self:flex-end;width:1.875rem;height:1.875rem}.m-layer-legend__title{display:flex;flex-direction:row;align-items:center;background-color:#fff;justify-content:space-between}.m-layer-legend__image{background:white;overflow:scroll}.m-layer-legend__error{font-style:italic;color:#c74646}.m-layer-switcher{z-index:2;right:.5rem;overflow:hidden;display:flex;flex-direction:column;align-items:normal}.m-layer-switcher.ol-control{border:none;background:white;align-self:flex-end}.m-layer-switcher button{background-color:#fafafa!important;color:#000}.m-layer-switcher .-hidden{display:none}.m-layer-switcher__toggle{width:1.875rem;height:1.875rem;align-self:flex-end}.m-layer-switcher__title{display:flex;flex-direction:row;background-color:#fff;justify-content:space-between;gap:.625rem;padding:5px}.m-layer-switcher__image{background:white;overflow:scroll}.m-layer-switcher__error{font-style:italic;color:#c74646}\n"] }]
|
|
1081
1190
|
}] });
|
|
1082
1191
|
|
|
1083
1192
|
class GeometryFieldsForPipe {
|
|
@@ -1116,10 +1225,10 @@ class GeometryFieldsForPipe {
|
|
|
1116
1225
|
return resArr;
|
|
1117
1226
|
}));
|
|
1118
1227
|
}
|
|
1119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
1120
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.
|
|
1228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1229
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, name: "geometryFieldsFor" }); }
|
|
1121
1230
|
}
|
|
1122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
1231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeometryFieldsForPipe, decorators: [{
|
|
1123
1232
|
type: Pipe,
|
|
1124
1233
|
args: [{
|
|
1125
1234
|
name: 'geometryFieldsFor'
|
|
@@ -1135,25 +1244,37 @@ class WidgetMapLegendUrlPipe {
|
|
|
1135
1244
|
if (capability) {
|
|
1136
1245
|
const matchingLayer = XMLUtils.getMatchingLayer(geoLayer.paramLayer, capability.doc);
|
|
1137
1246
|
if (matchingLayer) {
|
|
1138
|
-
const
|
|
1139
|
-
if (
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
const
|
|
1143
|
-
if (
|
|
1144
|
-
|
|
1145
|
-
return resource.getAttribute('xlink:href');
|
|
1247
|
+
const styles = XMLUtils.findAll(matchingLayer.childNodes, 'Style');
|
|
1248
|
+
if (geoLayer.additionalParameters && geoLayer.additionalParameters['STYLES'] !== undefined) {
|
|
1249
|
+
for (let i = 0; i < styles.length; i++) {
|
|
1250
|
+
const style = styles[i];
|
|
1251
|
+
const styleName = XMLUtils.find(style.childNodes, 'Name')?.textContent ?? '--';
|
|
1252
|
+
if (styleName === geoLayer.additionalParameters['STYLES']) {
|
|
1253
|
+
return this.returnStyleForLayer(style);
|
|
1146
1254
|
}
|
|
1147
1255
|
}
|
|
1148
1256
|
}
|
|
1257
|
+
else {
|
|
1258
|
+
return this.returnStyleForLayer(styles[0]);
|
|
1259
|
+
}
|
|
1149
1260
|
}
|
|
1150
1261
|
}
|
|
1151
1262
|
return '';
|
|
1152
1263
|
}
|
|
1153
|
-
|
|
1154
|
-
|
|
1264
|
+
returnStyleForLayer(style) {
|
|
1265
|
+
const legendUrl = XMLUtils.find(style.childNodes, 'LegendURL');
|
|
1266
|
+
if (legendUrl) {
|
|
1267
|
+
const resource = XMLUtils.find(legendUrl.childNodes, 'OnlineResource');
|
|
1268
|
+
if (resource) {
|
|
1269
|
+
// @ts-ignore
|
|
1270
|
+
return resource.getAttribute('xlink:href');
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1275
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, name: "legendUrl" }); }
|
|
1155
1276
|
}
|
|
1156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
1277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapLegendUrlPipe, decorators: [{
|
|
1157
1278
|
type: Pipe,
|
|
1158
1279
|
args: [{
|
|
1159
1280
|
name: 'legendUrl'
|
|
@@ -1196,9 +1317,27 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1196
1317
|
this.tooltipNumber = 0;
|
|
1197
1318
|
this.STYLE_FROM_URL = '_url';
|
|
1198
1319
|
this.NO_STYLE = 'none';
|
|
1199
|
-
this.
|
|
1320
|
+
this.layerSlider = new LayerSlider();
|
|
1321
|
+
this.possibleStyles = {};
|
|
1322
|
+
this.attributions = new Attribution();
|
|
1323
|
+
this.actionMenuOpen$ = new BehaviorSubject(false);
|
|
1324
|
+
this.olZoomElement$ = new BehaviorSubject(null);
|
|
1325
|
+
this.getOlZoomElement();
|
|
1326
|
+
this.slides = [
|
|
1327
|
+
{ id: 'all', label: this.translateService.instant('@pry.widget.map.slide.all') },
|
|
1328
|
+
{ id: 'left', label: this.translateService.instant('@pry.widget.map.slide.left') },
|
|
1329
|
+
{ id: 'right', label: this.translateService.instant('@pry.widget.map.slide.right') }
|
|
1330
|
+
];
|
|
1200
1331
|
this.widgetMapLayerService.withGeoAuth(this.geoAuthService);
|
|
1201
|
-
this.basicActions$ =
|
|
1332
|
+
this.basicActions$ = combineLatest([
|
|
1333
|
+
this.actions$,
|
|
1334
|
+
this.actionMenuOpen$,
|
|
1335
|
+
this.interactionManager.selectionInteraction.selectionType$
|
|
1336
|
+
]).pipe(map(([actions, menuOpen, selectionType]) => menuOpen
|
|
1337
|
+
? actions.filter((action) => action !== 'export' && action !== 'upload')
|
|
1338
|
+
: actions
|
|
1339
|
+
.filter((action) => action !== 'export' && action !== 'upload')
|
|
1340
|
+
.filter((action) => selectionType === action)));
|
|
1202
1341
|
this.classes$ = this.store
|
|
1203
1342
|
.select(ClassSelectors.classes)
|
|
1204
1343
|
.pipe(map((classes) => classes.sort((a, b) => a.name.localeCompare(b.name))));
|
|
@@ -1402,18 +1541,27 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1402
1541
|
}
|
|
1403
1542
|
}));
|
|
1404
1543
|
this.height$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.displayHeader$]).pipe(map(([size, display]) => (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0)), delay(10));
|
|
1405
|
-
this.
|
|
1406
|
-
this.legendTop$ = this.displayHeader
|
|
1544
|
+
this.attributions$ = this.options$.pipe(map((options) => !!options.attributions));
|
|
1545
|
+
this.legendTop$ = combineLatest([this.displayHeader$, this.attributions$]).pipe(map(([header, attr]) => 5 + (header ? 0 : WIDGET_HEADER_HEIGHT) + (attr ? 41 : 0) + 30));
|
|
1407
1546
|
this.legendHeight$ = combineLatest([this.widgetSize$.pipe(debounceTime(100)), this.legendTop$]).pipe(map(([size, top]) => {
|
|
1408
1547
|
return (size.height ?? 100) - WIDGET_HEADER_HEIGHT - top - 56; // 56px is the tooltip height + margin
|
|
1409
1548
|
}), delay(10));
|
|
1549
|
+
this.subscriptions.add(this.wmsCapabilities$
|
|
1550
|
+
.pipe(map((wmsCapabilities) => wmsCapabilities
|
|
1551
|
+
? Object.keys(wmsCapabilities)
|
|
1552
|
+
.map((url) => ({ url, layers: XMLUtils.getPossibleLayerStyles(wmsCapabilities[url]?.doc) }))
|
|
1553
|
+
.reduce((p, c) => ({ ...p, [c.url]: c }), {})
|
|
1554
|
+
: {}), startWith({}))
|
|
1555
|
+
.subscribe((possibleStyles) => (this.possibleStyles = possibleStyles)));
|
|
1556
|
+
this.hasSlideLayer$ = this.options$.pipe(map((options) => (options.layers ?? []).map((layer) => !!layer.slide).reduce((a, b) => a || b, false)));
|
|
1410
1557
|
}
|
|
1411
1558
|
initInteractionManager() {
|
|
1412
1559
|
return this.interactionManager.init(this);
|
|
1413
1560
|
}
|
|
1414
1561
|
ngAfterViewInit() {
|
|
1415
|
-
this.map = new Map({ target: this.mapRef.nativeElement });
|
|
1562
|
+
this.map = new Map({ target: this.mapRef.nativeElement, controls: defaults({ attribution: false }) });
|
|
1416
1563
|
this.interactionManager = this.initInteractionManager();
|
|
1564
|
+
this.layerSlider.init(this.map, this.sliderElement.nativeElement);
|
|
1417
1565
|
this.mapStyleUrl$ = combineLatest([this.options$, this.mapUrl$]).pipe(map(([options, url]) => {
|
|
1418
1566
|
switch (options.style) {
|
|
1419
1567
|
case this.NO_STYLE:
|
|
@@ -1443,6 +1591,16 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1443
1591
|
zoom: options.zoom?.start ?? WidgetMapUtils.DEFAULT_ZOOM_START
|
|
1444
1592
|
})), distinctUntilChanged())
|
|
1445
1593
|
.subscribe((view) => this.map.setView(new View(view)));
|
|
1594
|
+
this.options$
|
|
1595
|
+
.pipe(map((options) => options.attributions), distinctUntilChanged())
|
|
1596
|
+
.subscribe((attributions) => {
|
|
1597
|
+
if (!attributions) {
|
|
1598
|
+
this.map.removeControl(this.attributions);
|
|
1599
|
+
}
|
|
1600
|
+
else {
|
|
1601
|
+
this.map.addControl(this.attributions);
|
|
1602
|
+
}
|
|
1603
|
+
});
|
|
1446
1604
|
this.layers$ = combineLatest([
|
|
1447
1605
|
this.resultSet$,
|
|
1448
1606
|
this.options$,
|
|
@@ -1489,6 +1647,9 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1489
1647
|
if (!!impl) {
|
|
1490
1648
|
const resultLayer = impl(layer, attributesForClass, layerClassesId, resultSet, range, itemStyles, this.map);
|
|
1491
1649
|
resultLayer.set('fit', layer.fit);
|
|
1650
|
+
resultLayer.set('type', layer.type);
|
|
1651
|
+
resultLayer.set('slide', layer.slide);
|
|
1652
|
+
resultLayer.set('order', layer.order);
|
|
1492
1653
|
if (layer.type === 'relation') {
|
|
1493
1654
|
hasRelationLayer = resultLayer;
|
|
1494
1655
|
}
|
|
@@ -1500,6 +1661,9 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1500
1661
|
resultLayer.getSource().updateParams({ cql_filter });
|
|
1501
1662
|
}
|
|
1502
1663
|
}
|
|
1664
|
+
if (layer.slide && layer.slide !== 'all') {
|
|
1665
|
+
this.layerSlider.applySlide(layer.slide, resultLayer);
|
|
1666
|
+
}
|
|
1503
1667
|
return resultLayer;
|
|
1504
1668
|
}
|
|
1505
1669
|
else {
|
|
@@ -1526,13 +1690,15 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1526
1690
|
});
|
|
1527
1691
|
}
|
|
1528
1692
|
layers.push(...additionalLayers);
|
|
1529
|
-
layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));
|
|
1530
1693
|
if (options.singleLayer) {
|
|
1531
1694
|
layers.forEach((layer, idx) => {
|
|
1532
1695
|
layer.setVisible(idx === 0);
|
|
1533
1696
|
});
|
|
1534
1697
|
}
|
|
1535
|
-
|
|
1698
|
+
/* Resolve bug drawing webgllayer without nothing underneath: add empty layer below */
|
|
1699
|
+
const _layers = this.addEmptyWebGlLayerBelowSlideHeatmaps(layers);
|
|
1700
|
+
_layers.forEach((layer, index, arr) => layer.set('zIndex', arr.length - index));
|
|
1701
|
+
return _layers;
|
|
1536
1702
|
}));
|
|
1537
1703
|
this.fitExtents$ = combineLatest([
|
|
1538
1704
|
this.options$,
|
|
@@ -1565,6 +1731,12 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1565
1731
|
])
|
|
1566
1732
|
: of([])), startWith([]));
|
|
1567
1733
|
this.legendLayers$ = this.options$.pipe(map((options) => (options.layers ?? []).filter((layer) => ['geoserver', 'wms'].includes(layer.type))), delay(10));
|
|
1734
|
+
this.layersTop$ = combineLatest([this.legendTop$, this.legendLayers$]).pipe(map(([legendTop, layers]) => legendTop + ((layers.length ?? 0) > 0 ? 38 : 0)));
|
|
1735
|
+
this.subscriptions.add(combineLatest([this.layersTop$, this.olZoomElement$]).subscribe(([layersTop, zoomElement]) => {
|
|
1736
|
+
if (zoomElement) {
|
|
1737
|
+
zoomElement.style.top = `${layersTop + 5}px`;
|
|
1738
|
+
}
|
|
1739
|
+
}));
|
|
1568
1740
|
this.subscriptions.add(combineLatest([
|
|
1569
1741
|
this.mapStyleLayer$,
|
|
1570
1742
|
this.layers$,
|
|
@@ -1639,6 +1811,27 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1639
1811
|
}
|
|
1640
1812
|
}));
|
|
1641
1813
|
}
|
|
1814
|
+
addEmptyWebGlLayerBelowSlideHeatmaps(layers) {
|
|
1815
|
+
const _layers = [];
|
|
1816
|
+
for (let i = 0; i < layers.length; i++) {
|
|
1817
|
+
const layer = layers[i];
|
|
1818
|
+
_layers.push(layer);
|
|
1819
|
+
if (layer.get('type') === 'heatmap' && layer.get('slide')) {
|
|
1820
|
+
const emptyData = new Uint8Array(256 * 256 * 4);
|
|
1821
|
+
const emptyLayer = new WebGLTileLayer({
|
|
1822
|
+
source: new DataTile({
|
|
1823
|
+
loader() {
|
|
1824
|
+
return emptyData;
|
|
1825
|
+
},
|
|
1826
|
+
maxZoom: 0,
|
|
1827
|
+
wrapX: true
|
|
1828
|
+
})
|
|
1829
|
+
});
|
|
1830
|
+
_layers.push(emptyLayer);
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
return _layers;
|
|
1834
|
+
}
|
|
1642
1835
|
initResultSet$() {
|
|
1643
1836
|
return combineLatest([
|
|
1644
1837
|
this.store.select(DashboardSelectors.resultSets),
|
|
@@ -1773,6 +1966,9 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1773
1966
|
changeFit($event, layer) {
|
|
1774
1967
|
layer.fit = $event;
|
|
1775
1968
|
}
|
|
1969
|
+
changeSlide($event, layer) {
|
|
1970
|
+
layer.slide = $event;
|
|
1971
|
+
}
|
|
1776
1972
|
changeAttributions($event) {
|
|
1777
1973
|
this.optionsCopy.attributions = $event;
|
|
1778
1974
|
if (this.optionsCopy.attributions) {
|
|
@@ -1892,9 +2088,6 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1892
2088
|
// @ts-ignore
|
|
1893
2089
|
layer.clusterDistance = $event.currentTarget?.value;
|
|
1894
2090
|
}
|
|
1895
|
-
hideAddress() {
|
|
1896
|
-
this.address.nativeElement.style.display = 'none';
|
|
1897
|
-
}
|
|
1898
2091
|
changeOpacity(layer, $event) {
|
|
1899
2092
|
// @ts-ignore
|
|
1900
2093
|
layer.opacity = parseInt($event, 10);
|
|
@@ -1999,12 +2192,63 @@ class WidgetMapComponent extends DataWidgetComponent {
|
|
|
1999
2192
|
super.ngOnDestroy();
|
|
2000
2193
|
this.store.dispatch(DashboardActions.resetWmsFeatures());
|
|
2001
2194
|
}
|
|
2002
|
-
|
|
2003
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetMapComponent, selector: "pry-widget-map", viewQueries: [{ propertyName: "mapRef", first: true, predicate: ["mapRef"], descendants: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true }, { propertyName: "popupContent", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "exportTypeTemplate", first: true, predicate: ["exportTypeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "address", first: true, predicate: ["address"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"export()\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: GeometryFieldsForPipe, name: "geometryFieldsFor" }, { kind: "pipe", type: WidgetMapLegendUrlPipe, name: "legendUrl" }] }); }
|
|
2195
|
+
getStyle(_layer) {
|
|
2196
|
+
const layer = _layer;
|
|
2197
|
+
if (layer.additionalParameters?.STYLES) {
|
|
2198
|
+
return layer.additionalParameters?.STYLES;
|
|
2199
|
+
}
|
|
2200
|
+
/* Not manifest-defined style: use first in line because it's the default one sent by geoserver */
|
|
2201
|
+
const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };
|
|
2202
|
+
let possiblesStylesForLayer = possibleStylesForUrl.layers[layer.paramLayer];
|
|
2203
|
+
if (!possiblesStylesForLayer) {
|
|
2204
|
+
possiblesStylesForLayer = possibleStylesForUrl.layers[(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };
|
|
2205
|
+
}
|
|
2206
|
+
return possiblesStylesForLayer.styles[0]?.id;
|
|
2207
|
+
}
|
|
2208
|
+
changeLayerStyle($event, _layer) {
|
|
2209
|
+
const layer = _layer;
|
|
2210
|
+
if (!layer.additionalParameters) {
|
|
2211
|
+
layer.additionalParameters = {};
|
|
2212
|
+
}
|
|
2213
|
+
layer.additionalParameters.STYLES = $event;
|
|
2214
|
+
}
|
|
2215
|
+
getAsWmsType(_layer) {
|
|
2216
|
+
return _layer;
|
|
2217
|
+
}
|
|
2218
|
+
layerStyleOptions(_layer) {
|
|
2219
|
+
const layer = _layer;
|
|
2220
|
+
const possibleStylesForUrl = this.possibleStyles[layer.url] ?? { layers: {} };
|
|
2221
|
+
let possiblesStylesForLayer = possibleStylesForUrl.layers[layer.paramLayer];
|
|
2222
|
+
if (!possiblesStylesForLayer) {
|
|
2223
|
+
possiblesStylesForLayer = possibleStylesForUrl.layers[(layer.paramLayer ?? ':').split(':')[1]] ?? { styles: [] };
|
|
2224
|
+
}
|
|
2225
|
+
return possiblesStylesForLayer.styles;
|
|
2226
|
+
}
|
|
2227
|
+
triggerLayerRender() {
|
|
2228
|
+
this.map.render();
|
|
2229
|
+
}
|
|
2230
|
+
changeSlideOption($event) {
|
|
2231
|
+
this.optionsCopy.slide = $event;
|
|
2232
|
+
}
|
|
2233
|
+
toggleMenu() {
|
|
2234
|
+
this.actionMenuOpen$.next(!this.actionMenuOpen$.getValue());
|
|
2235
|
+
}
|
|
2236
|
+
getOlZoomElement() {
|
|
2237
|
+
this.olZoomElement$.next(document.querySelector('.ol-zoom'));
|
|
2238
|
+
if (!this.olZoomElement$.getValue()) {
|
|
2239
|
+
setTimeout(() => this.getOlZoomElement(), 50);
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
changeSelection(action) {
|
|
2243
|
+
this.interactionManager.selectionInteraction.changeSelection(action);
|
|
2244
|
+
this.toggleMenu();
|
|
2245
|
+
}
|
|
2246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i2.TooltipFactoryService }, { token: i2.SymbolService }, { token: i0.Injector }, { token: WidgetMapLayerService }, { token: i2.PryAggregationService }, { token: i0.ElementRef }, { token: PRY_GEOAUTH_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WidgetMapComponent, selector: "pry-widget-map", viewQueries: [{ propertyName: "mapRef", first: true, predicate: ["mapRef"], descendants: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true }, { propertyName: "popupContent", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "exportTypeTemplate", first: true, predicate: ["exportTypeTemplate"], descendants: true, read: TemplateRef }, { propertyName: "sliderElement", first: true, predicate: ["sliderElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"optionsCopy.slide ?? false\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"['geoserver', 'wms'].includes(layer.type)\">\n <ng-container *ngIf=\"getAsWmsType(layer) as wmslayer\">\n <label class=\"a-label\" for=\"map_layerStyle\">{{ '@pry.widget.map.layerStyle' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_layerStyle\"\n ></pry-select>\n </ng-container>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.slide ?? false\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [class.-selected]=\"(interactionManager.selectionInteraction.selectionType$ | async) === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: PryWidgetMapCssComponent, selector: "pry-widget-map-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: GeometryFieldsForPipe, name: "geometryFieldsFor" }, { kind: "pipe", type: WidgetMapLegendUrlPipe, name: "legendUrl" }] }); }
|
|
2004
2248
|
}
|
|
2005
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
2249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapComponent, decorators: [{
|
|
2006
2250
|
type: Component,
|
|
2007
|
-
args: [{ selector: 'pry-widget-map', template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div class=\"m-btn-group -selection-choice\" [style.transform]=\"bottomLeft$ | async\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"interactionManager.selectionInteraction.changeSelection(action)\"\n [class.-selected]=\"interactionManager.selectionInteraction.selectionType === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n *ngIf=\"(actions$ | async)?.includes('export')\"\n >\n <pry-icon iconSvg=\"file_download\" (click)=\"export()\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n <div\n #address\n class=\"m-tooltip m-tooltip--address tooltip-address\"\n [style.display]=\"'none'\"\n (click)=\"hideAddress()\"\n ></div>\n</div>\n" }]
|
|
2251
|
+
args: [{ selector: 'pry-widget-map', template: "<pry-widget-map-css></pry-widget-map-css>\n<div class=\"o-widget o-widget--map\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n #header\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_style\">{{ '@pry.widget.map.style' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeStyle($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"styles$ | async\"\n [ngModel]=\"optionsCopy.style\"\n bindLabel=\"label\"\n bindValue=\"identifier\"\n id=\"map_style\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.style === STYLE_FROM_URL\">\n <label class=\"a-label\" for=\"style_URL\">{{ '@pry.widget.map.styleUrl' | i18n }}</label>\n <input\n id=\"style_URL\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeStyleURL($event)\"\n [value]=\"optionsCopy.styleURL ?? ''\"\n />\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeSingleLayer($event)\" [ngModel]=\"optionsCopy.singleLayer ?? false\">\n {{ '@pry.widget.map.singleLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAutoLayer($event)\" [ngModel]=\"optionsCopy.automaticLayers ?? false\">\n {{ '@pry.widget.map.autoLayer' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeAttributions($event)\" [ngModel]=\"optionsCopy.attributions ?? false\">\n {{ '@pry.widget.map.attributions' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox (ngModelChange)=\"changeSlideOption($event)\" [ngModel]=\"optionsCopy.slide ?? false\">\n {{ '@pry.widget.map.slide.global' | i18n }}\n </pry-checkbox>\n\n <div class=\"o-settings__popup__content__actions -has-separator\">\n <button type=\"button\" (click)=\"addLayer()\" class=\"a-btn a-btn--icon-text -link-like\">\n <pry-icon iconSvg=\"library_add\"></pry-icon>\n {{ '@pry.widget.map.addLayer' | i18n }}\n </button>\n </div>\n\n <div *ngFor=\"let layer of optionsCopy?.layers; let i = index\" class=\"o-settings__popup__content__fields\">\n <div class=\"o-settings__popup__content__fields__head\">\n <h3 class=\"a-h3 settings-layer-title__title\">{{ '@pry.widget.map.layer' | i18n : { index: i + 1 } }}</h3>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"invertLayers(i, i - 1)\" *ngIf=\"i > 0\">\n <pry-icon iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n (click)=\"invertLayers(i, i + 1)\"\n *ngIf=\"i < (optionsCopy?.layers?.length ?? 0) - 1\"\n >\n <pry-icon iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields__content\">\n <pry-range\n [ngModel]=\"(layer?.opacity ?? 100) + ''\"\n (ngModelChange)=\"changeOpacity(layer, $event)\"\n labelTranslate=\"@pry.widget.map.opacity\"\n min=\"0\"\n max=\"100\"\n ></pry-range>\n\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.layerOptions' | i18n : { index: i + 1 } }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_layerTitle\">{{ '@pry.widget.map.layerTitle' | i18n }}</label>\n <input\n id=\"map_layerTitle\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeTitle($event, layer)\"\n [value]=\"layer.title ?? ''\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"!['geoserver', 'auto'].includes(layer.type)\">\n <label class=\"a-label\" for=\"map_layerType\">{{ '@pry.widget.map.layerType.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerType($event, i)\"\n [bindData]=\"true\"\n [itemsAsOption]=\"true\"\n [items]=\"layerTypes\"\n [labelTranslate]=\"true\"\n [ngModel]=\"layer.type\"\n baseTranslate=\"@pry.widget.map.layerType.\"\n class=\"a-pry-select\"\n id=\"map_layerType\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"['geoserver', 'wms'].includes(layer.type)\">\n <ng-container *ngIf=\"getAsWmsType(layer) as wmslayer\">\n <label class=\"a-label\" for=\"map_layerStyle\">{{ '@pry.widget.map.layerStyle' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLayerStyle($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"layerStyleOptions(layer)\"\n [ngModel]=\"getStyle(layer)\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_layerStyle\"\n ></pry-select>\n </ng-container>\n </div>\n\n <pry-checkbox (ngModelChange)=\"changeFit($event, layer)\" [ngModel]=\"layer.fit\">\n {{ '@pry.widget.map.fit' | i18n }}\n </pry-checkbox>\n\n <div\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile' &&\n layer.type !== 'auto'\n \"\n class=\"m-form-label-field\"\n >\n <label class=\"a-label\" for=\"map_classes\">{{ '@pry.widget.map.classes' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeClasses($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"usedClasses$ | async\"\n [multiple]=\"true\"\n [ngModel]=\"layer.classes\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"map_classes\"\n ></pry-select>\n </div>\n </fieldset>\n </div>\n\n <fieldset\n *ngIf=\"\n layer.type !== 'relation' &&\n layer.type !== 'wms' &&\n layer.type !== 'wmts' &&\n layer.type !== 'geoserver' &&\n layer.type !== 'featurelayer' &&\n layer.type !== 'vectortile' &&\n layer.type !== 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.locationAttr' | i18n }}</legend>\n <ng-container\n *ngIf=\"\n layer\n | geometryFieldsFor : { resultSet: resultSet$, classes: layer.classes, type: layer.type }\n | async as fields\n \"\n >\n <div\n *ngIf=\"\n ['heatmap', 'bubble', 'marker', 'point', 'line', 'polygon', 'multi-line', 'multi-polygon'].indexOf(\n layer.type\n ) >= 0\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_locationAttribute_both\">{{\n '@pry.widget.map.locationAttribute.both' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeLocationAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layer.attribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_locationAttribute_both\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n\n <div *ngIf=\"['heatmap', 'bubble'].indexOf(layer.type) >= 0\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_intensityAttribute\">{{\n '@pry.widget.map.intensityAttribute' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeIntensityAttributes($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"fields\"\n [ngModel]=\"layerHasIntensity(layer).intensityAttribute\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"map_intensityAttribute\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n </fieldset>\n\n <fieldset\n *ngIf=\"\n layer.type === 'wms' ||\n layer.type === 'wmts' ||\n layer.type === 'featurelayer' ||\n layer.type === 'vectortile' ||\n layer.type === 'rastertile'\n \"\n >\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.tile' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"map_wms_url\">{{ '@pry.widget.map.wms.url' | i18n }}</label>\n <input\n id=\"map_wms_url\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeUrl($event, layer)\"\n [value]=\"layer.url\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms' || layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_paramLayer\">{{ '@pry.widget.map.wms.paramLayer' | i18n }}</label>\n <input\n id=\"map_wms_paramLayer\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamLayer($event, layer)\"\n [value]=\"layer.paramLayer\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_matrixSet\">{{ '@pry.widget.map.wms.matrixSet' | i18n }}</label>\n <input\n id=\"map_wms_matrixSet\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeMatrixSet($event, layer)\"\n [value]=\"layer.matrixSet\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wmts'\">\n <label class=\"a-label\" for=\"map_wms_style\">{{ '@pry.widget.map.wms.style' | i18n }}</label>\n <input\n id=\"map_wms_style\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeParamStyle($event, layer)\"\n [value]=\"layer.style\"\n />\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"layer.type === 'wms'\">\n <pry-checkbox (ngModelChange)=\"changeParamTiled($event, layer)\" [ngModel]=\"layer?.paramTiled ?? false\">\n {{ '@pry.widget.map.wms.paramTiled' | i18n }}\n </pry-checkbox>\n </div>\n </fieldset>\n\n <fieldset *ngIf=\"layer.type === 'marker'\">\n <legend class=\"u-visually-hidden\">{{ '@pry.widget.map.clustering' | i18n }}</legend>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeClustered(layer, $event)\" [ngModel]=\"layer.clustered\">\n {{ '@pry.widget.map.clustered' | i18n }}\n </pry-checkbox>\n </div>\n <div *ngIf=\"layer.clustered\">\n <pry-range\n [ngModel]=\"layer.clustered\"\n (ngModelChange)=\"changeClusterDistance(layer, $event)\"\n labelTranslate=\"@pry.widget.map.clusterDistance\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </div>\n </fieldset>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.slide ?? false\">\n <label class=\"a-label\" for=\"slide_select\">{{ '@pry.widget.map.slide.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSlide($event, layer)\"\n [itemsAsOption]=\"true\"\n [items]=\"slides\"\n [ngModel]=\"layer.slide ?? 'all'\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"slide_select\"\n class=\"a-pry-select\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"optionsCopy.attributions\">\n <label class=\"a-label\" for=\"attribution\">{{ '@pry.widget.map.attribution' | i18n }}</label>\n <input\n id=\"attribution\"\n class=\"a-form-field\"\n type=\"text\"\n (input)=\"changeAttribution($event, layer)\"\n [value]=\"layer.attribution ? layer.attribution : ''\"\n />\n </div>\n\n <button\n type=\"button\"\n (click)=\"deleteLayer(i, layer)\"\n class=\"a-btn a-btn--icon-text -link-like\"\n *ngIf=\"layer.type !== 'geoserver'\"\n data-func=\"delete\"\n >\n <pry-icon iconSvg=\"delete\" [width]=\"19\" [height]=\"19\"></pry-icon>\n <span>{{ '@pry.widget.map.deleteLayer' | i18n }}</span>\n </button>\n </div>\n </pry-settings>\n </pry-widget-header>\n\n <div\n class=\"m-btn-group -map-selection-choice -vertical\"\n [class.-with-header]=\"displayHeader$ | async\"\n [class.-closed]=\"!(actionMenuOpen$ | async)\"\n >\n <div class=\"-vertical\">\n <ng-container *ngFor=\"let action of basicActions$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip a-tooltip--{{ action }}\"\n (click)=\"changeSelection(action)\"\n [class.-selected]=\"(interactionManager.selectionInteraction.selectionType$ | async) === action\"\n [attr.data-tooltip]=\"'@pry.widget.map.' + action | i18n\"\n >\n <pry-icon [iconSvg]=\"action\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.' + action | i18n }}</span>\n </button>\n </ng-container>\n </div>\n\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip -map-toggle\"\n id=\"open_menu\"\n [attr.aria-expanded]=\"actionMenuOpen$ | async\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu()\"\n >\n <pry-icon\n [iconSvg]=\"(actionMenuOpen$ | async) ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"12\"\n [height]=\"24\"\n ></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"m-btn-group -map-selection-choice -map-export\" [class.-with-header]=\"displayHeader$ | async\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n id=\"export_card\"\n aria-expanded=\"false\"\n aria-controls=\"export_type\"\n aria-haspopup=\"menu\"\n [attr.data-tooltip]=\"'@pry.widget.map.export' | i18n\"\n (click)=\"export()\"\n >\n <pry-icon iconSvg=\"file_download\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.widget.map.export' | i18n }}</span>\n </button>\n </div>\n\n <div\n class=\"ol-control m-layer-switcher\"\n *ngIf=\"((layers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"layersTop$ | async\"\n >\n <button\n class=\"m-layer-switcher__toggle\"\n (click)=\"toggleLayersWindow()\"\n [title]=\"'@pry.widget.map.selectLayers' | i18n\"\n >\n <pry-icon iconSvg=\"layers\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let layer of mapLayers; let index = index\">\n <div class=\"m-layer-switcher__title\" [class.-hidden]=\"!layersTabOpen\">\n {{ layer.get('title') }}\n <ng-container *ngIf=\"!(options$ | async)?.singleLayer; else singleLayer\">\n <pry-checkbox [ngModel]=\"layer.getVisible()\" (change)=\"changeVisibility(layer)\"></pry-checkbox>\n </ng-container>\n <ng-template #singleLayer>\n <input\n type=\"radio\"\n name=\"layer\"\n [id]=\"'radio-layer-' + layer.get('title').split(' ')[0]\"\n [ngModel]=\"layerVisibleIdx\"\n [value]=\"index\"\n (change)=\"changeVisibility(layer)\"\n />\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <div\n class=\"ol-control m-layer-legend\"\n *ngIf=\"((legendLayers$ | async)?.length ?? 0) > 0\"\n [style.top.px]=\"legendTop$ | async\"\n >\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegendWindow()\" [title]=\"'@pry.widget.map.legends' | i18n\">\n <pry-icon iconSvg=\"legend\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </button>\n <ng-container *ngFor=\"let geoLayer of legendLayers$ | async; let index = index\">\n <div class=\"m-layer-legend__title\" [class.-hidden]=\"!legendTabOpen\">\n {{ geoLayer.title }}\n <ng-container *ngIf=\"isLayerRendered(geoLayer)\">\n <button class=\"m-layer-legend__toggle\" (click)=\"toggleLegend(index)\">\n <pry-icon\n [iconSvg]=\"legendTab === index ? 'chevron_top' : 'chevron_bottom'\"\n [width]=\"22\"\n [height]=\"22\"\n ></pry-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!isLayerRendered(geoLayer)\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"22\" [height]=\"22\"></pry-icon>\n </ng-container>\n </div>\n <div\n class=\"m-layer-legend__image\"\n [class.-hidden]=\"!legendTabOpen || legendTab !== index || !isLayerRendered(geoLayer)\"\n [style.max-height.px]=\"legendHeight$ | async\"\n >\n <ng-container *ngIf=\"geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) } as url\">\n <img\n [src]=\"url | getSecuredImage | async\"\n [alt]=\"'@pry.widget.map.legend' | i18n : { layer: geoLayer.title }\"\n (error)=\"imageNotProvided[index] = true\"\n />\n </ng-container>\n <ng-container *ngIf=\"!(geoLayer | legendUrl : { capabilities: (wmsCapabilities$ | async) })\">\n <p class=\"m-layer-legend__error\">{{ '@pry.widget.map.legendNotProvided' | i18n }}</p>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <div [style.height.px]=\"height$ | async\" class=\"o-map-wrapper\">\n <div class=\"o-map\">\n <div #mapRef id=\"map\"></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"0.01\"\n value=\"50\"\n #sliderElement\n class=\"o-map-slider\"\n [class.-hidden]=\"!(hasSlideLayer$ | async)\"\n (input)=\"triggerLayerRender()\"\n />\n </div>\n </div>\n\n <div #popup class=\"m-tooltip m-tooltip--popup\" [hidden]=\"true\" role=\"tooltip\">\n <div class=\"m-tooltip--popup__header\">\n <p>{{ this.tooltipIndex + 1 }} / {{ this.tooltipNumber }}</p>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(-1)\" [disabled]=\"!tooltipCanMove(-1)\">\n <pry-icon iconSvg=\"arrow_back\"></pry-icon>\n </button>\n <button class=\"a-btn a-btn--primary a-btn--icon-only\" (click)=\"tooltipMove(1)\" [disabled]=\"!tooltipCanMove(1)\">\n <pry-icon iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n <div class=\"m-tooltip--popup__container\">\n <ng-container #popupContent></ng-container>\n </div>\n </div>\n</div>\n" }]
|
|
2008
2252
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i2.TooltipFactoryService }, { type: i2.SymbolService }, { type: i0.Injector }, { type: WidgetMapLayerService }, { type: i2.PryAggregationService }, { type: i0.ElementRef }, { type: i2.PryGeoAuthService, decorators: [{
|
|
2009
2253
|
type: Optional
|
|
2010
2254
|
}, {
|
|
@@ -2022,9 +2266,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
2022
2266
|
}], exportTypeTemplate: [{
|
|
2023
2267
|
type: ViewChild,
|
|
2024
2268
|
args: ['exportTypeTemplate', { read: TemplateRef }]
|
|
2025
|
-
}],
|
|
2269
|
+
}], sliderElement: [{
|
|
2026
2270
|
type: ViewChild,
|
|
2027
|
-
args: ['
|
|
2271
|
+
args: ['sliderElement']
|
|
2028
2272
|
}] } });
|
|
2029
2273
|
|
|
2030
2274
|
const enTranslations = {
|
|
@@ -2082,6 +2326,7 @@ const enTranslations = {
|
|
|
2082
2326
|
lat: 'Latitude property',
|
|
2083
2327
|
lng: 'Longitude property'
|
|
2084
2328
|
},
|
|
2329
|
+
layerStyle: 'Layer style',
|
|
2085
2330
|
intensityAttribute: 'Intensity property',
|
|
2086
2331
|
classes: 'Classes displayed in layer',
|
|
2087
2332
|
relations: 'Display links',
|
|
@@ -2103,7 +2348,14 @@ const enTranslations = {
|
|
|
2103
2348
|
selectLayers: 'Select layers',
|
|
2104
2349
|
legends: 'Display legend',
|
|
2105
2350
|
singleLayer: 'Single layer mode',
|
|
2106
|
-
autoLayer: 'Automatic datasource layers configuration'
|
|
2351
|
+
autoLayer: 'Automatic datasource layers configuration',
|
|
2352
|
+
slide: {
|
|
2353
|
+
global: 'Use a slider',
|
|
2354
|
+
title: 'Display on slider',
|
|
2355
|
+
all: 'Everywhere',
|
|
2356
|
+
left: 'To the left',
|
|
2357
|
+
right: 'To the right'
|
|
2358
|
+
}
|
|
2107
2359
|
}
|
|
2108
2360
|
}
|
|
2109
2361
|
}
|
|
@@ -2164,6 +2416,7 @@ const frTranslations = {
|
|
|
2164
2416
|
lat: 'Propriété de la latitude',
|
|
2165
2417
|
lng: 'Propriété de la longitude'
|
|
2166
2418
|
},
|
|
2419
|
+
layerStyle: 'Style de la couche',
|
|
2167
2420
|
intensityAttribute: "Propriété de l'intensité",
|
|
2168
2421
|
classes: 'Classes affichées dans cette couche',
|
|
2169
2422
|
relations: 'Afficher les relations',
|
|
@@ -2185,7 +2438,14 @@ const frTranslations = {
|
|
|
2185
2438
|
selectLayers: 'Sélectionner les couches',
|
|
2186
2439
|
legends: 'Afficher la légende',
|
|
2187
2440
|
singleLayer: 'Mode mono-couche',
|
|
2188
|
-
autoLayer: 'Configuration automatique des sources de données'
|
|
2441
|
+
autoLayer: 'Configuration automatique des sources de données',
|
|
2442
|
+
slide: {
|
|
2443
|
+
global: 'Utiliser un curseur',
|
|
2444
|
+
title: 'Afficher selon un curseur',
|
|
2445
|
+
all: 'Partout',
|
|
2446
|
+
left: 'Uniquement à gauche',
|
|
2447
|
+
right: 'Uniquement à droite'
|
|
2448
|
+
}
|
|
2189
2449
|
}
|
|
2190
2450
|
}
|
|
2191
2451
|
}
|
|
@@ -2202,8 +2462,8 @@ class WidgetMapModule extends BaseWidgetModule {
|
|
|
2202
2462
|
getComponent() {
|
|
2203
2463
|
return WidgetMapComponent;
|
|
2204
2464
|
}
|
|
2205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
2206
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.
|
|
2465
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, deps: [{ token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2466
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, declarations: [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe], imports: [CommonModule,
|
|
2207
2467
|
FormsModule,
|
|
2208
2468
|
OverlayModule,
|
|
2209
2469
|
PryCoreModule,
|
|
@@ -2215,7 +2475,7 @@ class WidgetMapModule extends BaseWidgetModule {
|
|
|
2215
2475
|
PryOverlayModule,
|
|
2216
2476
|
PryI18nModule,
|
|
2217
2477
|
PryRangeModule], exports: [WidgetMapComponent, GeometryFieldsForPipe, PryWidgetMapCssComponent, WidgetMapLegendUrlPipe] }); }
|
|
2218
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.
|
|
2478
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, imports: [CommonModule,
|
|
2219
2479
|
FormsModule,
|
|
2220
2480
|
OverlayModule,
|
|
2221
2481
|
PryCoreModule,
|
|
@@ -2228,7 +2488,7 @@ class WidgetMapModule extends BaseWidgetModule {
|
|
|
2228
2488
|
PryI18nModule,
|
|
2229
2489
|
PryRangeModule] }); }
|
|
2230
2490
|
}
|
|
2231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
2491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WidgetMapModule, decorators: [{
|
|
2232
2492
|
type: NgModule,
|
|
2233
2493
|
args: [{
|
|
2234
2494
|
declarations: [...components],
|
|
@@ -2254,5 +2514,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
2254
2514
|
* Generated bundle index. Do not edit.
|
|
2255
2515
|
*/
|
|
2256
2516
|
|
|
2257
|
-
export { CqlUtils, GeometryFieldsForPipe, InteractionManager, NON_MANDATORY_FIT_LAYER_TYPES, PryWidgetMapCssComponent, SelectionInteraction, TOOLTIP_PADDING, WidgetMapComponent, WidgetMapLayerService, WidgetMapLegendUrlPipe, WidgetMapModule, WidgetMapUtils, XMLUtils };
|
|
2517
|
+
export { CqlUtils, GeometryFieldsForPipe, InteractionManager, LayerSlider, NON_MANDATORY_FIT_LAYER_TYPES, PryWidgetMapCssComponent, SelectionInteraction, TOOLTIP_PADDING, WidgetMapComponent, WidgetMapLayerService, WidgetMapLegendUrlPipe, WidgetMapModule, WidgetMapUtils, XMLUtils };
|
|
2258
2518
|
//# sourceMappingURL=provoly-dashboard-widgets-widget-map.mjs.map
|