@igo2/geo 1.14.2 → 1.14.3
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/esm2020/igo2-geo.mjs +4 -4
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +300 -300
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +305 -305
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -246
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +79 -79
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +208 -208
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +78 -78
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +216 -216
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +94 -94
- package/esm2020/lib/catalog/catalog.module.mjs +52 -52
- package/esm2020/lib/catalog/index.mjs +4 -4
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +94 -94
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +15 -15
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.service.mjs +605 -605
- package/esm2020/lib/catalog/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/datasource.module.mjs +21 -21
- package/esm2020/lib/datasource/index.mjs +2 -2
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +430 -430
- package/esm2020/lib/datasource/shared/datasource.service.mjs +235 -235
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +144 -144
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +108 -108
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +2 -2
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +28 -28
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +42 -42
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +56 -56
- package/esm2020/lib/datasource/shared/datasources/index.mjs +35 -35
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +27 -27
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +11 -11
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +48 -48
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +53 -53
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +71 -71
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +151 -151
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -205
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +206 -206
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +15 -15
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +8 -8
- package/esm2020/lib/datasource/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +14 -14
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +80 -80
- package/esm2020/lib/datasource/shared/options/options.service.mjs +2 -2
- package/esm2020/lib/datasource/utils/esri-style-generator.mjs +356 -356
- package/esm2020/lib/datasource/utils/index.mjs +2 -2
- package/esm2020/lib/datasource/utils/tilegrid.mjs +19 -19
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +223 -223
- package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +289 -289
- package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +195 -195
- package/esm2020/lib/directions/directions-results/index.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +2 -2
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +15 -15
- package/esm2020/lib/directions/directions-sources/index.mjs +4 -4
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +98 -98
- package/esm2020/lib/directions/directions.component.mjs +310 -310
- package/esm2020/lib/directions/directions.module.mjs +101 -101
- package/esm2020/lib/directions/index.mjs +6 -6
- package/esm2020/lib/directions/shared/directions-source.service.mjs +16 -16
- package/esm2020/lib/directions/shared/directions.enum.mjs +27 -27
- package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.service.mjs +28 -28
- package/esm2020/lib/directions/shared/directions.utils.mjs +508 -508
- package/esm2020/lib/directions/shared/index.mjs +5 -5
- package/esm2020/lib/directions/shared/store.mjs +23 -23
- package/esm2020/lib/download/download-button/download-button.component.mjs +60 -60
- package/esm2020/lib/download/download-button/index.mjs +1 -1
- package/esm2020/lib/download/download.module.mjs +41 -41
- package/esm2020/lib/download/index.mjs +2 -2
- package/esm2020/lib/download/shared/download.interface.mjs +1 -1
- package/esm2020/lib/download/shared/download.service.mjs +64 -64
- package/esm2020/lib/download/shared/index.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +54 -54
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +590 -590
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +47 -47
- package/esm2020/lib/draw/draw/draw.component.mjs +1298 -1298
- package/esm2020/lib/draw/draw/draw.module.mjs +112 -112
- package/esm2020/lib/draw/drawingTool.module.mjs +19 -19
- package/esm2020/lib/draw/index.mjs +2 -2
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +26 -26
- package/esm2020/lib/draw/shared/draw-style.service.mjs +189 -189
- package/esm2020/lib/draw/shared/draw.enum.mjs +36 -36
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +121 -121
- package/esm2020/lib/draw/shared/index.mjs +5 -5
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +404 -404
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +53 -53
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +47 -47
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +111 -111
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +33 -33
- package/esm2020/lib/feature/feature.module.mjs +27 -27
- package/esm2020/lib/feature/index.mjs +3 -3
- package/esm2020/lib/feature/shared/feature.enums.mjs +8 -8
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.utils.mjs +346 -346
- package/esm2020/lib/feature/shared/index.mjs +6 -6
- package/esm2020/lib/feature/shared/store.mjs +123 -123
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +112 -112
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +93 -93
- package/esm2020/lib/feature/shared/strategies/index.mjs +5 -5
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +103 -103
- package/esm2020/lib/feature/shared/strategies/loading.mjs +132 -132
- package/esm2020/lib/feature/shared/strategies/selection.mjs +369 -369
- package/esm2020/lib/feature/shared/strategies.utils.mjs +36 -36
- package/esm2020/lib/filter/filter.module.mjs +288 -288
- package/esm2020/lib/filter/index.mjs +15 -15
- package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +139 -139
- package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +644 -644
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1301 -1301
- package/esm2020/lib/filter/ogc-filter-time/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +176 -176
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +897 -897
- package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +58 -58
- package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +306 -306
- package/esm2020/lib/filter/ogc-filterable-list/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +43 -43
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +54 -54
- package/esm2020/lib/filter/shared/index.mjs +11 -11
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +71 -71
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +29 -29
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.mjs +691 -691
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +45 -45
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +22 -22
- package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +268 -268
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +12 -12
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.service.mjs +106 -106
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1088 -1088
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +207 -207
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +143 -143
- package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +77 -77
- package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +733 -733
- package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +118 -118
- package/esm2020/lib/filter/time-filter-list/index.mjs +2 -2
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +38 -38
- package/esm2020/lib/geo.module.mjs +101 -101
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +520 -520
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +188 -188
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +63 -63
- package/esm2020/lib/geometry/geometry.module.mjs +26 -26
- package/esm2020/lib/geometry/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/draw.mjs +313 -313
- package/esm2020/lib/geometry/shared/controls/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/modify.mjs +520 -520
- package/esm2020/lib/geometry/shared/controls/slice.mjs +176 -176
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +25 -25
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +121 -121
- package/esm2020/lib/geometry/shared/index.mjs +4 -4
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +63 -63
- package/esm2020/lib/import-export/export-button/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +1219 -1219
- package/esm2020/lib/import-export/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export.module.mjs +95 -95
- package/esm2020/lib/import-export/index.mjs +4 -4
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +134 -134
- package/esm2020/lib/import-export/shared/export.errors.mjs +14 -14
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +194 -194
- package/esm2020/lib/import-export/shared/export.type.mjs +3 -3
- package/esm2020/lib/import-export/shared/export.utils.mjs +54 -54
- package/esm2020/lib/import-export/shared/import.errors.mjs +38 -38
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +214 -214
- package/esm2020/lib/import-export/shared/import.utils.mjs +234 -234
- package/esm2020/lib/import-export/shared/index.mjs +10 -10
- package/esm2020/lib/import-export/style-list/index.mjs +4 -4
- package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.module.mjs +22 -22
- package/esm2020/lib/import-export/style-list/style-list.provider.mjs +20 -20
- package/esm2020/lib/import-export/style-list/style-list.service.mjs +50 -50
- package/esm2020/lib/layer/index.mjs +10 -10
- package/esm2020/lib/layer/layer-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +299 -299
- package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +387 -387
- package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +83 -83
- package/esm2020/lib/layer/layer-legend-list/index.mjs +2 -2
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +47 -47
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +194 -194
- package/esm2020/lib/layer/layer-list/index.mjs +3 -3
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +58 -58
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1008 -1008
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +18 -18
- package/esm2020/lib/layer/layer-list-tool/index.mjs +4 -4
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +164 -164
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +6 -6
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +21 -21
- package/esm2020/lib/layer/layer.module.mjs +184 -184
- package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2020/lib/layer/shared/index.mjs +6 -6
- package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
- package/esm2020/lib/layer/shared/layer.service.mjs +185 -185
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +67 -67
- package/esm2020/lib/layer/shared/layers/index.mjs +12 -12
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +17 -17
- package/esm2020/lib/layer/shared/layers/layer.mjs +163 -163
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +46 -46
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +377 -377
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +103 -103
- package/esm2020/lib/layer/shared/style.service.mjs +355 -355
- package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
- package/esm2020/lib/layer/style-modal/index.mjs +1 -1
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +287 -287
- package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +58 -58
- package/esm2020/lib/layer/utils/image-watcher.mjs +61 -61
- package/esm2020/lib/layer/utils/index.mjs +5 -5
- package/esm2020/lib/layer/utils/layer.utils.mjs +9 -9
- package/esm2020/lib/layer/utils/outputLegend.mjs +26 -26
- package/esm2020/lib/layer/utils/tile-watcher.mjs +49 -49
- package/esm2020/lib/layer/utils/vector-watcher.mjs +47 -47
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +19 -19
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +96 -96
- package/esm2020/lib/map/baselayers-switcher/index.mjs +2 -2
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +141 -142
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +78 -78
- package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
- package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +62 -62
- package/esm2020/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2020/lib/map/index.mjs +13 -13
- package/esm2020/lib/map/info-section/index.mjs +1 -1
- package/esm2020/lib/map/info-section/info-section.component.mjs +29 -29
- package/esm2020/lib/map/map-browser/index.mjs +1 -1
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +65 -65
- package/esm2020/lib/map/map-center/index.mjs +1 -1
- package/esm2020/lib/map/map-center/map-center.component.mjs +49 -49
- package/esm2020/lib/map/map.module.mjs +126 -126
- package/esm2020/lib/map/menu-button/index.mjs +1 -1
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +61 -61
- package/esm2020/lib/map/offline-button/index.mjs +1 -1
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +75 -75
- package/esm2020/lib/map/rotation-button/index.mjs +1 -1
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +69 -69
- package/esm2020/lib/map/shared/controllers/controller.mjs +41 -41
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +307 -307
- package/esm2020/lib/map/shared/controllers/index.mjs +3 -3
- package/esm2020/lib/map/shared/controllers/view.mjs +350 -350
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +502 -502
- package/esm2020/lib/map/shared/index.mjs +13 -13
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +237 -237
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +106 -106
- package/esm2020/lib/map/shared/map.enums.mjs +5 -5
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/map/shared/map.mjs +406 -406
- package/esm2020/lib/map/shared/map.service.mjs +28 -28
- package/esm2020/lib/map/shared/map.utils.mjs +462 -462
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +162 -162
- package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2020/lib/map/shared/projection.service.mjs +64 -64
- package/esm2020/lib/map/shared/projection.utils.mjs +63 -63
- package/esm2020/lib/map/swipe-control/index.mjs +1 -1
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +192 -192
- package/esm2020/lib/map/utils/layer-watcher.mjs +78 -78
- package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +113 -113
- package/esm2020/lib/map/zoom-button/index.mjs +1 -1
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +39 -39
- package/esm2020/lib/measure/index.mjs +3 -3
- package/esm2020/lib/measure/measure.module.mjs +19 -19
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +36 -36
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +179 -179
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +139 -139
- package/esm2020/lib/measure/measurer/measurer.component.mjs +1041 -1041
- package/esm2020/lib/measure/measurer/measurer.module.mjs +93 -93
- package/esm2020/lib/measure/shared/index.mjs +3 -3
- package/esm2020/lib/measure/shared/measure.enum.mjs +36 -36
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.utils.mjs +488 -488
- package/esm2020/lib/metadata/index.mjs +2 -2
- package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +133 -133
- package/esm2020/lib/metadata/metadata.module.mjs +54 -54
- package/esm2020/lib/metadata/shared/index.mjs +2 -2
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +18 -18
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +104 -104
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +5 -5
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +166 -166
- package/esm2020/lib/offline/geoDB/index.mjs +4 -4
- package/esm2020/lib/offline/index.mjs +2 -2
- package/esm2020/lib/offline/shared/geo-network.service.mjs +65 -65
- package/esm2020/lib/offline/shared/index.mjs +1 -1
- package/esm2020/lib/overlay/index.mjs +1 -1
- package/esm2020/lib/overlay/overlay.module.mjs +22 -22
- package/esm2020/lib/overlay/shared/index.mjs +6 -6
- package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +68 -68
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +32 -32
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +7 -7
- package/esm2020/lib/overlay/shared/overlay.mjs +129 -129
- package/esm2020/lib/overlay/shared/overlay.service.mjs +26 -26
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +102 -102
- package/esm2020/lib/print/index.mjs +3 -3
- package/esm2020/lib/print/print/print.component.mjs +125 -125
- package/esm2020/lib/print/print-form/index.mjs +1 -1
- package/esm2020/lib/print/print-form/print-form.component.mjs +427 -427
- package/esm2020/lib/print/print.module.mjs +64 -64
- package/esm2020/lib/print/shared/geopdf.mjs +57 -57
- package/esm2020/lib/print/shared/index.mjs +4 -4
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +933 -933
- package/esm2020/lib/print/shared/print.type.mjs +29 -29
- package/esm2020/lib/query/index.mjs +1 -1
- package/esm2020/lib/query/query.module.mjs +28 -28
- package/esm2020/lib/query/shared/index.mjs +6 -6
- package/esm2020/lib/query/shared/query-search-source.mjs +34 -34
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +21 -21
- package/esm2020/lib/query/shared/query.directive.mjs +260 -260
- package/esm2020/lib/query/shared/query.enums.mjs +29 -29
- package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +732 -732
- package/esm2020/lib/query/shared/query.utils.mjs +36 -36
- package/esm2020/lib/search/index.mjs +11 -11
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +511 -511
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +74 -74
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +34 -34
- package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +117 -117
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +370 -370
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +123 -123
- package/esm2020/lib/search/search-results/search-results.component.mjs +339 -339
- package/esm2020/lib/search/search-results/search-results.module.mjs +103 -103
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +122 -122
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +55 -55
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +441 -441
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +59 -59
- package/esm2020/lib/search/search.module.mjs +66 -66
- package/esm2020/lib/search/shared/index.mjs +8 -8
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +321 -321
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +19 -19
- package/esm2020/lib/search/shared/search-source.service.mjs +46 -46
- package/esm2020/lib/search/shared/search.enums.mjs +3 -3
- package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/search.service.mjs +120 -120
- package/esm2020/lib/search/shared/search.utils.mjs +90 -90
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.mjs +152 -152
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +766 -766
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +65 -65
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.mjs +319 -319
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/index.mjs +17 -17
- package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/nominatim.mjs +251 -251
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +22 -22
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.mjs +178 -178
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +424 -424
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +40 -40
- package/esm2020/lib/toast/index.mjs +1 -1
- package/esm2020/lib/toast/toast.component.mjs +112 -112
- package/esm2020/lib/toast/toast.module.mjs +44 -44
- package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
- package/esm2020/lib/utils/commonVectorStyle.mjs +74 -74
- package/esm2020/lib/utils/googleLinks.mjs +12 -12
- package/esm2020/lib/utils/id-generator.mjs +109 -109
- package/esm2020/lib/utils/index.mjs +5 -5
- package/esm2020/lib/utils/osmLinks.mjs +9 -9
- package/esm2020/lib/wkt/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/wkt.service.mjs +224 -224
- package/esm2020/lib/wkt/wkt.module.mjs +21 -21
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +47 -47
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +35 -35
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +2 -2
- package/esm2020/lib/workspace/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +279 -279
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +656 -656
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +259 -259
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +23 -23
- package/esm2020/lib/workspace/widgets/index.mjs +3 -3
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +46 -46
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +35 -35
- package/esm2020/lib/workspace/widgets/widgets.mjs +14 -14
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +132 -132
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +112 -112
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace.module.mjs +61 -61
- package/esm2020/public_api.mjs +54 -54
- package/fesm2015/igo2-geo.mjs +44986 -44986
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +43029 -43030
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +126 -126
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -80
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +105 -105
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +22 -22
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +45 -45
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +25 -25
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +65 -65
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +26 -26
- package/lib/catalog/catalog.module.d.ts +14 -14
- package/lib/catalog/index.d.ts +4 -4
- package/lib/catalog/shared/catalog.abstract.d.ts +50 -50
- package/lib/catalog/shared/catalog.enum.d.ts +14 -14
- package/lib/catalog/shared/catalog.interface.d.ts +66 -66
- package/lib/catalog/shared/catalog.service.d.ts +36 -36
- package/lib/catalog/shared/index.d.ts +4 -4
- package/lib/datasource/datasource.module.d.ts +8 -8
- package/lib/datasource/index.d.ts +2 -2
- package/lib/datasource/shared/capabilities.service.d.ts +37 -37
- package/lib/datasource/shared/datasource.service.d.ts +37 -37
- package/lib/datasource/shared/datasources/any-datasource.d.ts +16 -16
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +14 -14
- package/lib/datasource/shared/datasources/arcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/datasources/data.service.d.ts +3 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +100 -100
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +12 -12
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +18 -18
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/index.d.ts +35 -35
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/osm-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/tiledebug-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +9 -9
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/websocket-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs.service.d.ts +17 -17
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +31 -31
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +32 -32
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +41 -41
- package/lib/datasource/shared/datasources/wmts-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/xyz-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/index.d.ts +4 -4
- package/lib/datasource/shared/options/index.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.interface.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.providers.d.ts +10 -10
- package/lib/datasource/shared/options/options-api.service.d.ts +16 -16
- package/lib/datasource/shared/options/options.service.d.ts +6 -6
- package/lib/datasource/utils/esri-style-generator.d.ts +21 -21
- package/lib/datasource/utils/index.d.ts +2 -2
- package/lib/datasource/utils/tilegrid.d.ts +2 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +30 -30
- package/lib/directions/directions-buttons/index.d.ts +1 -1
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -45
- package/lib/directions/directions-inputs/index.d.ts +1 -1
- package/lib/directions/directions-results/directions-results.component.d.ts +30 -30
- package/lib/directions/directions-results/index.d.ts +1 -1
- package/lib/directions/directions-sources/directions-source.d.ts +7 -7
- package/lib/directions/directions-sources/directions-source.interface.d.ts +11 -11
- package/lib/directions/directions-sources/directions-source.provider.d.ts +11 -11
- package/lib/directions/directions-sources/index.d.ts +4 -4
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +23 -23
- package/lib/directions/directions.component.d.ts +56 -56
- package/lib/directions/directions.module.d.ts +26 -26
- package/lib/directions/index.d.ts +6 -6
- package/lib/directions/shared/directions-source.service.d.ts +11 -11
- package/lib/directions/shared/directions.enum.d.ts +22 -22
- package/lib/directions/shared/directions.interface.d.ts +126 -126
- package/lib/directions/shared/directions.service.d.ts +13 -13
- package/lib/directions/shared/directions.utils.d.ts +42 -42
- package/lib/directions/shared/index.d.ts +5 -5
- package/lib/directions/shared/store.d.ts +18 -18
- package/lib/download/download-button/download-button.component.d.ts +18 -18
- package/lib/download/download-button/index.d.ts +1 -1
- package/lib/download/download.module.d.ts +14 -14
- package/lib/download/index.d.ts +2 -2
- package/lib/download/shared/download.interface.d.ts +10 -10
- package/lib/download/shared/download.service.d.ts +11 -11
- package/lib/download/shared/index.d.ts +2 -2
- package/lib/draw/draw/draw-layer-popup.component.d.ts +14 -14
- package/lib/draw/draw/draw-popup.component.d.ts +63 -63
- package/lib/draw/draw/draw-shorcuts.component.d.ts +5 -5
- package/lib/draw/draw/draw.component.d.ts +239 -239
- package/lib/draw/draw/draw.module.d.ts +34 -34
- package/lib/draw/drawingTool.module.d.ts +7 -7
- package/lib/draw/index.d.ts +2 -2
- package/lib/draw/shared/draw-icon.service.d.ts +12 -12
- package/lib/draw/shared/draw-style.service.d.ts +36 -36
- package/lib/draw/shared/draw.enum.d.ts +32 -32
- package/lib/draw/shared/draw.interface.d.ts +40 -40
- package/lib/draw/shared/draw.utils.d.ts +35 -35
- package/lib/draw/shared/index.d.ts +5 -5
- package/lib/feature/feature-details/feature-details.component.d.ts +60 -60
- package/lib/feature/feature-details/feature-details.directive.d.ts +19 -19
- package/lib/feature/feature-details/feature-details.module.d.ts +15 -15
- package/lib/feature/feature-form/feature-form.component.d.ts +50 -50
- package/lib/feature/feature-form/feature-form.module.d.ts +12 -12
- package/lib/feature/feature.module.d.ts +9 -9
- package/lib/feature/index.d.ts +3 -3
- package/lib/feature/shared/feature.enums.d.ts +7 -7
- package/lib/feature/shared/feature.interfaces.d.ts +74 -74
- package/lib/feature/shared/feature.utils.d.ts +104 -104
- package/lib/feature/shared/index.d.ts +6 -6
- package/lib/feature/shared/store.d.ts +71 -71
- package/lib/feature/shared/strategies/in-map-extent.d.ts +52 -52
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +52 -52
- package/lib/feature/shared/strategies/index.d.ts +5 -5
- package/lib/feature/shared/strategies/loading-layer.d.ts +59 -59
- package/lib/feature/shared/strategies/loading.d.ts +75 -75
- package/lib/feature/shared/strategies/selection.d.ts +176 -176
- package/lib/feature/shared/strategies.utils.d.ts +17 -17
- package/lib/filter/filter.module.d.ts +53 -53
- package/lib/filter/index.d.ts +15 -15
- package/lib/filter/ogc-filter-button/index.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +20 -20
- package/lib/filter/ogc-filter-form/index.d.ts +1 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +65 -65
- package/lib/filter/ogc-filter-selection/index.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +93 -93
- package/lib/filter/ogc-filter-time/index.d.ts +2 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +39 -39
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +86 -86
- package/lib/filter/ogc-filterable-form/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +15 -15
- package/lib/filter/ogc-filterable-item/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +41 -41
- package/lib/filter/ogc-filterable-list/index.d.ts +2 -2
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +14 -14
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +10 -10
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +10 -10
- package/lib/filter/shared/index.d.ts +11 -11
- package/lib/filter/shared/ogc-filter-time.service.d.ts +19 -19
- package/lib/filter/shared/ogc-filter.d.ts +29 -29
- package/lib/filter/shared/ogc-filter.enum.d.ts +27 -27
- package/lib/filter/shared/ogc-filter.interface.d.ts +200 -200
- package/lib/filter/shared/ogc-filter.service.d.ts +11 -11
- package/lib/filter/shared/spatial-filter.enum.d.ts +19 -19
- package/lib/filter/shared/spatial-filter.interface.d.ts +10 -10
- package/lib/filter/shared/spatial-filter.service.d.ts +37 -37
- package/lib/filter/shared/time-filter.enum.d.ts +10 -10
- package/lib/filter/shared/time-filter.interface.d.ts +29 -29
- package/lib/filter/shared/time-filter.service.d.ts +11 -11
- package/lib/filter/spatial-filter/spatial-filter-item/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +166 -166
- package/lib/filter/spatial-filter/spatial-filter-list/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +58 -58
- package/lib/filter/spatial-filter/spatial-filter-type/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +45 -45
- package/lib/filter/time-filter-button/index.d.ts +1 -1
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +20 -20
- package/lib/filter/time-filter-form/index.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +77 -77
- package/lib/filter/time-filter-item/index.d.ts +1 -1
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +28 -28
- package/lib/filter/time-filter-list/index.d.ts +2 -2
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +14 -14
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +12 -12
- package/lib/geo.module.d.ts +28 -28
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +206 -206
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +88 -88
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +19 -19
- package/lib/geometry/geometry.module.d.ts +8 -8
- package/lib/geometry/index.d.ts +3 -3
- package/lib/geometry/shared/controls/draw.d.ts +150 -150
- package/lib/geometry/shared/controls/index.d.ts +3 -3
- package/lib/geometry/shared/controls/modify.d.ts +228 -228
- package/lib/geometry/shared/controls/slice.d.ts +99 -99
- package/lib/geometry/shared/geometry.errors.d.ts +11 -11
- package/lib/geometry/shared/geometry.interfaces.d.ts +13 -13
- package/lib/geometry/shared/geometry.utils.d.ts +45 -45
- package/lib/geometry/shared/index.d.ts +4 -4
- package/lib/import-export/export-button/export-button.component.d.ts +16 -16
- package/lib/import-export/export-button/index.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +104 -104
- package/lib/import-export/import-export/index.d.ts +1 -1
- package/lib/import-export/import-export.module.d.ts +26 -26
- package/lib/import-export/index.d.ts +4 -4
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +36 -36
- package/lib/import-export/shared/export.errors.d.ts +8 -8
- package/lib/import-export/shared/export.interface.d.ts +11 -11
- package/lib/import-export/shared/export.service.d.ts +30 -30
- package/lib/import-export/shared/export.type.d.ts +16 -16
- package/lib/import-export/shared/export.utils.d.ts +19 -19
- package/lib/import-export/shared/import.errors.d.ts +20 -20
- package/lib/import-export/shared/import.interface.d.ts +8 -8
- package/lib/import-export/shared/import.service.d.ts +31 -31
- package/lib/import-export/shared/import.utils.d.ts +18 -18
- package/lib/import-export/shared/index.d.ts +10 -10
- package/lib/import-export/style-list/index.d.ts +4 -4
- package/lib/import-export/style-list/style-list.interface.d.ts +6 -6
- package/lib/import-export/style-list/style-list.module.d.ts +8 -8
- package/lib/import-export/style-list/style-list.provider.d.ts +15 -15
- package/lib/import-export/style-list/style-list.service.d.ts +18 -18
- package/lib/layer/index.d.ts +10 -10
- package/lib/layer/layer-item/index.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +62 -62
- package/lib/layer/layer-legend/index.d.ts +1 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +90 -90
- package/lib/layer/layer-legend-item/index.d.ts +1 -1
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +22 -22
- package/lib/layer/layer-legend-list/index.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +16 -16
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +31 -31
- package/lib/layer/layer-list/index.d.ts +3 -3
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +19 -19
- package/lib/layer/layer-list/layer-list.component.d.ts +127 -127
- package/lib/layer/layer-list/layer-list.enum.d.ts +15 -15
- package/lib/layer/layer-list-tool/index.d.ts +4 -4
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +32 -32
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +5 -5
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +8 -8
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +14 -14
- package/lib/layer/layer.module.d.ts +36 -36
- package/lib/layer/shared/clusterParam.d.ts +13 -13
- package/lib/layer/shared/index.d.ts +6 -6
- package/lib/layer/shared/layer.enums.d.ts +1 -1
- package/lib/layer/shared/layer.service.d.ts +30 -30
- package/lib/layer/shared/layers/any-layer.d.ts +6 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +6 -6
- package/lib/layer/shared/layers/image-layer.d.ts +22 -22
- package/lib/layer/shared/layers/image-layer.interface.d.ts +19 -19
- package/lib/layer/shared/layers/index.d.ts +12 -12
- package/lib/layer/shared/layers/layer.d.ts +62 -62
- package/lib/layer/shared/layers/layer.interface.d.ts +109 -107
- package/lib/layer/shared/layers/tile-layer.d.ts +31 -31
- package/lib/layer/shared/layers/tile-layer.interface.d.ts +20 -20
- package/lib/layer/shared/layers/vector-layer.d.ts +78 -78
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +41 -41
- package/lib/layer/shared/layers/vectortile-layer.d.ts +28 -28
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +18 -18
- package/lib/layer/shared/style.service.d.ts +57 -57
- package/lib/layer/shared/vector-style.interface.d.ts +38 -38
- package/lib/layer/style-modal/index.d.ts +1 -1
- package/lib/layer/style-modal/style-modal.component.d.ts +42 -42
- package/lib/layer/track-feature-button/index.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +15 -15
- package/lib/layer/utils/image-watcher.d.ts +17 -17
- package/lib/layer/utils/index.d.ts +5 -5
- package/lib/layer/utils/layer.utils.d.ts +2 -2
- package/lib/layer/utils/outputLegend.d.ts +7 -7
- package/lib/layer/utils/tile-watcher.d.ts +14 -14
- package/lib/layer/utils/vector-watcher.d.ts +13 -13
- package/lib/map/baselayers-switcher/baselayers-switcher.animation.d.ts +2 -2
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +21 -21
- package/lib/map/baselayers-switcher/index.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +29 -29
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +22 -22
- package/lib/map/geolocate-button/index.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -20
- package/lib/map/home-extent-button/index.d.ts +1 -1
- package/lib/map/index.d.ts +13 -13
- package/lib/map/info-section/index.d.ts +1 -1
- package/lib/map/info-section/info-section.component.d.ts +7 -7
- package/lib/map/map-browser/index.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +25 -25
- package/lib/map/map-center/index.d.ts +1 -1
- package/lib/map/map-center/map-center.component.d.ts +31 -31
- package/lib/map/map.module.d.ts +28 -28
- package/lib/map/menu-button/index.d.ts +1 -1
- package/lib/map/menu-button/menu-button.component.d.ts +17 -17
- package/lib/map/offline-button/index.d.ts +1 -1
- package/lib/map/offline-button/offline-button.component.d.ts +23 -23
- package/lib/map/rotation-button/index.d.ts +1 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +17 -17
- package/lib/map/shared/controllers/controller.d.ts +29 -29
- package/lib/map/shared/controllers/geolocation.d.ts +112 -112
- package/lib/map/shared/controllers/index.d.ts +3 -3
- package/lib/map/shared/controllers/view.d.ts +200 -200
- package/lib/map/shared/hover-feature.directive.d.ts +132 -132
- package/lib/map/shared/index.d.ts +13 -13
- package/lib/map/shared/linkedLayers.utils.d.ts +17 -17
- package/lib/map/shared/map-pointer-position.directive.d.ts +71 -71
- package/lib/map/shared/map.d.ts +135 -135
- package/lib/map/shared/map.enums.d.ts +4 -4
- package/lib/map/shared/map.interface.d.ts +57 -57
- package/lib/map/shared/map.service.d.ts +19 -19
- package/lib/map/shared/map.utils.d.ts +90 -90
- package/lib/map/shared/mapOffline.directive.d.ts +21 -21
- package/lib/map/shared/projection.interfaces.d.ts +29 -29
- package/lib/map/shared/projection.service.d.ts +19 -19
- package/lib/map/shared/projection.utils.d.ts +19 -19
- package/lib/map/swipe-control/index.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +97 -97
- package/lib/map/utils/layer-watcher.d.ts +20 -20
- package/lib/map/wake-lock-button/index.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -30
- package/lib/map/zoom-button/index.d.ts +1 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +12 -12
- package/lib/measure/index.d.ts +3 -3
- package/lib/measure/measure.module.d.ts +7 -7
- package/lib/measure/measurer/measure-format.pipe.d.ts +15 -15
- package/lib/measure/measurer/measurer-dialog.component.d.ts +14 -14
- package/lib/measure/measurer/measurer-item.component.d.ts +66 -66
- package/lib/measure/measurer/measurer.component.d.ts +405 -405
- package/lib/measure/measurer/measurer.module.d.ts +25 -25
- package/lib/measure/shared/index.d.ts +3 -3
- package/lib/measure/shared/measure.enum.d.ts +33 -33
- package/lib/measure/shared/measure.interfaces.d.ts +21 -21
- package/lib/measure/shared/measure.utils.d.ts +180 -180
- package/lib/metadata/index.d.ts +2 -2
- package/lib/metadata/metadata-button/index.d.ts +1 -1
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +26 -26
- package/lib/metadata/metadata.module.d.ts +15 -15
- package/lib/metadata/shared/index.d.ts +2 -2
- package/lib/metadata/shared/metadata.interface.d.ts +13 -13
- package/lib/metadata/shared/metadata.service.d.ts +8 -8
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +14 -14
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -4
- package/lib/offline/geoDB/geoDB.interface.d.ts +19 -19
- package/lib/offline/geoDB/geoDB.service.d.ts +37 -37
- package/lib/offline/geoDB/index.d.ts +4 -4
- package/lib/offline/index.d.ts +2 -2
- package/lib/offline/shared/geo-network.service.d.ts +28 -28
- package/lib/offline/shared/index.d.ts +1 -1
- package/lib/overlay/index.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +9 -9
- package/lib/overlay/shared/index.d.ts +6 -6
- package/lib/overlay/shared/overlay-marker-style.utils.d.ts +11 -11
- package/lib/overlay/shared/overlay.d.ts +81 -81
- package/lib/overlay/shared/overlay.directive.d.ts +18 -18
- package/lib/overlay/shared/overlay.enum.d.ts +6 -6
- package/lib/overlay/shared/overlay.service.d.ts +14 -14
- package/lib/overlay/shared/overlay.utils.d.ts +17 -17
- package/lib/print/index.d.ts +3 -3
- package/lib/print/print/print.component.d.ts +35 -35
- package/lib/print/print-form/index.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +97 -97
- package/lib/print/print.module.d.ts +19 -19
- package/lib/print/shared/geopdf.d.ts +1 -1
- package/lib/print/shared/index.d.ts +4 -4
- package/lib/print/shared/print.interface.d.ts +22 -22
- package/lib/print/shared/print.service.d.ts +168 -168
- package/lib/print/shared/print.type.d.ts +45 -45
- package/lib/query/index.d.ts +1 -1
- package/lib/query/query.module.d.ts +11 -11
- package/lib/query/shared/index.d.ts +6 -6
- package/lib/query/shared/query-search-source.d.ts +17 -17
- package/lib/query/shared/query-search-source.providers.d.ts +17 -17
- package/lib/query/shared/query.directive.d.ts +105 -105
- package/lib/query/shared/query.enums.d.ts +26 -26
- package/lib/query/shared/query.interfaces.d.ts +35 -35
- package/lib/query/shared/query.service.d.ts +56 -56
- package/lib/query/shared/query.utils.d.ts +27 -27
- package/lib/search/index.d.ts +11 -11
- package/lib/search/search-bar/search-bar.component.d.ts +230 -230
- package/lib/search/search-bar/search-bar.module.d.ts +23 -23
- package/lib/search/search-bar/search-url-param.directive.d.ts +13 -13
- package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -32
- package/lib/search/search-results/search-results-add-button.component.d.ts +76 -76
- package/lib/search/search-results/search-results-item.component.d.ts +47 -47
- package/lib/search/search-results/search-results.component.d.ts +161 -161
- package/lib/search/search-results/search-results.module.d.ts +28 -28
- package/lib/search/search-selector/search-selector.component.d.ts +58 -58
- package/lib/search/search-selector/search-selector.module.d.ts +19 -19
- package/lib/search/search-settings/search-settings.component.d.ts +102 -102
- package/lib/search/search-settings/search-settings.module.d.ts +20 -20
- package/lib/search/search.module.d.ts +14 -14
- package/lib/search/shared/index.d.ts +8 -8
- package/lib/search/shared/search-pointer-summary.directive.d.ts +133 -133
- package/lib/search/shared/search-source-service.providers.d.ts +15 -15
- package/lib/search/shared/search-source.service.d.ts +32 -32
- package/lib/search/shared/search.enums.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +29 -29
- package/lib/search/shared/search.service.d.ts +53 -53
- package/lib/search/shared/search.utils.d.ts +39 -39
- package/lib/search/shared/sources/coordinates.d.ts +40 -40
- package/lib/search/shared/sources/coordinates.interfaces.d.ts +12 -12
- package/lib/search/shared/sources/coordinates.providers.d.ts +31 -31
- package/lib/search/shared/sources/icherche.d.ts +96 -96
- package/lib/search/shared/sources/icherche.interfaces.d.ts +30 -30
- package/lib/search/shared/sources/icherche.providers.d.ts +46 -46
- package/lib/search/shared/sources/ilayer.d.ts +55 -55
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/ilayer.providers.d.ts +31 -31
- package/lib/search/shared/sources/index.d.ts +17 -17
- package/lib/search/shared/sources/nominatim.d.ts +45 -45
- package/lib/search/shared/sources/nominatim.interfaces.d.ts +10 -10
- package/lib/search/shared/sources/nominatim.providers.d.ts +18 -18
- package/lib/search/shared/sources/source.d.ts +108 -108
- package/lib/search/shared/sources/source.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/storedqueries.d.ts +73 -73
- package/lib/search/shared/sources/storedqueries.interfaces.d.ts +42 -42
- package/lib/search/shared/sources/storedqueries.providers.d.ts +32 -32
- package/lib/toast/index.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +33 -33
- package/lib/toast/toast.module.d.ts +14 -14
- package/lib/utils/commonVectorStyle.d.ts +14 -14
- package/lib/utils/commonVectorStyle.interface.d.ts +16 -16
- package/lib/utils/googleLinks.d.ts +5 -5
- package/lib/utils/id-generator.d.ts +54 -54
- package/lib/utils/index.d.ts +5 -5
- package/lib/utils/osmLinks.d.ts +4 -4
- package/lib/wkt/index.d.ts +1 -1
- package/lib/wkt/shared/index.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +19 -19
- package/lib/wkt/wkt.module.d.ts +8 -8
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -23
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -14
- package/lib/workspace/confirmation-popup/index.d.ts +2 -2
- package/lib/workspace/index.d.ts +7 -7
- package/lib/workspace/shared/edition-workspace.d.ts +82 -82
- package/lib/workspace/shared/edition-workspace.service.d.ts +52 -52
- package/lib/workspace/shared/feature-workspace.d.ts +18 -18
- package/lib/workspace/shared/feature-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/index.d.ts +7 -7
- package/lib/workspace/shared/wfs-workspace.d.ts +18 -18
- package/lib/workspace/shared/wfs-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/wms-workspace.service.d.ts +22 -22
- package/lib/workspace/shared/workspace.utils.d.ts +10 -10
- package/lib/workspace/widgets/index.d.ts +3 -3
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +29 -29
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +14 -14
- package/lib/workspace/widgets/widgets.d.ts +9 -9
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +32 -32
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +11 -11
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +26 -26
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +11 -11
- package/lib/workspace/workspace.module.d.ts +14 -14
- package/package.json +4 -4
- package/public_api.d.ts +51 -51
package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs
CHANGED
|
@@ -1,1089 +1,1089 @@
|
|
|
1
|
-
import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { SpatialFilterType } from '../../shared/spatial-filter.enum';
|
|
3
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
4
|
-
import { SpatialFilterItemType } from './../../shared/spatial-filter.enum';
|
|
5
|
-
import { UntypedFormControl } from '@angular/forms';
|
|
6
|
-
import { BehaviorSubject } from 'rxjs';
|
|
7
|
-
import * as olStyle from 'ol/style';
|
|
8
|
-
import * as olproj from 'ol/proj';
|
|
9
|
-
import { MatTreeNestedDataSource } from '@angular/material/tree';
|
|
10
|
-
import { MeasureLengthUnit } from '../../../measure';
|
|
11
|
-
import { EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer } from '@igo2/common';
|
|
12
|
-
import { VectorLayer } from '../../../layer/shared';
|
|
13
|
-
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
14
|
-
import { debounceTime } from 'rxjs/operators';
|
|
15
|
-
import { FeatureMotion, FeatureStoreSelectionStrategy } from '../../../feature';
|
|
16
|
-
import { FeatureDataSource } from '../../../datasource/shared';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "../../shared/spatial-filter.service";
|
|
19
|
-
import * as i2 from "@igo2/core";
|
|
20
|
-
function SpatialFilterItemComponent_mat_slide_toggle_5_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
22
|
-
i0.ɵɵelementStart(0, "mat-slide-toggle", 17);
|
|
23
|
-
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_slide_toggle_5_Template_mat_slide_toggle_change_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.onDrawControlChange()); });
|
|
24
|
-
i0.ɵɵtext(1);
|
|
25
|
-
i0.ɵɵpipe(2, "translate");
|
|
26
|
-
i0.ɵɵelementEnd();
|
|
27
|
-
} if (rf & 2) {
|
|
28
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
29
|
-
i0.ɵɵproperty("checked", ctx_r0.drawControlIsActive)("labelPosition", "before");
|
|
30
|
-
i0.ɵɵadvance(1);
|
|
31
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.spatialFilter.drawControl"), " ");
|
|
32
|
-
} }
|
|
33
|
-
function SpatialFilterItemComponent_mat_slide_toggle_6_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
|
35
|
-
i0.ɵɵelementStart(0, "mat-slide-toggle", 17);
|
|
36
|
-
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_slide_toggle_6_Template_mat_slide_toggle_change_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onfreehandControlChange()); });
|
|
37
|
-
i0.ɵɵtext(1);
|
|
38
|
-
i0.ɵɵpipe(2, "translate");
|
|
39
|
-
i0.ɵɵelementEnd();
|
|
40
|
-
} if (rf & 2) {
|
|
41
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
42
|
-
i0.ɵɵproperty("checked", ctx_r1.freehandDrawIsActive)("labelPosition", "before");
|
|
43
|
-
i0.ɵɵadvance(1);
|
|
44
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.spatialFilter.freehandControl"), " ");
|
|
45
|
-
} }
|
|
46
|
-
function SpatialFilterItemComponent_div_7_mat_option_7_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
i0.ɵɵelementStart(0, "mat-option", 6);
|
|
48
|
-
i0.ɵɵtext(1);
|
|
49
|
-
i0.ɵɵpipe(2, "translate");
|
|
50
|
-
i0.ɵɵelementEnd();
|
|
51
|
-
} if (rf & 2) {
|
|
52
|
-
const measureUnit_r15 = ctx.$implicit;
|
|
53
|
-
i0.ɵɵproperty("value", measureUnit_r15);
|
|
54
|
-
i0.ɵɵadvance(1);
|
|
55
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r15), " ");
|
|
56
|
-
} }
|
|
57
|
-
function SpatialFilterItemComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
-
const _r17 = i0.ɵɵgetCurrentView();
|
|
59
|
-
i0.ɵɵelementStart(0, "div", 18)(1, "form", 19)(2, "mat-form-field", 20);
|
|
60
|
-
i0.ɵɵelement(3, "input", 21);
|
|
61
|
-
i0.ɵɵpipe(4, "translate");
|
|
62
|
-
i0.ɵɵelementEnd()();
|
|
63
|
-
i0.ɵɵelementStart(5, "mat-form-field", 22)(6, "mat-select", 23);
|
|
64
|
-
i0.ɵɵlistener("selectionChange", function SpatialFilterItemComponent_div_7_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.onMeasureUnitChange($event.value)); });
|
|
65
|
-
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_7_mat_option_7_Template, 3, 4, "mat-option", 24);
|
|
66
|
-
i0.ɵɵelementEnd()()();
|
|
67
|
-
} if (rf & 2) {
|
|
68
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
69
|
-
i0.ɵɵadvance(3);
|
|
70
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.geo.spatialFilter.buffer"));
|
|
71
|
-
i0.ɵɵproperty("formControl", ctx_r2.bufferFormControl)("value", 0)("readonly", ctx_r2.formControl.value === null);
|
|
72
|
-
i0.ɵɵadvance(3);
|
|
73
|
-
i0.ɵɵproperty("value", ctx_r2.measureUnit);
|
|
74
|
-
i0.ɵɵadvance(1);
|
|
75
|
-
i0.ɵɵproperty("ngForOf", ctx_r2.measureUnits);
|
|
76
|
-
} }
|
|
77
|
-
function SpatialFilterItemComponent_div_8_mat_option_7_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
-
i0.ɵɵelementStart(0, "mat-option", 6);
|
|
79
|
-
i0.ɵɵtext(1);
|
|
80
|
-
i0.ɵɵpipe(2, "translate");
|
|
81
|
-
i0.ɵɵelementEnd();
|
|
82
|
-
} if (rf & 2) {
|
|
83
|
-
const measureUnit_r19 = ctx.$implicit;
|
|
84
|
-
i0.ɵɵproperty("value", measureUnit_r19);
|
|
85
|
-
i0.ɵɵadvance(1);
|
|
86
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r19), " ");
|
|
87
|
-
} }
|
|
88
|
-
function SpatialFilterItemComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
89
|
-
const _r21 = i0.ɵɵgetCurrentView();
|
|
90
|
-
i0.ɵɵelementStart(0, "div", 25)(1, "form", 26)(2, "mat-form-field", 27)(3, "input", 28);
|
|
91
|
-
i0.ɵɵlistener("input", function SpatialFilterItemComponent_div_8_Template_input_input_3_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.getRadius()); });
|
|
92
|
-
i0.ɵɵpipe(4, "translate");
|
|
93
|
-
i0.ɵɵelementEnd()()();
|
|
94
|
-
i0.ɵɵelementStart(5, "mat-form-field", 22)(6, "mat-select", 23);
|
|
95
|
-
i0.ɵɵlistener("selectionChange", function SpatialFilterItemComponent_div_8_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.onMeasureUnitChange($event.value)); });
|
|
96
|
-
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_8_mat_option_7_Template, 3, 4, "mat-option", 24);
|
|
97
|
-
i0.ɵɵelementEnd()()();
|
|
98
|
-
} if (rf & 2) {
|
|
99
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
100
|
-
i0.ɵɵadvance(3);
|
|
101
|
-
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.geo.spatialFilter.radius"));
|
|
102
|
-
i0.ɵɵproperty("formControl", ctx_r3.radiusFormControl)("value", 1000)("readonly", ctx_r3.freehandDrawIsActive && ctx_r3.formControl.value === null);
|
|
103
|
-
i0.ɵɵadvance(3);
|
|
104
|
-
i0.ɵɵproperty("value", ctx_r3.measureUnit);
|
|
105
|
-
i0.ɵɵadvance(1);
|
|
106
|
-
i0.ɵɵproperty("ngForOf", ctx_r3.measureUnits);
|
|
107
|
-
} }
|
|
108
|
-
function SpatialFilterItemComponent_mat_radio_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
-
const _r25 = i0.ɵɵgetCurrentView();
|
|
110
|
-
i0.ɵɵelementStart(0, "mat-radio-button", 29);
|
|
111
|
-
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_radio_button_13_Template_mat_radio_button_change_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r24.onItemTypeChange($event)); });
|
|
112
|
-
i0.ɵɵtext(1);
|
|
113
|
-
i0.ɵɵpipe(2, "translate");
|
|
114
|
-
i0.ɵɵelementEnd();
|
|
115
|
-
} if (rf & 2) {
|
|
116
|
-
const item_r23 = ctx.$implicit;
|
|
117
|
-
i0.ɵɵproperty("value", item_r23);
|
|
118
|
-
i0.ɵɵadvance(1);
|
|
119
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter." + item_r23), " ");
|
|
120
|
-
} }
|
|
121
|
-
function SpatialFilterItemComponent_div_14_mat_header_cell_3_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
-
i0.ɵɵelementStart(0, "mat-header-cell", 40);
|
|
123
|
-
i0.ɵɵtext(1);
|
|
124
|
-
i0.ɵɵpipe(2, "translate");
|
|
125
|
-
i0.ɵɵelementEnd();
|
|
126
|
-
} if (rf & 2) {
|
|
127
|
-
i0.ɵɵadvance(1);
|
|
128
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.spatialFilter.Thematics"));
|
|
129
|
-
} }
|
|
130
|
-
function SpatialFilterItemComponent_div_14_mat_header_cell_5_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
-
const _r33 = i0.ɵɵgetCurrentView();
|
|
132
|
-
i0.ɵɵelementStart(0, "mat-header-cell", 41)(1, "mat-checkbox", 42);
|
|
133
|
-
i0.ɵɵlistener("change", function SpatialFilterItemComponent_div_14_mat_header_cell_5_Template_mat_checkbox_change_1_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r32.masterToggle() : null); });
|
|
134
|
-
i0.ɵɵelementEnd()();
|
|
135
|
-
} if (rf & 2) {
|
|
136
|
-
const ctx_r27 = i0.ɵɵnextContext(2);
|
|
137
|
-
i0.ɵɵadvance(1);
|
|
138
|
-
i0.ɵɵproperty("checked", ctx_r27.isAllSelected())("indeterminate", ctx_r27.selectedThematics.hasValue() && !ctx_r27.isAllSelected());
|
|
139
|
-
} }
|
|
140
|
-
function SpatialFilterItemComponent_div_14_mat_header_row_6_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
-
i0.ɵɵelement(0, "mat-header-row");
|
|
142
|
-
} }
|
|
143
|
-
function SpatialFilterItemComponent_div_14_mat_row_7_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
-
i0.ɵɵelement(0, "mat-row");
|
|
145
|
-
} }
|
|
146
|
-
function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
-
const _r38 = i0.ɵɵgetCurrentView();
|
|
148
|
-
i0.ɵɵelementStart(0, "mat-tree-node", 43)(1, "li", 44);
|
|
149
|
-
i0.ɵɵelement(2, "button", 45);
|
|
150
|
-
i0.ɵɵtext(3);
|
|
151
|
-
i0.ɵɵelementStart(4, "mat-checkbox", 46);
|
|
152
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template_mat_checkbox_click_4_listener($event) { return $event.stopPropagation(); })("change", function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template_mat_checkbox_change_4_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r38); const node_r35 = restoredCtx.$implicit; const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r37.onToggleChange(node_r35) : null); });
|
|
153
|
-
i0.ɵɵelementEnd()()();
|
|
154
|
-
} if (rf & 2) {
|
|
155
|
-
const node_r35 = ctx.$implicit;
|
|
156
|
-
const ctx_r30 = i0.ɵɵnextContext(2);
|
|
157
|
-
i0.ɵɵadvance(3);
|
|
158
|
-
i0.ɵɵtextInterpolate1(" ", node_r35.name, " ");
|
|
159
|
-
i0.ɵɵadvance(1);
|
|
160
|
-
i0.ɵɵproperty("checked", ctx_r30.selectedThematics.isSelected(node_r35));
|
|
161
|
-
} }
|
|
162
|
-
function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
-
const _r41 = i0.ɵɵgetCurrentView();
|
|
164
|
-
i0.ɵɵelementStart(0, "mat-nested-tree-node")(1, "div", 44)(2, "button", 47);
|
|
165
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r41); const node_r39 = restoredCtx.$implicit; const ctx_r40 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r40.onToggleClick(node_r39)); });
|
|
166
|
-
i0.ɵɵelement(3, "mat-icon", 48);
|
|
167
|
-
i0.ɵɵelementEnd();
|
|
168
|
-
i0.ɵɵtext(4);
|
|
169
|
-
i0.ɵɵelementStart(5, "mat-checkbox", 49);
|
|
170
|
-
i0.ɵɵlistener("change", function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template_mat_checkbox_change_5_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r41); const node_r39 = restoredCtx.$implicit; const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r42.childrensToggle(node_r39) : null); });
|
|
171
|
-
i0.ɵɵelementEnd()();
|
|
172
|
-
i0.ɵɵelementStart(6, "ul", 50);
|
|
173
|
-
i0.ɵɵelementContainer(7, 51);
|
|
174
|
-
i0.ɵɵelementEnd()();
|
|
175
|
-
} if (rf & 2) {
|
|
176
|
-
const node_r39 = ctx.$implicit;
|
|
177
|
-
const ctx_r31 = i0.ɵɵnextContext(2);
|
|
178
|
-
i0.ɵɵadvance(3);
|
|
179
|
-
i0.ɵɵproperty("svgIcon", ctx_r31.treeControl.isExpanded(node_r39) ? "chevron-down" : "chevron-right");
|
|
180
|
-
i0.ɵɵadvance(1);
|
|
181
|
-
i0.ɵɵtextInterpolate1(" ", node_r39.name, " ");
|
|
182
|
-
i0.ɵɵadvance(1);
|
|
183
|
-
i0.ɵɵproperty("checked", ctx_r31.isAllSelected(node_r39))("indeterminate", ctx_r31.hasChildrenSelected(node_r39) && !ctx_r31.isAllSelected(node_r39));
|
|
184
|
-
i0.ɵɵadvance(1);
|
|
185
|
-
i0.ɵɵclassProp("example-tree-invisible", !ctx_r31.treeControl.isExpanded(node_r39));
|
|
186
|
-
} }
|
|
187
|
-
function SpatialFilterItemComponent_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
-
i0.ɵɵelementStart(0, "div", 30)(1, "mat-table");
|
|
189
|
-
i0.ɵɵelementContainerStart(2, 31);
|
|
190
|
-
i0.ɵɵtemplate(3, SpatialFilterItemComponent_div_14_mat_header_cell_3_Template, 3, 3, "mat-header-cell", 32);
|
|
191
|
-
i0.ɵɵelementContainerEnd();
|
|
192
|
-
i0.ɵɵelementContainerStart(4, 33);
|
|
193
|
-
i0.ɵɵtemplate(5, SpatialFilterItemComponent_div_14_mat_header_cell_5_Template, 2, 2, "mat-header-cell", 34);
|
|
194
|
-
i0.ɵɵelementContainerEnd();
|
|
195
|
-
i0.ɵɵtemplate(6, SpatialFilterItemComponent_div_14_mat_header_row_6_Template, 1, 0, "mat-header-row", 35);
|
|
196
|
-
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_14_mat_row_7_Template, 1, 0, "mat-row", 36);
|
|
197
|
-
i0.ɵɵelementEnd();
|
|
198
|
-
i0.ɵɵelementStart(8, "mat-tree", 37);
|
|
199
|
-
i0.ɵɵtemplate(9, SpatialFilterItemComponent_div_14_mat_tree_node_9_Template, 5, 2, "mat-tree-node", 38);
|
|
200
|
-
i0.ɵɵtemplate(10, SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template, 8, 6, "mat-nested-tree-node", 39);
|
|
201
|
-
i0.ɵɵelementEnd()();
|
|
202
|
-
} if (rf & 2) {
|
|
203
|
-
const ctx_r5 = i0.ɵɵnextContext();
|
|
204
|
-
i0.ɵɵadvance(6);
|
|
205
|
-
i0.ɵɵproperty("matHeaderRowDef", ctx_r5.displayedColumns);
|
|
206
|
-
i0.ɵɵadvance(1);
|
|
207
|
-
i0.ɵɵproperty("matRowDefColumns", ctx_r5.displayedColumns);
|
|
208
|
-
i0.ɵɵadvance(1);
|
|
209
|
-
i0.ɵɵproperty("dataSource", ctx_r5.dataSource)("treeControl", ctx_r5.treeControl);
|
|
210
|
-
i0.ɵɵadvance(2);
|
|
211
|
-
i0.ɵɵproperty("matTreeNodeDefWhen", ctx_r5.hasChild);
|
|
212
|
-
} }
|
|
213
|
-
function SpatialFilterItemComponent_button_16_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
-
const _r44 = i0.ɵɵgetCurrentView();
|
|
215
|
-
i0.ɵɵelementStart(0, "button", 52);
|
|
216
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r43.clearSearch()); });
|
|
217
|
-
i0.ɵɵtext(1);
|
|
218
|
-
i0.ɵɵpipe(2, "translate");
|
|
219
|
-
i0.ɵɵelementEnd();
|
|
220
|
-
} if (rf & 2) {
|
|
221
|
-
const ctx_r6 = i0.ɵɵnextContext();
|
|
222
|
-
i0.ɵɵproperty("disabled", ctx_r6.disabledClearSearch());
|
|
223
|
-
i0.ɵɵadvance(1);
|
|
224
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter.clearSearch"), " ");
|
|
225
|
-
} }
|
|
226
|
-
function SpatialFilterItemComponent_button_17_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
const _r46 = i0.ɵɵgetCurrentView();
|
|
228
|
-
i0.ɵɵelementStart(0, "button", 53);
|
|
229
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r45.clearDrawZone()); });
|
|
230
|
-
i0.ɵɵtext(1);
|
|
231
|
-
i0.ɵɵpipe(2, "translate");
|
|
232
|
-
i0.ɵɵelementEnd();
|
|
233
|
-
} if (rf & 2) {
|
|
234
|
-
const ctx_r7 = i0.ɵɵnextContext();
|
|
235
|
-
i0.ɵɵproperty("disabled", ctx_r7.formControl.value === null);
|
|
236
|
-
i0.ɵɵadvance(1);
|
|
237
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter.clearForm"), " ");
|
|
238
|
-
} }
|
|
239
|
-
function SpatialFilterItemComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
240
|
-
const _r48 = i0.ɵɵgetCurrentView();
|
|
241
|
-
i0.ɵɵelementStart(0, "button", 54);
|
|
242
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r47 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r47.toggleVisibleList()); });
|
|
243
|
-
i0.ɵɵpipe(1, "translate");
|
|
244
|
-
i0.ɵɵelement(2, "mat-icon", 55);
|
|
245
|
-
i0.ɵɵelementEnd();
|
|
246
|
-
} if (rf & 2) {
|
|
247
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.spatialFilter.showSearchResults"));
|
|
248
|
-
} }
|
|
249
|
-
function SpatialFilterItemComponent_div_28_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
-
const _r51 = i0.ɵɵgetCurrentView();
|
|
251
|
-
i0.ɵɵelementStart(0, "button", 59);
|
|
252
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_28_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r50.toggleVisibleList()); });
|
|
253
|
-
i0.ɵɵpipe(1, "translate");
|
|
254
|
-
i0.ɵɵelement(2, "mat-icon", 60);
|
|
255
|
-
i0.ɵɵelementEnd();
|
|
256
|
-
} if (rf & 2) {
|
|
257
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.spatialFilter.hideSearchResults"));
|
|
258
|
-
} }
|
|
259
|
-
function SpatialFilterItemComponent_div_28_Template(rf, ctx) { if (rf & 1) {
|
|
260
|
-
const _r53 = i0.ɵɵgetCurrentView();
|
|
261
|
-
i0.ɵɵelementStart(0, "div", 56);
|
|
262
|
-
i0.ɵɵtemplate(1, SpatialFilterItemComponent_div_28_button_1_Template, 3, 3, "button", 57);
|
|
263
|
-
i0.ɵɵelementStart(2, "igo-entity-table", 58);
|
|
264
|
-
i0.ɵɵlistener("entitySelectChange", function SpatialFilterItemComponent_div_28_Template_igo_entity_table_entitySelectChange_2_listener($event) { i0.ɵɵrestoreView(_r53); const ctx_r52 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r52.entityChange.emit($event)); });
|
|
265
|
-
i0.ɵɵelementEnd()();
|
|
266
|
-
} if (rf & 2) {
|
|
267
|
-
const ctx_r9 = i0.ɵɵnextContext();
|
|
268
|
-
i0.ɵɵadvance(1);
|
|
269
|
-
i0.ɵɵproperty("ngIf", ctx_r9.listIsVisible);
|
|
270
|
-
i0.ɵɵadvance(1);
|
|
271
|
-
i0.ɵɵproperty("template", ctx_r9.tableTemplate)("store", ctx_r9.store);
|
|
272
|
-
} }
|
|
273
|
-
/**
|
|
274
|
-
* Spatial-Filter-Item (search parameters)
|
|
275
|
-
*/
|
|
276
|
-
export class SpatialFilterItemComponent {
|
|
277
|
-
constructor(cdRef, spatialFilterService, messageService, languageService) {
|
|
278
|
-
this.cdRef = cdRef;
|
|
279
|
-
this.spatialFilterService = spatialFilterService;
|
|
280
|
-
this.messageService = messageService;
|
|
281
|
-
this.languageService = languageService;
|
|
282
|
-
this.layers = [];
|
|
283
|
-
this.allLayers = [];
|
|
284
|
-
this.toggleSearch = new EventEmitter();
|
|
285
|
-
this.itemTypeChange = new EventEmitter();
|
|
286
|
-
this.thematicChange = new EventEmitter();
|
|
287
|
-
this.drawZoneEvent = new EventEmitter();
|
|
288
|
-
this.bufferEvent = new EventEmitter();
|
|
289
|
-
this.zoneWithBufferChange = new EventEmitter();
|
|
290
|
-
this.measureUnitChange = new EventEmitter();
|
|
291
|
-
this.radiusEvent = new EventEmitter();
|
|
292
|
-
this.freehandControl = new EventEmitter();
|
|
293
|
-
this.predefinedRadius = new EventEmitter();
|
|
294
|
-
this.clearButtonEvent = new EventEmitter();
|
|
295
|
-
this.clearSearchEvent = new EventEmitter();
|
|
296
|
-
this.export = new EventEmitter();
|
|
297
|
-
this.openWorkspace = new EventEmitter();
|
|
298
|
-
this.entityChange = new EventEmitter();
|
|
299
|
-
this.itemType = [SpatialFilterItemType.Address, SpatialFilterItemType.Thematics];
|
|
300
|
-
this.selectedItemType = SpatialFilterItemType.Address;
|
|
301
|
-
this.treeControl = new NestedTreeControl(node => node.children);
|
|
302
|
-
// For thematics and results tables
|
|
303
|
-
this.displayedColumns = ['name', 'select'];
|
|
304
|
-
this.childrens = [];
|
|
305
|
-
this.groups = [];
|
|
306
|
-
this.thematics = [];
|
|
307
|
-
this.dataSource = new MatTreeNestedDataSource();
|
|
308
|
-
this.selectedThematics = new SelectionModel(true, []);
|
|
309
|
-
// For geometry form field input
|
|
310
|
-
this.value$ = new BehaviorSubject(undefined);
|
|
311
|
-
this.drawGuide$ = new BehaviorSubject(null);
|
|
312
|
-
this.overlayStyle$ = new BehaviorSubject(undefined);
|
|
313
|
-
this.drawStyle$ = new BehaviorSubject(undefined);
|
|
314
|
-
this.formControl = new UntypedFormControl();
|
|
315
|
-
this.geometryTypeField = false;
|
|
316
|
-
this.geometryTypes = ['Point', 'Polygon'];
|
|
317
|
-
this.drawGuideField = false;
|
|
318
|
-
this.drawGuide = null;
|
|
319
|
-
this.drawGuidePlaceholder = '';
|
|
320
|
-
this.measure = false;
|
|
321
|
-
this.drawControlIsActive = true;
|
|
322
|
-
this.freehandDrawIsActive = false;
|
|
323
|
-
this.buffer = 0;
|
|
324
|
-
this.radiusFormControl = new UntypedFormControl();
|
|
325
|
-
this.bufferFormControl = new UntypedFormControl();
|
|
326
|
-
this.measureUnit = MeasureLengthUnit.Meters;
|
|
327
|
-
this.listIsVisible = true;
|
|
328
|
-
}
|
|
329
|
-
get type() {
|
|
330
|
-
return this._type;
|
|
331
|
-
}
|
|
332
|
-
set type(type) {
|
|
333
|
-
this._type = type;
|
|
334
|
-
const index = this.geometryTypes.findIndex(geom => geom === this.type);
|
|
335
|
-
this.geometryType = this.geometryTypes[index];
|
|
336
|
-
this.formControl.reset();
|
|
337
|
-
this.radius = undefined;
|
|
338
|
-
this.drawGuide$.next(null);
|
|
339
|
-
this.drawStyle$.next(undefined);
|
|
340
|
-
// Necessary to keep reference to the geometry form field input
|
|
341
|
-
if (this.type === SpatialFilterType.Predefined) {
|
|
342
|
-
const geojson = {
|
|
343
|
-
type: 'Point',
|
|
344
|
-
coordinates: ''
|
|
345
|
-
};
|
|
346
|
-
this.formControl.setValue(geojson);
|
|
347
|
-
}
|
|
348
|
-
// Necessary to apply the right style when geometry type is Point
|
|
349
|
-
if (this.type === SpatialFilterType.Point) {
|
|
350
|
-
this.radius = 1000; // Base radius
|
|
351
|
-
this.radiusFormControl.setValue(this.radius);
|
|
352
|
-
this.PointStyle = (feature, resolution) => {
|
|
353
|
-
const geom = feature.getGeometry();
|
|
354
|
-
const coordinates = olproj.transform(geom.getCoordinates(), this.map.projection, 'EPSG:4326');
|
|
355
|
-
return new olStyle.Style({
|
|
356
|
-
image: new olStyle.Circle({
|
|
357
|
-
radius: this.radius / (Math.cos((Math.PI / 180) * coordinates[1])) / resolution,
|
|
358
|
-
stroke: new olStyle.Stroke({
|
|
359
|
-
width: 2,
|
|
360
|
-
color: 'rgba(0, 153, 255)'
|
|
361
|
-
}),
|
|
362
|
-
fill: new olStyle.Fill({
|
|
363
|
-
color: 'rgba(0, 153, 255, 0.2)'
|
|
364
|
-
})
|
|
365
|
-
})
|
|
366
|
-
});
|
|
367
|
-
};
|
|
368
|
-
this.overlayStyle = this.PointStyle;
|
|
369
|
-
this.drawStyle$.next(this.overlayStyle);
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
// If geometry types is Polygon
|
|
373
|
-
this.radius = undefined;
|
|
374
|
-
this.PolyStyle = () => {
|
|
375
|
-
return new olStyle.Style({
|
|
376
|
-
stroke: new olStyle.Stroke({
|
|
377
|
-
width: 2,
|
|
378
|
-
color: 'rgba(0, 153, 255)'
|
|
379
|
-
}),
|
|
380
|
-
fill: new olStyle.Fill({
|
|
381
|
-
color: 'rgba(0, 153, 255, 0.2)'
|
|
382
|
-
})
|
|
383
|
-
});
|
|
384
|
-
};
|
|
385
|
-
const color = [0, 153, 255];
|
|
386
|
-
const drawStyle = () => {
|
|
387
|
-
return new olStyle.Style({
|
|
388
|
-
image: new olStyle.Circle({
|
|
389
|
-
radius: 8,
|
|
390
|
-
stroke: new olStyle.Stroke({
|
|
391
|
-
width: 2,
|
|
392
|
-
color: 'rgba(0, 153, 255)'
|
|
393
|
-
}),
|
|
394
|
-
fill: new olStyle.Fill({
|
|
395
|
-
color: 'rgba(0, 153, 255, 0.2)'
|
|
396
|
-
})
|
|
397
|
-
}),
|
|
398
|
-
stroke: new olStyle.Stroke({
|
|
399
|
-
color: color.concat([1]),
|
|
400
|
-
width: 2
|
|
401
|
-
}),
|
|
402
|
-
fill: new olStyle.Fill({
|
|
403
|
-
color: color.concat([0.2])
|
|
404
|
-
})
|
|
405
|
-
});
|
|
406
|
-
};
|
|
407
|
-
this.overlayStyle = this.PolyStyle;
|
|
408
|
-
this.drawStyle$.next(drawStyle);
|
|
409
|
-
}
|
|
410
|
-
this.overlayStyle$.next(this.overlayStyle);
|
|
411
|
-
}
|
|
412
|
-
get store() {
|
|
413
|
-
return this._store;
|
|
414
|
-
}
|
|
415
|
-
set store(store) {
|
|
416
|
-
this._store = store;
|
|
417
|
-
this._store.entities$.subscribe(() => { this.cdRef.detectChanges(); });
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Available measure units for the measure type given
|
|
421
|
-
* @internal
|
|
422
|
-
*/
|
|
423
|
-
get measureUnits() {
|
|
424
|
-
return [MeasureLengthUnit.Meters, MeasureLengthUnit.Kilometers];
|
|
425
|
-
}
|
|
426
|
-
get thematicLength() {
|
|
427
|
-
return this._thematicLength;
|
|
428
|
-
}
|
|
429
|
-
set thematicLength(value) {
|
|
430
|
-
this._thematicLength = value;
|
|
431
|
-
}
|
|
432
|
-
ngOnInit() {
|
|
433
|
-
this.spatialFilterService.loadThematicsList()
|
|
434
|
-
.subscribe((items) => {
|
|
435
|
-
for (const item of items) {
|
|
436
|
-
this.childrens.push(item);
|
|
437
|
-
this.childrens.sort((a, b) => {
|
|
438
|
-
return a.name.localeCompare(b.name);
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
this.groups.push(this.languageService.translate.instant('igo.geo.terrapi.limites'));
|
|
442
|
-
const limits = {
|
|
443
|
-
name: this.groups[0],
|
|
444
|
-
children: []
|
|
445
|
-
};
|
|
446
|
-
this.thematics.push(limits);
|
|
447
|
-
this.childrens.forEach(child => {
|
|
448
|
-
if (child.group && (this.groups.indexOf(child.group) === -1)) {
|
|
449
|
-
this.groups.push(child.group);
|
|
450
|
-
const thematic = {
|
|
451
|
-
name: child.group,
|
|
452
|
-
children: []
|
|
453
|
-
};
|
|
454
|
-
this.thematics.push(thematic);
|
|
455
|
-
}
|
|
456
|
-
if (!child.group) {
|
|
457
|
-
if (child.name === this.languageService.translate.instant('igo.geo.terrapi.AdmRegion') ||
|
|
458
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.Mun') ||
|
|
459
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.Arrond') ||
|
|
460
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.CircFed') ||
|
|
461
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.CircProv') ||
|
|
462
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.DirReg') ||
|
|
463
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.MRC') ||
|
|
464
|
-
child.name === this.languageService.translate.instant('igo.geo.terrapi.RegTour')) {
|
|
465
|
-
child.group = limits.name;
|
|
466
|
-
}
|
|
467
|
-
else if (child.name === this.languageService.translate.instant('igo.geo.terrapi.routes')) {
|
|
468
|
-
child.group = this.languageService.translate.instant('igo.geo.spatialFilter.group.transport');
|
|
469
|
-
}
|
|
470
|
-
else {
|
|
471
|
-
const thematic = {
|
|
472
|
-
name: child.name,
|
|
473
|
-
children: [],
|
|
474
|
-
source: child.source
|
|
475
|
-
};
|
|
476
|
-
this.thematics.push(thematic);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
this.thematics.sort((a, b) => {
|
|
480
|
-
return a.name.localeCompare(b.name);
|
|
481
|
-
});
|
|
482
|
-
});
|
|
483
|
-
this.thematics.forEach(thematic => {
|
|
484
|
-
for (const child of this.childrens) {
|
|
485
|
-
if (child.group === thematic.name) {
|
|
486
|
-
thematic.children.push(child);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
});
|
|
490
|
-
});
|
|
491
|
-
this.dataSource.data = this.thematics;
|
|
492
|
-
this.drawGuide$.next(null);
|
|
493
|
-
this.value$.next(this.formControl.value ? this.formControl.value : undefined);
|
|
494
|
-
this.value$$ = this.formControl.valueChanges.subscribe((value) => {
|
|
495
|
-
if (value) {
|
|
496
|
-
this.value$.next(value);
|
|
497
|
-
this.drawZone = this.formControl.value;
|
|
498
|
-
if (this.buffer !== 0) {
|
|
499
|
-
this.drawZoneEvent.emit(this.drawZone);
|
|
500
|
-
this.bufferFormControl.setValue(this.buffer);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
else {
|
|
504
|
-
this.value$.next(undefined);
|
|
505
|
-
this.drawZone = undefined;
|
|
506
|
-
}
|
|
507
|
-
});
|
|
508
|
-
this.value$.subscribe(() => {
|
|
509
|
-
this.getRadius();
|
|
510
|
-
this.cdRef.detectChanges();
|
|
511
|
-
});
|
|
512
|
-
this.radiusChanges$$ = this.radiusFormControl.valueChanges.subscribe(() => {
|
|
513
|
-
this.getRadius();
|
|
514
|
-
this.cdRef.detectChanges();
|
|
515
|
-
});
|
|
516
|
-
this.bufferChanges$$ = this.bufferFormControl.valueChanges
|
|
517
|
-
.pipe(debounceTime(500))
|
|
518
|
-
.subscribe((value) => {
|
|
519
|
-
if (this.measureUnit === MeasureLengthUnit.Meters && value > 0 && value <= 100000) {
|
|
520
|
-
this.buffer = value;
|
|
521
|
-
this.bufferEvent.emit(value);
|
|
522
|
-
this.spatialFilterService.loadBufferGeometry(this.drawZone, SpatialFilterType.Polygon, value).subscribe((featureGeom) => {
|
|
523
|
-
this.zoneWithBuffer = featureGeom;
|
|
524
|
-
this.zoneWithBufferChange.emit(this.zoneWithBuffer);
|
|
525
|
-
});
|
|
526
|
-
}
|
|
527
|
-
else if (this.measureUnit === MeasureLengthUnit.Kilometers && value > 0 && value <= 100) {
|
|
528
|
-
this.buffer = value;
|
|
529
|
-
this.bufferEvent.emit(value);
|
|
530
|
-
this.spatialFilterService.loadBufferGeometry(this.drawZone, SpatialFilterType.Polygon, value * 1000).subscribe((featureGeom) => {
|
|
531
|
-
this.zoneWithBuffer = featureGeom;
|
|
532
|
-
this.zoneWithBufferChange.emit(this.zoneWithBuffer);
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
else if (value === 0) {
|
|
536
|
-
this.buffer = value;
|
|
537
|
-
this.bufferEvent.emit(value);
|
|
538
|
-
this.drawZoneEvent.emit(this.drawZone);
|
|
539
|
-
}
|
|
540
|
-
else if (value < 0 ||
|
|
541
|
-
(this.measureUnit === MeasureLengthUnit.Meters && value > 100000) ||
|
|
542
|
-
(this.measureUnit === MeasureLengthUnit.Kilometers && value > 100)) {
|
|
543
|
-
this.bufferFormControl.setValue(0);
|
|
544
|
-
this.buffer = 0;
|
|
545
|
-
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.bufferAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
546
|
-
}
|
|
547
|
-
});
|
|
548
|
-
const selectedRecordStrategy = new EntityStoreFilterSelectionStrategy({});
|
|
549
|
-
const selectionStrategy = new FeatureStoreSelectionStrategy({
|
|
550
|
-
layer: new VectorLayer({
|
|
551
|
-
zIndex: 300,
|
|
552
|
-
source: new FeatureDataSource(),
|
|
553
|
-
style: undefined,
|
|
554
|
-
showInLayerList: false,
|
|
555
|
-
exportable: false,
|
|
556
|
-
browsable: false
|
|
557
|
-
}),
|
|
558
|
-
map: this.map,
|
|
559
|
-
hitTolerance: 15,
|
|
560
|
-
motion: FeatureMotion.Default,
|
|
561
|
-
many: true,
|
|
562
|
-
dragBox: true
|
|
563
|
-
});
|
|
564
|
-
this.store.addStrategy(selectionStrategy, true);
|
|
565
|
-
this.store.addStrategy(selectedRecordStrategy, false);
|
|
566
|
-
}
|
|
567
|
-
/**
|
|
568
|
-
* Unsubscribe to the value stream
|
|
569
|
-
* @internal
|
|
570
|
-
*/
|
|
571
|
-
ngOnDestroy() {
|
|
572
|
-
this.value$$.unsubscribe();
|
|
573
|
-
this.radiusChanges$$.unsubscribe();
|
|
574
|
-
this.bufferChanges$$.unsubscribe();
|
|
575
|
-
this.cdRef.detach();
|
|
576
|
-
if (this.radiusChanges$$) {
|
|
577
|
-
this.radiusChanges$$.unsubscribe();
|
|
578
|
-
}
|
|
579
|
-
if (this.value$$) {
|
|
580
|
-
this.value$$.unsubscribe();
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
onItemTypeChange(event) {
|
|
584
|
-
this.selectedItemType = event.value;
|
|
585
|
-
this.itemTypeChange.emit(this.selectedItemType);
|
|
586
|
-
}
|
|
587
|
-
/**
|
|
588
|
-
* Set the measure unit
|
|
589
|
-
* @internal
|
|
590
|
-
*/
|
|
591
|
-
onMeasureUnitChange(unit) {
|
|
592
|
-
if (unit === this.measureUnit) {
|
|
593
|
-
return;
|
|
594
|
-
}
|
|
595
|
-
else {
|
|
596
|
-
this.measureUnit = unit;
|
|
597
|
-
this.measureUnitChange.emit(this.measureUnit);
|
|
598
|
-
if (this.isPolygon()) {
|
|
599
|
-
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
600
|
-
this.bufferFormControl.setValue(this.bufferFormControl.value * 1000) :
|
|
601
|
-
this.bufferFormControl.setValue(this.bufferFormControl.value / 1000);
|
|
602
|
-
}
|
|
603
|
-
else if (this.isPoint()) {
|
|
604
|
-
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
605
|
-
this.radiusFormControl.setValue(this.radiusFormControl.value * 1000) :
|
|
606
|
-
this.radiusFormControl.setValue(this.radiusFormControl.value / 1000);
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
}
|
|
610
|
-
isPredefined() {
|
|
611
|
-
return this.type === SpatialFilterType.Predefined;
|
|
612
|
-
}
|
|
613
|
-
isPolygon() {
|
|
614
|
-
return this.type === SpatialFilterType.Polygon;
|
|
615
|
-
}
|
|
616
|
-
isPoint() {
|
|
617
|
-
return this.type === SpatialFilterType.Point;
|
|
618
|
-
}
|
|
619
|
-
hasChild(_, node) {
|
|
620
|
-
if (node.children) {
|
|
621
|
-
return node.children.length;
|
|
622
|
-
}
|
|
623
|
-
return false;
|
|
624
|
-
}
|
|
625
|
-
onToggleClick(node) {
|
|
626
|
-
this.treeControl.isExpanded(node) ? this.treeControl.collapse(node) : this.treeControl.expand(node);
|
|
627
|
-
}
|
|
628
|
-
isAllSelected(node) {
|
|
629
|
-
let numSelected;
|
|
630
|
-
let numNodes = 0;
|
|
631
|
-
if (!node) {
|
|
632
|
-
numSelected = this.selectedThematics.selected.length;
|
|
633
|
-
this.thematics.forEach(thematic => {
|
|
634
|
-
if (this.groups.indexOf(thematic.name) === -1) {
|
|
635
|
-
numNodes++;
|
|
636
|
-
}
|
|
637
|
-
});
|
|
638
|
-
this.childrens.forEach(children => {
|
|
639
|
-
if (!this.thematics.find(thematic => thematic.source === children.source)) {
|
|
640
|
-
numNodes++;
|
|
641
|
-
}
|
|
642
|
-
});
|
|
643
|
-
}
|
|
644
|
-
else {
|
|
645
|
-
numSelected = node.children.length;
|
|
646
|
-
node.children.forEach(children => {
|
|
647
|
-
if (this.selectedThematics.selected.find(thematic => thematic === children)) {
|
|
648
|
-
numNodes++;
|
|
649
|
-
}
|
|
650
|
-
});
|
|
651
|
-
}
|
|
652
|
-
if (numNodes >= 1) {
|
|
653
|
-
return numSelected === numNodes;
|
|
654
|
-
}
|
|
655
|
-
else {
|
|
656
|
-
return false;
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
hasChildrenSelected(node) {
|
|
660
|
-
let bool = false;
|
|
661
|
-
node.children.forEach(child => {
|
|
662
|
-
if (this.selectedThematics.selected.find(thematic => thematic.source === child.source)) {
|
|
663
|
-
bool = true;
|
|
664
|
-
}
|
|
665
|
-
});
|
|
666
|
-
return bool;
|
|
667
|
-
}
|
|
668
|
-
/**
|
|
669
|
-
* Apply header checkbox
|
|
670
|
-
*/
|
|
671
|
-
masterToggle() {
|
|
672
|
-
this.isAllSelected() ?
|
|
673
|
-
this.selectedThematics.clear() :
|
|
674
|
-
this.selectAll();
|
|
675
|
-
const selectedThematicsName = [];
|
|
676
|
-
for (const thematic of this.selectedThematics.selected) {
|
|
677
|
-
selectedThematicsName.push(thematic);
|
|
678
|
-
}
|
|
679
|
-
if (this.isAllSelected()) {
|
|
680
|
-
this.thematics.forEach(thematic => {
|
|
681
|
-
if (this.hasChild(0, thematic)) {
|
|
682
|
-
this.treeControl.expand(thematic);
|
|
683
|
-
}
|
|
684
|
-
});
|
|
685
|
-
}
|
|
686
|
-
else {
|
|
687
|
-
this.thematics.forEach(thematic => {
|
|
688
|
-
if (this.hasChild(0, thematic)) {
|
|
689
|
-
this.treeControl.collapse(thematic);
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
}
|
|
693
|
-
this.thematicChange.emit(selectedThematicsName);
|
|
694
|
-
}
|
|
695
|
-
selectAll(node) {
|
|
696
|
-
if (!node) {
|
|
697
|
-
this.thematics.forEach(thematic => {
|
|
698
|
-
if (this.groups.indexOf(thematic.name) === -1) {
|
|
699
|
-
this.selectedThematics.select(thematic);
|
|
700
|
-
}
|
|
701
|
-
});
|
|
702
|
-
this.childrens.forEach(children => {
|
|
703
|
-
if (!this.selectedThematics.selected.find(thematic => thematic.source === children.source)) {
|
|
704
|
-
this.selectedThematics.select(children);
|
|
705
|
-
}
|
|
706
|
-
});
|
|
707
|
-
}
|
|
708
|
-
else {
|
|
709
|
-
if (this.hasChild(0, node)) {
|
|
710
|
-
node.children.forEach(children => this.selectedThematics.select(children));
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
childrensToggle(node) {
|
|
715
|
-
this.isAllSelected(node) ?
|
|
716
|
-
node.children.forEach(child => this.selectedThematics.deselect(child)) :
|
|
717
|
-
this.selectAll(node);
|
|
718
|
-
const selectedThematicsName = [];
|
|
719
|
-
for (const thematic of this.selectedThematics.selected) {
|
|
720
|
-
selectedThematicsName.push(thematic);
|
|
721
|
-
}
|
|
722
|
-
this.treeControl.expand(node);
|
|
723
|
-
this.thematicChange.emit(selectedThematicsName);
|
|
724
|
-
}
|
|
725
|
-
/**
|
|
726
|
-
* Apply changes to the thematics selected tree and emit event
|
|
727
|
-
*/
|
|
728
|
-
onToggleChange(nodeSelected) {
|
|
729
|
-
let selected = false;
|
|
730
|
-
if (this.selectedThematics.selected.find(thematic => thematic.source === nodeSelected.source) !== undefined) {
|
|
731
|
-
selected = true;
|
|
732
|
-
}
|
|
733
|
-
this.childrens.forEach(children => {
|
|
734
|
-
if (children === nodeSelected && selected === false) {
|
|
735
|
-
this.selectedThematics.select(children);
|
|
736
|
-
}
|
|
737
|
-
if (children === nodeSelected && selected === true) {
|
|
738
|
-
this.selectedThematics.deselect(children);
|
|
739
|
-
}
|
|
740
|
-
});
|
|
741
|
-
this.thematics.forEach(thematic => {
|
|
742
|
-
if (thematic === nodeSelected && selected === false) {
|
|
743
|
-
this.selectedThematics.select(thematic);
|
|
744
|
-
}
|
|
745
|
-
if (thematic === nodeSelected && selected === true) {
|
|
746
|
-
this.selectedThematics.deselect(thematic);
|
|
747
|
-
}
|
|
748
|
-
});
|
|
749
|
-
const selectedThematicsName = [];
|
|
750
|
-
for (const thematic of this.selectedThematics.selected) {
|
|
751
|
-
selectedThematicsName.push(thematic);
|
|
752
|
-
}
|
|
753
|
-
this.thematicChange.emit(selectedThematicsName);
|
|
754
|
-
}
|
|
755
|
-
onDrawControlChange() {
|
|
756
|
-
this.drawControlIsActive = !this.drawControlIsActive;
|
|
757
|
-
}
|
|
758
|
-
onfreehandControlChange() {
|
|
759
|
-
this.freehandDrawIsActive = !this.freehandDrawIsActive;
|
|
760
|
-
this.freehandControl.emit(this.freehandDrawIsActive);
|
|
761
|
-
if (this.isPoint()) {
|
|
762
|
-
this.predefinedRadius.emit(!this.freehandDrawIsActive);
|
|
763
|
-
if (this.freehandDrawIsActive) {
|
|
764
|
-
this.overlayStyle$.next(undefined);
|
|
765
|
-
this.drawStyle$.next(undefined);
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
else {
|
|
769
|
-
this.predefinedRadius.emit(false);
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
/**
|
|
773
|
-
* Launch search button
|
|
774
|
-
*/
|
|
775
|
-
toggleSearchButton() {
|
|
776
|
-
if (!this.isPredefined()) {
|
|
777
|
-
if (this.buffer > 0) {
|
|
778
|
-
this.zoneWithBuffer.meta = {
|
|
779
|
-
id: undefined,
|
|
780
|
-
title: 'Zone'
|
|
781
|
-
};
|
|
782
|
-
this.zoneWithBuffer.properties = {
|
|
783
|
-
nom: 'Zone',
|
|
784
|
-
type: this.type
|
|
785
|
-
};
|
|
786
|
-
this.drawZoneEvent.emit(this.zoneWithBuffer);
|
|
787
|
-
}
|
|
788
|
-
else {
|
|
789
|
-
this.drawZone.meta = {
|
|
790
|
-
id: undefined,
|
|
791
|
-
title: 'Zone'
|
|
792
|
-
};
|
|
793
|
-
this.drawZone.properties = {
|
|
794
|
-
nom: 'Zone',
|
|
795
|
-
type: this.type
|
|
796
|
-
};
|
|
797
|
-
this.drawZoneEvent.emit(this.drawZone);
|
|
798
|
-
}
|
|
799
|
-
}
|
|
800
|
-
if (this.isPoint()) {
|
|
801
|
-
this.radiusEvent.emit(this.radius);
|
|
802
|
-
}
|
|
803
|
-
else if (this.isPolygon()) {
|
|
804
|
-
this.bufferEvent.emit(this.buffer);
|
|
805
|
-
}
|
|
806
|
-
this.toggleSearch.emit();
|
|
807
|
-
this.store.entities$.pipe(debounceTime(500)).subscribe((value) => {
|
|
808
|
-
if (value.length && this.layers.length === this.thematicLength + 1) {
|
|
809
|
-
this.openWorkspace.emit();
|
|
810
|
-
this.createTableTemplate();
|
|
811
|
-
}
|
|
812
|
-
});
|
|
813
|
-
}
|
|
814
|
-
/**
|
|
815
|
-
* Launch clear button (clear store and map layers)
|
|
816
|
-
*/
|
|
817
|
-
clearButton() {
|
|
818
|
-
this.loading = true;
|
|
819
|
-
if (this.store) {
|
|
820
|
-
this.store.clear();
|
|
821
|
-
}
|
|
822
|
-
if (this.isPoint() || this.isPolygon()) {
|
|
823
|
-
this.drawZone = undefined;
|
|
824
|
-
this.formControl.reset();
|
|
825
|
-
}
|
|
826
|
-
this.bufferFormControl.setValue(0);
|
|
827
|
-
this.buffer = 0;
|
|
828
|
-
this.bufferEvent.emit(0);
|
|
829
|
-
this.clearButtonEvent.emit();
|
|
830
|
-
this.loading = false;
|
|
831
|
-
this.tableTemplate = undefined;
|
|
832
|
-
}
|
|
833
|
-
clearDrawZone() {
|
|
834
|
-
this.formControl.reset();
|
|
835
|
-
this.bufferFormControl.setValue(0);
|
|
836
|
-
this.buffer = 0;
|
|
837
|
-
}
|
|
838
|
-
/**
|
|
839
|
-
* Launch clear search (clear field if type is predefined)
|
|
840
|
-
*/
|
|
841
|
-
clearSearch() {
|
|
842
|
-
this.selectedThematics.clear();
|
|
843
|
-
this.bufferFormControl.setValue(0);
|
|
844
|
-
this.buffer = 0;
|
|
845
|
-
this.bufferEvent.emit(0);
|
|
846
|
-
this.thematicChange.emit([]);
|
|
847
|
-
this.clearSearchEvent.emit();
|
|
848
|
-
}
|
|
849
|
-
/**
|
|
850
|
-
* Verify conditions of incomplete fields or busy service
|
|
851
|
-
*/
|
|
852
|
-
disableSearchButton() {
|
|
853
|
-
if (this.type === SpatialFilterType.Predefined) {
|
|
854
|
-
if (this.selectedItemType === SpatialFilterItemType.Address) {
|
|
855
|
-
if (this.queryType !== undefined && this.zone !== undefined) {
|
|
856
|
-
return this.loading;
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
if (this.selectedItemType === SpatialFilterItemType.Thematics) {
|
|
860
|
-
if (this.queryType !== undefined && this.zone !== undefined && this.selectedThematics.selected.length > 0) {
|
|
861
|
-
return this.loading;
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
if (this.type === SpatialFilterType.Polygon || this.type === SpatialFilterType.Point) {
|
|
866
|
-
if (this.selectedItemType === SpatialFilterItemType.Address && this.formControl.value !== null) {
|
|
867
|
-
return this.loading;
|
|
868
|
-
}
|
|
869
|
-
if (this.selectedItemType === SpatialFilterItemType.Thematics) {
|
|
870
|
-
if (this.selectedThematics.selected.length > 0 && this.formControl.value !== null) {
|
|
871
|
-
return this.loading;
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
return true;
|
|
876
|
-
}
|
|
877
|
-
disabledClearSearch() {
|
|
878
|
-
let disable = true;
|
|
879
|
-
this.selectedItemType === SpatialFilterItemType.Address ?
|
|
880
|
-
disable = this.queryType === undefined :
|
|
881
|
-
disable = this.queryType === undefined && this.selectedThematics.selected.length === 0;
|
|
882
|
-
return disable;
|
|
883
|
-
}
|
|
884
|
-
/**
|
|
885
|
-
* Manage radius value at user change
|
|
886
|
-
*/
|
|
887
|
-
getRadius() {
|
|
888
|
-
let formValue;
|
|
889
|
-
if (this.formControl.value !== null) {
|
|
890
|
-
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
891
|
-
formValue = this.formControl.value.radius :
|
|
892
|
-
formValue = this.formControl.value.radius / 1000;
|
|
893
|
-
}
|
|
894
|
-
else {
|
|
895
|
-
formValue = undefined;
|
|
896
|
-
}
|
|
897
|
-
if (this.type === SpatialFilterType.Point) {
|
|
898
|
-
if (!this.freehandDrawIsActive) {
|
|
899
|
-
if (this.radiusFormControl.value < 0 ||
|
|
900
|
-
(this.measureUnit === MeasureLengthUnit.Meters && this.radiusFormControl.value >= 100000) ||
|
|
901
|
-
(this.measureUnit === MeasureLengthUnit.Kilometers && this.radiusFormControl.value >= 100)) {
|
|
902
|
-
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.radiusAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
903
|
-
this.radius = 1000;
|
|
904
|
-
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
905
|
-
this.radiusFormControl.setValue(this.radius) :
|
|
906
|
-
this.radiusFormControl.setValue(this.radius / 1000);
|
|
907
|
-
this.drawGuide$.next(this.radius);
|
|
908
|
-
return;
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
else {
|
|
912
|
-
if (formValue) {
|
|
913
|
-
if (formValue >= 100000) {
|
|
914
|
-
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.radiusAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
915
|
-
this.formControl.reset();
|
|
916
|
-
return;
|
|
917
|
-
}
|
|
918
|
-
if (formValue !== this.radiusFormControl.value) {
|
|
919
|
-
this.radiusFormControl.setValue(formValue);
|
|
920
|
-
return;
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
}
|
|
924
|
-
if (this.measureUnit === MeasureLengthUnit.Meters) {
|
|
925
|
-
this.radius = this.radiusFormControl.value;
|
|
926
|
-
this.drawGuide$.next(this.radius);
|
|
927
|
-
}
|
|
928
|
-
else {
|
|
929
|
-
this.radius = this.radiusFormControl.value * 1000;
|
|
930
|
-
this.drawGuide$.next(this.radius * 1000);
|
|
931
|
-
}
|
|
932
|
-
this.overlayStyle$.next(this.PointStyle);
|
|
933
|
-
this.drawStyle$.next(this.PointStyle);
|
|
934
|
-
}
|
|
935
|
-
}
|
|
936
|
-
toggleVisibleList() {
|
|
937
|
-
this.listIsVisible = !this.listIsVisible;
|
|
938
|
-
}
|
|
939
|
-
createTableTemplate() {
|
|
940
|
-
const typeColumn = {
|
|
941
|
-
name: 'meta.title',
|
|
942
|
-
title: this.languageService.translate.instant('igo.geo.spatialFilter.type'),
|
|
943
|
-
renderer: EntityTableColumnRenderer.UnsanitizedHTML
|
|
944
|
-
};
|
|
945
|
-
const nameColumn = {
|
|
946
|
-
name: 'properties.nom',
|
|
947
|
-
title: this.languageService.translate.instant('igo.geo.spatialFilter.searchResults'),
|
|
948
|
-
renderer: EntityTableColumnRenderer.UnsanitizedHTML
|
|
949
|
-
};
|
|
950
|
-
const columns = [typeColumn, nameColumn];
|
|
951
|
-
this.tableTemplate = {
|
|
952
|
-
selection: true,
|
|
953
|
-
sort: true,
|
|
954
|
-
columns
|
|
955
|
-
};
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
SpatialFilterItemComponent.ɵfac = function SpatialFilterItemComponent_Factory(t) { return new (t || SpatialFilterItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.SpatialFilterService), i0.ɵɵdirectiveInject(i2.MessageService), i0.ɵɵdirectiveInject(i2.LanguageService)); };
|
|
959
|
-
SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", predefinedRadius: "predefinedRadius", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 43, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius", "predefinedRadius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
960
|
-
i0.ɵɵelement(0, "igo-geometry-form-field-input", 0);
|
|
961
|
-
i0.ɵɵpipe(1, "async");
|
|
962
|
-
i0.ɵɵpipe(2, "async");
|
|
963
|
-
i0.ɵɵpipe(3, "async");
|
|
964
|
-
i0.ɵɵelementStart(4, "div", 1);
|
|
965
|
-
i0.ɵɵtemplate(5, SpatialFilterItemComponent_mat_slide_toggle_5_Template, 3, 5, "mat-slide-toggle", 2);
|
|
966
|
-
i0.ɵɵtemplate(6, SpatialFilterItemComponent_mat_slide_toggle_6_Template, 3, 5, "mat-slide-toggle", 2);
|
|
967
|
-
i0.ɵɵelementEnd();
|
|
968
|
-
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_7_Template, 8, 8, "div", 3);
|
|
969
|
-
i0.ɵɵtemplate(8, SpatialFilterItemComponent_div_8_Template, 8, 8, "div", 4);
|
|
970
|
-
i0.ɵɵelementStart(9, "mat-label", 5);
|
|
971
|
-
i0.ɵɵtext(10);
|
|
972
|
-
i0.ɵɵpipe(11, "translate");
|
|
973
|
-
i0.ɵɵelementEnd();
|
|
974
|
-
i0.ɵɵelementStart(12, "mat-radio-group", 6);
|
|
975
|
-
i0.ɵɵtemplate(13, SpatialFilterItemComponent_mat_radio_button_13_Template, 3, 4, "mat-radio-button", 7);
|
|
976
|
-
i0.ɵɵelementEnd();
|
|
977
|
-
i0.ɵɵtemplate(14, SpatialFilterItemComponent_div_14_Template, 11, 5, "div", 8);
|
|
978
|
-
i0.ɵɵelementStart(15, "div", 9);
|
|
979
|
-
i0.ɵɵtemplate(16, SpatialFilterItemComponent_button_16_Template, 3, 4, "button", 10);
|
|
980
|
-
i0.ɵɵtemplate(17, SpatialFilterItemComponent_button_17_Template, 3, 4, "button", 11);
|
|
981
|
-
i0.ɵɵelementStart(18, "button", 12);
|
|
982
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_18_listener() { return ctx.toggleSearchButton(); });
|
|
983
|
-
i0.ɵɵtext(19);
|
|
984
|
-
i0.ɵɵpipe(20, "translate");
|
|
985
|
-
i0.ɵɵelementEnd();
|
|
986
|
-
i0.ɵɵelementStart(21, "button", 13);
|
|
987
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_21_listener() { return ctx.clearButton(); });
|
|
988
|
-
i0.ɵɵtext(22);
|
|
989
|
-
i0.ɵɵpipe(23, "translate");
|
|
990
|
-
i0.ɵɵelementEnd();
|
|
991
|
-
i0.ɵɵelementStart(24, "button", 14);
|
|
992
|
-
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_24_listener() { return ctx.export.emit(); });
|
|
993
|
-
i0.ɵɵtext(25);
|
|
994
|
-
i0.ɵɵpipe(26, "translate");
|
|
995
|
-
i0.ɵɵelementEnd()();
|
|
996
|
-
i0.ɵɵtemplate(27, SpatialFilterItemComponent_button_27_Template, 3, 3, "button", 15);
|
|
997
|
-
i0.ɵɵtemplate(28, SpatialFilterItemComponent_div_28_Template, 3, 3, "div", 16);
|
|
998
|
-
} if (rf & 2) {
|
|
999
|
-
i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 29, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 31, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 33, ctx.overlayStyle$))("radius", ctx.radius)("predefinedRadius", ctx.predefinedRadius);
|
|
1000
|
-
i0.ɵɵadvance(5);
|
|
1001
|
-
i0.ɵɵproperty("ngIf", !ctx.isPredefined());
|
|
1002
|
-
i0.ɵɵadvance(1);
|
|
1003
|
-
i0.ɵɵproperty("ngIf", !ctx.isPredefined());
|
|
1004
|
-
i0.ɵɵadvance(1);
|
|
1005
|
-
i0.ɵɵproperty("ngIf", ctx.isPolygon());
|
|
1006
|
-
i0.ɵɵadvance(1);
|
|
1007
|
-
i0.ɵɵproperty("ngIf", ctx.isPoint());
|
|
1008
|
-
i0.ɵɵadvance(2);
|
|
1009
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 35, "igo.geo.spatialFilter.search"), " : ");
|
|
1010
|
-
i0.ɵɵadvance(2);
|
|
1011
|
-
i0.ɵɵproperty("value", ctx.selectedItemType);
|
|
1012
|
-
i0.ɵɵadvance(1);
|
|
1013
|
-
i0.ɵɵproperty("ngForOf", ctx.itemType);
|
|
1014
|
-
i0.ɵɵadvance(1);
|
|
1015
|
-
i0.ɵɵproperty("ngIf", ctx.selectedItemType === "Thematics" && !ctx.tableTemplate || ctx.selectedItemType === "Thematics" && ctx.tableTemplate && !ctx.listIsVisible);
|
|
1016
|
-
i0.ɵɵadvance(2);
|
|
1017
|
-
i0.ɵɵproperty("ngIf", ctx.isPredefined());
|
|
1018
|
-
i0.ɵɵadvance(1);
|
|
1019
|
-
i0.ɵɵproperty("ngIf", ctx.isPolygon() || ctx.isPoint());
|
|
1020
|
-
i0.ɵɵadvance(1);
|
|
1021
|
-
i0.ɵɵproperty("disabled", ctx.disableSearchButton());
|
|
1022
|
-
i0.ɵɵadvance(1);
|
|
1023
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 37, "igo.geo.spatialFilter.goSearch"), " ");
|
|
1024
|
-
i0.ɵɵadvance(2);
|
|
1025
|
-
i0.ɵɵproperty("disabled", ctx.allLayers.length === 0);
|
|
1026
|
-
i0.ɵɵadvance(1);
|
|
1027
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 39, "igo.geo.spatialFilter.removeLayer"), " ");
|
|
1028
|
-
i0.ɵɵadvance(2);
|
|
1029
|
-
i0.ɵɵproperty("disabled", !ctx.store.entities$.getValue().length);
|
|
1030
|
-
i0.ɵɵadvance(1);
|
|
1031
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 41, "igo.geo.spatialFilter.exportLayer"), " ");
|
|
1032
|
-
i0.ɵɵadvance(2);
|
|
1033
|
-
i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && !ctx.listIsVisible);
|
|
1034
|
-
i0.ɵɵadvance(1);
|
|
1035
|
-
i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && ctx.listIsVisible);
|
|
1036
|
-
} }, styles: [".header[_ngcontent-%COMP%]{margin-top:5px;width:100%}.mat-slide-toggle[_ngcontent-%COMP%]{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 20px)}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{margin-top:5px}.mat-column-select[_ngcontent-%COMP%]{overflow:auto}.buttons[_ngcontent-%COMP%]{margin-top:15px}.search-button[_ngcontent-%COMP%]{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button[_ngcontent-%COMP%]{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button[_ngcontent-%COMP%]{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button[_ngcontent-%COMP%]{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button[_ngcontent-%COMP%]{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button[_ngcontent-%COMP%]{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics[_ngcontent-%COMP%]{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results[_ngcontent-%COMP%]{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults[_ngcontent-%COMP%]{max-width:100px;margin-right:5px}.buffer-unit[_ngcontent-%COMP%], .radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.radius[_ngcontent-%COMP%], .buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-ul[_ngcontent-%COMP%]{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check[_ngcontent-%COMP%], .tree-check-2[_ngcontent-%COMP%]{position:relative;margin-left:auto;margin-right:5px}.thematics-header[_ngcontent-%COMP%]{max-width:250px}.checks-header[_ngcontent-%COMP%]{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox[_ngcontent-%COMP%]{padding:5px}.mat-tree-node[_ngcontent-%COMP%]{position:relative;min-height:42px;width:280px}.mat-header-cell[_ngcontent-%COMP%]{height:56px}.results[_ngcontent-%COMP%]{max-height:45%;width:98%}.results[_ngcontent-%COMP%] igo-entity-table[_ngcontent-%COMP%] div.table-container{overflow:visible;overflow:initial}"], changeDetection: 0 });
|
|
1037
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
|
|
1038
|
-
type: Component,
|
|
1039
|
-
args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\n [formControl]=\"formControl\"\n [map]=\"map\"\n [geometryType]=\"geometryType\"\n [drawGuide]=\"drawGuide$ | async\"\n [measure]=\"measure\"\n [drawControlIsActive]=\"drawControlIsActive\"\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\n [drawStyle]=\"drawStyle$ | async\"\n [overlayStyle]=\"overlayStyle$ | async\"\n [radius]=\"radius\"\n [predefinedRadius]=\"predefinedRadius\">\n</igo-geometry-form-field-input>\n\n<div class=\"header\">\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onDrawControlChange()\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"freehandDrawIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onfreehandControlChange()\">\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\n </mat-slide-toggle>\n</div>\n\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\n <form class=\"radius-form\">\n <mat-form-field class=\"radius\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\n<mat-radio-group [value]=\"selectedItemType\">\n <mat-radio-button *ngFor=\"let item of itemType\"\n [value]=\"item\"\n (change)=\"onItemTypeChange($event)\">\n {{'igo.geo.spatialFilter.' + item | translate}}\n </mat-radio-button>\n</mat-radio-group>\n\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\n <mat-table>\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\n </ng-container>\n\n <!-- Select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n\n </mat-table>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\n <li class=\"mat-tree-node\">\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n {{node.name}}\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? onToggleChange(node) : null\"\n [checked]=\"selectedThematics.isSelected(node)\">\n </mat-checkbox>\n </li>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\n <div class=\"mat-tree-node\">\n <button mat-icon-button\n (click)=\"onToggleClick(node)\">\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\n </button>\n {{node.name}}\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\n [checked]=\"isAllSelected(node)\"\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\n </mat-checkbox>\n </div>\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container matTreeNodeOutlet></ng-container>\n </ul>\n </mat-nested-tree-node>\n\n </mat-tree>\n</div>\n\n<div class=\"buttons\">\n\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\n (click)=\"clearSearch()\">\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\n </button>\n\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\n (click)=\"clearDrawZone()\">\n {{'igo.geo.spatialFilter.clearForm' | translate}}\n </button>\n\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\n (click)=\"toggleSearchButton()\">\n {{'igo.geo.spatialFilter.goSearch' | translate}}\n </button>\n\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\n </button>\n\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\n </button>\n\n</div>\n\n<button\n class=\"chevron-down\"\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n</button>\n\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\n <button\n *ngIf=\"listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\n </button>\n <igo-entity-table\n class=\"results-list\"\n [template]=\"tableTemplate\"\n [store]=\"store\"\n (entitySelectChange)=\"entityChange.emit($event)\">\n </igo-entity-table>\n</div>\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
|
|
1040
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SpatialFilterService }, { type: i2.MessageService }, { type: i2.LanguageService }]; }, { map: [{
|
|
1041
|
-
type: Input
|
|
1042
|
-
}], type: [{
|
|
1043
|
-
type: Input
|
|
1044
|
-
}], queryType: [{
|
|
1045
|
-
type: Input
|
|
1046
|
-
}], zone: [{
|
|
1047
|
-
type: Input
|
|
1048
|
-
}], loading: [{
|
|
1049
|
-
type: Input
|
|
1050
|
-
}], store: [{
|
|
1051
|
-
type: Input
|
|
1052
|
-
}], layers: [{
|
|
1053
|
-
type: Input
|
|
1054
|
-
}], allLayers: [{
|
|
1055
|
-
type: Input
|
|
1056
|
-
}], thematicLength: [{
|
|
1057
|
-
type: Input
|
|
1058
|
-
}], toggleSearch: [{
|
|
1059
|
-
type: Output
|
|
1060
|
-
}], itemTypeChange: [{
|
|
1061
|
-
type: Output
|
|
1062
|
-
}], thematicChange: [{
|
|
1063
|
-
type: Output
|
|
1064
|
-
}], drawZoneEvent: [{
|
|
1065
|
-
type: Output
|
|
1066
|
-
}], bufferEvent: [{
|
|
1067
|
-
type: Output
|
|
1068
|
-
}], zoneWithBufferChange: [{
|
|
1069
|
-
type: Output
|
|
1070
|
-
}], measureUnitChange: [{
|
|
1071
|
-
type: Output
|
|
1072
|
-
}], radiusEvent: [{
|
|
1073
|
-
type: Output
|
|
1074
|
-
}], freehandControl: [{
|
|
1075
|
-
type: Output
|
|
1076
|
-
}], predefinedRadius: [{
|
|
1077
|
-
type: Output
|
|
1078
|
-
}], clearButtonEvent: [{
|
|
1079
|
-
type: Output
|
|
1080
|
-
}], clearSearchEvent: [{
|
|
1081
|
-
type: Output
|
|
1082
|
-
}], export: [{
|
|
1083
|
-
type: Output
|
|
1084
|
-
}], openWorkspace: [{
|
|
1085
|
-
type: Output
|
|
1086
|
-
}], entityChange: [{
|
|
1087
|
-
type: Output
|
|
1088
|
-
}] }); })();
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { SpatialFilterType } from '../../shared/spatial-filter.enum';
|
|
3
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
4
|
+
import { SpatialFilterItemType } from './../../shared/spatial-filter.enum';
|
|
5
|
+
import { UntypedFormControl } from '@angular/forms';
|
|
6
|
+
import { BehaviorSubject } from 'rxjs';
|
|
7
|
+
import * as olStyle from 'ol/style';
|
|
8
|
+
import * as olproj from 'ol/proj';
|
|
9
|
+
import { MatTreeNestedDataSource } from '@angular/material/tree';
|
|
10
|
+
import { MeasureLengthUnit } from '../../../measure';
|
|
11
|
+
import { EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer } from '@igo2/common';
|
|
12
|
+
import { VectorLayer } from '../../../layer/shared';
|
|
13
|
+
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
14
|
+
import { debounceTime } from 'rxjs/operators';
|
|
15
|
+
import { FeatureMotion, FeatureStoreSelectionStrategy } from '../../../feature';
|
|
16
|
+
import { FeatureDataSource } from '../../../datasource/shared';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../../shared/spatial-filter.service";
|
|
19
|
+
import * as i2 from "@igo2/core";
|
|
20
|
+
function SpatialFilterItemComponent_mat_slide_toggle_5_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
22
|
+
i0.ɵɵelementStart(0, "mat-slide-toggle", 17);
|
|
23
|
+
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_slide_toggle_5_Template_mat_slide_toggle_change_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.onDrawControlChange()); });
|
|
24
|
+
i0.ɵɵtext(1);
|
|
25
|
+
i0.ɵɵpipe(2, "translate");
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
29
|
+
i0.ɵɵproperty("checked", ctx_r0.drawControlIsActive)("labelPosition", "before");
|
|
30
|
+
i0.ɵɵadvance(1);
|
|
31
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.spatialFilter.drawControl"), " ");
|
|
32
|
+
} }
|
|
33
|
+
function SpatialFilterItemComponent_mat_slide_toggle_6_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
35
|
+
i0.ɵɵelementStart(0, "mat-slide-toggle", 17);
|
|
36
|
+
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_slide_toggle_6_Template_mat_slide_toggle_change_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onfreehandControlChange()); });
|
|
37
|
+
i0.ɵɵtext(1);
|
|
38
|
+
i0.ɵɵpipe(2, "translate");
|
|
39
|
+
i0.ɵɵelementEnd();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
42
|
+
i0.ɵɵproperty("checked", ctx_r1.freehandDrawIsActive)("labelPosition", "before");
|
|
43
|
+
i0.ɵɵadvance(1);
|
|
44
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.spatialFilter.freehandControl"), " ");
|
|
45
|
+
} }
|
|
46
|
+
function SpatialFilterItemComponent_div_7_mat_option_7_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "mat-option", 6);
|
|
48
|
+
i0.ɵɵtext(1);
|
|
49
|
+
i0.ɵɵpipe(2, "translate");
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
} if (rf & 2) {
|
|
52
|
+
const measureUnit_r15 = ctx.$implicit;
|
|
53
|
+
i0.ɵɵproperty("value", measureUnit_r15);
|
|
54
|
+
i0.ɵɵadvance(1);
|
|
55
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r15), " ");
|
|
56
|
+
} }
|
|
57
|
+
function SpatialFilterItemComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
59
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "form", 19)(2, "mat-form-field", 20);
|
|
60
|
+
i0.ɵɵelement(3, "input", 21);
|
|
61
|
+
i0.ɵɵpipe(4, "translate");
|
|
62
|
+
i0.ɵɵelementEnd()();
|
|
63
|
+
i0.ɵɵelementStart(5, "mat-form-field", 22)(6, "mat-select", 23);
|
|
64
|
+
i0.ɵɵlistener("selectionChange", function SpatialFilterItemComponent_div_7_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.onMeasureUnitChange($event.value)); });
|
|
65
|
+
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_7_mat_option_7_Template, 3, 4, "mat-option", 24);
|
|
66
|
+
i0.ɵɵelementEnd()()();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
69
|
+
i0.ɵɵadvance(3);
|
|
70
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.geo.spatialFilter.buffer"));
|
|
71
|
+
i0.ɵɵproperty("formControl", ctx_r2.bufferFormControl)("value", 0)("readonly", ctx_r2.formControl.value === null);
|
|
72
|
+
i0.ɵɵadvance(3);
|
|
73
|
+
i0.ɵɵproperty("value", ctx_r2.measureUnit);
|
|
74
|
+
i0.ɵɵadvance(1);
|
|
75
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.measureUnits);
|
|
76
|
+
} }
|
|
77
|
+
function SpatialFilterItemComponent_div_8_mat_option_7_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
+
i0.ɵɵelementStart(0, "mat-option", 6);
|
|
79
|
+
i0.ɵɵtext(1);
|
|
80
|
+
i0.ɵɵpipe(2, "translate");
|
|
81
|
+
i0.ɵɵelementEnd();
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
const measureUnit_r19 = ctx.$implicit;
|
|
84
|
+
i0.ɵɵproperty("value", measureUnit_r19);
|
|
85
|
+
i0.ɵɵadvance(1);
|
|
86
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r19), " ");
|
|
87
|
+
} }
|
|
88
|
+
function SpatialFilterItemComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
89
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
90
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "form", 26)(2, "mat-form-field", 27)(3, "input", 28);
|
|
91
|
+
i0.ɵɵlistener("input", function SpatialFilterItemComponent_div_8_Template_input_input_3_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.getRadius()); });
|
|
92
|
+
i0.ɵɵpipe(4, "translate");
|
|
93
|
+
i0.ɵɵelementEnd()()();
|
|
94
|
+
i0.ɵɵelementStart(5, "mat-form-field", 22)(6, "mat-select", 23);
|
|
95
|
+
i0.ɵɵlistener("selectionChange", function SpatialFilterItemComponent_div_8_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.onMeasureUnitChange($event.value)); });
|
|
96
|
+
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_8_mat_option_7_Template, 3, 4, "mat-option", 24);
|
|
97
|
+
i0.ɵɵelementEnd()()();
|
|
98
|
+
} if (rf & 2) {
|
|
99
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
100
|
+
i0.ɵɵadvance(3);
|
|
101
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 6, "igo.geo.spatialFilter.radius"));
|
|
102
|
+
i0.ɵɵproperty("formControl", ctx_r3.radiusFormControl)("value", 1000)("readonly", ctx_r3.freehandDrawIsActive && ctx_r3.formControl.value === null);
|
|
103
|
+
i0.ɵɵadvance(3);
|
|
104
|
+
i0.ɵɵproperty("value", ctx_r3.measureUnit);
|
|
105
|
+
i0.ɵɵadvance(1);
|
|
106
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.measureUnits);
|
|
107
|
+
} }
|
|
108
|
+
function SpatialFilterItemComponent_mat_radio_button_13_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
110
|
+
i0.ɵɵelementStart(0, "mat-radio-button", 29);
|
|
111
|
+
i0.ɵɵlistener("change", function SpatialFilterItemComponent_mat_radio_button_13_Template_mat_radio_button_change_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r24.onItemTypeChange($event)); });
|
|
112
|
+
i0.ɵɵtext(1);
|
|
113
|
+
i0.ɵɵpipe(2, "translate");
|
|
114
|
+
i0.ɵɵelementEnd();
|
|
115
|
+
} if (rf & 2) {
|
|
116
|
+
const item_r23 = ctx.$implicit;
|
|
117
|
+
i0.ɵɵproperty("value", item_r23);
|
|
118
|
+
i0.ɵɵadvance(1);
|
|
119
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter." + item_r23), " ");
|
|
120
|
+
} }
|
|
121
|
+
function SpatialFilterItemComponent_div_14_mat_header_cell_3_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
+
i0.ɵɵelementStart(0, "mat-header-cell", 40);
|
|
123
|
+
i0.ɵɵtext(1);
|
|
124
|
+
i0.ɵɵpipe(2, "translate");
|
|
125
|
+
i0.ɵɵelementEnd();
|
|
126
|
+
} if (rf & 2) {
|
|
127
|
+
i0.ɵɵadvance(1);
|
|
128
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.spatialFilter.Thematics"));
|
|
129
|
+
} }
|
|
130
|
+
function SpatialFilterItemComponent_div_14_mat_header_cell_5_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
132
|
+
i0.ɵɵelementStart(0, "mat-header-cell", 41)(1, "mat-checkbox", 42);
|
|
133
|
+
i0.ɵɵlistener("change", function SpatialFilterItemComponent_div_14_mat_header_cell_5_Template_mat_checkbox_change_1_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r32.masterToggle() : null); });
|
|
134
|
+
i0.ɵɵelementEnd()();
|
|
135
|
+
} if (rf & 2) {
|
|
136
|
+
const ctx_r27 = i0.ɵɵnextContext(2);
|
|
137
|
+
i0.ɵɵadvance(1);
|
|
138
|
+
i0.ɵɵproperty("checked", ctx_r27.isAllSelected())("indeterminate", ctx_r27.selectedThematics.hasValue() && !ctx_r27.isAllSelected());
|
|
139
|
+
} }
|
|
140
|
+
function SpatialFilterItemComponent_div_14_mat_header_row_6_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
i0.ɵɵelement(0, "mat-header-row");
|
|
142
|
+
} }
|
|
143
|
+
function SpatialFilterItemComponent_div_14_mat_row_7_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
i0.ɵɵelement(0, "mat-row");
|
|
145
|
+
} }
|
|
146
|
+
function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
148
|
+
i0.ɵɵelementStart(0, "mat-tree-node", 43)(1, "li", 44);
|
|
149
|
+
i0.ɵɵelement(2, "button", 45);
|
|
150
|
+
i0.ɵɵtext(3);
|
|
151
|
+
i0.ɵɵelementStart(4, "mat-checkbox", 46);
|
|
152
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template_mat_checkbox_click_4_listener($event) { return $event.stopPropagation(); })("change", function SpatialFilterItemComponent_div_14_mat_tree_node_9_Template_mat_checkbox_change_4_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r38); const node_r35 = restoredCtx.$implicit; const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r37.onToggleChange(node_r35) : null); });
|
|
153
|
+
i0.ɵɵelementEnd()()();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
const node_r35 = ctx.$implicit;
|
|
156
|
+
const ctx_r30 = i0.ɵɵnextContext(2);
|
|
157
|
+
i0.ɵɵadvance(3);
|
|
158
|
+
i0.ɵɵtextInterpolate1(" ", node_r35.name, " ");
|
|
159
|
+
i0.ɵɵadvance(1);
|
|
160
|
+
i0.ɵɵproperty("checked", ctx_r30.selectedThematics.isSelected(node_r35));
|
|
161
|
+
} }
|
|
162
|
+
function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
164
|
+
i0.ɵɵelementStart(0, "mat-nested-tree-node")(1, "div", 44)(2, "button", 47);
|
|
165
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r41); const node_r39 = restoredCtx.$implicit; const ctx_r40 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r40.onToggleClick(node_r39)); });
|
|
166
|
+
i0.ɵɵelement(3, "mat-icon", 48);
|
|
167
|
+
i0.ɵɵelementEnd();
|
|
168
|
+
i0.ɵɵtext(4);
|
|
169
|
+
i0.ɵɵelementStart(5, "mat-checkbox", 49);
|
|
170
|
+
i0.ɵɵlistener("change", function SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template_mat_checkbox_change_5_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r41); const node_r39 = restoredCtx.$implicit; const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView($event ? ctx_r42.childrensToggle(node_r39) : null); });
|
|
171
|
+
i0.ɵɵelementEnd()();
|
|
172
|
+
i0.ɵɵelementStart(6, "ul", 50);
|
|
173
|
+
i0.ɵɵelementContainer(7, 51);
|
|
174
|
+
i0.ɵɵelementEnd()();
|
|
175
|
+
} if (rf & 2) {
|
|
176
|
+
const node_r39 = ctx.$implicit;
|
|
177
|
+
const ctx_r31 = i0.ɵɵnextContext(2);
|
|
178
|
+
i0.ɵɵadvance(3);
|
|
179
|
+
i0.ɵɵproperty("svgIcon", ctx_r31.treeControl.isExpanded(node_r39) ? "chevron-down" : "chevron-right");
|
|
180
|
+
i0.ɵɵadvance(1);
|
|
181
|
+
i0.ɵɵtextInterpolate1(" ", node_r39.name, " ");
|
|
182
|
+
i0.ɵɵadvance(1);
|
|
183
|
+
i0.ɵɵproperty("checked", ctx_r31.isAllSelected(node_r39))("indeterminate", ctx_r31.hasChildrenSelected(node_r39) && !ctx_r31.isAllSelected(node_r39));
|
|
184
|
+
i0.ɵɵadvance(1);
|
|
185
|
+
i0.ɵɵclassProp("example-tree-invisible", !ctx_r31.treeControl.isExpanded(node_r39));
|
|
186
|
+
} }
|
|
187
|
+
function SpatialFilterItemComponent_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "mat-table");
|
|
189
|
+
i0.ɵɵelementContainerStart(2, 31);
|
|
190
|
+
i0.ɵɵtemplate(3, SpatialFilterItemComponent_div_14_mat_header_cell_3_Template, 3, 3, "mat-header-cell", 32);
|
|
191
|
+
i0.ɵɵelementContainerEnd();
|
|
192
|
+
i0.ɵɵelementContainerStart(4, 33);
|
|
193
|
+
i0.ɵɵtemplate(5, SpatialFilterItemComponent_div_14_mat_header_cell_5_Template, 2, 2, "mat-header-cell", 34);
|
|
194
|
+
i0.ɵɵelementContainerEnd();
|
|
195
|
+
i0.ɵɵtemplate(6, SpatialFilterItemComponent_div_14_mat_header_row_6_Template, 1, 0, "mat-header-row", 35);
|
|
196
|
+
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_14_mat_row_7_Template, 1, 0, "mat-row", 36);
|
|
197
|
+
i0.ɵɵelementEnd();
|
|
198
|
+
i0.ɵɵelementStart(8, "mat-tree", 37);
|
|
199
|
+
i0.ɵɵtemplate(9, SpatialFilterItemComponent_div_14_mat_tree_node_9_Template, 5, 2, "mat-tree-node", 38);
|
|
200
|
+
i0.ɵɵtemplate(10, SpatialFilterItemComponent_div_14_mat_nested_tree_node_10_Template, 8, 6, "mat-nested-tree-node", 39);
|
|
201
|
+
i0.ɵɵelementEnd()();
|
|
202
|
+
} if (rf & 2) {
|
|
203
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
204
|
+
i0.ɵɵadvance(6);
|
|
205
|
+
i0.ɵɵproperty("matHeaderRowDef", ctx_r5.displayedColumns);
|
|
206
|
+
i0.ɵɵadvance(1);
|
|
207
|
+
i0.ɵɵproperty("matRowDefColumns", ctx_r5.displayedColumns);
|
|
208
|
+
i0.ɵɵadvance(1);
|
|
209
|
+
i0.ɵɵproperty("dataSource", ctx_r5.dataSource)("treeControl", ctx_r5.treeControl);
|
|
210
|
+
i0.ɵɵadvance(2);
|
|
211
|
+
i0.ɵɵproperty("matTreeNodeDefWhen", ctx_r5.hasChild);
|
|
212
|
+
} }
|
|
213
|
+
function SpatialFilterItemComponent_button_16_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
const _r44 = i0.ɵɵgetCurrentView();
|
|
215
|
+
i0.ɵɵelementStart(0, "button", 52);
|
|
216
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r43.clearSearch()); });
|
|
217
|
+
i0.ɵɵtext(1);
|
|
218
|
+
i0.ɵɵpipe(2, "translate");
|
|
219
|
+
i0.ɵɵelementEnd();
|
|
220
|
+
} if (rf & 2) {
|
|
221
|
+
const ctx_r6 = i0.ɵɵnextContext();
|
|
222
|
+
i0.ɵɵproperty("disabled", ctx_r6.disabledClearSearch());
|
|
223
|
+
i0.ɵɵadvance(1);
|
|
224
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter.clearSearch"), " ");
|
|
225
|
+
} }
|
|
226
|
+
function SpatialFilterItemComponent_button_17_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
+
const _r46 = i0.ɵɵgetCurrentView();
|
|
228
|
+
i0.ɵɵelementStart(0, "button", 53);
|
|
229
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r45.clearDrawZone()); });
|
|
230
|
+
i0.ɵɵtext(1);
|
|
231
|
+
i0.ɵɵpipe(2, "translate");
|
|
232
|
+
i0.ɵɵelementEnd();
|
|
233
|
+
} if (rf & 2) {
|
|
234
|
+
const ctx_r7 = i0.ɵɵnextContext();
|
|
235
|
+
i0.ɵɵproperty("disabled", ctx_r7.formControl.value === null);
|
|
236
|
+
i0.ɵɵadvance(1);
|
|
237
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.spatialFilter.clearForm"), " ");
|
|
238
|
+
} }
|
|
239
|
+
function SpatialFilterItemComponent_button_27_Template(rf, ctx) { if (rf & 1) {
|
|
240
|
+
const _r48 = i0.ɵɵgetCurrentView();
|
|
241
|
+
i0.ɵɵelementStart(0, "button", 54);
|
|
242
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_button_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r47 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r47.toggleVisibleList()); });
|
|
243
|
+
i0.ɵɵpipe(1, "translate");
|
|
244
|
+
i0.ɵɵelement(2, "mat-icon", 55);
|
|
245
|
+
i0.ɵɵelementEnd();
|
|
246
|
+
} if (rf & 2) {
|
|
247
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.spatialFilter.showSearchResults"));
|
|
248
|
+
} }
|
|
249
|
+
function SpatialFilterItemComponent_div_28_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
+
const _r51 = i0.ɵɵgetCurrentView();
|
|
251
|
+
i0.ɵɵelementStart(0, "button", 59);
|
|
252
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_div_28_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r50.toggleVisibleList()); });
|
|
253
|
+
i0.ɵɵpipe(1, "translate");
|
|
254
|
+
i0.ɵɵelement(2, "mat-icon", 60);
|
|
255
|
+
i0.ɵɵelementEnd();
|
|
256
|
+
} if (rf & 2) {
|
|
257
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.spatialFilter.hideSearchResults"));
|
|
258
|
+
} }
|
|
259
|
+
function SpatialFilterItemComponent_div_28_Template(rf, ctx) { if (rf & 1) {
|
|
260
|
+
const _r53 = i0.ɵɵgetCurrentView();
|
|
261
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
262
|
+
i0.ɵɵtemplate(1, SpatialFilterItemComponent_div_28_button_1_Template, 3, 3, "button", 57);
|
|
263
|
+
i0.ɵɵelementStart(2, "igo-entity-table", 58);
|
|
264
|
+
i0.ɵɵlistener("entitySelectChange", function SpatialFilterItemComponent_div_28_Template_igo_entity_table_entitySelectChange_2_listener($event) { i0.ɵɵrestoreView(_r53); const ctx_r52 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r52.entityChange.emit($event)); });
|
|
265
|
+
i0.ɵɵelementEnd()();
|
|
266
|
+
} if (rf & 2) {
|
|
267
|
+
const ctx_r9 = i0.ɵɵnextContext();
|
|
268
|
+
i0.ɵɵadvance(1);
|
|
269
|
+
i0.ɵɵproperty("ngIf", ctx_r9.listIsVisible);
|
|
270
|
+
i0.ɵɵadvance(1);
|
|
271
|
+
i0.ɵɵproperty("template", ctx_r9.tableTemplate)("store", ctx_r9.store);
|
|
272
|
+
} }
|
|
273
|
+
/**
|
|
274
|
+
* Spatial-Filter-Item (search parameters)
|
|
275
|
+
*/
|
|
276
|
+
export class SpatialFilterItemComponent {
|
|
277
|
+
constructor(cdRef, spatialFilterService, messageService, languageService) {
|
|
278
|
+
this.cdRef = cdRef;
|
|
279
|
+
this.spatialFilterService = spatialFilterService;
|
|
280
|
+
this.messageService = messageService;
|
|
281
|
+
this.languageService = languageService;
|
|
282
|
+
this.layers = [];
|
|
283
|
+
this.allLayers = [];
|
|
284
|
+
this.toggleSearch = new EventEmitter();
|
|
285
|
+
this.itemTypeChange = new EventEmitter();
|
|
286
|
+
this.thematicChange = new EventEmitter();
|
|
287
|
+
this.drawZoneEvent = new EventEmitter();
|
|
288
|
+
this.bufferEvent = new EventEmitter();
|
|
289
|
+
this.zoneWithBufferChange = new EventEmitter();
|
|
290
|
+
this.measureUnitChange = new EventEmitter();
|
|
291
|
+
this.radiusEvent = new EventEmitter();
|
|
292
|
+
this.freehandControl = new EventEmitter();
|
|
293
|
+
this.predefinedRadius = new EventEmitter();
|
|
294
|
+
this.clearButtonEvent = new EventEmitter();
|
|
295
|
+
this.clearSearchEvent = new EventEmitter();
|
|
296
|
+
this.export = new EventEmitter();
|
|
297
|
+
this.openWorkspace = new EventEmitter();
|
|
298
|
+
this.entityChange = new EventEmitter();
|
|
299
|
+
this.itemType = [SpatialFilterItemType.Address, SpatialFilterItemType.Thematics];
|
|
300
|
+
this.selectedItemType = SpatialFilterItemType.Address;
|
|
301
|
+
this.treeControl = new NestedTreeControl(node => node.children);
|
|
302
|
+
// For thematics and results tables
|
|
303
|
+
this.displayedColumns = ['name', 'select'];
|
|
304
|
+
this.childrens = [];
|
|
305
|
+
this.groups = [];
|
|
306
|
+
this.thematics = [];
|
|
307
|
+
this.dataSource = new MatTreeNestedDataSource();
|
|
308
|
+
this.selectedThematics = new SelectionModel(true, []);
|
|
309
|
+
// For geometry form field input
|
|
310
|
+
this.value$ = new BehaviorSubject(undefined);
|
|
311
|
+
this.drawGuide$ = new BehaviorSubject(null);
|
|
312
|
+
this.overlayStyle$ = new BehaviorSubject(undefined);
|
|
313
|
+
this.drawStyle$ = new BehaviorSubject(undefined);
|
|
314
|
+
this.formControl = new UntypedFormControl();
|
|
315
|
+
this.geometryTypeField = false;
|
|
316
|
+
this.geometryTypes = ['Point', 'Polygon'];
|
|
317
|
+
this.drawGuideField = false;
|
|
318
|
+
this.drawGuide = null;
|
|
319
|
+
this.drawGuidePlaceholder = '';
|
|
320
|
+
this.measure = false;
|
|
321
|
+
this.drawControlIsActive = true;
|
|
322
|
+
this.freehandDrawIsActive = false;
|
|
323
|
+
this.buffer = 0;
|
|
324
|
+
this.radiusFormControl = new UntypedFormControl();
|
|
325
|
+
this.bufferFormControl = new UntypedFormControl();
|
|
326
|
+
this.measureUnit = MeasureLengthUnit.Meters;
|
|
327
|
+
this.listIsVisible = true;
|
|
328
|
+
}
|
|
329
|
+
get type() {
|
|
330
|
+
return this._type;
|
|
331
|
+
}
|
|
332
|
+
set type(type) {
|
|
333
|
+
this._type = type;
|
|
334
|
+
const index = this.geometryTypes.findIndex(geom => geom === this.type);
|
|
335
|
+
this.geometryType = this.geometryTypes[index];
|
|
336
|
+
this.formControl.reset();
|
|
337
|
+
this.radius = undefined;
|
|
338
|
+
this.drawGuide$.next(null);
|
|
339
|
+
this.drawStyle$.next(undefined);
|
|
340
|
+
// Necessary to keep reference to the geometry form field input
|
|
341
|
+
if (this.type === SpatialFilterType.Predefined) {
|
|
342
|
+
const geojson = {
|
|
343
|
+
type: 'Point',
|
|
344
|
+
coordinates: ''
|
|
345
|
+
};
|
|
346
|
+
this.formControl.setValue(geojson);
|
|
347
|
+
}
|
|
348
|
+
// Necessary to apply the right style when geometry type is Point
|
|
349
|
+
if (this.type === SpatialFilterType.Point) {
|
|
350
|
+
this.radius = 1000; // Base radius
|
|
351
|
+
this.radiusFormControl.setValue(this.radius);
|
|
352
|
+
this.PointStyle = (feature, resolution) => {
|
|
353
|
+
const geom = feature.getGeometry();
|
|
354
|
+
const coordinates = olproj.transform(geom.getCoordinates(), this.map.projection, 'EPSG:4326');
|
|
355
|
+
return new olStyle.Style({
|
|
356
|
+
image: new olStyle.Circle({
|
|
357
|
+
radius: this.radius / (Math.cos((Math.PI / 180) * coordinates[1])) / resolution,
|
|
358
|
+
stroke: new olStyle.Stroke({
|
|
359
|
+
width: 2,
|
|
360
|
+
color: 'rgba(0, 153, 255)'
|
|
361
|
+
}),
|
|
362
|
+
fill: new olStyle.Fill({
|
|
363
|
+
color: 'rgba(0, 153, 255, 0.2)'
|
|
364
|
+
})
|
|
365
|
+
})
|
|
366
|
+
});
|
|
367
|
+
};
|
|
368
|
+
this.overlayStyle = this.PointStyle;
|
|
369
|
+
this.drawStyle$.next(this.overlayStyle);
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
// If geometry types is Polygon
|
|
373
|
+
this.radius = undefined;
|
|
374
|
+
this.PolyStyle = () => {
|
|
375
|
+
return new olStyle.Style({
|
|
376
|
+
stroke: new olStyle.Stroke({
|
|
377
|
+
width: 2,
|
|
378
|
+
color: 'rgba(0, 153, 255)'
|
|
379
|
+
}),
|
|
380
|
+
fill: new olStyle.Fill({
|
|
381
|
+
color: 'rgba(0, 153, 255, 0.2)'
|
|
382
|
+
})
|
|
383
|
+
});
|
|
384
|
+
};
|
|
385
|
+
const color = [0, 153, 255];
|
|
386
|
+
const drawStyle = () => {
|
|
387
|
+
return new olStyle.Style({
|
|
388
|
+
image: new olStyle.Circle({
|
|
389
|
+
radius: 8,
|
|
390
|
+
stroke: new olStyle.Stroke({
|
|
391
|
+
width: 2,
|
|
392
|
+
color: 'rgba(0, 153, 255)'
|
|
393
|
+
}),
|
|
394
|
+
fill: new olStyle.Fill({
|
|
395
|
+
color: 'rgba(0, 153, 255, 0.2)'
|
|
396
|
+
})
|
|
397
|
+
}),
|
|
398
|
+
stroke: new olStyle.Stroke({
|
|
399
|
+
color: color.concat([1]),
|
|
400
|
+
width: 2
|
|
401
|
+
}),
|
|
402
|
+
fill: new olStyle.Fill({
|
|
403
|
+
color: color.concat([0.2])
|
|
404
|
+
})
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
this.overlayStyle = this.PolyStyle;
|
|
408
|
+
this.drawStyle$.next(drawStyle);
|
|
409
|
+
}
|
|
410
|
+
this.overlayStyle$.next(this.overlayStyle);
|
|
411
|
+
}
|
|
412
|
+
get store() {
|
|
413
|
+
return this._store;
|
|
414
|
+
}
|
|
415
|
+
set store(store) {
|
|
416
|
+
this._store = store;
|
|
417
|
+
this._store.entities$.subscribe(() => { this.cdRef.detectChanges(); });
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Available measure units for the measure type given
|
|
421
|
+
* @internal
|
|
422
|
+
*/
|
|
423
|
+
get measureUnits() {
|
|
424
|
+
return [MeasureLengthUnit.Meters, MeasureLengthUnit.Kilometers];
|
|
425
|
+
}
|
|
426
|
+
get thematicLength() {
|
|
427
|
+
return this._thematicLength;
|
|
428
|
+
}
|
|
429
|
+
set thematicLength(value) {
|
|
430
|
+
this._thematicLength = value;
|
|
431
|
+
}
|
|
432
|
+
ngOnInit() {
|
|
433
|
+
this.spatialFilterService.loadThematicsList()
|
|
434
|
+
.subscribe((items) => {
|
|
435
|
+
for (const item of items) {
|
|
436
|
+
this.childrens.push(item);
|
|
437
|
+
this.childrens.sort((a, b) => {
|
|
438
|
+
return a.name.localeCompare(b.name);
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
this.groups.push(this.languageService.translate.instant('igo.geo.terrapi.limites'));
|
|
442
|
+
const limits = {
|
|
443
|
+
name: this.groups[0],
|
|
444
|
+
children: []
|
|
445
|
+
};
|
|
446
|
+
this.thematics.push(limits);
|
|
447
|
+
this.childrens.forEach(child => {
|
|
448
|
+
if (child.group && (this.groups.indexOf(child.group) === -1)) {
|
|
449
|
+
this.groups.push(child.group);
|
|
450
|
+
const thematic = {
|
|
451
|
+
name: child.group,
|
|
452
|
+
children: []
|
|
453
|
+
};
|
|
454
|
+
this.thematics.push(thematic);
|
|
455
|
+
}
|
|
456
|
+
if (!child.group) {
|
|
457
|
+
if (child.name === this.languageService.translate.instant('igo.geo.terrapi.AdmRegion') ||
|
|
458
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.Mun') ||
|
|
459
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.Arrond') ||
|
|
460
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.CircFed') ||
|
|
461
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.CircProv') ||
|
|
462
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.DirReg') ||
|
|
463
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.MRC') ||
|
|
464
|
+
child.name === this.languageService.translate.instant('igo.geo.terrapi.RegTour')) {
|
|
465
|
+
child.group = limits.name;
|
|
466
|
+
}
|
|
467
|
+
else if (child.name === this.languageService.translate.instant('igo.geo.terrapi.routes')) {
|
|
468
|
+
child.group = this.languageService.translate.instant('igo.geo.spatialFilter.group.transport');
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
const thematic = {
|
|
472
|
+
name: child.name,
|
|
473
|
+
children: [],
|
|
474
|
+
source: child.source
|
|
475
|
+
};
|
|
476
|
+
this.thematics.push(thematic);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
this.thematics.sort((a, b) => {
|
|
480
|
+
return a.name.localeCompare(b.name);
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
this.thematics.forEach(thematic => {
|
|
484
|
+
for (const child of this.childrens) {
|
|
485
|
+
if (child.group === thematic.name) {
|
|
486
|
+
thematic.children.push(child);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
});
|
|
491
|
+
this.dataSource.data = this.thematics;
|
|
492
|
+
this.drawGuide$.next(null);
|
|
493
|
+
this.value$.next(this.formControl.value ? this.formControl.value : undefined);
|
|
494
|
+
this.value$$ = this.formControl.valueChanges.subscribe((value) => {
|
|
495
|
+
if (value) {
|
|
496
|
+
this.value$.next(value);
|
|
497
|
+
this.drawZone = this.formControl.value;
|
|
498
|
+
if (this.buffer !== 0) {
|
|
499
|
+
this.drawZoneEvent.emit(this.drawZone);
|
|
500
|
+
this.bufferFormControl.setValue(this.buffer);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
this.value$.next(undefined);
|
|
505
|
+
this.drawZone = undefined;
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
this.value$.subscribe(() => {
|
|
509
|
+
this.getRadius();
|
|
510
|
+
this.cdRef.detectChanges();
|
|
511
|
+
});
|
|
512
|
+
this.radiusChanges$$ = this.radiusFormControl.valueChanges.subscribe(() => {
|
|
513
|
+
this.getRadius();
|
|
514
|
+
this.cdRef.detectChanges();
|
|
515
|
+
});
|
|
516
|
+
this.bufferChanges$$ = this.bufferFormControl.valueChanges
|
|
517
|
+
.pipe(debounceTime(500))
|
|
518
|
+
.subscribe((value) => {
|
|
519
|
+
if (this.measureUnit === MeasureLengthUnit.Meters && value > 0 && value <= 100000) {
|
|
520
|
+
this.buffer = value;
|
|
521
|
+
this.bufferEvent.emit(value);
|
|
522
|
+
this.spatialFilterService.loadBufferGeometry(this.drawZone, SpatialFilterType.Polygon, value).subscribe((featureGeom) => {
|
|
523
|
+
this.zoneWithBuffer = featureGeom;
|
|
524
|
+
this.zoneWithBufferChange.emit(this.zoneWithBuffer);
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
else if (this.measureUnit === MeasureLengthUnit.Kilometers && value > 0 && value <= 100) {
|
|
528
|
+
this.buffer = value;
|
|
529
|
+
this.bufferEvent.emit(value);
|
|
530
|
+
this.spatialFilterService.loadBufferGeometry(this.drawZone, SpatialFilterType.Polygon, value * 1000).subscribe((featureGeom) => {
|
|
531
|
+
this.zoneWithBuffer = featureGeom;
|
|
532
|
+
this.zoneWithBufferChange.emit(this.zoneWithBuffer);
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
else if (value === 0) {
|
|
536
|
+
this.buffer = value;
|
|
537
|
+
this.bufferEvent.emit(value);
|
|
538
|
+
this.drawZoneEvent.emit(this.drawZone);
|
|
539
|
+
}
|
|
540
|
+
else if (value < 0 ||
|
|
541
|
+
(this.measureUnit === MeasureLengthUnit.Meters && value > 100000) ||
|
|
542
|
+
(this.measureUnit === MeasureLengthUnit.Kilometers && value > 100)) {
|
|
543
|
+
this.bufferFormControl.setValue(0);
|
|
544
|
+
this.buffer = 0;
|
|
545
|
+
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.bufferAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
546
|
+
}
|
|
547
|
+
});
|
|
548
|
+
const selectedRecordStrategy = new EntityStoreFilterSelectionStrategy({});
|
|
549
|
+
const selectionStrategy = new FeatureStoreSelectionStrategy({
|
|
550
|
+
layer: new VectorLayer({
|
|
551
|
+
zIndex: 300,
|
|
552
|
+
source: new FeatureDataSource(),
|
|
553
|
+
style: undefined,
|
|
554
|
+
showInLayerList: false,
|
|
555
|
+
exportable: false,
|
|
556
|
+
browsable: false
|
|
557
|
+
}),
|
|
558
|
+
map: this.map,
|
|
559
|
+
hitTolerance: 15,
|
|
560
|
+
motion: FeatureMotion.Default,
|
|
561
|
+
many: true,
|
|
562
|
+
dragBox: true
|
|
563
|
+
});
|
|
564
|
+
this.store.addStrategy(selectionStrategy, true);
|
|
565
|
+
this.store.addStrategy(selectedRecordStrategy, false);
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Unsubscribe to the value stream
|
|
569
|
+
* @internal
|
|
570
|
+
*/
|
|
571
|
+
ngOnDestroy() {
|
|
572
|
+
this.value$$.unsubscribe();
|
|
573
|
+
this.radiusChanges$$.unsubscribe();
|
|
574
|
+
this.bufferChanges$$.unsubscribe();
|
|
575
|
+
this.cdRef.detach();
|
|
576
|
+
if (this.radiusChanges$$) {
|
|
577
|
+
this.radiusChanges$$.unsubscribe();
|
|
578
|
+
}
|
|
579
|
+
if (this.value$$) {
|
|
580
|
+
this.value$$.unsubscribe();
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
onItemTypeChange(event) {
|
|
584
|
+
this.selectedItemType = event.value;
|
|
585
|
+
this.itemTypeChange.emit(this.selectedItemType);
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Set the measure unit
|
|
589
|
+
* @internal
|
|
590
|
+
*/
|
|
591
|
+
onMeasureUnitChange(unit) {
|
|
592
|
+
if (unit === this.measureUnit) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
this.measureUnit = unit;
|
|
597
|
+
this.measureUnitChange.emit(this.measureUnit);
|
|
598
|
+
if (this.isPolygon()) {
|
|
599
|
+
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
600
|
+
this.bufferFormControl.setValue(this.bufferFormControl.value * 1000) :
|
|
601
|
+
this.bufferFormControl.setValue(this.bufferFormControl.value / 1000);
|
|
602
|
+
}
|
|
603
|
+
else if (this.isPoint()) {
|
|
604
|
+
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
605
|
+
this.radiusFormControl.setValue(this.radiusFormControl.value * 1000) :
|
|
606
|
+
this.radiusFormControl.setValue(this.radiusFormControl.value / 1000);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
isPredefined() {
|
|
611
|
+
return this.type === SpatialFilterType.Predefined;
|
|
612
|
+
}
|
|
613
|
+
isPolygon() {
|
|
614
|
+
return this.type === SpatialFilterType.Polygon;
|
|
615
|
+
}
|
|
616
|
+
isPoint() {
|
|
617
|
+
return this.type === SpatialFilterType.Point;
|
|
618
|
+
}
|
|
619
|
+
hasChild(_, node) {
|
|
620
|
+
if (node.children) {
|
|
621
|
+
return node.children.length;
|
|
622
|
+
}
|
|
623
|
+
return false;
|
|
624
|
+
}
|
|
625
|
+
onToggleClick(node) {
|
|
626
|
+
this.treeControl.isExpanded(node) ? this.treeControl.collapse(node) : this.treeControl.expand(node);
|
|
627
|
+
}
|
|
628
|
+
isAllSelected(node) {
|
|
629
|
+
let numSelected;
|
|
630
|
+
let numNodes = 0;
|
|
631
|
+
if (!node) {
|
|
632
|
+
numSelected = this.selectedThematics.selected.length;
|
|
633
|
+
this.thematics.forEach(thematic => {
|
|
634
|
+
if (this.groups.indexOf(thematic.name) === -1) {
|
|
635
|
+
numNodes++;
|
|
636
|
+
}
|
|
637
|
+
});
|
|
638
|
+
this.childrens.forEach(children => {
|
|
639
|
+
if (!this.thematics.find(thematic => thematic.source === children.source)) {
|
|
640
|
+
numNodes++;
|
|
641
|
+
}
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
else {
|
|
645
|
+
numSelected = node.children.length;
|
|
646
|
+
node.children.forEach(children => {
|
|
647
|
+
if (this.selectedThematics.selected.find(thematic => thematic === children)) {
|
|
648
|
+
numNodes++;
|
|
649
|
+
}
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
if (numNodes >= 1) {
|
|
653
|
+
return numSelected === numNodes;
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
return false;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
hasChildrenSelected(node) {
|
|
660
|
+
let bool = false;
|
|
661
|
+
node.children.forEach(child => {
|
|
662
|
+
if (this.selectedThematics.selected.find(thematic => thematic.source === child.source)) {
|
|
663
|
+
bool = true;
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
return bool;
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Apply header checkbox
|
|
670
|
+
*/
|
|
671
|
+
masterToggle() {
|
|
672
|
+
this.isAllSelected() ?
|
|
673
|
+
this.selectedThematics.clear() :
|
|
674
|
+
this.selectAll();
|
|
675
|
+
const selectedThematicsName = [];
|
|
676
|
+
for (const thematic of this.selectedThematics.selected) {
|
|
677
|
+
selectedThematicsName.push(thematic);
|
|
678
|
+
}
|
|
679
|
+
if (this.isAllSelected()) {
|
|
680
|
+
this.thematics.forEach(thematic => {
|
|
681
|
+
if (this.hasChild(0, thematic)) {
|
|
682
|
+
this.treeControl.expand(thematic);
|
|
683
|
+
}
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
else {
|
|
687
|
+
this.thematics.forEach(thematic => {
|
|
688
|
+
if (this.hasChild(0, thematic)) {
|
|
689
|
+
this.treeControl.collapse(thematic);
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
}
|
|
693
|
+
this.thematicChange.emit(selectedThematicsName);
|
|
694
|
+
}
|
|
695
|
+
selectAll(node) {
|
|
696
|
+
if (!node) {
|
|
697
|
+
this.thematics.forEach(thematic => {
|
|
698
|
+
if (this.groups.indexOf(thematic.name) === -1) {
|
|
699
|
+
this.selectedThematics.select(thematic);
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
this.childrens.forEach(children => {
|
|
703
|
+
if (!this.selectedThematics.selected.find(thematic => thematic.source === children.source)) {
|
|
704
|
+
this.selectedThematics.select(children);
|
|
705
|
+
}
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
else {
|
|
709
|
+
if (this.hasChild(0, node)) {
|
|
710
|
+
node.children.forEach(children => this.selectedThematics.select(children));
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
childrensToggle(node) {
|
|
715
|
+
this.isAllSelected(node) ?
|
|
716
|
+
node.children.forEach(child => this.selectedThematics.deselect(child)) :
|
|
717
|
+
this.selectAll(node);
|
|
718
|
+
const selectedThematicsName = [];
|
|
719
|
+
for (const thematic of this.selectedThematics.selected) {
|
|
720
|
+
selectedThematicsName.push(thematic);
|
|
721
|
+
}
|
|
722
|
+
this.treeControl.expand(node);
|
|
723
|
+
this.thematicChange.emit(selectedThematicsName);
|
|
724
|
+
}
|
|
725
|
+
/**
|
|
726
|
+
* Apply changes to the thematics selected tree and emit event
|
|
727
|
+
*/
|
|
728
|
+
onToggleChange(nodeSelected) {
|
|
729
|
+
let selected = false;
|
|
730
|
+
if (this.selectedThematics.selected.find(thematic => thematic.source === nodeSelected.source) !== undefined) {
|
|
731
|
+
selected = true;
|
|
732
|
+
}
|
|
733
|
+
this.childrens.forEach(children => {
|
|
734
|
+
if (children === nodeSelected && selected === false) {
|
|
735
|
+
this.selectedThematics.select(children);
|
|
736
|
+
}
|
|
737
|
+
if (children === nodeSelected && selected === true) {
|
|
738
|
+
this.selectedThematics.deselect(children);
|
|
739
|
+
}
|
|
740
|
+
});
|
|
741
|
+
this.thematics.forEach(thematic => {
|
|
742
|
+
if (thematic === nodeSelected && selected === false) {
|
|
743
|
+
this.selectedThematics.select(thematic);
|
|
744
|
+
}
|
|
745
|
+
if (thematic === nodeSelected && selected === true) {
|
|
746
|
+
this.selectedThematics.deselect(thematic);
|
|
747
|
+
}
|
|
748
|
+
});
|
|
749
|
+
const selectedThematicsName = [];
|
|
750
|
+
for (const thematic of this.selectedThematics.selected) {
|
|
751
|
+
selectedThematicsName.push(thematic);
|
|
752
|
+
}
|
|
753
|
+
this.thematicChange.emit(selectedThematicsName);
|
|
754
|
+
}
|
|
755
|
+
onDrawControlChange() {
|
|
756
|
+
this.drawControlIsActive = !this.drawControlIsActive;
|
|
757
|
+
}
|
|
758
|
+
onfreehandControlChange() {
|
|
759
|
+
this.freehandDrawIsActive = !this.freehandDrawIsActive;
|
|
760
|
+
this.freehandControl.emit(this.freehandDrawIsActive);
|
|
761
|
+
if (this.isPoint()) {
|
|
762
|
+
this.predefinedRadius.emit(!this.freehandDrawIsActive);
|
|
763
|
+
if (this.freehandDrawIsActive) {
|
|
764
|
+
this.overlayStyle$.next(undefined);
|
|
765
|
+
this.drawStyle$.next(undefined);
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
else {
|
|
769
|
+
this.predefinedRadius.emit(false);
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
/**
|
|
773
|
+
* Launch search button
|
|
774
|
+
*/
|
|
775
|
+
toggleSearchButton() {
|
|
776
|
+
if (!this.isPredefined()) {
|
|
777
|
+
if (this.buffer > 0) {
|
|
778
|
+
this.zoneWithBuffer.meta = {
|
|
779
|
+
id: undefined,
|
|
780
|
+
title: 'Zone'
|
|
781
|
+
};
|
|
782
|
+
this.zoneWithBuffer.properties = {
|
|
783
|
+
nom: 'Zone',
|
|
784
|
+
type: this.type
|
|
785
|
+
};
|
|
786
|
+
this.drawZoneEvent.emit(this.zoneWithBuffer);
|
|
787
|
+
}
|
|
788
|
+
else {
|
|
789
|
+
this.drawZone.meta = {
|
|
790
|
+
id: undefined,
|
|
791
|
+
title: 'Zone'
|
|
792
|
+
};
|
|
793
|
+
this.drawZone.properties = {
|
|
794
|
+
nom: 'Zone',
|
|
795
|
+
type: this.type
|
|
796
|
+
};
|
|
797
|
+
this.drawZoneEvent.emit(this.drawZone);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
if (this.isPoint()) {
|
|
801
|
+
this.radiusEvent.emit(this.radius);
|
|
802
|
+
}
|
|
803
|
+
else if (this.isPolygon()) {
|
|
804
|
+
this.bufferEvent.emit(this.buffer);
|
|
805
|
+
}
|
|
806
|
+
this.toggleSearch.emit();
|
|
807
|
+
this.store.entities$.pipe(debounceTime(500)).subscribe((value) => {
|
|
808
|
+
if (value.length && this.layers.length === this.thematicLength + 1) {
|
|
809
|
+
this.openWorkspace.emit();
|
|
810
|
+
this.createTableTemplate();
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Launch clear button (clear store and map layers)
|
|
816
|
+
*/
|
|
817
|
+
clearButton() {
|
|
818
|
+
this.loading = true;
|
|
819
|
+
if (this.store) {
|
|
820
|
+
this.store.clear();
|
|
821
|
+
}
|
|
822
|
+
if (this.isPoint() || this.isPolygon()) {
|
|
823
|
+
this.drawZone = undefined;
|
|
824
|
+
this.formControl.reset();
|
|
825
|
+
}
|
|
826
|
+
this.bufferFormControl.setValue(0);
|
|
827
|
+
this.buffer = 0;
|
|
828
|
+
this.bufferEvent.emit(0);
|
|
829
|
+
this.clearButtonEvent.emit();
|
|
830
|
+
this.loading = false;
|
|
831
|
+
this.tableTemplate = undefined;
|
|
832
|
+
}
|
|
833
|
+
clearDrawZone() {
|
|
834
|
+
this.formControl.reset();
|
|
835
|
+
this.bufferFormControl.setValue(0);
|
|
836
|
+
this.buffer = 0;
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Launch clear search (clear field if type is predefined)
|
|
840
|
+
*/
|
|
841
|
+
clearSearch() {
|
|
842
|
+
this.selectedThematics.clear();
|
|
843
|
+
this.bufferFormControl.setValue(0);
|
|
844
|
+
this.buffer = 0;
|
|
845
|
+
this.bufferEvent.emit(0);
|
|
846
|
+
this.thematicChange.emit([]);
|
|
847
|
+
this.clearSearchEvent.emit();
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Verify conditions of incomplete fields or busy service
|
|
851
|
+
*/
|
|
852
|
+
disableSearchButton() {
|
|
853
|
+
if (this.type === SpatialFilterType.Predefined) {
|
|
854
|
+
if (this.selectedItemType === SpatialFilterItemType.Address) {
|
|
855
|
+
if (this.queryType !== undefined && this.zone !== undefined) {
|
|
856
|
+
return this.loading;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
if (this.selectedItemType === SpatialFilterItemType.Thematics) {
|
|
860
|
+
if (this.queryType !== undefined && this.zone !== undefined && this.selectedThematics.selected.length > 0) {
|
|
861
|
+
return this.loading;
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
if (this.type === SpatialFilterType.Polygon || this.type === SpatialFilterType.Point) {
|
|
866
|
+
if (this.selectedItemType === SpatialFilterItemType.Address && this.formControl.value !== null) {
|
|
867
|
+
return this.loading;
|
|
868
|
+
}
|
|
869
|
+
if (this.selectedItemType === SpatialFilterItemType.Thematics) {
|
|
870
|
+
if (this.selectedThematics.selected.length > 0 && this.formControl.value !== null) {
|
|
871
|
+
return this.loading;
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
return true;
|
|
876
|
+
}
|
|
877
|
+
disabledClearSearch() {
|
|
878
|
+
let disable = true;
|
|
879
|
+
this.selectedItemType === SpatialFilterItemType.Address ?
|
|
880
|
+
disable = this.queryType === undefined :
|
|
881
|
+
disable = this.queryType === undefined && this.selectedThematics.selected.length === 0;
|
|
882
|
+
return disable;
|
|
883
|
+
}
|
|
884
|
+
/**
|
|
885
|
+
* Manage radius value at user change
|
|
886
|
+
*/
|
|
887
|
+
getRadius() {
|
|
888
|
+
let formValue;
|
|
889
|
+
if (this.formControl.value !== null) {
|
|
890
|
+
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
891
|
+
formValue = this.formControl.value.radius :
|
|
892
|
+
formValue = this.formControl.value.radius / 1000;
|
|
893
|
+
}
|
|
894
|
+
else {
|
|
895
|
+
formValue = undefined;
|
|
896
|
+
}
|
|
897
|
+
if (this.type === SpatialFilterType.Point) {
|
|
898
|
+
if (!this.freehandDrawIsActive) {
|
|
899
|
+
if (this.radiusFormControl.value < 0 ||
|
|
900
|
+
(this.measureUnit === MeasureLengthUnit.Meters && this.radiusFormControl.value >= 100000) ||
|
|
901
|
+
(this.measureUnit === MeasureLengthUnit.Kilometers && this.radiusFormControl.value >= 100)) {
|
|
902
|
+
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.radiusAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
903
|
+
this.radius = 1000;
|
|
904
|
+
this.measureUnit === MeasureLengthUnit.Meters ?
|
|
905
|
+
this.radiusFormControl.setValue(this.radius) :
|
|
906
|
+
this.radiusFormControl.setValue(this.radius / 1000);
|
|
907
|
+
this.drawGuide$.next(this.radius);
|
|
908
|
+
return;
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
else {
|
|
912
|
+
if (formValue) {
|
|
913
|
+
if (formValue >= 100000) {
|
|
914
|
+
this.messageService.alert(this.languageService.translate.instant('igo.geo.spatialFilter.radiusAlert'), this.languageService.translate.instant('igo.geo.spatialFilter.warning'));
|
|
915
|
+
this.formControl.reset();
|
|
916
|
+
return;
|
|
917
|
+
}
|
|
918
|
+
if (formValue !== this.radiusFormControl.value) {
|
|
919
|
+
this.radiusFormControl.setValue(formValue);
|
|
920
|
+
return;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
if (this.measureUnit === MeasureLengthUnit.Meters) {
|
|
925
|
+
this.radius = this.radiusFormControl.value;
|
|
926
|
+
this.drawGuide$.next(this.radius);
|
|
927
|
+
}
|
|
928
|
+
else {
|
|
929
|
+
this.radius = this.radiusFormControl.value * 1000;
|
|
930
|
+
this.drawGuide$.next(this.radius * 1000);
|
|
931
|
+
}
|
|
932
|
+
this.overlayStyle$.next(this.PointStyle);
|
|
933
|
+
this.drawStyle$.next(this.PointStyle);
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
toggleVisibleList() {
|
|
937
|
+
this.listIsVisible = !this.listIsVisible;
|
|
938
|
+
}
|
|
939
|
+
createTableTemplate() {
|
|
940
|
+
const typeColumn = {
|
|
941
|
+
name: 'meta.title',
|
|
942
|
+
title: this.languageService.translate.instant('igo.geo.spatialFilter.type'),
|
|
943
|
+
renderer: EntityTableColumnRenderer.UnsanitizedHTML
|
|
944
|
+
};
|
|
945
|
+
const nameColumn = {
|
|
946
|
+
name: 'properties.nom',
|
|
947
|
+
title: this.languageService.translate.instant('igo.geo.spatialFilter.searchResults'),
|
|
948
|
+
renderer: EntityTableColumnRenderer.UnsanitizedHTML
|
|
949
|
+
};
|
|
950
|
+
const columns = [typeColumn, nameColumn];
|
|
951
|
+
this.tableTemplate = {
|
|
952
|
+
selection: true,
|
|
953
|
+
sort: true,
|
|
954
|
+
columns
|
|
955
|
+
};
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
SpatialFilterItemComponent.ɵfac = function SpatialFilterItemComponent_Factory(t) { return new (t || SpatialFilterItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.SpatialFilterService), i0.ɵɵdirectiveInject(i2.MessageService), i0.ɵɵdirectiveInject(i2.LanguageService)); };
|
|
959
|
+
SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", predefinedRadius: "predefinedRadius", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 43, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius", "predefinedRadius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
960
|
+
i0.ɵɵelement(0, "igo-geometry-form-field-input", 0);
|
|
961
|
+
i0.ɵɵpipe(1, "async");
|
|
962
|
+
i0.ɵɵpipe(2, "async");
|
|
963
|
+
i0.ɵɵpipe(3, "async");
|
|
964
|
+
i0.ɵɵelementStart(4, "div", 1);
|
|
965
|
+
i0.ɵɵtemplate(5, SpatialFilterItemComponent_mat_slide_toggle_5_Template, 3, 5, "mat-slide-toggle", 2);
|
|
966
|
+
i0.ɵɵtemplate(6, SpatialFilterItemComponent_mat_slide_toggle_6_Template, 3, 5, "mat-slide-toggle", 2);
|
|
967
|
+
i0.ɵɵelementEnd();
|
|
968
|
+
i0.ɵɵtemplate(7, SpatialFilterItemComponent_div_7_Template, 8, 8, "div", 3);
|
|
969
|
+
i0.ɵɵtemplate(8, SpatialFilterItemComponent_div_8_Template, 8, 8, "div", 4);
|
|
970
|
+
i0.ɵɵelementStart(9, "mat-label", 5);
|
|
971
|
+
i0.ɵɵtext(10);
|
|
972
|
+
i0.ɵɵpipe(11, "translate");
|
|
973
|
+
i0.ɵɵelementEnd();
|
|
974
|
+
i0.ɵɵelementStart(12, "mat-radio-group", 6);
|
|
975
|
+
i0.ɵɵtemplate(13, SpatialFilterItemComponent_mat_radio_button_13_Template, 3, 4, "mat-radio-button", 7);
|
|
976
|
+
i0.ɵɵelementEnd();
|
|
977
|
+
i0.ɵɵtemplate(14, SpatialFilterItemComponent_div_14_Template, 11, 5, "div", 8);
|
|
978
|
+
i0.ɵɵelementStart(15, "div", 9);
|
|
979
|
+
i0.ɵɵtemplate(16, SpatialFilterItemComponent_button_16_Template, 3, 4, "button", 10);
|
|
980
|
+
i0.ɵɵtemplate(17, SpatialFilterItemComponent_button_17_Template, 3, 4, "button", 11);
|
|
981
|
+
i0.ɵɵelementStart(18, "button", 12);
|
|
982
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_18_listener() { return ctx.toggleSearchButton(); });
|
|
983
|
+
i0.ɵɵtext(19);
|
|
984
|
+
i0.ɵɵpipe(20, "translate");
|
|
985
|
+
i0.ɵɵelementEnd();
|
|
986
|
+
i0.ɵɵelementStart(21, "button", 13);
|
|
987
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_21_listener() { return ctx.clearButton(); });
|
|
988
|
+
i0.ɵɵtext(22);
|
|
989
|
+
i0.ɵɵpipe(23, "translate");
|
|
990
|
+
i0.ɵɵelementEnd();
|
|
991
|
+
i0.ɵɵelementStart(24, "button", 14);
|
|
992
|
+
i0.ɵɵlistener("click", function SpatialFilterItemComponent_Template_button_click_24_listener() { return ctx.export.emit(); });
|
|
993
|
+
i0.ɵɵtext(25);
|
|
994
|
+
i0.ɵɵpipe(26, "translate");
|
|
995
|
+
i0.ɵɵelementEnd()();
|
|
996
|
+
i0.ɵɵtemplate(27, SpatialFilterItemComponent_button_27_Template, 3, 3, "button", 15);
|
|
997
|
+
i0.ɵɵtemplate(28, SpatialFilterItemComponent_div_28_Template, 3, 3, "div", 16);
|
|
998
|
+
} if (rf & 2) {
|
|
999
|
+
i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 29, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 31, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 33, ctx.overlayStyle$))("radius", ctx.radius)("predefinedRadius", ctx.predefinedRadius);
|
|
1000
|
+
i0.ɵɵadvance(5);
|
|
1001
|
+
i0.ɵɵproperty("ngIf", !ctx.isPredefined());
|
|
1002
|
+
i0.ɵɵadvance(1);
|
|
1003
|
+
i0.ɵɵproperty("ngIf", !ctx.isPredefined());
|
|
1004
|
+
i0.ɵɵadvance(1);
|
|
1005
|
+
i0.ɵɵproperty("ngIf", ctx.isPolygon());
|
|
1006
|
+
i0.ɵɵadvance(1);
|
|
1007
|
+
i0.ɵɵproperty("ngIf", ctx.isPoint());
|
|
1008
|
+
i0.ɵɵadvance(2);
|
|
1009
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 35, "igo.geo.spatialFilter.search"), " : ");
|
|
1010
|
+
i0.ɵɵadvance(2);
|
|
1011
|
+
i0.ɵɵproperty("value", ctx.selectedItemType);
|
|
1012
|
+
i0.ɵɵadvance(1);
|
|
1013
|
+
i0.ɵɵproperty("ngForOf", ctx.itemType);
|
|
1014
|
+
i0.ɵɵadvance(1);
|
|
1015
|
+
i0.ɵɵproperty("ngIf", ctx.selectedItemType === "Thematics" && !ctx.tableTemplate || ctx.selectedItemType === "Thematics" && ctx.tableTemplate && !ctx.listIsVisible);
|
|
1016
|
+
i0.ɵɵadvance(2);
|
|
1017
|
+
i0.ɵɵproperty("ngIf", ctx.isPredefined());
|
|
1018
|
+
i0.ɵɵadvance(1);
|
|
1019
|
+
i0.ɵɵproperty("ngIf", ctx.isPolygon() || ctx.isPoint());
|
|
1020
|
+
i0.ɵɵadvance(1);
|
|
1021
|
+
i0.ɵɵproperty("disabled", ctx.disableSearchButton());
|
|
1022
|
+
i0.ɵɵadvance(1);
|
|
1023
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 37, "igo.geo.spatialFilter.goSearch"), " ");
|
|
1024
|
+
i0.ɵɵadvance(2);
|
|
1025
|
+
i0.ɵɵproperty("disabled", ctx.allLayers.length === 0);
|
|
1026
|
+
i0.ɵɵadvance(1);
|
|
1027
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 39, "igo.geo.spatialFilter.removeLayer"), " ");
|
|
1028
|
+
i0.ɵɵadvance(2);
|
|
1029
|
+
i0.ɵɵproperty("disabled", !ctx.store.entities$.getValue().length);
|
|
1030
|
+
i0.ɵɵadvance(1);
|
|
1031
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 41, "igo.geo.spatialFilter.exportLayer"), " ");
|
|
1032
|
+
i0.ɵɵadvance(2);
|
|
1033
|
+
i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && !ctx.listIsVisible);
|
|
1034
|
+
i0.ɵɵadvance(1);
|
|
1035
|
+
i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && ctx.listIsVisible);
|
|
1036
|
+
} }, styles: [".header[_ngcontent-%COMP%]{margin-top:5px;width:100%}.mat-slide-toggle[_ngcontent-%COMP%]{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 20px)}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{margin-top:5px}.mat-column-select[_ngcontent-%COMP%]{overflow:auto}.buttons[_ngcontent-%COMP%]{margin-top:15px}.search-button[_ngcontent-%COMP%]{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button[_ngcontent-%COMP%]{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button[_ngcontent-%COMP%]{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button[_ngcontent-%COMP%]{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button[_ngcontent-%COMP%]{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button[_ngcontent-%COMP%]{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics[_ngcontent-%COMP%]{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results[_ngcontent-%COMP%]{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults[_ngcontent-%COMP%]{max-width:100px;margin-right:5px}.buffer-unit[_ngcontent-%COMP%], .radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.radius[_ngcontent-%COMP%], .buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-ul[_ngcontent-%COMP%]{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check[_ngcontent-%COMP%], .tree-check-2[_ngcontent-%COMP%]{position:relative;margin-left:auto;margin-right:5px}.thematics-header[_ngcontent-%COMP%]{max-width:250px}.checks-header[_ngcontent-%COMP%]{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox[_ngcontent-%COMP%]{padding:5px}.mat-tree-node[_ngcontent-%COMP%]{position:relative;min-height:42px;width:280px}.mat-header-cell[_ngcontent-%COMP%]{height:56px}.results[_ngcontent-%COMP%]{max-height:45%;width:98%}.results[_ngcontent-%COMP%] igo-entity-table[_ngcontent-%COMP%] div.table-container{overflow:visible;overflow:initial}"], changeDetection: 0 });
|
|
1037
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
|
|
1038
|
+
type: Component,
|
|
1039
|
+
args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\n [formControl]=\"formControl\"\n [map]=\"map\"\n [geometryType]=\"geometryType\"\n [drawGuide]=\"drawGuide$ | async\"\n [measure]=\"measure\"\n [drawControlIsActive]=\"drawControlIsActive\"\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\n [drawStyle]=\"drawStyle$ | async\"\n [overlayStyle]=\"overlayStyle$ | async\"\n [radius]=\"radius\"\n [predefinedRadius]=\"predefinedRadius\">\n</igo-geometry-form-field-input>\n\n<div class=\"header\">\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onDrawControlChange()\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"freehandDrawIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onfreehandControlChange()\">\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\n </mat-slide-toggle>\n</div>\n\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\n <form class=\"radius-form\">\n <mat-form-field class=\"radius\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\n<mat-radio-group [value]=\"selectedItemType\">\n <mat-radio-button *ngFor=\"let item of itemType\"\n [value]=\"item\"\n (change)=\"onItemTypeChange($event)\">\n {{'igo.geo.spatialFilter.' + item | translate}}\n </mat-radio-button>\n</mat-radio-group>\n\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\n <mat-table>\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\n </ng-container>\n\n <!-- Select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n\n </mat-table>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\n <li class=\"mat-tree-node\">\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n {{node.name}}\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? onToggleChange(node) : null\"\n [checked]=\"selectedThematics.isSelected(node)\">\n </mat-checkbox>\n </li>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\n <div class=\"mat-tree-node\">\n <button mat-icon-button\n (click)=\"onToggleClick(node)\">\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\n </button>\n {{node.name}}\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\n [checked]=\"isAllSelected(node)\"\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\n </mat-checkbox>\n </div>\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container matTreeNodeOutlet></ng-container>\n </ul>\n </mat-nested-tree-node>\n\n </mat-tree>\n</div>\n\n<div class=\"buttons\">\n\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\n (click)=\"clearSearch()\">\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\n </button>\n\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\n (click)=\"clearDrawZone()\">\n {{'igo.geo.spatialFilter.clearForm' | translate}}\n </button>\n\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\n (click)=\"toggleSearchButton()\">\n {{'igo.geo.spatialFilter.goSearch' | translate}}\n </button>\n\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\n </button>\n\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\n </button>\n\n</div>\n\n<button\n class=\"chevron-down\"\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n</button>\n\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\n <button\n *ngIf=\"listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\n </button>\n <igo-entity-table\n class=\"results-list\"\n [template]=\"tableTemplate\"\n [store]=\"store\"\n (entitySelectChange)=\"entityChange.emit($event)\">\n </igo-entity-table>\n</div>\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
|
|
1040
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SpatialFilterService }, { type: i2.MessageService }, { type: i2.LanguageService }]; }, { map: [{
|
|
1041
|
+
type: Input
|
|
1042
|
+
}], type: [{
|
|
1043
|
+
type: Input
|
|
1044
|
+
}], queryType: [{
|
|
1045
|
+
type: Input
|
|
1046
|
+
}], zone: [{
|
|
1047
|
+
type: Input
|
|
1048
|
+
}], loading: [{
|
|
1049
|
+
type: Input
|
|
1050
|
+
}], store: [{
|
|
1051
|
+
type: Input
|
|
1052
|
+
}], layers: [{
|
|
1053
|
+
type: Input
|
|
1054
|
+
}], allLayers: [{
|
|
1055
|
+
type: Input
|
|
1056
|
+
}], thematicLength: [{
|
|
1057
|
+
type: Input
|
|
1058
|
+
}], toggleSearch: [{
|
|
1059
|
+
type: Output
|
|
1060
|
+
}], itemTypeChange: [{
|
|
1061
|
+
type: Output
|
|
1062
|
+
}], thematicChange: [{
|
|
1063
|
+
type: Output
|
|
1064
|
+
}], drawZoneEvent: [{
|
|
1065
|
+
type: Output
|
|
1066
|
+
}], bufferEvent: [{
|
|
1067
|
+
type: Output
|
|
1068
|
+
}], zoneWithBufferChange: [{
|
|
1069
|
+
type: Output
|
|
1070
|
+
}], measureUnitChange: [{
|
|
1071
|
+
type: Output
|
|
1072
|
+
}], radiusEvent: [{
|
|
1073
|
+
type: Output
|
|
1074
|
+
}], freehandControl: [{
|
|
1075
|
+
type: Output
|
|
1076
|
+
}], predefinedRadius: [{
|
|
1077
|
+
type: Output
|
|
1078
|
+
}], clearButtonEvent: [{
|
|
1079
|
+
type: Output
|
|
1080
|
+
}], clearSearchEvent: [{
|
|
1081
|
+
type: Output
|
|
1082
|
+
}], export: [{
|
|
1083
|
+
type: Output
|
|
1084
|
+
}], openWorkspace: [{
|
|
1085
|
+
type: Output
|
|
1086
|
+
}], entityChange: [{
|
|
1087
|
+
type: Output
|
|
1088
|
+
}] }); })();
|
|
1089
1089
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItaXRlbS9zcGF0aWFsLWZpbHRlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci9zcGF0aWFsLWZpbHRlci1pdGVtL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQWUsa0NBQWtDLEVBQUUseUJBQXlCLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQy9ILE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSx1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LGVBQStDO1FBQS9DLGlFQUErQztRQUM3RixlQUNGO1FBREUsNEZBQ0Y7UUFNQyxlQUEyRDtRQUEzRCx3RkFBMkQ7UUFReEMsZUFBMEQ7UUFBMUQsdUZBQTBEOzt1RkQ1SG5FLDBCQUEwQjtjQU50QyxTQUFTOzJCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTtrS0FJdEMsR0FBRztrQkFBWCxLQUFLO1lBR0YsSUFBSTtrQkFEUCxLQUFLO1lBdUZHLFNBQVM7a0JBQWpCLEtBQUs7WUFFRyxJQUFJO2tCQUFaLEtBQUs7WUFFRyxPQUFPO2tCQUFmLEtBQUs7WUFHRixLQUFLO2tCQURSLEtBQUs7WUFrQkcsTUFBTTtrQkFBZCxLQUFLO1lBRUcsU0FBUztrQkFBakIsS0FBSztZQUdGLGNBQWM7a0JBRGpCLEtBQUs7WUFTSSxZQUFZO2tCQUFyQixNQUFNO1lBRUcsY0FBYztrQkFBdkIsTUFBTTtZQUVHLGNBQWM7a0JBQXZCLE1BQU07WUFFRyxhQUFhO2tCQUF0QixNQUFNO1lBRUcsV0FBVztrQkFBcEIsTUFBTTtZQUNHLG9CQUFvQjtrQkFBN0IsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUVHLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsTUFBTTtrQkFBZixNQUFNO1lBRUcsYUFBYTtrQkFBdEIsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLCBTcGF0aWFsRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uLy4uL21hcCc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVySXRlbVR5cGUgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvSlNPTkdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vLi4vZ2VvbWV0cnkvc2hhcmVkL2dlb21ldHJ5LmludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgb2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgT2xQb2ludCBmcm9tICdvbC9nZW9tL1BvaW50JztcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lYXN1cmVMZW5ndGhVbml0IH0gZnJvbSAnLi4vLi4vLi4vbWVhc3VyZSc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSwgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSwgRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlciwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi8uLi9sYXllci9zaGFyZWQnO1xuaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uLCBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL3NoYXJlZCc7XG5cbi8qKlxuICogU3BhdGlhbC1GaWx0ZXItSXRlbSAoc2VhcmNoIHBhcmFtZXRlcnMpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zcGF0aWFsLWZpbHRlci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGF0aWFsLWZpbHRlci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNwYXRpYWxGaWx0ZXJJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IFNwYXRpYWxGaWx0ZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBzZXQgdHlwZSh0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZW9tZXRyeVR5cGVzLmZpbmRJbmRleChnZW9tID0+IGdlb20gPT09IHRoaXMudHlwZSk7XG4gICAgdGhpcy5nZW9tZXRyeVR5cGUgPSB0aGlzLmdlb21ldHJ5VHlwZXNbaW5kZXhdO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnJhZGl1cyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRyYXdHdWlkZSQubmV4dChudWxsKTtcbiAgICB0aGlzLmRyYXdTdHlsZSQubmV4dCh1bmRlZmluZWQpO1xuXG4gICAgLy8gTmVjZXNzYXJ5IHRvIGtlZXAgcmVmZXJlbmNlIHRvIHRoZSBnZW9tZXRyeSBmb3JtIGZpZWxkIGlucHV0XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgY29uc3QgZ2VvanNvbjogR2VvSlNPTkdlb21ldHJ5ID0ge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogJydcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGdlb2pzb24pO1xuICAgIH1cblxuICAgIC8vIE5lY2Vzc2FyeSB0byBhcHBseSB0aGUgcmlnaHQgc3R5bGUgd2hlbiBnZW9tZXRyeSB0eXBlIGlzIFBvaW50XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcbiAgICAgIHRoaXMucmFkaXVzID0gMTAwMDsgLy8gQmFzZSByYWRpdXNcbiAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMpO1xuICAgICAgdGhpcy5Qb2ludFN0eWxlID0gKGZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgcmVzb2x1dGlvbjogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgT2xQb2ludDtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvbHByb2oudHJhbnNmb3JtKGdlb20uZ2V0Q29vcmRpbmF0ZXMoKSwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDMyNicpO1xuICAgICAgICByZXR1cm4gbmV3IG9sU3R5bGUuU3R5bGUgKHtcbiAgICAgICAgICBpbWFnZTogbmV3IG9sU3R5bGUuQ2lyY2xlICh7XG4gICAgICAgICAgICByYWRpdXM6IHRoaXMucmFkaXVzIC8gKE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIGNvb3JkaW5hdGVzWzFdKSkgLyByZXNvbHV0aW9uLCAvLyBMYXRpdHVkZSBjb3JyZWN0aW9uXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAyLFxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWxsOiBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICB0aGlzLm92ZXJsYXlTdHlsZSA9IHRoaXMuUG9pbnRTdHlsZTtcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHRoaXMub3ZlcmxheVN0eWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgZ2VvbWV0cnkgdHlwZXMgaXMgUG9seWdvblxuICAgICAgdGhpcy5yYWRpdXMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLlBvbHlTdHlsZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBvbFN0eWxlLlN0eWxlICh7XG4gICAgICAgICAgc3Ryb2tlOiBuZXcgb2xTdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgd2lkdGg6IDIsXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbGw6IG5ldyBvbFN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbG9yID0gWzAsIDE1MywgMjU1XTtcbiAgICAgIGNvbnN0IGRyYXdTdHlsZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBvbFN0eWxlLlN0eWxlKHtcbiAgICAgICAgICBpbWFnZTogbmV3IG9sU3R5bGUuQ2lyY2xlICh7XG4gICAgICAgICAgICByYWRpdXM6IDgsXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAyLFxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWxsOiBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICBjb2xvcjogY29sb3IuY29uY2F0KFsxXSksXG4gICAgICAgICAgICB3aWR0aDogMlxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbGw6ICBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvci5jb25jYXQoWzAuMl0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vdmVybGF5U3R5bGUgPSB0aGlzLlBvbHlTdHlsZTtcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KGRyYXdTdHlsZSk7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheVN0eWxlJC5uZXh0KHRoaXMub3ZlcmxheVN0eWxlKTtcbiAgfVxuICBwcml2YXRlIF90eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcblxuICBASW5wdXQoKSBxdWVyeVR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGU7XG5cbiAgQElucHV0KCkgem9uZTogRmVhdHVyZTtcblxuICBASW5wdXQoKSBsb2FkaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdG9yZSgpOiBFbnRpdHlTdG9yZTxGZWF0dXJlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlO1xuICB9XG4gIHNldCBzdG9yZShzdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT4pIHtcbiAgICB0aGlzLl9zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMuX3N0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTsgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+O1xuXG4gIC8qKlxuICAgKiBBdmFpbGFibGUgbWVhc3VyZSB1bml0cyBmb3IgdGhlIG1lYXN1cmUgdHlwZSBnaXZlblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBtZWFzdXJlVW5pdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzLCBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzXTtcbiAgfVxuXG4gIEBJbnB1dCgpIGxheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGFsbExheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB0aGVtYXRpY0xlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90aGVtYXRpY0xlbmd0aDtcbiAgfVxuICBzZXQgdGhlbWF0aWNMZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3RoZW1hdGljTGVuZ3RoID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdGhlbWF0aWNMZW5ndGg6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgdG9nZ2xlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKSBpdGVtVHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BhdGlhbEZpbHRlckl0ZW1UeXBlPigpO1xuXG4gIEBPdXRwdXQoKSB0aGVtYXRpY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BhdGlhbEZpbHRlclRoZW1hdGljW10+KCk7XG5cbiAgQE91dHB1dCgpIGRyYXdab25lRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZlYXR1cmU+KCk7XG5cbiAgQE91dHB1dCgpIGJ1ZmZlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSB6b25lV2l0aEJ1ZmZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZT4oKTtcbiAgQE91dHB1dCgpIG1lYXN1cmVVbml0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZWFzdXJlTGVuZ3RoVW5pdD4oKTtcblxuICBAT3V0cHV0KCkgcmFkaXVzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGZyZWVoYW5kQ29udHJvbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHByZWRlZmluZWRSYWRpdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpIGNsZWFyQnV0dG9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGNsZWFyU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGV4cG9ydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgb3BlbldvcmtzcGFjZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGVudGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBpdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlW10gPSBbU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MsIFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5UaGVtYXRpY3NdO1xuICBwdWJsaWMgc2VsZWN0ZWRJdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlID0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3M7XG4gIHB1YmxpYyBzZWxlY3RlZFNvdXJjZUFkZHJlc3M7XG5cbiAgdHJlZUNvbnRyb2w6IE5lc3RlZFRyZWVDb250cm9sPFNwYXRpYWxGaWx0ZXJUaGVtYXRpYz4gPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8U3BhdGlhbEZpbHRlclRoZW1hdGljPihub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xuXG4gIC8vIEZvciB0aGVtYXRpY3MgYW5kIHJlc3VsdHMgdGFibGVzXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnbmFtZScsICdzZWxlY3QnXTtcbiAgcHVibGljIGNoaWxkcmVuczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgcHVibGljIGdyb3Vwczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHRoZW1hdGljczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8U3BhdGlhbEZpbHRlclRoZW1hdGljPigpO1xuICBwdWJsaWMgc2VsZWN0ZWRUaGVtYXRpY3MgPSBuZXcgU2VsZWN0aW9uTW9kZWw8U3BhdGlhbEZpbHRlclRoZW1hdGljPih0cnVlLCBbXSk7XG5cbiAgLy8gRm9yIGdlb21ldHJ5IGZvcm0gZmllbGQgaW5wdXRcbiAgdmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8R2VvSlNPTkdlb21ldHJ5PiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcbiAgZHJhd0d1aWRlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBvdmVybGF5U3R5bGUkOiBCZWhhdmlvclN1YmplY3Q8b2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuICBkcmF3U3R5bGUkOiBCZWhhdmlvclN1YmplY3Q8b2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdmFsdWUkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJhZGl1c0NoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGJ1ZmZlckNoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgcHVibGljIGdlb21ldHJ5VHlwZTogVHlwZSB8IHN0cmluZztcbiAgcHVibGljIGdlb21ldHJ5VHlwZUZpZWxkID0gZmFsc2U7XG4gIHB1YmxpYyBnZW9tZXRyeVR5cGVzOiBzdHJpbmdbXSA9IFsnUG9pbnQnLCAnUG9seWdvbiddO1xuICBwdWJsaWMgZHJhd0d1aWRlRmllbGQgPSBmYWxzZTtcbiAgcHVibGljIGRyYXdHdWlkZTogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGRyYXdHdWlkZVBsYWNlaG9sZGVyID0gJyc7XG4gIHB1YmxpYyBtZWFzdXJlID0gZmFsc2U7XG4gIHB1YmxpYyBkcmF3Q29udHJvbElzQWN0aXZlID0gdHJ1ZTtcbiAgcHVibGljIGZyZWVoYW5kRHJhd0lzQWN0aXZlID0gZmFsc2U7XG4gIHB1YmxpYyBkcmF3U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuICBwdWJsaWMgZHJhd1pvbmU7XG4gIHB1YmxpYyBvdmVybGF5U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuICBwdWJsaWMgUG9pbnRTdHlsZTogb2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk7XG4gIHB1YmxpYyBQb2x5U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuXG4gIHB1YmxpYyByYWRpdXM6IG51bWJlcjtcbiAgcHVibGljIGJ1ZmZlcjogbnVtYmVyID0gMDtcbiAgcHVibGljIHJhZGl1c0Zvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBwdWJsaWMgYnVmZmVyRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgcHVibGljIG1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgcHVibGljIHpvbmVXaXRoQnVmZmVyO1xuXG4gIHB1YmxpYyBsaXN0SXNWaXNpYmxlID0gdHJ1ZTtcbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlLmxvYWRUaGVtYXRpY3NMaXN0KClcbiAgICAuc3Vic2NyaWJlKChpdGVtczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICB0aGlzLmNoaWxkcmVucy5wdXNoKGl0ZW0pO1xuICAgICAgICB0aGlzLmNoaWxkcmVucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5ncm91cHMucHVzaCh0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLmxpbWl0ZXMnKSk7XG4gICAgICBjb25zdCBsaW1pdHM6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5ncm91cHNbMF0sXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfTtcbiAgICAgIHRoaXMudGhlbWF0aWNzLnB1c2gobGltaXRzKTtcbiAgICAgIHRoaXMuY2hpbGRyZW5zLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQuZ3JvdXAgJiYgKHRoaXMuZ3JvdXBzLmluZGV4T2YoY2hpbGQuZ3JvdXApID09PSAtMSkpIHtcbiAgICAgICAgICB0aGlzLmdyb3Vwcy5wdXNoKGNoaWxkLmdyb3VwKTtcbiAgICAgICAgICBjb25zdCB0aGVtYXRpYzogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgbmFtZTogY2hpbGQuZ3JvdXAsXG4gICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMudGhlbWF0aWNzLnB1c2godGhlbWF0aWMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGlsZC5ncm91cCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQWRtUmVnaW9uJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuTXVuJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQXJyb25kJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQ2lyY0ZlZCcpIHx8XG4gICAgICAgICAgICBjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLkNpcmNQcm92JykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuRGlyUmVnJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuTVJDJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuUmVnVG91cicpKSB7XG4gICAgICAgICAgICAgIGNoaWxkLmdyb3VwID0gbGltaXRzLm5hbWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLnJvdXRlcycpKSB7XG4gICAgICAgICAgICBjaGlsZC5ncm91cCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ3JvdXAudHJhbnNwb3J0Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW1hdGljOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgc291cmNlOiBjaGlsZC5zb3VyY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRoZW1hdGljcy5wdXNoKHRoZW1hdGljKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGVtYXRpY3Muc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbnMpIHtcbiAgICAgICAgICBpZiAoY2hpbGQuZ3JvdXAgPT09IHRoZW1hdGljLm5hbWUpIHtcbiAgICAgICAgICAgIHRoZW1hdGljLmNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudGhlbWF0aWNzO1xuXG4gICAgdGhpcy5kcmF3R3VpZGUkLm5leHQobnVsbCk7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh0aGlzLmZvcm1Db250cm9sLnZhbHVlID8gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy52YWx1ZSQkID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogR2VvSlNPTkdlb21ldHJ5KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZHJhd1pvbmUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIGFzIEZlYXR1cmU7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlciAhPT0gMCkge1xuICAgICAgICAgIHRoaXMuZHJhd1pvbmVFdmVudC5lbWl0KHRoaXMuZHJhd1pvbmUpO1xuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuZHJhd1pvbmUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRSYWRpdXMoKTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yYWRpdXNDaGFuZ2VzJCQgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRSYWRpdXMoKTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5idWZmZXJDaGFuZ2VzJCQgPSB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSg1MDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMCAmJiB2YWx1ZSA8PSAxMDAwMDApIHtcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zcGF0aWFsRmlsdGVyU2VydmljZS5sb2FkQnVmZmVyR2VvbWV0cnkoXG4gICAgICAgICAgICB0aGlzLmRyYXdab25lLFxuICAgICAgICAgICAgU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbixcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKGZlYXR1cmVHZW9tOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy56b25lV2l0aEJ1ZmZlcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwKSB7XG4gICAgICAgICAgdGhpcy5idWZmZXIgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlckV2ZW50LmVtaXQodmFsdWUpO1xuICAgICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEJ1ZmZlckdlb21ldHJ5KFxuICAgICAgICAgICAgdGhpcy5kcmF3Wm9uZSxcbiAgICAgICAgICAgIFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24sXG4gICAgICAgICAgICB2YWx1ZSAqIDEwMDBcbiAgICAgICAgICApLnN1YnNjcmliZSgoZmVhdHVyZUdlb206IEZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIgPSBmZWF0dXJlR2VvbTtcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXJDaGFuZ2UuZW1pdCh0aGlzLnpvbmVXaXRoQnVmZmVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuYnVmZmVyID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICB0aGlzLmRyYXdab25lRXZlbnQuZW1pdCh0aGlzLmRyYXdab25lKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB2YWx1ZSA8IDAgfHxcbiAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMTAwMDAwKSB8fFxuICAgICAgICAgICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmIHZhbHVlID4gMTAwKSkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gMDtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQodGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5idWZmZXJBbGVydCcpLFxuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLndhcm5pbmcnKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3kgPSBuZXcgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSh7fSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xuICAgICAgbGF5ZXI6IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIHpJbmRleDogMzAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgICBzdHlsZTogdW5kZWZpbmVkLFxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxuICAgICAgICBleHBvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxuICAgICAgfSksXG4gICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcbiAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5EZWZhdWx0LFxuICAgICAgbWFueTogdHJ1ZSxcbiAgICAgIGRyYWdCb3g6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBzdHJlYW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnZhbHVlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJhZGl1c0NoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYnVmZmVyQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jZFJlZi5kZXRhY2goKTtcbiAgICBpZiAodGhpcy5yYWRpdXNDaGFuZ2VzJCQpIHtcbiAgICAgIHRoaXMucmFkaXVzQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlJCQpIHtcbiAgICAgIHRoaXMudmFsdWUkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSXRlbVR5cGVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbVR5cGUgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLml0ZW1UeXBlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdW5pdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTWVhc3VyZVVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICBpZiAodW5pdCA9PT0gdGhpcy5tZWFzdXJlVW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID0gdW5pdDtcbiAgICAgIHRoaXMubWVhc3VyZVVuaXRDaGFuZ2UuZW1pdCh0aGlzLm1lYXN1cmVVbml0KTtcbiAgICAgIGlmICh0aGlzLmlzUG9seWdvbigpKSB7XG4gICAgICAgIHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyA/XG4gICAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlICogMTAwMCkgOlxuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZSAvIDEwMDApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUG9pbnQoKSkge1xuICAgICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgP1xuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZSAqIDEwMDApIDpcbiAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgLyAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1ByZWRlZmluZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZDtcbiAgfVxuXG4gIGlzUG9seWdvbigpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2x5Z29uO1xuICB9XG5cbiAgaXNQb2ludCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludDtcbiAgfVxuXG4gIGhhc0NoaWxkKF86IG51bWJlciwgbm9kZTogU3BhdGlhbEZpbHRlclRoZW1hdGljKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGVDbGljayhub2RlOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpIDogdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKG5vZGU/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBsZXQgbnVtU2VsZWN0ZWQ7XG4gICAgbGV0IG51bU5vZGVzID0gMDtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICB0aGlzLnRoZW1hdGljcy5mb3JFYWNoKHRoZW1hdGljID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmluZGV4T2YodGhlbWF0aWMubmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgbnVtTm9kZXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNoaWxkcmVucy5mb3JFYWNoKGNoaWxkcmVuID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRoZW1hdGljcy5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gY2hpbGRyZW4uc291cmNlKSkge1xuICAgICAgICAgIG51bU5vZGVzKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1TZWxlY3RlZCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQuZmluZCh0aGVtYXRpYyA9PiB0aGVtYXRpYyA9PT0gY2hpbGRyZW4pKSB7XG4gICAgICAgICAgbnVtTm9kZXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG51bU5vZGVzID49IDEpIHtcbiAgICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtTm9kZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBoYXNDaGlsZHJlblNlbGVjdGVkKG5vZGU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYykge1xuICAgIGxldCBib29sID0gZmFsc2U7XG4gICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMuc291cmNlID09PSBjaGlsZC5zb3VyY2UpKSB7XG4gICAgICAgIGJvb2wgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBib29sO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGhlYWRlciBjaGVja2JveFxuICAgKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cbiAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuY2xlYXIoKSA6XG4gICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkKDAsIHRoZW1hdGljKSkge1xuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoZW1hdGljKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZCgwLCB0aGVtYXRpYykpIHtcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKHRoZW1hdGljKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudGhlbWF0aWNDaGFuZ2UuZW1pdChzZWxlY3RlZFRoZW1hdGljc05hbWUpO1xuICB9XG5cbiAgc2VsZWN0QWxsKG5vZGU/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncm91cHMuaW5kZXhPZih0aGVtYXRpYy5uYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdCh0aGVtYXRpYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGlsZHJlbnMuZm9yRWFjaChjaGlsZHJlbiA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gY2hpbGRyZW4uc291cmNlKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KGNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0NoaWxkKDAsIG5vZGUpKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiA9PiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdChjaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoaWxkcmVuc1RvZ2dsZShub2RlOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQobm9kZSkgP1xuICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLmRlc2VsZWN0KGNoaWxkKSkgOlxuICAgIHRoaXMuc2VsZWN0QWxsKG5vZGUpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cbiAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoc2VsZWN0ZWRUaGVtYXRpY3NOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBjaGFuZ2VzIHRvIHRoZSB0aGVtYXRpY3Mgc2VsZWN0ZWQgdHJlZSBhbmQgZW1pdCBldmVudFxuICAgKi9cbiAgb25Ub2dnbGVDaGFuZ2Uobm9kZVNlbGVjdGVkOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gbm9kZVNlbGVjdGVkLnNvdXJjZSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2hpbGRyZW5zLmZvckVhY2goY2hpbGRyZW4gPT4ge1xuICAgICAgaWYgKGNoaWxkcmVuID09PSBub2RlU2VsZWN0ZWQgJiYgc2VsZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KGNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuZGVzZWxlY3QoY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgaWYgKHRoZW1hdGljID09PSBub2RlU2VsZWN0ZWQgJiYgc2VsZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KHRoZW1hdGljKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGVtYXRpYyA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuZGVzZWxlY3QodGhlbWF0aWMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoc2VsZWN0ZWRUaGVtYXRpY3NOYW1lKTtcbiAgfVxuXG4gIG9uRHJhd0NvbnRyb2xDaGFuZ2UoKSB7XG4gICAgdGhpcy5kcmF3Q29udHJvbElzQWN0aXZlID0gIXRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZTtcbiAgfVxuXG4gIG9uZnJlZWhhbmRDb250cm9sQ2hhbmdlKCkge1xuICAgIHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUgPSAhdGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZTtcbiAgICB0aGlzLmZyZWVoYW5kQ29udHJvbC5lbWl0KHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpO1xuICAgIGlmICh0aGlzLmlzUG9pbnQoKSkge1xuICAgICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzLmVtaXQoIXRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpO1xuICAgICAgaWYgKHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U3R5bGUkLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5kcmF3U3R5bGUkLm5leHQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMYXVuY2ggc2VhcmNoIGJ1dHRvblxuICAgKi9cbiAgdG9nZ2xlU2VhcmNoQnV0dG9uKCkge1xuICAgIGlmICghdGhpcy5pc1ByZWRlZmluZWQoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyID4gMCkge1xuICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyLm1ldGEgPSB7XG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0aXRsZTogJ1pvbmUnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIucHJvcGVydGllcyA9IHtcbiAgICAgICAgICBub206ICdab25lJyxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUgYXMgc3RyaW5nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZHJhd1pvbmVFdmVudC5lbWl0KHRoaXMuem9uZVdpdGhCdWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcmF3Wm9uZS5tZXRhID0ge1xuICAgICAgICAgIGlkOiB1bmRlZmluZWQsXG4gICAgICAgICAgdGl0bGU6ICdab25lJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYXdab25lLnByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgbm9tOiAnWm9uZScsXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlIGFzIHN0cmluZ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYXdab25lRXZlbnQuZW1pdCh0aGlzLmRyYXdab25lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQb2ludCgpKSB7XG4gICAgICB0aGlzLnJhZGl1c0V2ZW50LmVtaXQodGhpcy5yYWRpdXMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1BvbHlnb24oKSkge1xuICAgICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KHRoaXMuYnVmZmVyKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVTZWFyY2guZW1pdCgpO1xuICAgIHRoaXMuc3RvcmUuZW50aXRpZXMkLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKVxuICAgICkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCAmJiB0aGlzLmxheWVycy5sZW5ndGggPT09IHRoaXMudGhlbWF0aWNMZW5ndGggKyAxKSB7XG4gICAgICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KCk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGFibGVUZW1wbGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExhdW5jaCBjbGVhciBidXR0b24gKGNsZWFyIHN0b3JlIGFuZCBtYXAgbGF5ZXJzKVxuICAgKi9cbiAgY2xlYXJCdXR0b24oKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zdG9yZSkge1xuICAgICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1BvaW50KCkgfHwgdGhpcy5pc1BvbHlnb24oKSkge1xuICAgICAgdGhpcy5kcmF3Wm9uZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICB0aGlzLmJ1ZmZlciA9IDA7XG4gICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KDApO1xuICAgIHRoaXMuY2xlYXJCdXR0b25FdmVudC5lbWl0KCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2xlYXJEcmF3Wm9uZSgpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICB0aGlzLmJ1ZmZlciA9IDA7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGNsZWFyIHNlYXJjaCAoY2xlYXIgZmllbGQgaWYgdHlwZSBpcyBwcmVkZWZpbmVkKVxuICAgKi9cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5jbGVhcigpO1xuICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUoMCk7XG4gICAgdGhpcy5idWZmZXIgPSAwO1xuICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCgwKTtcbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoW10pO1xuICAgIHRoaXMuY2xlYXJTZWFyY2hFdmVudC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGNvbmRpdGlvbnMgb2YgaW5jb21wbGV0ZSBmaWVsZHMgb3IgYnVzeSBzZXJ2aWNlXG4gICAqL1xuICBkaXNhYmxlU2VhcmNoQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbVR5cGUgPT09IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5VHlwZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuem9uZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xuICAgICAgICBpZiAodGhpcy5xdWVyeVR5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnpvbmUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24gfHwgdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MgJiYgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGggPiAwICYmIHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZWRDbGVhclNlYXJjaCgpIHtcbiAgICBsZXQgZGlzYWJsZSA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcyA/XG4gICAgICBkaXNhYmxlID0gdGhpcy5xdWVyeVR5cGUgPT09IHVuZGVmaW5lZCA6XG4gICAgICBkaXNhYmxlID0gdGhpcy5xdWVyeVR5cGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMDtcblxuICAgIHJldHVybiBkaXNhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZSByYWRpdXMgdmFsdWUgYXQgdXNlciBjaGFuZ2VcbiAgICovXG4gIGdldFJhZGl1cygpIHtcbiAgICBsZXQgZm9ybVZhbHVlO1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgP1xuICAgICAgICBmb3JtVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlLnJhZGl1cyA6XG4gICAgICAgIGZvcm1WYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUucmFkaXVzIC8gMTAwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvaW50KSB7XG4gICAgICBpZiAoIXRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgPCAwIHx8XG4gICAgICAgICAgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlID49IDEwMDAwMCkgfHxcbiAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlID49IDEwMCkpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIucmFkaXVzQWxlcnQnKSxcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZycpKTtcbiAgICAgICAgICB0aGlzLnJhZGl1cyA9IDEwMDA7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMpIDpcbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMgLyAxMDAwKTtcbiAgICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZSA+PSAxMDAwMDApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQodGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5yYWRpdXNBbGVydCcpLFxuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLndhcm5pbmcnKSk7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmb3JtVmFsdWUgIT09IHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMpIHtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJhZGl1cyA9IHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgKiAxMDAwO1xuICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyAqIDEwMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5vdmVybGF5U3R5bGUkLm5leHQodGhpcy5Qb2ludFN0eWxlKTtcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHRoaXMuUG9pbnRTdHlsZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlVmlzaWJsZUxpc3QoKSB7XG4gICAgdGhpcy5saXN0SXNWaXNpYmxlID0gIXRoaXMubGlzdElzVmlzaWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGFibGVUZW1wbGF0ZSgpIHtcbiAgICBjb25zdCB0eXBlQ29sdW1uID0ge1xuICAgICAgbmFtZTogJ21ldGEudGl0bGUnLFxuICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIudHlwZScpLFxuICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MXG4gICAgfTtcbiAgICBjb25zdCBuYW1lQ29sdW1uID0ge1xuICAgICAgbmFtZTogJ3Byb3BlcnRpZXMubm9tJyxcbiAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNlYXJjaFJlc3VsdHMnKSxcbiAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTFxuICAgIH07XG4gICAgY29uc3QgY29sdW1ucyA9IFt0eXBlQ29sdW1uLCBuYW1lQ29sdW1uXTtcblxuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHNvcnQ6IHRydWUsXG4gICAgICBjb2x1bW5zXG4gICAgfTtcbiAgfVxufVxuIiwiPGlnby1nZW9tZXRyeS1mb3JtLWZpZWxkLWlucHV0XG4gIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gIFttYXBdPVwibWFwXCJcbiAgW2dlb21ldHJ5VHlwZV09XCJnZW9tZXRyeVR5cGVcIlxuICBbZHJhd0d1aWRlXT1cImRyYXdHdWlkZSQgfCBhc3luY1wiXG4gIFttZWFzdXJlXT1cIm1lYXN1cmVcIlxuICBbZHJhd0NvbnRyb2xJc0FjdGl2ZV09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcbiAgW2ZyZWVoYW5kRHJhd0lzQWN0aXZlXT1cImZyZWVoYW5kRHJhd0lzQWN0aXZlXCJcbiAgW2RyYXdTdHlsZV09XCJkcmF3U3R5bGUkIHwgYXN5bmNcIlxuICBbb3ZlcmxheVN0eWxlXT1cIm92ZXJsYXlTdHlsZSQgfCBhc3luY1wiXG4gIFtyYWRpdXNdPVwicmFkaXVzXCJcbiAgW3ByZWRlZmluZWRSYWRpdXNdPVwicHJlZGVmaW5lZFJhZGl1c1wiPlxuPC9pZ28tZ2VvbWV0cnktZm9ybS1maWVsZC1pbnB1dD5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiIWlzUHJlZGVmaW5lZCgpXCJcbiAgICAgIFtjaGVja2VkXT1cImRyYXdDb250cm9sSXNBY3RpdmVcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvbkRyYXdDb250cm9sQ2hhbmdlKClcIj5cbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5kcmF3Q29udHJvbCcgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIiFpc1ByZWRlZmluZWQoKVwiXG4gICAgICBbY2hlY2tlZF09XCJmcmVlaGFuZERyYXdJc0FjdGl2ZVwiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uZnJlZWhhbmRDb250cm9sQ2hhbmdlKClcIj5cbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5mcmVlaGFuZENvbnRyb2wnIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImJ1ZmZlci11bml0XCIgKm5nSWY9XCJpc1BvbHlnb24oKVwiPlxuICA8Zm9ybSBjbGFzcz1cImJ1ZmZlci1mb3JtXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYnVmZmVyXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmJ1ZmZlcicgfCB0cmFuc2xhdGV9fVwiIFtmb3JtQ29udHJvbF09XCJidWZmZXJGb3JtQ29udHJvbFwiXG4gICAgICBbdmFsdWVdPVwiMFwiIFtyZWFkb25seV09XCJ0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9mb3JtPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICA8bWF0LXNlbGVjdFxuICAgIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk1lYXN1cmVVbml0Q2hhbmdlKCRldmVudC52YWx1ZSlcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWVhc3VyZVVuaXQgb2YgbWVhc3VyZVVuaXRzXCIgW3ZhbHVlXT1cIm1lYXN1cmVVbml0XCI+XG4gICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVVbml0KSB8IHRyYW5zbGF0ZX19XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicmFkaXVzLXVuaXRcIiAqbmdJZj1cImlzUG9pbnQoKVwiPlxuICA8Zm9ybSBjbGFzcz1cInJhZGl1cy1mb3JtXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmFkaXVzXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLnJhZGl1cycgfCB0cmFuc2xhdGV9fVwiIFtmb3JtQ29udHJvbF09XCJyYWRpdXNGb3JtQ29udHJvbFwiXG4gICAgICBbdmFsdWVdPVwiMTAwMFwiIChpbnB1dCk9XCJnZXRSYWRpdXMoKVwiIFtyZWFkb25seV09XCJ0aGlzLmZyZWVoYW5kRHJhd0lzQWN0aXZlICYmIHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGxcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Zvcm0+XG5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgW3ZhbHVlXT1cIm1lYXN1cmVVbml0XCJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTWVhc3VyZVVuaXRDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtZWFzdXJlVW5pdCBvZiBtZWFzdXJlVW5pdHNcIiBbdmFsdWVdPVwibWVhc3VyZVVuaXRcIj5cbiAgICAgICAge3soJ2lnby5nZW8ubWVhc3VyZS4nICsgbWVhc3VyZVVuaXQpIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cbjxtYXQtbGFiZWwgY2xhc3M9XCJ0aXRsZSBtYXQtdHlwb2dyYXBoeVwiPnt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5zZWFyY2gnIHwgdHJhbnNsYXRlfX0gOiA8L21hdC1sYWJlbD5cbjxtYXQtcmFkaW8tZ3JvdXAgW3ZhbHVlXT1cInNlbGVjdGVkSXRlbVR5cGVcIj5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtVHlwZVwiXG4gICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAoY2hhbmdlKT1cIm9uSXRlbVR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLicgKyBpdGVtIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1yYWRpby1idXR0b24+XG48L21hdC1yYWRpby1ncm91cD5cblxuPGRpdiBjbGFzcz1cInRoZW1hdGljc1wiICpuZ0lmPVwiKHNlbGVjdGVkSXRlbVR5cGU9PT0nVGhlbWF0aWNzJyAmJiAhdGFibGVUZW1wbGF0ZSkgfHwgKHNlbGVjdGVkSXRlbVR5cGU9PT0nVGhlbWF0aWNzJyAmJiB0YWJsZVRlbXBsYXRlICYmICFsaXN0SXNWaXNpYmxlKVwiPlxuICA8bWF0LXRhYmxlPlxuICAgICAgPCEtLSBOYW1lIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwidGhlbWF0aWNzLWhlYWRlclwiPnt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5UaGVtYXRpY3MnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFNlbGVjdCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiY2hlY2tzLWhlYWRlclwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkVGhlbWF0aWNzLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC9tYXQtcm93PlxuXG4gIDwvbWF0LXRhYmxlPlxuXG4gIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZT5cbiAgICAgIDxsaSBjbGFzcz1cIm1hdC10cmVlLW5vZGVcIj5cbiAgICAgICAgPCEtLSB1c2UgYSBkaXNhYmxlZCBidXR0b24gdG8gcHJvdmlkZSBwYWRkaW5nIGZvciB0cmVlIGxlYWYgLS0+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPjwvYnV0dG9uPlxuICAgICAgICB7e25vZGUubmFtZX19XG4gICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJ0cmVlLWNoZWNrXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBvblRvZ2dsZUNoYW5nZShub2RlKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGhlbWF0aWNzLmlzU2VsZWN0ZWQobm9kZSlcIj5cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L2xpPlxuICAgIDwvbWF0LXRyZWUtbm9kZT5cblxuICAgIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBleHBhbmRhYmxlIG5vZGVzIC0tPlxuICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC10cmVlLW5vZGVcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2sobm9kZSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJ0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2NoZXZyb24tZG93bicgOiAnY2hldnJvbi1yaWdodCdcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIHt7bm9kZS5uYW1lfX1cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwidHJlZS1jaGVjay0yXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBjaGlsZHJlbnNUb2dnbGUobm9kZSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaGFzQ2hpbGRyZW5TZWxlY3RlZChub2RlKSAmJiAhaXNBbGxTZWxlY3RlZChub2RlKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHVsIGNsYXNzPVwidHJlZS11bFwiIFtjbGFzcy5leGFtcGxlLXRyZWUtaW52aXNpYmxlXT1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICA8L21hdC1uZXN0ZWQtdHJlZS1ub2RlPlxuXG4gIDwvbWF0LXRyZWU+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cblxuICA8YnV0dG9uICpuZ0lmPVwiaXNQcmVkZWZpbmVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNsZWFyLXNlYXJjaC1idXR0b25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDbGVhclNlYXJjaCgpXCJcbiAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxuICAgICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmNsZWFyU2VhcmNoJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gKm5nSWY9XCJpc1BvbHlnb24oKSB8fCBpc1BvaW50KClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNsZWFyLWZvcm0tYnV0dG9uXCIgW2Rpc2FibGVkXT1cInRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGxcIlxuICAgIChjbGljayk9XCJjbGVhckRyYXdab25lKClcIj5cbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuY2xlYXJGb3JtJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJzZWFyY2gtYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVTZWFyY2hCdXR0b24oKVwiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJ1dHRvbigpXCI+XG4gICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmdvU2VhcmNoJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJyZW1vdmUtYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFsbExheWVycy5sZW5ndGggPT09IDBcIiAoY2xpY2spPVwiY2xlYXJCdXR0b24oKVwiPlxuICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5yZW1vdmVMYXllcicgfCB0cmFuc2xhdGV9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIFtkaXNhYmxlZF09XCIhc3RvcmUuZW50aXRpZXMkLmdldFZhbHVlKCkubGVuZ3RoXCIgKGNsaWNrKT1cImV4cG9ydC5lbWl0KClcIj5cbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZXhwb3J0TGF5ZXInIHwgdHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG5cbjwvZGl2PlxuXG48YnV0dG9uXG4gIGNsYXNzPVwiY2hldnJvbi1kb3duXCJcbiAgKm5nSWY9XCJzdG9yZS5hbGwoKS5sZW5ndGggJiYgdGFibGVUZW1wbGF0ZSAmJiAhbGlzdElzVmlzaWJsZVwiXG4gIG1hdC1pY29uLWJ1dHRvblxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zaG93U2VhcmNoUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAoY2xpY2spPVwidG9nZ2xlVmlzaWJsZUxpc3QoKVwiPlxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPGRpdiBjbGFzcz1cInJlc3VsdHNcIiAqbmdJZj1cInN0b3JlLmFsbCgpLmxlbmd0aCAmJiB0YWJsZVRlbXBsYXRlICYmIGxpc3RJc1Zpc2libGVcIj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwibGlzdElzVmlzaWJsZVwiXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5oaWRlU2VhcmNoUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgIChjbGljayk9XCJ0b2dnbGVWaXNpYmxlTGlzdCgpXCI+XG4gIDxtYXQtaWNvbiBzdmdJY29uPVwiY2hldnJvbi11cFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8aWdvLWVudGl0eS10YWJsZVxuICAgIGNsYXNzPVwicmVzdWx0cy1saXN0XCJcbiAgICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiXG4gICAgW3N0b3JlXT1cInN0b3JlXCJcbiAgICAoZW50aXR5U2VsZWN0Q2hhbmdlKT1cImVudGl0eUNoYW5nZS5lbWl0KCRldmVudClcIj5cbiAgPC9pZ28tZW50aXR5LXRhYmxlPlxuPC9kaXY+XG4iXX0=
|