@igo2/geo 1.10.0 → 1.12.0
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/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/bundles/igo2-geo.umd.js +4971 -1353
- package/bundles/igo2-geo.umd.js.map +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +2 -2
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +1 -1
- package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +6 -6
- package/esm2015/lib/catalog/catalog-library/catalog-library.module.js +1 -1
- package/esm2015/lib/catalog/catalog.module.js +1 -1
- package/esm2015/lib/catalog/index.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.abstract.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.enum.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.interface.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.service.js +117 -43
- package/esm2015/lib/catalog/shared/index.js +1 -1
- package/esm2015/lib/datasource/datasource.module.js +1 -1
- package/esm2015/lib/datasource/index.js +1 -1
- package/esm2015/lib/datasource/shared/capabilities.service.js +25 -11
- package/esm2015/lib/datasource/shared/datasource.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +84 -14
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/data.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +7 -10
- package/esm2015/lib/datasource/shared/datasources/index.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +7 -9
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +6 -1
- package/esm2015/lib/datasource/shared/datasources/wfs.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +11 -2
- package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +5 -2
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.interface.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.providers.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.service.js +1 -1
- package/esm2015/lib/datasource/shared/options/options.service.js +1 -1
- package/esm2015/lib/datasource/utils/esri-style-generator.js +1 -1
- package/esm2015/lib/datasource/utils/index.js +1 -1
- package/esm2015/lib/datasource/utils/tilegrid.js +1 -1
- package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +10 -4
- package/esm2015/lib/directions/directions-buttons/index.js +1 -1
- package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +1 -1
- package/esm2015/lib/directions/directions-inputs/index.js +1 -1
- package/esm2015/lib/directions/directions-results/directions-results.component.js +1 -1
- package/esm2015/lib/directions/directions-results/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.interface.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.provider.js +1 -1
- package/esm2015/lib/directions/directions-sources/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +1 -1
- package/esm2015/lib/directions/directions.component.js +6 -4
- package/esm2015/lib/directions/directions.module.js +1 -1
- package/esm2015/lib/directions/index.js +1 -1
- package/esm2015/lib/directions/shared/directions-source.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.enum.js +1 -1
- package/esm2015/lib/directions/shared/directions.interface.js +1 -1
- package/esm2015/lib/directions/shared/directions.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.utils.js +4 -1
- package/esm2015/lib/directions/shared/index.js +1 -1
- package/esm2015/lib/directions/shared/store.js +1 -1
- package/esm2015/lib/download/download-button/download-button.component.js +1 -1
- package/esm2015/lib/download/download-button/index.js +1 -1
- package/esm2015/lib/download/download.module.js +1 -1
- package/esm2015/lib/download/index.js +1 -1
- package/esm2015/lib/download/shared/download.interface.js +1 -1
- package/esm2015/lib/download/shared/download.service.js +1 -1
- package/esm2015/lib/download/shared/index.js +1 -1
- package/esm2015/lib/draw/draw/draw-popup.component.js +21 -15
- package/esm2015/lib/draw/draw/draw-shorcuts.component.js +1 -1
- package/esm2015/lib/draw/draw/draw.component.js +186 -77
- package/esm2015/lib/draw/draw/draw.module.js +1 -1
- package/esm2015/lib/draw/drawingTool.module.js +1 -1
- package/esm2015/lib/draw/index.js +1 -1
- package/esm2015/lib/draw/shared/draw-icon.service.js +1 -1
- package/esm2015/lib/draw/shared/draw-style.service.js +24 -5
- package/esm2015/lib/draw/shared/draw.enum.js +17 -1
- package/esm2015/lib/draw/shared/draw.interface.js +1 -1
- package/esm2015/lib/draw/shared/draw.utils.js +1 -1
- package/esm2015/lib/draw/shared/index.js +1 -1
- package/esm2015/lib/feature/feature-details/feature-details.component.js +119 -43
- package/esm2015/lib/feature/feature-details/feature-details.directive.js +2 -57
- package/esm2015/lib/feature/feature-details/feature-details.module.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.component.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.module.js +1 -1
- package/esm2015/lib/feature/feature.module.js +1 -1
- package/esm2015/lib/feature/index.js +1 -1
- package/esm2015/lib/feature/shared/feature.enums.js +1 -1
- package/esm2015/lib/feature/shared/feature.interfaces.js +1 -1
- package/esm2015/lib/feature/shared/feature.utils.js +2 -1
- package/esm2015/lib/feature/shared/index.js +1 -1
- package/esm2015/lib/feature/shared/store.js +1 -1
- package/esm2015/lib/feature/shared/strategies/in-map-extent.js +17 -4
- package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +1 -1
- package/esm2015/lib/feature/shared/strategies/index.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading-layer.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading.js +1 -1
- package/esm2015/lib/feature/shared/strategies/selection.js +1 -1
- package/esm2015/lib/feature/shared/strategies.utils.js +1 -1
- package/esm2015/lib/filter/filter.module.js +7 -4
- package/esm2015/lib/filter/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +46 -7
- package/esm2015/lib/filter/ogc-filter-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +676 -296
- package/esm2015/lib/filter/ogc-filter-time/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +296 -161
- package/esm2015/lib/filter/ogc-filterable-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +3 -2
- package/esm2015/lib/filter/ogc-filterable-list/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +1 -1
- package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +3 -2
- package/esm2015/lib/filter/shared/index.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter-time.service.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.js +24 -6
- package/esm2015/lib/filter/shared/ogc-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.service.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +1 -1
- package/esm2015/lib/filter/time-filter-button/index.js +1 -1
- package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +1 -1
- package/esm2015/lib/filter/time-filter-form/index.js +1 -1
- package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +1 -1
- package/esm2015/lib/filter/time-filter-item/index.js +1 -1
- package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +1 -1
- package/esm2015/lib/filter/time-filter-list/index.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +1 -1
- package/esm2015/lib/geo.module.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +1 -1
- package/esm2015/lib/geometry/geometry.module.js +1 -1
- package/esm2015/lib/geometry/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/draw.js +7 -2
- package/esm2015/lib/geometry/shared/controls/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
- package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.errors.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.interfaces.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.utils.js +1 -1
- package/esm2015/lib/geometry/shared/index.js +1 -1
- package/esm2015/lib/import-export/export-button/export-button.component.js +1 -1
- package/esm2015/lib/import-export/export-button/index.js +1 -1
- package/esm2015/lib/import-export/import-export/import-export.component.js +60 -11
- package/esm2015/lib/import-export/import-export/index.js +1 -1
- package/esm2015/lib/import-export/import-export.module.js +1 -1
- package/esm2015/lib/import-export/index.js +1 -1
- package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +1 -1
- package/esm2015/lib/import-export/shared/export.errors.js +1 -1
- package/esm2015/lib/import-export/shared/export.interface.js +1 -1
- package/esm2015/lib/import-export/shared/export.service.js +10 -2
- package/esm2015/lib/import-export/shared/export.type.js +1 -1
- package/esm2015/lib/import-export/shared/export.utils.js +1 -1
- package/esm2015/lib/import-export/shared/import.errors.js +1 -1
- package/esm2015/lib/import-export/shared/import.interface.js +1 -1
- package/esm2015/lib/import-export/shared/import.service.js +1 -1
- package/esm2015/lib/import-export/shared/import.utils.js +65 -38
- package/esm2015/lib/import-export/shared/index.js +1 -1
- package/esm2015/lib/import-export/style-list/index.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.interface.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.module.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.provider.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.service.js +1 -1
- package/esm2015/lib/layer/index.js +1 -1
- package/esm2015/lib/layer/layer-item/index.js +1 -1
- package/esm2015/lib/layer/layer-item/layer-item.component.js +15 -8
- package/esm2015/lib/layer/layer-legend/index.js +1 -1
- package/esm2015/lib/layer/layer-legend/layer-legend.component.js +24 -24
- package/esm2015/lib/layer/layer-legend-item/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +1 -1
- package/esm2015/lib/layer/layer-list/index.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list.component.js +2 -2
- package/esm2015/lib/layer/layer-list/layer-list.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/index.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +1 -1
- package/esm2015/lib/layer/layer.module.js +1 -1
- package/esm2015/lib/layer/shared/clusterParam.js +1 -1
- package/esm2015/lib/layer/shared/index.js +1 -1
- package/esm2015/lib/layer/shared/layer.enums.js +1 -1
- package/esm2015/lib/layer/shared/layer.service.js +44 -20
- package/esm2015/lib/layer/shared/layers/any-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/any-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/index.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.js +9 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.js +106 -47
- package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vectortile-layer.js +1 -1
- package/esm2015/lib/layer/shared/style.service.js +80 -11
- package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
- package/esm2015/lib/layer/track-feature-button/index.js +1 -1
- package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +1 -1
- package/esm2015/lib/layer/utils/image-watcher.js +1 -1
- package/esm2015/lib/layer/utils/index.js +1 -1
- package/esm2015/lib/layer/utils/layer.utils.js +1 -1
- package/esm2015/lib/layer/utils/layerSync-watcher.js +3 -3
- package/esm2015/lib/layer/utils/outputLegend.js +5 -3
- package/esm2015/lib/layer/utils/tile-watcher.js +1 -1
- package/esm2015/lib/layer/utils/vector-watcher.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/index.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +1 -1
- package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +52 -17
- package/esm2015/lib/map/geolocate-button/index.js +1 -1
- package/esm2015/lib/map/home-extent-button/home-extent-button.component.js +69 -0
- package/esm2015/lib/map/home-extent-button/index.js +2 -0
- package/esm2015/lib/map/index.js +4 -1
- package/esm2015/lib/map/info-section/index.js +2 -0
- package/esm2015/lib/map/info-section/info-section.component.js +36 -0
- package/esm2015/lib/map/map-browser/index.js +1 -1
- package/esm2015/lib/map/map-browser/map-browser.component.js +2 -2
- package/esm2015/lib/map/map-center/index.js +1 -1
- package/esm2015/lib/map/map-center/map-center.component.js +2 -2
- package/esm2015/lib/map/map.module.js +16 -1
- package/esm2015/lib/map/menu-button/index.js +1 -1
- package/esm2015/lib/map/menu-button/menu-button.component.js +1 -1
- package/esm2015/lib/map/offline-button/index.js +1 -1
- package/esm2015/lib/map/offline-button/offline-button.component.js +1 -1
- package/esm2015/lib/map/rotation-button/index.js +1 -1
- package/esm2015/lib/map/rotation-button/rotation-button.component.js +1 -1
- package/esm2015/lib/map/shared/controllers/controller.js +1 -1
- package/esm2015/lib/map/shared/controllers/geolocation.js +295 -0
- package/esm2015/lib/map/shared/controllers/index.js +2 -1
- package/esm2015/lib/map/shared/controllers/view.js +17 -1
- package/esm2015/lib/map/shared/hover-feature.directive.js +9 -7
- package/esm2015/lib/map/shared/index.js +1 -1
- package/esm2015/lib/map/shared/map-pointer-position.directive.js +1 -1
- package/esm2015/lib/map/shared/map.enums.js +1 -1
- package/esm2015/lib/map/shared/map.interface.js +1 -1
- package/esm2015/lib/map/shared/map.js +14 -135
- package/esm2015/lib/map/shared/map.service.js +1 -1
- package/esm2015/lib/map/shared/map.utils.js +1 -1
- package/esm2015/lib/map/shared/mapOffline.directive.js +17 -6
- package/esm2015/lib/map/shared/projection.interfaces.js +1 -1
- package/esm2015/lib/map/shared/projection.service.js +1 -1
- package/esm2015/lib/map/shared/projection.utils.js +1 -1
- package/esm2015/lib/map/swipe-control/index.js +1 -1
- package/esm2015/lib/map/swipe-control/swipe-control.component.js +1 -1
- package/esm2015/lib/map/utils/layer-watcher.js +1 -1
- package/esm2015/lib/map/wake-lock-button/index.js +2 -0
- package/esm2015/lib/map/wake-lock-button/wake-lock-button.component.js +122 -0
- package/esm2015/lib/map/zoom-button/index.js +1 -1
- package/esm2015/lib/map/zoom-button/zoom-button.component.js +1 -1
- package/esm2015/lib/measure/index.js +1 -1
- package/esm2015/lib/measure/measure.module.js +1 -1
- package/esm2015/lib/measure/measurer/measure-format.pipe.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-dialog.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-item.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer.component.js +7 -1
- package/esm2015/lib/measure/measurer/measurer.module.js +1 -1
- package/esm2015/lib/measure/shared/index.js +1 -1
- package/esm2015/lib/measure/shared/measure.enum.js +1 -1
- package/esm2015/lib/measure/shared/measure.interfaces.js +1 -1
- package/esm2015/lib/measure/shared/measure.utils.js +1 -1
- package/esm2015/lib/metadata/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +1 -1
- package/esm2015/lib/metadata/metadata.module.js +1 -1
- package/esm2015/lib/metadata/shared/index.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.interface.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.service.js +1 -1
- package/esm2015/lib/offline/geoDB/geoDB.enums.js +6 -0
- package/esm2015/lib/offline/geoDB/geoDB.interface.js +2 -0
- package/esm2015/lib/offline/geoDB/geoDB.service.js +161 -0
- package/esm2015/lib/offline/geoDB/index.js +4 -0
- package/esm2015/lib/offline/index.js +3 -0
- package/esm2015/lib/offline/shared/geo-network.service.js +66 -0
- package/esm2015/lib/offline/shared/index.js +2 -0
- package/esm2015/lib/overlay/index.js +1 -1
- package/esm2015/lib/overlay/overlay.module.js +1 -1
- package/esm2015/lib/overlay/shared/index.js +1 -1
- package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.directive.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.enum.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.service.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.utils.js +3 -3
- package/esm2015/lib/print/index.js +1 -1
- package/esm2015/lib/print/print/print.component.js +1 -1
- package/esm2015/lib/print/print-form/index.js +1 -1
- package/esm2015/lib/print/print-form/print-form.component.js +1 -1
- package/esm2015/lib/print/print.module.js +1 -1
- package/esm2015/lib/print/shared/index.js +1 -1
- package/esm2015/lib/print/shared/print.interface.js +1 -1
- package/esm2015/lib/print/shared/print.service.js +22 -16
- package/esm2015/lib/print/shared/print.type.js +1 -1
- package/esm2015/lib/query/index.js +1 -1
- package/esm2015/lib/query/query.module.js +5 -4
- package/esm2015/lib/query/shared/index.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.providers.js +1 -1
- package/esm2015/lib/query/shared/query.directive.js +4 -1
- package/esm2015/lib/query/shared/query.enums.js +1 -1
- package/esm2015/lib/query/shared/query.interfaces.js +1 -1
- package/esm2015/lib/query/shared/query.service.js +67 -18
- package/esm2015/lib/query/shared/query.utils.js +1 -1
- package/esm2015/lib/search/index.js +1 -1
- package/esm2015/lib/search/search-bar/search-bar.component.js +4 -2
- package/esm2015/lib/search/search-bar/search-bar.module.js +1 -1
- package/esm2015/lib/search/search-bar/search-url-param.directive.js +1 -1
- package/esm2015/lib/search/search-results/search-results-add-button.component.js +7 -7
- package/esm2015/lib/search/search-results/search-results-item.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.module.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.component.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.module.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.component.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.module.js +1 -1
- package/esm2015/lib/search/search.module.js +1 -1
- package/esm2015/lib/search/shared/index.js +1 -1
- package/esm2015/lib/search/shared/search-pointer-summary.directive.js +2 -1
- package/esm2015/lib/search/shared/search-source-service.providers.js +1 -1
- package/esm2015/lib/search/shared/search-source.service.js +1 -1
- package/esm2015/lib/search/shared/search.enums.js +1 -1
- package/esm2015/lib/search/shared/search.interfaces.js +1 -1
- package/esm2015/lib/search/shared/search.service.js +1 -1
- package/esm2015/lib/search/shared/search.utils.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/index.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.js +2 -2
- package/esm2015/lib/search/shared/sources/nominatim.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/source.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/source.js +3 -3
- package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/storedqueries.js +2 -2
- package/esm2015/lib/search/shared/sources/storedqueries.providers.js +1 -1
- package/esm2015/lib/toast/index.js +1 -1
- package/esm2015/lib/toast/toast.component.js +1 -1
- package/esm2015/lib/toast/toast.module.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.interface.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.js +1 -1
- package/esm2015/lib/utils/googleLinks.js +1 -1
- package/esm2015/lib/utils/id-generator.js +1 -1
- package/esm2015/lib/utils/index.js +1 -1
- package/esm2015/lib/utils/osmLinks.js +1 -1
- package/esm2015/lib/wkt/index.js +1 -1
- package/esm2015/lib/wkt/shared/index.js +1 -1
- package/esm2015/lib/wkt/shared/wkt.service.js +15 -15
- package/esm2015/lib/wkt/wkt.module.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +56 -0
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +38 -0
- package/esm2015/lib/workspace/confirmation-popup/index.js +3 -0
- package/esm2015/lib/workspace/index.js +2 -1
- package/esm2015/lib/workspace/shared/edition-workspace.js +279 -0
- package/esm2015/lib/workspace/shared/edition-workspace.service.js +646 -0
- package/esm2015/lib/workspace/shared/feature-workspace.js +18 -1
- package/esm2015/lib/workspace/shared/feature-workspace.service.js +36 -10
- package/esm2015/lib/workspace/shared/index.js +3 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.js +18 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.service.js +36 -9
- package/esm2015/lib/workspace/shared/wms-workspace.service.js +87 -19
- package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
- package/esm2015/lib/workspace/widgets/index.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +1 -1
- package/esm2015/lib/workspace/widgets/widgets.js +1 -1
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +40 -10
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +1 -1
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +22 -8
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +1 -1
- package/esm2015/lib/workspace/workspace.module.js +19 -7
- package/esm2015/public_api.js +2 -1
- package/fesm2015/igo2-geo.js +4487 -1380
- package/fesm2015/igo2-geo.js.map +1 -1
- package/lib/catalog/shared/catalog.interface.d.ts +9 -1
- package/lib/catalog/shared/catalog.service.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +50 -0
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -1
- package/lib/directions/directions.component.d.ts +2 -1
- package/lib/draw/draw/draw-popup.component.d.ts +4 -2
- package/lib/draw/draw/draw.component.d.ts +19 -2
- package/lib/draw/shared/draw-style.service.d.ts +6 -0
- package/lib/draw/shared/draw.enum.d.ts +15 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +12 -2
- package/lib/feature/feature-details/feature-details.directive.d.ts +2 -13
- package/lib/filter/filter.module.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +31 -13
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -0
- package/lib/filter/shared/ogc-filter.interface.d.ts +20 -2
- package/lib/geometry/shared/controls/draw.d.ts +8 -4
- package/lib/geometry/shared/controls/modify.d.ts +3 -4
- package/lib/geometry/shared/controls/slice.d.ts +3 -4
- package/lib/import-export/shared/import.utils.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +1 -0
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/shared/layer.service.d.ts +6 -3
- package/lib/layer/shared/layers/layer.d.ts +6 -0
- package/lib/layer/shared/layers/layer.interface.d.ts +9 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +7 -2
- package/lib/layer/shared/style.service.d.ts +38 -3
- package/lib/layer/shared/vector-style.interface.d.ts +11 -0
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +8 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -0
- package/lib/map/home-extent-button/index.d.ts +1 -0
- package/lib/map/index.d.ts +3 -0
- package/lib/map/info-section/index.d.ts +1 -0
- package/lib/map/info-section/info-section.component.d.ts +7 -0
- package/lib/map/map.module.d.ts +20 -17
- package/lib/map/shared/controllers/geolocation.d.ts +111 -0
- package/lib/map/shared/controllers/index.d.ts +1 -0
- package/lib/map/shared/controllers/view.d.ts +7 -0
- package/lib/map/shared/hover-feature.directive.d.ts +1 -1
- package/lib/map/shared/map.d.ts +6 -19
- package/lib/map/shared/map.interface.d.ts +0 -1
- package/lib/map/shared/mapOffline.directive.d.ts +1 -0
- package/lib/map/wake-lock-button/index.d.ts +1 -0
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -0
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -0
- package/lib/offline/geoDB/geoDB.interface.d.ts +9 -0
- package/lib/offline/geoDB/geoDB.service.d.ts +35 -0
- package/lib/offline/geoDB/index.d.ts +3 -0
- package/lib/offline/index.d.ts +2 -0
- package/lib/offline/shared/geo-network.service.d.ts +28 -0
- package/lib/offline/shared/index.d.ts +1 -0
- package/lib/print/shared/print.service.d.ts +3 -2
- package/lib/query/query.module.d.ts +2 -1
- package/lib/query/shared/query.interfaces.d.ts +1 -0
- package/lib/query/shared/query.service.d.ts +7 -1
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -0
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -0
- package/lib/workspace/confirmation-popup/index.d.ts +2 -0
- package/lib/workspace/index.d.ts +1 -0
- package/lib/workspace/shared/edition-workspace.d.ts +82 -0
- package/lib/workspace/shared/edition-workspace.service.d.ts +48 -0
- package/lib/workspace/shared/feature-workspace.d.ts +3 -0
- package/lib/workspace/shared/feature-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/index.d.ts +2 -0
- package/lib/workspace/shared/wfs-workspace.d.ts +3 -0
- package/lib/workspace/shared/wfs-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/wms-workspace.service.d.ts +7 -2
- package/lib/workspace/shared/workspace.utils.d.ts +3 -2
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +10 -3
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -1
- package/lib/workspace/workspace.module.d.ts +8 -5
- package/ngcc.config.js +3 -3
- package/package.json +7 -5
- package/public_api.d.ts +1 -0
- package/style/geo.theming.scss +12 -11
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Workspace } from '@igo2/common';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { VectorLayer } from '../../layer';
|
|
4
|
+
import { ConfirmationPopupComponent } from '../confirmation-popup/confirmation-popup.component';
|
|
5
|
+
import { DrawControl } from '../../geometry';
|
|
6
|
+
import { createInteractionStyle, GeometryType } from '../../draw';
|
|
7
|
+
import { featureToOl } from '../../feature';
|
|
8
|
+
import OlGeoJSON from 'ol/format/GeoJSON';
|
|
9
|
+
import OlVectorSource from 'ol/source/Vector';
|
|
10
|
+
import * as OlStyle from 'ol/style';
|
|
11
|
+
import OlModify from 'ol/interaction/Modify';
|
|
12
|
+
import Collection from 'ol/Collection';
|
|
13
|
+
import { FeatureDataSource } from '../../datasource/shared';
|
|
14
|
+
export class EditionWorkspace extends Workspace {
|
|
15
|
+
constructor(options, editionWorkspaceService, dialog, configService) {
|
|
16
|
+
super(options);
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.editionWorkspaceService = editionWorkspaceService;
|
|
19
|
+
this.dialog = dialog;
|
|
20
|
+
this.configService = configService;
|
|
21
|
+
this.inResolutionRange$ = new BehaviorSubject(true);
|
|
22
|
+
this.olDrawingLayerSource = new OlVectorSource();
|
|
23
|
+
this.geometryType = GeometryType; // Reference to the GeometryType enum
|
|
24
|
+
this.modifyStyle = new OlStyle.Style({
|
|
25
|
+
stroke: new OlStyle.Stroke({
|
|
26
|
+
color: 'rgba(255,255,255,1)',
|
|
27
|
+
width: 1
|
|
28
|
+
}),
|
|
29
|
+
fill: new OlStyle.Fill({
|
|
30
|
+
color: 'rgba(0,161,222,1)'
|
|
31
|
+
}),
|
|
32
|
+
image: new OlStyle.Circle({
|
|
33
|
+
radius: 7,
|
|
34
|
+
stroke: new OlStyle.Stroke({
|
|
35
|
+
color: 'rgba(255,255,255,1)',
|
|
36
|
+
width: 1
|
|
37
|
+
}),
|
|
38
|
+
fill: new OlStyle.Fill({
|
|
39
|
+
color: 'rgba(0,161,222,1)'
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
this.newFeaturefilterClauseFunc = (record) => {
|
|
44
|
+
return record.state.newFeature === true;
|
|
45
|
+
};
|
|
46
|
+
this.editFeaturefilterClauseFunc = (record) => {
|
|
47
|
+
return record.state.edit === true;
|
|
48
|
+
};
|
|
49
|
+
this.map.viewController.resolution$.subscribe((mapResolution) => {
|
|
50
|
+
if (mapResolution > this.layer.minResolution && mapResolution < this.layer.maxResolution) {
|
|
51
|
+
this.inResolutionRange$.next(true);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.inResolutionRange$.next(false);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
this.drawControl = this.createDrawControl();
|
|
58
|
+
this.drawControl.setGeometryType(this.geometryType.Point);
|
|
59
|
+
this.map.removeLayer(this.olDrawingLayer);
|
|
60
|
+
this.olDrawingLayer = new VectorLayer({
|
|
61
|
+
id: 'igo-draw-layer',
|
|
62
|
+
title: 'edition',
|
|
63
|
+
zIndex: 300,
|
|
64
|
+
source: new FeatureDataSource(),
|
|
65
|
+
showInLayerList: false,
|
|
66
|
+
exportable: false,
|
|
67
|
+
browsable: false,
|
|
68
|
+
workspace: {
|
|
69
|
+
enabled: false
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
get layer() { return this.options.layer; }
|
|
74
|
+
get map() { return this.options.map; }
|
|
75
|
+
getInResolutionRange() {
|
|
76
|
+
return this.inResolutionRange$.value;
|
|
77
|
+
}
|
|
78
|
+
deleteFeature(feature, workspace) {
|
|
79
|
+
setTimeout(() => {
|
|
80
|
+
const dialogRef = this.dialog.open(ConfirmationPopupComponent, {
|
|
81
|
+
disableClose: false,
|
|
82
|
+
data: { type: 'delete' }
|
|
83
|
+
});
|
|
84
|
+
dialogRef.afterClosed().subscribe(result => {
|
|
85
|
+
if (result === false) {
|
|
86
|
+
const baseUrl = workspace.layer.dataSource.options.edition.baseUrl;
|
|
87
|
+
const deleteUrl = workspace.layer.dataSource.options.edition.deleteUrl;
|
|
88
|
+
let id;
|
|
89
|
+
let url;
|
|
90
|
+
if (baseUrl) {
|
|
91
|
+
url = this.configService.getConfig('edition.url') + baseUrl + '?' + deleteUrl;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
url = this.configService.getConfig('edition.url') + deleteUrl;
|
|
95
|
+
}
|
|
96
|
+
for (const column of workspace.meta.tableTemplate.columns) {
|
|
97
|
+
for (const property in feature.properties) {
|
|
98
|
+
let columnName = column.name;
|
|
99
|
+
if (columnName.includes('properties.')) {
|
|
100
|
+
columnName = columnName.split('.')[1];
|
|
101
|
+
}
|
|
102
|
+
if (columnName === property && column.primary === true) {
|
|
103
|
+
id = feature.properties[property];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (url) {
|
|
108
|
+
url += id;
|
|
109
|
+
this.editionWorkspaceService.deleteFeature(workspace, url);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}, 250);
|
|
114
|
+
}
|
|
115
|
+
editFeature(feature, workspace) {
|
|
116
|
+
feature.edition = true;
|
|
117
|
+
let id;
|
|
118
|
+
let find = false;
|
|
119
|
+
const editionOpt = workspace.layer.dataSource.options.edition;
|
|
120
|
+
for (const column of workspace.meta.tableTemplate.columns) {
|
|
121
|
+
// Update domain list
|
|
122
|
+
if (column.type === 'list' || column.type === 'autocomplete') {
|
|
123
|
+
this.editionWorkspaceService.getDomainValues(column.relation).subscribe(result => {
|
|
124
|
+
column.domainValues = result;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (find === false) {
|
|
128
|
+
for (const property in feature.properties) {
|
|
129
|
+
let columnName = column.name;
|
|
130
|
+
if (columnName.includes('properties.')) {
|
|
131
|
+
columnName = columnName.split('.')[1];
|
|
132
|
+
}
|
|
133
|
+
if (columnName === property && column.primary === true) {
|
|
134
|
+
id = feature.properties[property];
|
|
135
|
+
find = true;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (id) {
|
|
142
|
+
feature.original_properties = JSON.parse(JSON.stringify(feature.properties));
|
|
143
|
+
feature.original_geometry = feature.geometry;
|
|
144
|
+
feature.idkey = id;
|
|
145
|
+
workspace.entityStore.state.updateAll({ edit: false });
|
|
146
|
+
workspace.entityStore.stateView.filter(this.editFeaturefilterClauseFunc);
|
|
147
|
+
this.addFeatureToStore(feature, workspace);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// Only for edition with it's own geometry
|
|
151
|
+
if (!feature.newFeature && editionOpt.geomType) {
|
|
152
|
+
feature.newFeature = true;
|
|
153
|
+
this.editionWorkspaceService.adding$.next(true);
|
|
154
|
+
workspace.entityStore.state.updateAll({ newFeature: false });
|
|
155
|
+
workspace.entityStore.stateView.filter(this.newFeaturefilterClauseFunc);
|
|
156
|
+
if (editionOpt.addWithDraw) {
|
|
157
|
+
const geometryType = editionOpt.geomType;
|
|
158
|
+
this.onGeometryTypeChange(geometryType, feature, workspace);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
workspace.entityStore.insert(feature);
|
|
162
|
+
workspace.entityStore.state.update(feature, { newFeature: true }, true);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a Draw Control
|
|
169
|
+
* @param fillColor the fill color
|
|
170
|
+
* @param strokeColor the stroke color
|
|
171
|
+
* @param strokeWidth the stroke width
|
|
172
|
+
* @returns a Draw Control
|
|
173
|
+
*/
|
|
174
|
+
createDrawControl(fillColor, strokeColor, strokeWidth) {
|
|
175
|
+
const drawControl = new DrawControl({
|
|
176
|
+
geometryType: undefined,
|
|
177
|
+
drawingLayerSource: this.olDrawingLayerSource,
|
|
178
|
+
drawingLayerStyle: new OlStyle.Style({}),
|
|
179
|
+
interactionStyle: createInteractionStyle(fillColor, strokeColor, strokeWidth),
|
|
180
|
+
});
|
|
181
|
+
return drawControl;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Called when the user selects a new geometry type
|
|
185
|
+
* @param geometryType the geometry type selected by the user
|
|
186
|
+
*/
|
|
187
|
+
onGeometryTypeChange(geometryType, feature, workspace) {
|
|
188
|
+
this.drawControl.setGeometryType(geometryType);
|
|
189
|
+
this.toggleDrawControl(feature, workspace);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Activate the correct control
|
|
193
|
+
*/
|
|
194
|
+
toggleDrawControl(feature, workspace) {
|
|
195
|
+
this.deactivateDrawControl();
|
|
196
|
+
this.activateDrawControl(feature, workspace);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Deactivate the active draw control
|
|
200
|
+
*/
|
|
201
|
+
deactivateDrawControl() {
|
|
202
|
+
if (!this.drawControl) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (this.drawEnd$$) {
|
|
206
|
+
this.drawEnd$$.unsubscribe();
|
|
207
|
+
}
|
|
208
|
+
this.drawControl.setOlMap(undefined);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Activate a given control
|
|
212
|
+
*/
|
|
213
|
+
activateDrawControl(feature, workspace) {
|
|
214
|
+
this.drawEnd$$ = this.drawControl.end$.subscribe((olGeometry) => {
|
|
215
|
+
this.addFeatureToStore(feature, workspace, olGeometry);
|
|
216
|
+
});
|
|
217
|
+
this.drawControl.setOlMap(this.map.ol, true);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Add a feature to layer. The loading strategy of the layer
|
|
221
|
+
* will trigger and add the feature to the workspace store.
|
|
222
|
+
* @internal
|
|
223
|
+
*/
|
|
224
|
+
addFeatureToStore(feature, workspace, olGeometry) {
|
|
225
|
+
const projection = this.map.ol.getView().getProjection();
|
|
226
|
+
let geometry = feature.geometry;
|
|
227
|
+
// If an olGeometry is passed, it means that it is a new feature
|
|
228
|
+
if (olGeometry) {
|
|
229
|
+
workspace.entityStore.insert(feature);
|
|
230
|
+
workspace.entityStore.state.update(feature, { newFeature: true }, true);
|
|
231
|
+
geometry = new OlGeoJSON().writeGeometryObject(olGeometry, {
|
|
232
|
+
featureProjection: projection,
|
|
233
|
+
dataProjection: 'EPSG:4326'
|
|
234
|
+
});
|
|
235
|
+
feature.geometry = geometry;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
workspace.entityStore.state.update(feature, { edit: true }, true);
|
|
239
|
+
}
|
|
240
|
+
feature.projection = 'EPSG:4326';
|
|
241
|
+
const featureOl = featureToOl(feature, projection.getCode());
|
|
242
|
+
this.olDrawingLayer.dataSource.ol.clear();
|
|
243
|
+
this.olDrawingLayer.dataSource.ol.addFeature(featureOl);
|
|
244
|
+
this.map.addLayer(this.olDrawingLayer);
|
|
245
|
+
this.deactivateDrawControl();
|
|
246
|
+
this.createModifyInteraction(featureOl, feature, workspace);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Delete drawings layer and source from the map AND feature from the entity store.
|
|
250
|
+
* Layer refresh will automatically add the new feature into the store.
|
|
251
|
+
*/
|
|
252
|
+
deleteDrawings() {
|
|
253
|
+
this.map.removeLayer(this.olDrawingLayer);
|
|
254
|
+
this.olDrawingLayerSource.clear();
|
|
255
|
+
this.map.ol.removeInteraction(this.modify);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Create a modify interaction to allow a geometry change one feature at the time (drag and drop)
|
|
259
|
+
*/
|
|
260
|
+
createModifyInteraction(olFeature, feature, workspace) {
|
|
261
|
+
this.map.ol.removeInteraction(this.modify);
|
|
262
|
+
const olCollection = new Collection([olFeature], { unique: true });
|
|
263
|
+
this.modify = new OlModify({
|
|
264
|
+
features: olCollection
|
|
265
|
+
});
|
|
266
|
+
this.map.ol.addInteraction(this.modify);
|
|
267
|
+
olCollection.forEach(feature => {
|
|
268
|
+
feature.setStyle(this.modifyStyle);
|
|
269
|
+
});
|
|
270
|
+
this.modify.on('modifyend', (event) => {
|
|
271
|
+
var _a;
|
|
272
|
+
const olGeometry = (_a = event.features.getArray()[0]) === null || _a === void 0 ? void 0 : _a.getGeometry();
|
|
273
|
+
if (olGeometry) {
|
|
274
|
+
this.addFeatureToStore(feature, workspace, olGeometry);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi93b3Jrc3BhY2Uvc2hhcmVkL2VkaXRpb24td29ya3NwYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxTQUFTLEVBR1YsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTVDLE9BQU8sU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU81RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQStDN0MsWUFDWSxPQUFnQyxFQUNsQyx1QkFBZ0QsRUFDaEQsTUFBaUIsRUFDakIsYUFBNEI7UUFDcEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSkwsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDbEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGtC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SUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDeEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgV29ya3NwYWNlLFxyXG4gIFdvcmtzcGFjZU9wdGlvbnMsXHJcbiAgRW50aXR5UmVjb3JkXHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSW1hZ2VMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllcic7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcbmltcG9ydCB7IEVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlIH0gZnJvbSAnLi9lZGl0aW9uLXdvcmtzcGFjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtYXRpb24tcG9wdXAvY29uZmlybWF0aW9uLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYXdDb250cm9sIH0gZnJvbSAnLi4vLi4vZ2VvbWV0cnknO1xyXG5pbXBvcnQgeyBjcmVhdGVJbnRlcmFjdGlvblN0eWxlLCBHZW9tZXRyeVR5cGUgfSBmcm9tICcuLi8uLi9kcmF3JztcclxuaW1wb3J0IHsgZmVhdHVyZVRvT2wgfSBmcm9tICcuLi8uLi9mZWF0dXJlJztcclxuXHJcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5VHlwZSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnlUeXBlJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IE9sR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCBPbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcclxuaW1wb3J0ICogYXMgT2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XHJcbmltcG9ydCBPbE1vZGlmeSBmcm9tICdvbC9pbnRlcmFjdGlvbi9Nb2RpZnknO1xyXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJztcclxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRpb25Xb3Jrc3BhY2VPcHRpb25zIGV4dGVuZHMgV29ya3NwYWNlT3B0aW9ucyB7XHJcbiAgbGF5ZXI6IEltYWdlTGF5ZXIgfCBWZWN0b3JMYXllcjtcclxuICBtYXA6IElnb01hcDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVkaXRpb25Xb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2Uge1xyXG5cclxuICByZWFkb25seSBpblJlc29sdXRpb25SYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XHJcblxyXG4gIGdldCBsYXllcigpOiBJbWFnZUxheWVyIHwgVmVjdG9yTGF5ZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLmxheWVyOyB9XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHsgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXA7IH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3Q29udHJvbDogRHJhd0NvbnRyb2w7XHJcbiAgcHJpdmF0ZSBkcmF3RW5kJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG9sRHJhd2luZ0xheWVyU291cmNlID0gbmV3IE9sVmVjdG9yU291cmNlKCk7XHJcbiAgcHJpdmF0ZSBvbERyYXdpbmdMYXllcjogVmVjdG9yTGF5ZXI7XHJcbiAgcHVibGljIGdlb21ldHJ5VHlwZSA9IEdlb21ldHJ5VHlwZTsgLy8gUmVmZXJlbmNlIHRvIHRoZSBHZW9tZXRyeVR5cGUgZW51bVxyXG4gIHB1YmxpYyBtb2RpZnk7IC8vIFJlZmVyZW5jZSB0byB0aGUgb2wgaW50ZXJhY3Rpb25cclxuXHJcbiAgcHVibGljIG1vZGlmeVN0eWxlID0gbmV3IE9sU3R5bGUuU3R5bGUoe1xyXG4gICAgc3Ryb2tlOiBuZXcgT2xTdHlsZS5TdHJva2Uoe1xyXG4gICAgICBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMSknLFxyXG4gICAgICB3aWR0aDogMVxyXG4gICAgfSksXHJcbiAgICBmaWxsOiBuZXcgT2xTdHlsZS5GaWxsKHtcclxuICAgICAgY29sb3I6ICdyZ2JhKDAsMTYxLDIyMiwxKSdcclxuICAgIH0pLFxyXG4gICAgaW1hZ2U6IG5ldyBPbFN0eWxlLkNpcmNsZSh7XHJcbiAgICAgIHJhZGl1czogNyxcclxuICAgICAgc3Ryb2tlOiBuZXcgT2xTdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgIGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwxKScsXHJcbiAgICAgICAgd2lkdGg6IDFcclxuICAgICAgfSksXHJcbiAgICAgIGZpbGw6IG5ldyBPbFN0eWxlLkZpbGwoe1xyXG4gICAgICAgIGNvbG9yOiAncmdiYSgwLDE2MSwyMjIsMSknXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIG5ld0ZlYXR1cmVmaWx0ZXJDbGF1c2VGdW5jID0gKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pID0+IHtcclxuICAgIHJldHVybiByZWNvcmQuc3RhdGUubmV3RmVhdHVyZSA9PT0gdHJ1ZTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGVkaXRGZWF0dXJlZmlsdGVyQ2xhdXNlRnVuYyA9IChyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB7XHJcbiAgICByZXR1cm4gcmVjb3JkLnN0YXRlLmVkaXQgPT09IHRydWU7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGZpbGxDb2xvcjogc3RyaW5nO1xyXG4gIHB1YmxpYyBzdHJva2VDb2xvcjogc3RyaW5nO1xyXG4gIHB1YmxpYyBzdHJva2VXaWR0aDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBvcHRpb25zOiBFZGl0aW9uV29ya3NwYWNlT3B0aW9ucyxcclxuICAgIHByaXZhdGUgZWRpdGlvbldvcmtzcGFjZVNlcnZpY2U6IEVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkge1xyXG4gICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC5zdWJzY3JpYmUoKG1hcFJlc29sdXRpb24pID0+IHtcclxuICAgICAgaWYgKG1hcFJlc29sdXRpb24gPiB0aGlzLmxheWVyLm1pblJlc29sdXRpb24gJiYgbWFwUmVzb2x1dGlvbiA8IHRoaXMubGF5ZXIubWF4UmVzb2x1dGlvbikge1xyXG4gICAgICAgIHRoaXMuaW5SZXNvbHV0aW9uUmFuZ2UkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZHJhd0NvbnRyb2wgPSB0aGlzLmNyZWF0ZURyYXdDb250cm9sKCk7XHJcbiAgICB0aGlzLmRyYXdDb250cm9sLnNldEdlb21ldHJ5VHlwZSh0aGlzLmdlb21ldHJ5VHlwZS5Qb2ludCBhcyBhbnkpO1xyXG5cclxuICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKHRoaXMub2xEcmF3aW5nTGF5ZXIpO1xyXG5cclxuICAgIHRoaXMub2xEcmF3aW5nTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICBpZDogJ2lnby1kcmF3LWxheWVyJyxcclxuICAgICAgdGl0bGU6ICdlZGl0aW9uJyxcclxuICAgICAgekluZGV4OiAzMDAsXHJcbiAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICBicm93c2FibGU6IGZhbHNlLFxyXG4gICAgICB3b3Jrc3BhY2U6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluUmVzb2x1dGlvblJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5SZXNvbHV0aW9uUmFuZ2UkLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgICBkYXRhOiB7dHlwZTogJ2RlbGV0ZSd9XHJcbiAgICB9KTtcclxuXHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBjb25zdCBiYXNlVXJsID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmJhc2VVcmw7XHJcbiAgICAgICAgICBjb25zdCBkZWxldGVVcmwgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uZGVsZXRlVXJsO1xyXG4gICAgICAgICAgbGV0IGlkO1xyXG4gICAgICAgICAgbGV0IHVybDtcclxuICAgICAgICAgIGlmIChiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHVybCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJykgKyBiYXNlVXJsICsgJz8nICsgZGVsZXRlVXJsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKSArIGRlbGV0ZVVybDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlLmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZSA9IGNvbHVtbi5uYW1lO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lLmluY2x1ZGVzKCdwcm9wZXJ0aWVzLicpKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lID0gY29sdW1uTmFtZS5zcGxpdCgnLicpWzFdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoY29sdW1uTmFtZSA9PT0gcHJvcGVydHkgJiYgY29sdW1uLnByaW1hcnkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGlkID0gZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgdXJsICs9IGlkO1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlLmRlbGV0ZUZlYXR1cmUod29ya3NwYWNlLCB1cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgZWRpdEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICBmZWF0dXJlLmVkaXRpb24gPSB0cnVlO1xyXG4gICAgbGV0IGlkO1xyXG4gICAgbGV0IGZpbmQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGVkaXRpb25PcHQgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb247XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlLmNvbHVtbnMgKSB7XHJcblxyXG4gICAgICAvLyBVcGRhdGUgZG9tYWluIGxpc3RcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGlzdCcgfHwgY29sdW1uLnR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0aW9uV29ya3NwYWNlU2VydmljZS5nZXREb21haW5WYWx1ZXMoY29sdW1uLnJlbGF0aW9uKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5kb21haW5WYWx1ZXMgPSByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpbmQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gY29sdW1uLm5hbWU7XHJcbiAgICAgICAgICBpZiAoY29sdW1uTmFtZS5pbmNsdWRlcygncHJvcGVydGllcy4nKSkge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lID0gY29sdW1uTmFtZS5zcGxpdCgnLicpWzFdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbk5hbWUgPT09IHByb3BlcnR5ICYmIGNvbHVtbi5wcmltYXJ5ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGlkID0gZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcclxuICAgICAgICAgICAgZmluZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIGZlYXR1cmUub3JpZ2luYWxfcHJvcGVydGllcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmVhdHVyZS5wcm9wZXJ0aWVzKSk7XHJcbiAgICAgIGZlYXR1cmUub3JpZ2luYWxfZ2VvbWV0cnkgPSBmZWF0dXJlLmdlb21ldHJ5O1xyXG4gICAgICBmZWF0dXJlLmlka2V5ID0gaWQ7XHJcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZS51cGRhdGVBbGwoeyBlZGl0OiBmYWxzZSB9KTtcclxuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5maWx0ZXIodGhpcy5lZGl0RmVhdHVyZWZpbHRlckNsYXVzZUZ1bmMpO1xyXG4gICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPbmx5IGZvciBlZGl0aW9uIHdpdGggaXQncyBvd24gZ2VvbWV0cnlcclxuICAgICAgaWYgKCFmZWF0dXJlLm5ld0ZlYXR1cmUgJiYgZWRpdGlvbk9wdC5nZW9tVHlwZSkge1xyXG4gICAgICAgIGZlYXR1cmUubmV3RmVhdHVyZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0aW9uV29ya3NwYWNlU2VydmljZS5hZGRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7IG5ld0ZlYXR1cmU6IGZhbHNlIH0pO1xyXG4gICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuZmlsdGVyKHRoaXMubmV3RmVhdHVyZWZpbHRlckNsYXVzZUZ1bmMpO1xyXG4gICAgICAgIGlmIChlZGl0aW9uT3B0LmFkZFdpdGhEcmF3KSB7XHJcbiAgICAgICAgICBjb25zdCBnZW9tZXRyeVR5cGUgPSBlZGl0aW9uT3B0Lmdlb21UeXBlO1xyXG4gICAgICAgICAgdGhpcy5vbkdlb21ldHJ5VHlwZUNoYW5nZShnZW9tZXRyeVR5cGUsIGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5pbnNlcnQoZmVhdHVyZSk7XHJcbiAgICAgICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuc3RhdGUudXBkYXRlKGZlYXR1cmUsIHsgbmV3RmVhdHVyZTogdHJ1ZSB9LCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIERyYXcgQ29udHJvbFxyXG4gICAqIEBwYXJhbSBmaWxsQ29sb3IgdGhlIGZpbGwgY29sb3JcclxuICAgKiBAcGFyYW0gc3Ryb2tlQ29sb3IgdGhlIHN0cm9rZSBjb2xvclxyXG4gICAqIEBwYXJhbSBzdHJva2VXaWR0aCB0aGUgc3Ryb2tlIHdpZHRoXHJcbiAgICogQHJldHVybnMgYSBEcmF3IENvbnRyb2xcclxuICAgKi9cclxuICBjcmVhdGVEcmF3Q29udHJvbChmaWxsQ29sb3I/OiBzdHJpbmcsIHN0cm9rZUNvbG9yPzogc3RyaW5nLCBzdHJva2VXaWR0aD86IG51bWJlcikge1xyXG4gICAgY29uc3QgZHJhd0NvbnRyb2wgPSBuZXcgRHJhd0NvbnRyb2woe1xyXG4gICAgICBnZW9tZXRyeVR5cGU6IHVuZGVmaW5lZCxcclxuICAgICAgZHJhd2luZ0xheWVyU291cmNlOiB0aGlzLm9sRHJhd2luZ0xheWVyU291cmNlLFxyXG4gICAgICBkcmF3aW5nTGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUuU3R5bGUoe30pLFxyXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVJbnRlcmFjdGlvblN0eWxlKGZpbGxDb2xvciwgc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkcmF3Q29udHJvbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBuZXcgZ2VvbWV0cnkgdHlwZVxyXG4gICAqIEBwYXJhbSBnZW9tZXRyeVR5cGUgdGhlIGdlb21ldHJ5IHR5cGUgc2VsZWN0ZWQgYnkgdGhlIHVzZXJcclxuICAgKi9cclxuICBvbkdlb21ldHJ5VHlwZUNoYW5nZShnZW9tZXRyeVR5cGU6IHR5cGVvZiBPbEdlb21ldHJ5VHlwZSwgZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICAgIHRoaXMuZHJhd0NvbnRyb2wuc2V0R2VvbWV0cnlUeXBlKGdlb21ldHJ5VHlwZSk7XHJcbiAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woZmVhdHVyZSwgd29ya3NwYWNlKTtcclxuICAgIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgdGhlIGNvcnJlY3QgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd0NvbnRyb2woZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG4gICAgdGhpcy5hY3RpdmF0ZURyYXdDb250cm9sKGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIHRoZSBhY3RpdmUgZHJhdyBjb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIGRlYWN0aXZhdGVEcmF3Q29udHJvbCgpIHtcclxuICAgIGlmICghdGhpcy5kcmF3Q29udHJvbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZHJhd0VuZCQkKSB7XHJcbiAgICAgIHRoaXMuZHJhd0VuZCQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcmF3Q29udHJvbC5zZXRPbE1hcCh1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgYSBnaXZlbiBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZURyYXdDb250cm9sKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSkge1xyXG4gICAgdGhpcy5kcmF3RW5kJCQgPSB0aGlzLmRyYXdDb250cm9sLmVuZCQuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbEdlb21ldHJ5KSA9PiB7XHJcbiAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoZmVhdHVyZSwgd29ya3NwYWNlLCBvbEdlb21ldHJ5KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZHJhd0NvbnRyb2wuc2V0T2xNYXAodGhpcy5tYXAub2wsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB0byBsYXllci4gVGhlIGxvYWRpbmcgc3RyYXRlZ3kgb2YgdGhlIGxheWVyXHJcbiAgICogd2lsbCB0cmlnZ2VyIGFuZCBhZGQgdGhlIGZlYXR1cmUgdG8gdGhlIHdvcmtzcGFjZSBzdG9yZS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgb2xHZW9tZXRyeT86IE9sR2VvbWV0cnkpIHtcclxuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xyXG4gICAgbGV0IGdlb21ldHJ5ID0gZmVhdHVyZS5nZW9tZXRyeTtcclxuXHJcbiAgICAvLyBJZiBhbiBvbEdlb21ldHJ5IGlzIHBhc3NlZCwgaXQgbWVhbnMgdGhhdCBpdCBpcyBhIG5ldyBmZWF0dXJlXHJcbiAgICBpZiAob2xHZW9tZXRyeSkge1xyXG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuaW5zZXJ0KGZlYXR1cmUpO1xyXG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuc3RhdGUudXBkYXRlKGZlYXR1cmUsIHsgbmV3RmVhdHVyZTogdHJ1ZSB9LCB0cnVlKTtcclxuICAgICAgZ2VvbWV0cnkgPSBuZXcgT2xHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XHJcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXHJcbiAgICAgICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnXHJcbiAgICAgIH0pIGFzIGFueTtcclxuXHJcbiAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBnZW9tZXRyeTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZS51cGRhdGUoZmVhdHVyZSwgeyBlZGl0OiB0cnVlIH0sIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZlYXR1cmUucHJvamVjdGlvbiA9ICdFUFNHOjQzMjYnO1xyXG5cclxuICAgIGNvbnN0IGZlYXR1cmVPbCA9IGZlYXR1cmVUb09sKGZlYXR1cmUsIHByb2plY3Rpb24uZ2V0Q29kZSgpKTtcclxuXHJcbiAgICB0aGlzLm9sRHJhd2luZ0xheWVyLmRhdGFTb3VyY2Uub2wuY2xlYXIoKTtcclxuICAgIHRoaXMub2xEcmF3aW5nTGF5ZXIuZGF0YVNvdXJjZS5vbC5hZGRGZWF0dXJlKGZlYXR1cmVPbCk7XHJcbiAgICB0aGlzLm1hcC5hZGRMYXllcih0aGlzLm9sRHJhd2luZ0xheWVyKTtcclxuXHJcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG4gICAgdGhpcy5jcmVhdGVNb2RpZnlJbnRlcmFjdGlvbihmZWF0dXJlT2wsIGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgZHJhd2luZ3MgbGF5ZXIgYW5kIHNvdXJjZSBmcm9tIHRoZSBtYXAgQU5EIGZlYXR1cmUgZnJvbSB0aGUgZW50aXR5IHN0b3JlLlxyXG4gICAqIExheWVyIHJlZnJlc2ggd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IGZlYXR1cmUgaW50byB0aGUgc3RvcmUuXHJcbiAgICovXHJcbiAgZGVsZXRlRHJhd2luZ3MoKSB7XHJcbiAgICB0aGlzLm1hcC5yZW1vdmVMYXllcih0aGlzLm9sRHJhd2luZ0xheWVyKTtcclxuICAgIHRoaXMub2xEcmF3aW5nTGF5ZXJTb3VyY2UuY2xlYXIoKTtcclxuICAgIHRoaXMubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKHRoaXMubW9kaWZ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG1vZGlmeSBpbnRlcmFjdGlvbiB0byBhbGxvdyBhIGdlb21ldHJ5IGNoYW5nZSBvbmUgZmVhdHVyZSBhdCB0aGUgdGltZSAoZHJhZyBhbmQgZHJvcClcclxuICAgKi9cclxuICBjcmVhdGVNb2RpZnlJbnRlcmFjdGlvbihvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICB0aGlzLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm1vZGlmeSk7XHJcbiAgICBjb25zdCBvbENvbGxlY3Rpb24gPSBuZXcgQ29sbGVjdGlvbihbb2xGZWF0dXJlXSwgeyB1bmlxdWU6IHRydWUgfSk7XHJcbiAgICB0aGlzLm1vZGlmeSA9IG5ldyBPbE1vZGlmeSh7XHJcbiAgICAgIGZlYXR1cmVzOiBvbENvbGxlY3Rpb25cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMubW9kaWZ5KTtcclxuICAgIG9sQ29sbGVjdGlvbi5mb3JFYWNoKGZlYXR1cmUgPT4ge1xyXG4gICAgICBmZWF0dXJlLnNldFN0eWxlKHRoaXMubW9kaWZ5U3R5bGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5tb2RpZnkub24oJ21vZGlmeWVuZCcsIChldmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZXMuZ2V0QXJyYXkoKVswXT8uZ2V0R2VvbWV0cnkoKTtcclxuICAgICAgaWYgKG9sR2VvbWV0cnkpIHtcclxuICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKGZlYXR1cmUsIHdvcmtzcGFjZSwgb2xHZW9tZXRyeSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|