@igo2/geo 1.14.1 → 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 +301 -299
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +306 -268
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +247 -247
- 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 +195 -195
- 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 -133
- 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 +463 -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 +126 -123
- package/esm2020/lib/print/print-form/index.mjs +1 -1
- package/esm2020/lib/print/print-form/print-form.component.mjs +428 -405
- 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 +934 -861
- 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 +2 -2
- package/esm2020/lib/query/shared/query.service.mjs +733 -619
- 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 +512 -493
- 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 +118 -0
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +371 -193
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +124 -124
- package/esm2020/lib/search/search-results/search-results.component.mjs +340 -340
- package/esm2020/lib/search/search-results/search-results.module.mjs +104 -77
- 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 +442 -418
- 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 +121 -118
- 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 +153 -147
- 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 +767 -767
- 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 +320 -320
- 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 +179 -179
- 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 +44993 -44364
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +43075 -42470
- 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 -124
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -73
- 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 -26
- 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 -89
- 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 -159
- 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 -28
- package/lib/query/shared/query.service.d.ts +56 -54
- 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 -220
- 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 -0
- package/lib/search/search-results/search-results-add-button.component.d.ts +76 -58
- package/lib/search/search-results/search-results-item.component.d.ts +47 -48
- package/lib/search/search-results/search-results.component.d.ts +161 -161
- package/lib/search/search-results/search-results.module.d.ts +28 -21
- 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 -96
- 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 -51
- 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
|
@@ -1,1302 +1,1302 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { DOMService } from '@igo2/common';
|
|
3
|
-
import { OgcFilterWriter } from '../../filter/shared/ogc-filter';
|
|
4
|
-
import { Validators } from '@angular/forms';
|
|
5
|
-
import { debounceTime, map } from 'rxjs/operators';
|
|
6
|
-
import { OgcFilterOperator } from '../shared/ogc-filter.enum';
|
|
7
|
-
import { BehaviorSubject, Observable } from 'rxjs';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../shared/ogc-filter.service";
|
|
10
|
-
import * as i2 from "@angular/forms";
|
|
11
|
-
import * as i3 from "@igo2/common";
|
|
12
|
-
import * as i4 from "@igo2/core";
|
|
13
|
-
const _c0 = ["selection"];
|
|
14
|
-
function OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
16
|
-
i0.ɵɵtext(1);
|
|
17
|
-
i0.ɵɵelementEnd();
|
|
18
|
-
} if (rf & 2) {
|
|
19
|
-
const selectorGroup_r11 = ctx.$implicit;
|
|
20
|
-
i0.ɵɵproperty("value", selectorGroup_r11);
|
|
21
|
-
i0.ɵɵadvance(1);
|
|
22
|
-
i0.ɵɵtextInterpolate1("", selectorGroup_r11.title, " ");
|
|
23
|
-
} }
|
|
24
|
-
function OgcFilterSelectionComponent_div_1_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
|
26
|
-
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 11);
|
|
27
|
-
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_1_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.currentPushButtonsGroup = $event); });
|
|
28
|
-
i0.ɵɵpipe(3, "translate");
|
|
29
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
30
|
-
i0.ɵɵelementEnd()()();
|
|
31
|
-
} if (rf & 2) {
|
|
32
|
-
const ctx_r8 = i0.ɵɵnextContext(3);
|
|
33
|
-
i0.ɵɵadvance(2);
|
|
34
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r8.currentPushButtonsGroup);
|
|
35
|
-
i0.ɵɵadvance(2);
|
|
36
|
-
i0.ɵɵproperty("ngForOf", ctx_r8.getPushButtonsGroups());
|
|
37
|
-
} }
|
|
38
|
-
function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
-
const _r18 = i0.ɵɵgetCurrentView();
|
|
40
|
-
i0.ɵɵelementStart(0, "mat-button-toggle", 16);
|
|
41
|
-
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template_mat_button_toggle_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const ogcPushButton_r16 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onSelectionChange(ogcPushButton_r16, selector_r2.selectorType)); });
|
|
42
|
-
i0.ɵɵtext(1);
|
|
43
|
-
i0.ɵɵelementEnd();
|
|
44
|
-
} if (rf & 2) {
|
|
45
|
-
const ogcPushButton_r16 = ctx.$implicit;
|
|
46
|
-
const ctx_r15 = i0.ɵɵnextContext(4);
|
|
47
|
-
i0.ɵɵproperty("matTooltip", ctx_r15.getToolTip(ogcPushButton_r16))("ngStyle", ctx_r15.getButtonColor(ogcPushButton_r16))("checked", ogcPushButton_r16.enabled)("value", ogcPushButton_r16);
|
|
48
|
-
i0.ɵɵadvance(1);
|
|
49
|
-
i0.ɵɵtextInterpolate1("", ogcPushButton_r16.title, " ");
|
|
50
|
-
} }
|
|
51
|
-
function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelementContainerStart(0);
|
|
53
|
-
i0.ɵɵelementStart(1, "h4");
|
|
54
|
-
i0.ɵɵtext(2);
|
|
55
|
-
i0.ɵɵelementEnd();
|
|
56
|
-
i0.ɵɵelementStart(3, "mat-button-toggle-group", 14);
|
|
57
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template, 2, 5, "mat-button-toggle", 15);
|
|
58
|
-
i0.ɵɵelementEnd();
|
|
59
|
-
i0.ɵɵelementContainerEnd();
|
|
60
|
-
} if (rf & 2) {
|
|
61
|
-
const bundle_r14 = ctx.$implicit;
|
|
62
|
-
const ctx_r9 = i0.ɵɵnextContext(3);
|
|
63
|
-
i0.ɵɵadvance(2);
|
|
64
|
-
i0.ɵɵtextInterpolate(bundle_r14.title);
|
|
65
|
-
i0.ɵɵadvance(1);
|
|
66
|
-
i0.ɵɵpropertyInterpolate("vertical", ctx_r9.bundleIsVertical(bundle_r14));
|
|
67
|
-
i0.ɵɵadvance(1);
|
|
68
|
-
i0.ɵɵproperty("ngForOf", bundle_r14.selectors);
|
|
69
|
-
} }
|
|
70
|
-
function OgcFilterSelectionComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
i0.ɵɵelementStart(0, "div", 8);
|
|
72
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
73
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_1_div_2_Template, 5, 5, "div", 9);
|
|
74
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template, 5, 3, "ng-container", 1);
|
|
75
|
-
i0.ɵɵelementEnd();
|
|
76
|
-
} if (rf & 2) {
|
|
77
|
-
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
78
|
-
i0.ɵɵadvance(2);
|
|
79
|
-
i0.ɵɵproperty("ngIf", ctx_r3.getPushButtonsGroups().length > 1);
|
|
80
|
-
i0.ɵɵadvance(1);
|
|
81
|
-
i0.ɵɵproperty("ngForOf", ctx_r3.currentPushButtonsGroup.computedSelectors);
|
|
82
|
-
} }
|
|
83
|
-
function OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
85
|
-
i0.ɵɵtext(1);
|
|
86
|
-
i0.ɵɵelementEnd();
|
|
87
|
-
} if (rf & 2) {
|
|
88
|
-
const selectorGroup_r23 = ctx.$implicit;
|
|
89
|
-
i0.ɵɵproperty("value", selectorGroup_r23);
|
|
90
|
-
i0.ɵɵadvance(1);
|
|
91
|
-
i0.ɵɵtextInterpolate1("", selectorGroup_r23.title, " ");
|
|
92
|
-
} }
|
|
93
|
-
function OgcFilterSelectionComponent_div_1_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
-
const _r25 = i0.ɵɵgetCurrentView();
|
|
95
|
-
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 18);
|
|
96
|
-
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_2_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.currentCheckboxesGroup = $event); });
|
|
97
|
-
i0.ɵɵpipe(3, "translate");
|
|
98
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
99
|
-
i0.ɵɵelementEnd()()();
|
|
100
|
-
} if (rf & 2) {
|
|
101
|
-
const ctx_r20 = i0.ɵɵnextContext(3);
|
|
102
|
-
i0.ɵɵadvance(2);
|
|
103
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r20.currentCheckboxesGroup);
|
|
104
|
-
i0.ɵɵadvance(2);
|
|
105
|
-
i0.ɵɵproperty("ngForOf", ctx_r20.getCheckboxesGroups());
|
|
106
|
-
} }
|
|
107
|
-
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
-
const _r31 = i0.ɵɵgetCurrentView();
|
|
109
|
-
i0.ɵɵelementStart(0, "mat-checkbox", 21);
|
|
110
|
-
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r31); const ogcCheckbox_r29 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.onSelectionChange(ogcCheckbox_r29, selector_r2.selectorType)); });
|
|
111
|
-
i0.ɵɵtext(1);
|
|
112
|
-
i0.ɵɵelementEnd();
|
|
113
|
-
} if (rf & 2) {
|
|
114
|
-
const ogcCheckbox_r29 = ctx.$implicit;
|
|
115
|
-
const ctx_r27 = i0.ɵɵnextContext(4);
|
|
116
|
-
i0.ɵɵproperty("matTooltip", ctx_r27.getToolTip(ogcCheckbox_r29))("checked", ogcCheckbox_r29.enabled)("value", ogcCheckbox_r29);
|
|
117
|
-
i0.ɵɵadvance(1);
|
|
118
|
-
i0.ɵɵtextInterpolate1("", ogcCheckbox_r29.title, " ");
|
|
119
|
-
} }
|
|
120
|
-
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
-
const _r36 = i0.ɵɵgetCurrentView();
|
|
122
|
-
i0.ɵɵelementStart(0, "u", 24);
|
|
123
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r35.displayLessResults("checkbox")); });
|
|
124
|
-
i0.ɵɵtext(1);
|
|
125
|
-
i0.ɵɵpipe(2, "translate");
|
|
126
|
-
i0.ɵɵelementEnd();
|
|
127
|
-
} if (rf & 2) {
|
|
128
|
-
i0.ɵɵadvance(1);
|
|
129
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
|
|
130
|
-
} }
|
|
131
|
-
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
-
const _r38 = i0.ɵɵgetCurrentView();
|
|
133
|
-
i0.ɵɵelementStart(0, "u", 25);
|
|
134
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r37.displayMoreResults("checkbox")); });
|
|
135
|
-
i0.ɵɵtext(1);
|
|
136
|
-
i0.ɵɵpipe(2, "translate");
|
|
137
|
-
i0.ɵɵelementEnd();
|
|
138
|
-
} if (rf & 2) {
|
|
139
|
-
i0.ɵɵadvance(1);
|
|
140
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
|
|
141
|
-
} }
|
|
142
|
-
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "p");
|
|
144
|
-
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template, 3, 3, "u", 22);
|
|
145
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template, 3, 3, "u", 23);
|
|
146
|
-
i0.ɵɵelementEnd();
|
|
147
|
-
} if (rf & 2) {
|
|
148
|
-
const bundle_r26 = i0.ɵɵnextContext().$implicit;
|
|
149
|
-
const ctx_r28 = i0.ɵɵnextContext(3);
|
|
150
|
-
i0.ɵɵadvance(1);
|
|
151
|
-
i0.ɵɵproperty("ngIf", ctx_r28.isLessResults(bundle_r26, "checkbox"));
|
|
152
|
-
i0.ɵɵadvance(1);
|
|
153
|
-
i0.ɵɵproperty("ngIf", ctx_r28.isMoreResults(bundle_r26, "checkbox"));
|
|
154
|
-
} }
|
|
155
|
-
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
-
i0.ɵɵelementContainerStart(0);
|
|
157
|
-
i0.ɵɵelementStart(1, "h4");
|
|
158
|
-
i0.ɵɵtext(2);
|
|
159
|
-
i0.ɵɵelementEnd();
|
|
160
|
-
i0.ɵɵelementStart(3, "div", 19);
|
|
161
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template, 2, 4, "mat-checkbox", 20);
|
|
162
|
-
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template, 3, 2, "p", 2);
|
|
164
|
-
i0.ɵɵelementContainerEnd();
|
|
165
|
-
} if (rf & 2) {
|
|
166
|
-
const bundle_r26 = ctx.$implicit;
|
|
167
|
-
const ctx_r21 = i0.ɵɵnextContext(3);
|
|
168
|
-
i0.ɵɵadvance(2);
|
|
169
|
-
i0.ɵɵtextInterpolate(bundle_r26.title);
|
|
170
|
-
i0.ɵɵadvance(2);
|
|
171
|
-
i0.ɵɵproperty("ngForOf", bundle_r26.selectors);
|
|
172
|
-
i0.ɵɵadvance(1);
|
|
173
|
-
i0.ɵɵproperty("ngIf", ctx_r21.isLessResults(bundle_r26, "checkbox") || ctx_r21.isMoreResults(bundle_r26, "checkbox"));
|
|
174
|
-
} }
|
|
175
|
-
function OgcFilterSelectionComponent_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
176
|
-
i0.ɵɵelementStart(0, "div", 17);
|
|
177
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
178
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_div_2_Template, 5, 5, "div", 9);
|
|
179
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template, 6, 3, "ng-container", 1);
|
|
180
|
-
i0.ɵɵelementEnd();
|
|
181
|
-
} if (rf & 2) {
|
|
182
|
-
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
183
|
-
i0.ɵɵadvance(2);
|
|
184
|
-
i0.ɵɵproperty("ngIf", ctx_r4.getCheckboxesGroups().length > 1);
|
|
185
|
-
i0.ɵɵadvance(1);
|
|
186
|
-
i0.ɵɵproperty("ngForOf", ctx_r4.currentCheckboxesGroup.computedSelectors);
|
|
187
|
-
} }
|
|
188
|
-
function OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
190
|
-
i0.ɵɵtext(1);
|
|
191
|
-
i0.ɵɵelementEnd();
|
|
192
|
-
} if (rf & 2) {
|
|
193
|
-
const selectorGroup_r43 = ctx.$implicit;
|
|
194
|
-
i0.ɵɵproperty("value", selectorGroup_r43);
|
|
195
|
-
i0.ɵɵadvance(1);
|
|
196
|
-
i0.ɵɵtextInterpolate1("", selectorGroup_r43.title, " ");
|
|
197
|
-
} }
|
|
198
|
-
function OgcFilterSelectionComponent_div_1_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
const _r45 = i0.ɵɵgetCurrentView();
|
|
200
|
-
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 27);
|
|
201
|
-
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_3_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.currentRadioButtonsGroup = $event); });
|
|
202
|
-
i0.ɵɵpipe(3, "translate");
|
|
203
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
204
|
-
i0.ɵɵelementEnd()()();
|
|
205
|
-
} if (rf & 2) {
|
|
206
|
-
const ctx_r40 = i0.ɵɵnextContext(3);
|
|
207
|
-
i0.ɵɵadvance(2);
|
|
208
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r40.currentRadioButtonsGroup);
|
|
209
|
-
i0.ɵɵadvance(2);
|
|
210
|
-
i0.ɵɵproperty("ngForOf", ctx_r40.getRadioButtonsGroups());
|
|
211
|
-
} }
|
|
212
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
-
const _r51 = i0.ɵɵgetCurrentView();
|
|
214
|
-
i0.ɵɵelementStart(0, "mat-radio-button", 30);
|
|
215
|
-
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template_mat_radio_button_change_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r50.emptyRadioButtons()); });
|
|
216
|
-
i0.ɵɵpipe(1, "translate");
|
|
217
|
-
i0.ɵɵtext(2);
|
|
218
|
-
i0.ɵɵpipe(3, "translate");
|
|
219
|
-
i0.ɵɵelementEnd();
|
|
220
|
-
} if (rf & 2) {
|
|
221
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.filter.resetFilters"));
|
|
222
|
-
i0.ɵɵadvance(2);
|
|
223
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 4, "igo.geo.filter.resetFilters"), " ");
|
|
224
|
-
} }
|
|
225
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
226
|
-
const _r54 = i0.ɵɵgetCurrentView();
|
|
227
|
-
i0.ɵɵelementStart(0, "mat-radio-button", 21);
|
|
228
|
-
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template_mat_radio_button_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r54); const ogcRadioButton_r52 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.onSelectionChange(ogcRadioButton_r52, selector_r2.selectorType)); });
|
|
229
|
-
i0.ɵɵtext(1);
|
|
230
|
-
i0.ɵɵelementEnd();
|
|
231
|
-
} if (rf & 2) {
|
|
232
|
-
const ogcRadioButton_r52 = ctx.$implicit;
|
|
233
|
-
const ctx_r48 = i0.ɵɵnextContext(4);
|
|
234
|
-
i0.ɵɵproperty("matTooltip", ctx_r48.getToolTip(ogcRadioButton_r52))("checked", ogcRadioButton_r52.enabled)("value", ogcRadioButton_r52);
|
|
235
|
-
i0.ɵɵadvance(1);
|
|
236
|
-
i0.ɵɵtextInterpolate1("", ogcRadioButton_r52.title, " ");
|
|
237
|
-
} }
|
|
238
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
-
const _r59 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "u", 24);
|
|
241
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r58.displayLessResults("radio")); });
|
|
242
|
-
i0.ɵɵtext(1);
|
|
243
|
-
i0.ɵɵpipe(2, "translate");
|
|
244
|
-
i0.ɵɵelementEnd();
|
|
245
|
-
} if (rf & 2) {
|
|
246
|
-
i0.ɵɵadvance(1);
|
|
247
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
|
|
248
|
-
} }
|
|
249
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
-
const _r61 = i0.ɵɵgetCurrentView();
|
|
251
|
-
i0.ɵɵelementStart(0, "u", 25);
|
|
252
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r60.displayMoreResults("radio")); });
|
|
253
|
-
i0.ɵɵtext(1);
|
|
254
|
-
i0.ɵɵpipe(2, "translate");
|
|
255
|
-
i0.ɵɵelementEnd();
|
|
256
|
-
} if (rf & 2) {
|
|
257
|
-
i0.ɵɵadvance(1);
|
|
258
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
|
|
259
|
-
} }
|
|
260
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template(rf, ctx) { if (rf & 1) {
|
|
261
|
-
i0.ɵɵelementStart(0, "p");
|
|
262
|
-
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template, 3, 3, "u", 22);
|
|
263
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template, 3, 3, "u", 23);
|
|
264
|
-
i0.ɵɵelementEnd();
|
|
265
|
-
} if (rf & 2) {
|
|
266
|
-
const bundle_r46 = i0.ɵɵnextContext().$implicit;
|
|
267
|
-
const ctx_r49 = i0.ɵɵnextContext(3);
|
|
268
|
-
i0.ɵɵadvance(1);
|
|
269
|
-
i0.ɵɵproperty("ngIf", ctx_r49.isLessResults(bundle_r46, "radio"));
|
|
270
|
-
i0.ɵɵadvance(1);
|
|
271
|
-
i0.ɵɵproperty("ngIf", ctx_r49.isMoreResults(bundle_r46, "radio"));
|
|
272
|
-
} }
|
|
273
|
-
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
-
i0.ɵɵelementContainerStart(0);
|
|
275
|
-
i0.ɵɵelementStart(1, "h4");
|
|
276
|
-
i0.ɵɵtext(2);
|
|
277
|
-
i0.ɵɵelementEnd();
|
|
278
|
-
i0.ɵɵelementStart(3, "mat-radio-group", 28);
|
|
279
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template, 4, 6, "mat-radio-button", 29);
|
|
280
|
-
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template, 2, 4, "mat-radio-button", 20);
|
|
281
|
-
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template, 3, 2, "p", 2);
|
|
282
|
-
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵelementContainerEnd();
|
|
284
|
-
} if (rf & 2) {
|
|
285
|
-
const bundle_r46 = ctx.$implicit;
|
|
286
|
-
const ctx_r41 = i0.ɵɵnextContext(3);
|
|
287
|
-
i0.ɵɵadvance(2);
|
|
288
|
-
i0.ɵɵtextInterpolate(bundle_r46.title);
|
|
289
|
-
i0.ɵɵadvance(2);
|
|
290
|
-
i0.ɵɵproperty("ngIf", bundle_r46.unfiltered);
|
|
291
|
-
i0.ɵɵadvance(1);
|
|
292
|
-
i0.ɵɵproperty("ngForOf", bundle_r46.selectors);
|
|
293
|
-
i0.ɵɵadvance(1);
|
|
294
|
-
i0.ɵɵproperty("ngIf", ctx_r41.isLessResults(bundle_r46, "radio") || ctx_r41.isMoreResults(bundle_r46, "radio"));
|
|
295
|
-
} }
|
|
296
|
-
function OgcFilterSelectionComponent_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
297
|
-
i0.ɵɵelementStart(0, "div", 26);
|
|
298
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
299
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_div_2_Template, 5, 5, "div", 9);
|
|
300
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template, 7, 4, "ng-container", 1);
|
|
301
|
-
i0.ɵɵelementEnd();
|
|
302
|
-
} if (rf & 2) {
|
|
303
|
-
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
304
|
-
i0.ɵɵadvance(2);
|
|
305
|
-
i0.ɵɵproperty("ngIf", ctx_r5.getRadioButtonsGroups().length > 1);
|
|
306
|
-
i0.ɵɵadvance(1);
|
|
307
|
-
i0.ɵɵproperty("ngForOf", ctx_r5.currentRadioButtonsGroup.computedSelectors);
|
|
308
|
-
} }
|
|
309
|
-
function OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
311
|
-
i0.ɵɵtext(1);
|
|
312
|
-
i0.ɵɵelementEnd();
|
|
313
|
-
} if (rf & 2) {
|
|
314
|
-
const selectorGroup_r66 = ctx.$implicit;
|
|
315
|
-
i0.ɵɵproperty("value", selectorGroup_r66);
|
|
316
|
-
i0.ɵɵadvance(1);
|
|
317
|
-
i0.ɵɵtextInterpolate1("", selectorGroup_r66.title, " ");
|
|
318
|
-
} }
|
|
319
|
-
function OgcFilterSelectionComponent_div_1_div_4_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
320
|
-
const _r68 = i0.ɵɵgetCurrentView();
|
|
321
|
-
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 32);
|
|
322
|
-
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_4_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r67 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r67.currentSelectGroup = $event); });
|
|
323
|
-
i0.ɵɵpipe(3, "translate");
|
|
324
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
325
|
-
i0.ɵɵelementEnd()()();
|
|
326
|
-
} if (rf & 2) {
|
|
327
|
-
const ctx_r63 = i0.ɵɵnextContext(3);
|
|
328
|
-
i0.ɵɵadvance(2);
|
|
329
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r63.currentSelectGroup);
|
|
330
|
-
i0.ɵɵadvance(2);
|
|
331
|
-
i0.ɵɵproperty("ngForOf", ctx_r63.getSelectGroups());
|
|
332
|
-
} }
|
|
333
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
-
const _r75 = i0.ɵɵgetCurrentView();
|
|
335
|
-
i0.ɵɵelementStart(0, "mat-button", 36);
|
|
336
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r74.emptySelect()); });
|
|
337
|
-
i0.ɵɵpipe(1, "translate");
|
|
338
|
-
i0.ɵɵelement(2, "mat-icon", 37);
|
|
339
|
-
i0.ɵɵelementEnd();
|
|
340
|
-
} if (rf & 2) {
|
|
341
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
|
|
342
|
-
} }
|
|
343
|
-
const _c1 = function () { return { standalone: true }; };
|
|
344
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
|
|
345
|
-
const _r80 = i0.ɵɵgetCurrentView();
|
|
346
|
-
i0.ɵɵelementStart(0, "mat-checkbox", 42);
|
|
347
|
-
i0.ɵɵlistener("ngModelChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r79.selectAllSelected = $event); })("change", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r81.toggleAllSelection()); });
|
|
348
|
-
i0.ɵɵtext(1, "Tous ");
|
|
349
|
-
i0.ɵɵelementEnd();
|
|
350
|
-
} if (rf & 2) {
|
|
351
|
-
const ctx_r77 = i0.ɵɵnextContext(5);
|
|
352
|
-
i0.ɵɵproperty("ngModel", ctx_r77.selectAllSelected)("ngModelOptions", i0.ɵɵpureFunction0(2, _c1));
|
|
353
|
-
} }
|
|
354
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
355
|
-
const _r85 = i0.ɵɵgetCurrentView();
|
|
356
|
-
i0.ɵɵelementStart(0, "mat-option", 43);
|
|
357
|
-
i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r85); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r83 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r83.selectOptionClick($event.source.value, bundle_r69, $event)); });
|
|
358
|
-
i0.ɵɵtext(1);
|
|
359
|
-
i0.ɵɵelementEnd();
|
|
360
|
-
} if (rf & 2) {
|
|
361
|
-
const ogcSelect_r82 = ctx.$implicit;
|
|
362
|
-
const ctx_r78 = i0.ɵɵnextContext(5);
|
|
363
|
-
i0.ɵɵproperty("matTooltip", ctx_r78.getToolTip(ogcSelect_r82))("value", ogcSelect_r82);
|
|
364
|
-
i0.ɵɵadvance(1);
|
|
365
|
-
i0.ɵɵtextInterpolate1("", ogcSelect_r82.title, " ");
|
|
366
|
-
} }
|
|
367
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
-
i0.ɵɵelementStart(0, "div")(1, "mat-select", 38, 39)(3, "div", 19);
|
|
369
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template, 2, 3, "mat-checkbox", 40);
|
|
370
|
-
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template, 2, 3, "mat-option", 41);
|
|
372
|
-
i0.ɵɵelementEnd()();
|
|
373
|
-
} if (rf & 2) {
|
|
374
|
-
const bundle_r69 = i0.ɵɵnextContext().$implicit;
|
|
375
|
-
i0.ɵɵadvance(1);
|
|
376
|
-
i0.ɵɵproperty("multiple", bundle_r69.multiple)("placeholder", bundle_r69.title);
|
|
377
|
-
i0.ɵɵadvance(3);
|
|
378
|
-
i0.ɵɵproperty("ngIf", bundle_r69.multiple);
|
|
379
|
-
i0.ɵɵadvance(1);
|
|
380
|
-
i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
|
|
381
|
-
} }
|
|
382
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
383
|
-
const _r91 = i0.ɵɵgetCurrentView();
|
|
384
|
-
i0.ɵɵelementStart(0, "mat-option", 43);
|
|
385
|
-
i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r91); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r89 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r89.selectOptionClick($event.source.value, bundle_r69)); });
|
|
386
|
-
i0.ɵɵtext(1);
|
|
387
|
-
i0.ɵɵelementEnd();
|
|
388
|
-
} if (rf & 2) {
|
|
389
|
-
const ogcSelect_r88 = ctx.$implicit;
|
|
390
|
-
const ctx_r87 = i0.ɵɵnextContext(5);
|
|
391
|
-
i0.ɵɵproperty("matTooltip", ctx_r87.getToolTip(ogcSelect_r88))("value", ogcSelect_r88);
|
|
392
|
-
i0.ɵɵadvance(1);
|
|
393
|
-
i0.ɵɵtextInterpolate1("", ogcSelect_r88.title, " ");
|
|
394
|
-
} }
|
|
395
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
396
|
-
i0.ɵɵelementStart(0, "mat-select", 44);
|
|
397
|
-
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template, 2, 3, "mat-option", 41);
|
|
398
|
-
i0.ɵɵelementEnd();
|
|
399
|
-
} if (rf & 2) {
|
|
400
|
-
const bundle_r69 = i0.ɵɵnextContext().$implicit;
|
|
401
|
-
i0.ɵɵproperty("placeholder", bundle_r69.title);
|
|
402
|
-
i0.ɵɵadvance(1);
|
|
403
|
-
i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
|
|
404
|
-
} }
|
|
405
|
-
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
406
|
-
i0.ɵɵelementContainerStart(0);
|
|
407
|
-
i0.ɵɵelementStart(1, "h4");
|
|
408
|
-
i0.ɵɵtext(2);
|
|
409
|
-
i0.ɵɵelementEnd();
|
|
410
|
-
i0.ɵɵelementStart(3, "div", 10);
|
|
411
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
|
|
412
|
-
i0.ɵɵelementStart(5, "mat-form-field");
|
|
413
|
-
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template, 6, 4, "div", 34);
|
|
414
|
-
i0.ɵɵtemplate(7, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template, 2, 2, "ng-template", null, 35, i0.ɵɵtemplateRefExtractor);
|
|
415
|
-
i0.ɵɵelementEnd()();
|
|
416
|
-
i0.ɵɵelementContainerEnd();
|
|
417
|
-
} if (rf & 2) {
|
|
418
|
-
const bundle_r69 = ctx.$implicit;
|
|
419
|
-
const _r72 = i0.ɵɵreference(8);
|
|
420
|
-
i0.ɵɵadvance(2);
|
|
421
|
-
i0.ɵɵtextInterpolate(bundle_r69.title);
|
|
422
|
-
i0.ɵɵadvance(2);
|
|
423
|
-
i0.ɵɵproperty("ngIf", bundle_r69.unfiltered && !bundle_r69.multiple);
|
|
424
|
-
i0.ɵɵadvance(1);
|
|
425
|
-
i0.ɵɵstyleProp("width", bundle_r69.width ? bundle_r69.width : undefined, "%");
|
|
426
|
-
i0.ɵɵadvance(1);
|
|
427
|
-
i0.ɵɵproperty("ngIf", bundle_r69.multiple)("ngIfElse", _r72);
|
|
428
|
-
} }
|
|
429
|
-
function OgcFilterSelectionComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
-
i0.ɵɵelementStart(0, "div", 31);
|
|
431
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
432
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_4_div_2_Template, 5, 5, "div", 9);
|
|
433
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template, 9, 6, "ng-container", 1);
|
|
434
|
-
i0.ɵɵelementEnd();
|
|
435
|
-
} if (rf & 2) {
|
|
436
|
-
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
437
|
-
i0.ɵɵadvance(2);
|
|
438
|
-
i0.ɵɵproperty("ngIf", ctx_r6.getSelectGroups().length > 1);
|
|
439
|
-
i0.ɵɵadvance(1);
|
|
440
|
-
i0.ɵɵproperty("ngForOf", ctx_r6.currentSelectGroup.computedSelectors);
|
|
441
|
-
} }
|
|
442
|
-
function OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
443
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
444
|
-
i0.ɵɵtext(1);
|
|
445
|
-
i0.ɵɵelementEnd();
|
|
446
|
-
} if (rf & 2) {
|
|
447
|
-
const autocompleteGroup_r96 = ctx.$implicit;
|
|
448
|
-
i0.ɵɵproperty("value", autocompleteGroup_r96);
|
|
449
|
-
i0.ɵɵadvance(1);
|
|
450
|
-
i0.ɵɵtextInterpolate1("", autocompleteGroup_r96.title, " ");
|
|
451
|
-
} }
|
|
452
|
-
function OgcFilterSelectionComponent_div_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
453
|
-
const _r98 = i0.ɵɵgetCurrentView();
|
|
454
|
-
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 46);
|
|
455
|
-
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_5_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r97.currentAutocompleteGroup = $event); });
|
|
456
|
-
i0.ɵɵpipe(3, "translate");
|
|
457
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
458
|
-
i0.ɵɵelementEnd()()();
|
|
459
|
-
} if (rf & 2) {
|
|
460
|
-
const ctx_r93 = i0.ɵɵnextContext(3);
|
|
461
|
-
i0.ɵɵadvance(2);
|
|
462
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r93.currentAutocompleteGroup);
|
|
463
|
-
i0.ɵɵadvance(2);
|
|
464
|
-
i0.ɵɵproperty("ngForOf", ctx_r93.getAutocompleteGroups());
|
|
465
|
-
} }
|
|
466
|
-
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
467
|
-
const _r103 = i0.ɵɵgetCurrentView();
|
|
468
|
-
i0.ɵɵelementStart(0, "mat-button", 36);
|
|
469
|
-
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r103); const ctx_r102 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r102.emptyAutocomplete()); });
|
|
470
|
-
i0.ɵɵpipe(1, "translate");
|
|
471
|
-
i0.ɵɵelement(2, "mat-icon", 37);
|
|
472
|
-
i0.ɵɵelementEnd();
|
|
473
|
-
} if (rf & 2) {
|
|
474
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
|
|
475
|
-
} }
|
|
476
|
-
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
477
|
-
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
478
|
-
i0.ɵɵtext(1);
|
|
479
|
-
i0.ɵɵelementEnd();
|
|
480
|
-
} if (rf & 2) {
|
|
481
|
-
const ogcAutocomplete_r108 = ctx.$implicit;
|
|
482
|
-
i0.ɵɵproperty("value", ogcAutocomplete_r108);
|
|
483
|
-
i0.ɵɵadvance(1);
|
|
484
|
-
i0.ɵɵtextInterpolate1(" ", ogcAutocomplete_r108.value, " ");
|
|
485
|
-
} }
|
|
486
|
-
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template(rf, ctx) { if (rf & 1) {
|
|
487
|
-
const _r110 = i0.ɵɵgetCurrentView();
|
|
488
|
-
i0.ɵɵelementStart(0, "mat-form-field");
|
|
489
|
-
i0.ɵɵelement(1, "input", 48, 49);
|
|
490
|
-
i0.ɵɵelementStart(3, "mat-autocomplete", 50, 51);
|
|
491
|
-
i0.ɵɵlistener("optionSelected", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template_mat_autocomplete_optionSelected_3_listener($event) { i0.ɵɵrestoreView(_r110); const ctx_r109 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r109.autocompleteOptionClick($event.option.value)); });
|
|
492
|
-
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template, 2, 2, "mat-option", 12);
|
|
493
|
-
i0.ɵɵpipe(7, "async");
|
|
494
|
-
i0.ɵɵelementEnd()();
|
|
495
|
-
} if (rf & 2) {
|
|
496
|
-
const _r105 = i0.ɵɵreference(4);
|
|
497
|
-
const bundle_r99 = i0.ɵɵnextContext().$implicit;
|
|
498
|
-
const ctx_r101 = i0.ɵɵnextContext(3);
|
|
499
|
-
i0.ɵɵstyleProp("width", bundle_r99.width ? bundle_r99.width : undefined, "%");
|
|
500
|
-
i0.ɵɵadvance(1);
|
|
501
|
-
i0.ɵɵproperty("matAutocomplete", _r105)("placeholder", bundle_r99.title);
|
|
502
|
-
i0.ɵɵadvance(2);
|
|
503
|
-
i0.ɵɵproperty("displayWith", ctx_r101.displayFn);
|
|
504
|
-
i0.ɵɵadvance(3);
|
|
505
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 6, ctx_r101.filteredOgcAutocomplete[bundle_r99.id]));
|
|
506
|
-
} }
|
|
507
|
-
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
508
|
-
i0.ɵɵelementContainerStart(0);
|
|
509
|
-
i0.ɵɵelementStart(1, "h4");
|
|
510
|
-
i0.ɵɵtext(2);
|
|
511
|
-
i0.ɵɵelementEnd();
|
|
512
|
-
i0.ɵɵelementStart(3, "div", 10);
|
|
513
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
|
|
514
|
-
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template, 8, 8, "mat-form-field", 47);
|
|
515
|
-
i0.ɵɵelementEnd();
|
|
516
|
-
i0.ɵɵelementContainerEnd();
|
|
517
|
-
} if (rf & 2) {
|
|
518
|
-
const bundle_r99 = ctx.$implicit;
|
|
519
|
-
const ctx_r94 = i0.ɵɵnextContext(3);
|
|
520
|
-
i0.ɵɵadvance(2);
|
|
521
|
-
i0.ɵɵtextInterpolate(bundle_r99.title);
|
|
522
|
-
i0.ɵɵadvance(2);
|
|
523
|
-
i0.ɵɵproperty("ngIf", bundle_r99.unfiltered);
|
|
524
|
-
i0.ɵɵadvance(1);
|
|
525
|
-
i0.ɵɵproperty("ngIf", ctx_r94.filteredOgcAutocomplete[bundle_r99.id]);
|
|
526
|
-
} }
|
|
527
|
-
function OgcFilterSelectionComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
528
|
-
i0.ɵɵelementStart(0, "div", 45);
|
|
529
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
530
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_5_div_2_Template, 5, 5, "div", 9);
|
|
531
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template, 6, 3, "ng-container", 1);
|
|
532
|
-
i0.ɵɵelementEnd();
|
|
533
|
-
} if (rf & 2) {
|
|
534
|
-
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
535
|
-
i0.ɵɵadvance(2);
|
|
536
|
-
i0.ɵɵproperty("ngIf", ctx_r7.getAutocompleteGroups().length > 1);
|
|
537
|
-
i0.ɵɵadvance(1);
|
|
538
|
-
i0.ɵɵproperty("ngForOf", ctx_r7.currentAutocompleteGroup.computedSelectors);
|
|
539
|
-
} }
|
|
540
|
-
function OgcFilterSelectionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelementStart(0, "div");
|
|
542
|
-
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_1_Template, 4, 2, "div", 3);
|
|
543
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_Template, 4, 2, "div", 4);
|
|
544
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_Template, 4, 2, "div", 5);
|
|
545
|
-
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_Template, 4, 2, "div", 6);
|
|
546
|
-
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_Template, 4, 2, "div", 7);
|
|
547
|
-
i0.ɵɵelementEnd();
|
|
548
|
-
} if (rf & 2) {
|
|
549
|
-
const selector_r2 = ctx.$implicit;
|
|
550
|
-
i0.ɵɵadvance(1);
|
|
551
|
-
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "pushButton");
|
|
552
|
-
i0.ɵɵadvance(1);
|
|
553
|
-
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "checkbox");
|
|
554
|
-
i0.ɵɵadvance(1);
|
|
555
|
-
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "radioButton");
|
|
556
|
-
i0.ɵɵadvance(1);
|
|
557
|
-
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "select");
|
|
558
|
-
i0.ɵɵadvance(1);
|
|
559
|
-
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "autocomplete");
|
|
560
|
-
} }
|
|
561
|
-
function OgcFilterSelectionComponent_div_2_h4_2_Template(rf, ctx) { if (rf & 1) {
|
|
562
|
-
i0.ɵɵelementStart(0, "h4");
|
|
563
|
-
i0.ɵɵtext(1);
|
|
564
|
-
i0.ɵɵpipe(2, "translate");
|
|
565
|
-
i0.ɵɵelementEnd();
|
|
566
|
-
} if (rf & 2) {
|
|
567
|
-
i0.ɵɵadvance(1);
|
|
568
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.reportingDate"));
|
|
569
|
-
} }
|
|
570
|
-
function OgcFilterSelectionComponent_div_2_h4_3_Template(rf, ctx) { if (rf & 1) {
|
|
571
|
-
i0.ɵɵelementStart(0, "h4");
|
|
572
|
-
i0.ɵɵtext(1);
|
|
573
|
-
i0.ɵɵelementEnd();
|
|
574
|
-
} if (rf & 2) {
|
|
575
|
-
const ctx_r113 = i0.ɵɵnextContext(2);
|
|
576
|
-
i0.ɵɵadvance(1);
|
|
577
|
-
i0.ɵɵtextInterpolate(ctx_r113.currentFilter.title);
|
|
578
|
-
} }
|
|
579
|
-
function OgcFilterSelectionComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
580
|
-
const _r115 = i0.ɵɵgetCurrentView();
|
|
581
|
-
i0.ɵɵelementStart(0, "div");
|
|
582
|
-
i0.ɵɵelement(1, "mat-divider");
|
|
583
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_h4_2_Template, 3, 3, "h4", 2);
|
|
584
|
-
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_2_h4_3_Template, 2, 1, "h4", 2);
|
|
585
|
-
i0.ɵɵelementStart(4, "igo-ogc-filter-time", 52);
|
|
586
|
-
i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r114 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r114.datasource = $event); })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r116 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r116.currentFilter = $event); })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r117 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r117.changeProperty($event.value, $event.pos)); });
|
|
587
|
-
i0.ɵɵelementEnd()();
|
|
588
|
-
} if (rf & 2) {
|
|
589
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
590
|
-
i0.ɵɵadvance(2);
|
|
591
|
-
i0.ɵɵproperty("ngIf", !ctx_r1.currentFilter.title);
|
|
592
|
-
i0.ɵɵadvance(1);
|
|
593
|
-
i0.ɵɵproperty("ngIf", ctx_r1.currentFilter.title);
|
|
594
|
-
i0.ɵɵadvance(1);
|
|
595
|
-
i0.ɵɵproperty("datasource", ctx_r1.datasource)("currentFilter", ctx_r1.currentFilter);
|
|
596
|
-
} }
|
|
597
|
-
export class OgcFilterSelectionComponent {
|
|
598
|
-
constructor(ogcFilterService, formBuilder, domService, configService, cdRef) {
|
|
599
|
-
this.ogcFilterService = ogcFilterService;
|
|
600
|
-
this.formBuilder = formBuilder;
|
|
601
|
-
this.domService = domService;
|
|
602
|
-
this.configService = configService;
|
|
603
|
-
this.cdRef = cdRef;
|
|
604
|
-
this.checkboxesIndex = 5;
|
|
605
|
-
this.radioButtonsIndex = 5;
|
|
606
|
-
this.baseIndex = 5;
|
|
607
|
-
this.ogcFilterOperator = OgcFilterOperator;
|
|
608
|
-
this.color = 'primary';
|
|
609
|
-
this.selectAllSelected = false;
|
|
610
|
-
this.selectEnabled$ = new BehaviorSubject(undefined);
|
|
611
|
-
this.selectEnableds$ = new BehaviorSubject([]);
|
|
612
|
-
this.autocompleteEnabled$ = new BehaviorSubject(undefined);
|
|
613
|
-
this.filteredOgcAutocomplete = {};
|
|
614
|
-
this.ogcFilterWriter = new OgcFilterWriter();
|
|
615
|
-
this.buildForm();
|
|
616
|
-
}
|
|
617
|
-
get currentFilter() {
|
|
618
|
-
return this._currentFilter;
|
|
619
|
-
}
|
|
620
|
-
set currentFilter(value) {
|
|
621
|
-
this._currentFilter = value;
|
|
622
|
-
if (this._currentFilter?.sliderOptions) {
|
|
623
|
-
this._currentFilter.sliderOptions.enabled = false; // remove slider toggle (animation temporelle)
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
get ogcFiltersSelectors() {
|
|
627
|
-
const ogcSelector = [];
|
|
628
|
-
if (this.datasource?.options?.ogcFilters?.pushButtons) {
|
|
629
|
-
ogcSelector.push(this.datasource?.options?.ogcFilters?.pushButtons);
|
|
630
|
-
}
|
|
631
|
-
if (this.datasource?.options?.ogcFilters?.checkboxes) {
|
|
632
|
-
ogcSelector.push(this.datasource?.options?.ogcFilters?.checkboxes);
|
|
633
|
-
}
|
|
634
|
-
if (this.datasource?.options?.ogcFilters?.radioButtons) {
|
|
635
|
-
ogcSelector.push(this.datasource?.options?.ogcFilters?.radioButtons);
|
|
636
|
-
}
|
|
637
|
-
if (this.datasource?.options?.ogcFilters?.select) {
|
|
638
|
-
ogcSelector.push(this.datasource?.options?.ogcFilters?.select);
|
|
639
|
-
}
|
|
640
|
-
if (this.datasource?.options?.ogcFilters?.autocomplete) {
|
|
641
|
-
ogcSelector.push(this.datasource?.options?.ogcFilters?.autocomplete);
|
|
642
|
-
}
|
|
643
|
-
ogcSelector.sort((a, b) => {
|
|
644
|
-
if (a.order < b.order) {
|
|
645
|
-
return -1;
|
|
646
|
-
}
|
|
647
|
-
if (a.order > b.order) {
|
|
648
|
-
return 1;
|
|
649
|
-
}
|
|
650
|
-
return 0;
|
|
651
|
-
});
|
|
652
|
-
return ogcSelector;
|
|
653
|
-
}
|
|
654
|
-
get currentPushButtonsGroup() {
|
|
655
|
-
return this.form.get('pushButtonsGroup').value;
|
|
656
|
-
}
|
|
657
|
-
set currentPushButtonsGroup(value) {
|
|
658
|
-
this.form.patchValue({ pushButtonsGroup: value });
|
|
659
|
-
}
|
|
660
|
-
get currentCheckboxesGroup() {
|
|
661
|
-
return this.form.get('checkboxesGroup').value;
|
|
662
|
-
}
|
|
663
|
-
set currentCheckboxesGroup(value) {
|
|
664
|
-
this.form.patchValue({ checkboxesGroup: value });
|
|
665
|
-
}
|
|
666
|
-
get currentRadioButtonsGroup() {
|
|
667
|
-
return this.form.get('radioButtonsGroup').value;
|
|
668
|
-
}
|
|
669
|
-
set currentRadioButtonsGroup(value) {
|
|
670
|
-
this.form.patchValue({ radioButtonsGroup: value });
|
|
671
|
-
}
|
|
672
|
-
get currentSelectGroup() {
|
|
673
|
-
return this.form.get('selectGroup').value;
|
|
674
|
-
}
|
|
675
|
-
set currentSelectGroup(value) {
|
|
676
|
-
this.form.patchValue({ selectGroup: value });
|
|
677
|
-
this.cdRef.detectChanges();
|
|
678
|
-
}
|
|
679
|
-
get currentAutocompleteGroup() {
|
|
680
|
-
return this.form.get('autocompleteGroup').value;
|
|
681
|
-
}
|
|
682
|
-
set currentAutocompleteGroup(value) {
|
|
683
|
-
this.form.patchValue({ autocompleteGroup: value });
|
|
684
|
-
this.cdRef.detectChanges();
|
|
685
|
-
}
|
|
686
|
-
get selectEnabled() {
|
|
687
|
-
return this.selectEnabled$.value;
|
|
688
|
-
}
|
|
689
|
-
set selectEnabled(value) {
|
|
690
|
-
this.selectEnabled$.next(value);
|
|
691
|
-
clearTimeout(this.applyFiltersTimeout);
|
|
692
|
-
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
693
|
-
compSelect.selectors?.forEach(selector => {
|
|
694
|
-
value === selector ? selector.enabled = true : selector.enabled = false;
|
|
695
|
-
});
|
|
696
|
-
});
|
|
697
|
-
this.applyFiltersTimeout = setTimeout(() => {
|
|
698
|
-
this.applyFilters();
|
|
699
|
-
}, 750);
|
|
700
|
-
}
|
|
701
|
-
get selectEnableds() {
|
|
702
|
-
return this.selectEnableds$.value;
|
|
703
|
-
}
|
|
704
|
-
set selectEnableds(value) {
|
|
705
|
-
this.selectEnableds$.next(value);
|
|
706
|
-
clearTimeout(this.applyFiltersTimeout);
|
|
707
|
-
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
708
|
-
compSelect.selectors?.forEach(selector => {
|
|
709
|
-
value.includes(selector) ? selector.enabled = true : selector.enabled = false;
|
|
710
|
-
});
|
|
711
|
-
});
|
|
712
|
-
this.applyFiltersTimeout = setTimeout(() => {
|
|
713
|
-
this.applyFilters();
|
|
714
|
-
}, 750);
|
|
715
|
-
}
|
|
716
|
-
get autocompleteEnabled() {
|
|
717
|
-
return this.autocompleteEnabled$.value;
|
|
718
|
-
}
|
|
719
|
-
set autocompleteEnabled(value) {
|
|
720
|
-
this.autocompleteEnabled$.next(value);
|
|
721
|
-
clearTimeout(this.applyFiltersTimeout);
|
|
722
|
-
this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
|
|
723
|
-
compSelect.selectors?.forEach(selector => {
|
|
724
|
-
value === selector.title ? selector.enabled = true : selector.enabled = false;
|
|
725
|
-
});
|
|
726
|
-
});
|
|
727
|
-
this.applyFiltersTimeout = setTimeout(() => {
|
|
728
|
-
this.applyFilters();
|
|
729
|
-
}, 750);
|
|
730
|
-
}
|
|
731
|
-
buildForm() {
|
|
732
|
-
this.form = this.formBuilder.group({
|
|
733
|
-
pushButtons: ['', [Validators.required]],
|
|
734
|
-
radioButtons: ['', [Validators.required]],
|
|
735
|
-
pushButtonsGroup: ['', [Validators.required]],
|
|
736
|
-
checkboxesGroup: ['', [Validators.required]],
|
|
737
|
-
radioButtonsGroup: ['', [Validators.required]],
|
|
738
|
-
selectGroup: ['', [Validators.required]],
|
|
739
|
-
select: ['', [Validators.required]],
|
|
740
|
-
selectMulti: ['', [Validators.required]],
|
|
741
|
-
autocompleteGroup: ['', [Validators.required]],
|
|
742
|
-
autocomplete: ['', [Validators.required]]
|
|
743
|
-
});
|
|
744
|
-
}
|
|
745
|
-
getPushButtonsGroups() {
|
|
746
|
-
if (this.datasource?.options?.ogcFilters?.pushButtons) {
|
|
747
|
-
return this.datasource.options.ogcFilters.pushButtons.groups;
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
getCheckboxesGroups() {
|
|
751
|
-
if (this.datasource?.options?.ogcFilters?.checkboxes) {
|
|
752
|
-
return this.datasource.options.ogcFilters.checkboxes.groups;
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
getRadioButtonsGroups() {
|
|
756
|
-
if (this.datasource?.options?.ogcFilters?.radioButtons) {
|
|
757
|
-
return this.datasource.options.ogcFilters.radioButtons.groups;
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
getSelectGroups() {
|
|
761
|
-
if (this.datasource?.options?.ogcFilters?.select) {
|
|
762
|
-
return this.datasource.options.ogcFilters.select.groups;
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
getAutocompleteGroups() {
|
|
766
|
-
if (this.datasource?.options?.ogcFilters?.autocomplete) {
|
|
767
|
-
return this.datasource.options.ogcFilters.autocomplete.groups;
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
async ngOnInit() {
|
|
771
|
-
if (this.datasource.options.ogcFilters) {
|
|
772
|
-
if (this.datasource.options.ogcFilters.pushButtons) {
|
|
773
|
-
this.currentPushButtonsGroup =
|
|
774
|
-
this.datasource.options.ogcFilters.pushButtons.groups.find(group => group.enabled) ||
|
|
775
|
-
this.datasource.options.ogcFilters.pushButtons.groups[0];
|
|
776
|
-
}
|
|
777
|
-
if (this.datasource.options.ogcFilters.checkboxes) {
|
|
778
|
-
this.currentCheckboxesGroup =
|
|
779
|
-
this.datasource.options.ogcFilters.checkboxes.groups.find(group => group.enabled) ||
|
|
780
|
-
this.datasource.options.ogcFilters.checkboxes.groups[0];
|
|
781
|
-
}
|
|
782
|
-
if (this.datasource.options.ogcFilters.radioButtons) {
|
|
783
|
-
this.currentRadioButtonsGroup =
|
|
784
|
-
this.datasource.options.ogcFilters.radioButtons.groups.find(group => group.enabled) ||
|
|
785
|
-
this.datasource.options.ogcFilters.radioButtons.groups[0];
|
|
786
|
-
}
|
|
787
|
-
if (this.datasource.options.ogcFilters.select) {
|
|
788
|
-
this.currentSelectGroup =
|
|
789
|
-
this.datasource.options.ogcFilters.select.groups.find(group => group.enabled) ||
|
|
790
|
-
this.datasource.options.ogcFilters.select.groups[0];
|
|
791
|
-
this.getSelectEnabled();
|
|
792
|
-
await this.getSelectDomValues();
|
|
793
|
-
}
|
|
794
|
-
if (this.datasource.options.ogcFilters.autocomplete) {
|
|
795
|
-
this.currentAutocompleteGroup =
|
|
796
|
-
this.datasource.options.ogcFilters.autocomplete.groups.find(group => group.enabled) ||
|
|
797
|
-
this.datasource.options.ogcFilters.autocomplete.groups[0];
|
|
798
|
-
this.getAutocompleteEnabled();
|
|
799
|
-
await this.getAutocompleteDomValues();
|
|
800
|
-
}
|
|
801
|
-
this.applyFilters();
|
|
802
|
-
}
|
|
803
|
-
this.form
|
|
804
|
-
.get('pushButtonsGroup')
|
|
805
|
-
.valueChanges
|
|
806
|
-
.pipe(debounceTime(750))
|
|
807
|
-
.subscribe(() => {
|
|
808
|
-
this.onPushButtonsChangeGroup();
|
|
809
|
-
this.applyFilters();
|
|
810
|
-
});
|
|
811
|
-
this.form
|
|
812
|
-
.get('checkboxesGroup')
|
|
813
|
-
.valueChanges
|
|
814
|
-
.pipe(debounceTime(750))
|
|
815
|
-
.subscribe(() => {
|
|
816
|
-
this.onCheckboxesChangeGroup();
|
|
817
|
-
this.applyFilters();
|
|
818
|
-
});
|
|
819
|
-
this.form
|
|
820
|
-
.get('radioButtonsGroup')
|
|
821
|
-
.valueChanges
|
|
822
|
-
.pipe(debounceTime(750))
|
|
823
|
-
.subscribe(() => {
|
|
824
|
-
this.onRadioButtonsChangeGroup();
|
|
825
|
-
this.applyFilters();
|
|
826
|
-
});
|
|
827
|
-
this.form
|
|
828
|
-
.get('selectGroup')
|
|
829
|
-
.valueChanges
|
|
830
|
-
.pipe(debounceTime(750))
|
|
831
|
-
.subscribe(() => {
|
|
832
|
-
this.onSelectChangeGroup();
|
|
833
|
-
this.applyFilters();
|
|
834
|
-
});
|
|
835
|
-
this.form
|
|
836
|
-
.get('autocompleteGroup')
|
|
837
|
-
.valueChanges
|
|
838
|
-
.pipe(debounceTime(750))
|
|
839
|
-
.subscribe(() => {
|
|
840
|
-
this.onAutocompleteChangeGroup();
|
|
841
|
-
this.applyFilters();
|
|
842
|
-
});
|
|
843
|
-
this.form
|
|
844
|
-
.get('pushButtons')
|
|
845
|
-
.valueChanges
|
|
846
|
-
.pipe(debounceTime(750))
|
|
847
|
-
.subscribe(() => {
|
|
848
|
-
this.applyFilters();
|
|
849
|
-
});
|
|
850
|
-
this.form
|
|
851
|
-
.get('radioButtons')
|
|
852
|
-
.valueChanges
|
|
853
|
-
.pipe(debounceTime(750))
|
|
854
|
-
.subscribe(() => {
|
|
855
|
-
this.applyFilters();
|
|
856
|
-
});
|
|
857
|
-
}
|
|
858
|
-
getSelectEnabled() {
|
|
859
|
-
const enableds = [];
|
|
860
|
-
let enabled;
|
|
861
|
-
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
862
|
-
if (compSelect.multiple) {
|
|
863
|
-
compSelect.selectors?.forEach(selector => {
|
|
864
|
-
if (selector.enabled) {
|
|
865
|
-
enableds.push(selector);
|
|
866
|
-
}
|
|
867
|
-
});
|
|
868
|
-
this.selectEnableds = enableds;
|
|
869
|
-
this.form.controls['selectMulti'].setValue(enableds);
|
|
870
|
-
}
|
|
871
|
-
else {
|
|
872
|
-
compSelect.selectors?.forEach(selector => {
|
|
873
|
-
if (selector.enabled) {
|
|
874
|
-
enabled = selector;
|
|
875
|
-
}
|
|
876
|
-
});
|
|
877
|
-
this.form.controls['select'].reset(enabled);
|
|
878
|
-
this.selectEnabled$.subscribe((value) => {
|
|
879
|
-
if (this.form.controls['select'].value !== value) {
|
|
880
|
-
this.form.controls['select'].setValue(value);
|
|
881
|
-
}
|
|
882
|
-
});
|
|
883
|
-
this.selectEnabled = enabled;
|
|
884
|
-
}
|
|
885
|
-
});
|
|
886
|
-
}
|
|
887
|
-
getAutocompleteEnabled() {
|
|
888
|
-
let enabled;
|
|
889
|
-
this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
|
|
890
|
-
compSelect.selectors?.forEach(selector => {
|
|
891
|
-
if (selector.enabled) {
|
|
892
|
-
const dom = {
|
|
893
|
-
id: selector.filters.expression,
|
|
894
|
-
value: selector.title
|
|
895
|
-
};
|
|
896
|
-
enabled = selector.title;
|
|
897
|
-
this.form.controls['autocomplete'].setValue(dom);
|
|
898
|
-
}
|
|
899
|
-
});
|
|
900
|
-
this.autocompleteEnabled = enabled;
|
|
901
|
-
});
|
|
902
|
-
}
|
|
903
|
-
getToolTip(selector) {
|
|
904
|
-
let toolTip;
|
|
905
|
-
if (selector.tooltip) {
|
|
906
|
-
if (Array.isArray(selector.tooltip)) {
|
|
907
|
-
toolTip = selector.tooltip.join('\n');
|
|
908
|
-
}
|
|
909
|
-
else {
|
|
910
|
-
toolTip = selector.tooltip;
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
return toolTip || '';
|
|
914
|
-
}
|
|
915
|
-
async getSelectDomValues() {
|
|
916
|
-
for (const bundle of this.datasource.options.ogcFilters.select.bundles) {
|
|
917
|
-
if (bundle.domSelectors) {
|
|
918
|
-
let domValues;
|
|
919
|
-
for (const domSelector of bundle.domSelectors) {
|
|
920
|
-
let filterDOM;
|
|
921
|
-
for (const domOptions of this.configService.getConfig('dom')) {
|
|
922
|
-
if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
|
|
923
|
-
filterDOM = {
|
|
924
|
-
id: domOptions.id,
|
|
925
|
-
url: domOptions.url,
|
|
926
|
-
name: domOptions.name,
|
|
927
|
-
values: domOptions.values
|
|
928
|
-
};
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
|
-
filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
|
|
932
|
-
domValues = filterDOM.values;
|
|
933
|
-
if (domValues) {
|
|
934
|
-
let newBundle = bundle;
|
|
935
|
-
newBundle.selectors = [];
|
|
936
|
-
let selector;
|
|
937
|
-
for (const value of domValues) {
|
|
938
|
-
if (bundle.multiple) {
|
|
939
|
-
let enabled;
|
|
940
|
-
this.selectEnableds?.find(sel => sel.title === value.value) ? enabled = true : enabled = false;
|
|
941
|
-
selector = {
|
|
942
|
-
title: value.value,
|
|
943
|
-
enabled,
|
|
944
|
-
filters: {
|
|
945
|
-
operator: domSelector.operator,
|
|
946
|
-
propertyName: domSelector.propertyName,
|
|
947
|
-
expression: value.id,
|
|
948
|
-
}
|
|
949
|
-
};
|
|
950
|
-
}
|
|
951
|
-
else {
|
|
952
|
-
selector = {
|
|
953
|
-
title: value.value,
|
|
954
|
-
enabled: this.selectEnabled?.title === value.value ?
|
|
955
|
-
true : false,
|
|
956
|
-
filters: {
|
|
957
|
-
operator: domSelector.operator,
|
|
958
|
-
propertyName: domSelector.propertyName,
|
|
959
|
-
expression: value.id,
|
|
960
|
-
}
|
|
961
|
-
};
|
|
962
|
-
}
|
|
963
|
-
newBundle.selectors.push(selector);
|
|
964
|
-
}
|
|
965
|
-
this.getSelectGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
|
|
966
|
-
.find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
|
|
967
|
-
}
|
|
968
|
-
}
|
|
969
|
-
this.getSelectEnabled();
|
|
970
|
-
}
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
async getAutocompleteDomValues() {
|
|
974
|
-
for (const bundle of this.datasource.options.ogcFilters.autocomplete.bundles) {
|
|
975
|
-
if (bundle.domSelectors) {
|
|
976
|
-
let domValues;
|
|
977
|
-
for (const domSelector of bundle.domSelectors) {
|
|
978
|
-
let filterDOM;
|
|
979
|
-
for (const domOptions of this.configService.getConfig('dom')) {
|
|
980
|
-
if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
|
|
981
|
-
filterDOM = {
|
|
982
|
-
id: domOptions.id,
|
|
983
|
-
url: domOptions.url,
|
|
984
|
-
name: domOptions.name,
|
|
985
|
-
values: domOptions.values
|
|
986
|
-
};
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
|
-
filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
|
|
990
|
-
domValues = filterDOM.values;
|
|
991
|
-
if (domValues) {
|
|
992
|
-
let newBundle = bundle;
|
|
993
|
-
newBundle.selectors = [];
|
|
994
|
-
let selector;
|
|
995
|
-
for (const value of domValues) {
|
|
996
|
-
selector = {
|
|
997
|
-
title: value.value,
|
|
998
|
-
enabled: this.autocompleteEnabled && this.autocompleteEnabled === value.value ?
|
|
999
|
-
true : false,
|
|
1000
|
-
filters: {
|
|
1001
|
-
operator: domSelector.operator,
|
|
1002
|
-
propertyName: domSelector.propertyName,
|
|
1003
|
-
expression: value.id,
|
|
1004
|
-
}
|
|
1005
|
-
};
|
|
1006
|
-
newBundle.selectors.push(selector);
|
|
1007
|
-
}
|
|
1008
|
-
this.getAutocompleteGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
|
|
1009
|
-
.find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1012
|
-
this.filteredOgcAutocomplete[bundle.id] = new Observable();
|
|
1013
|
-
this.cdRef.detectChanges();
|
|
1014
|
-
this.filteredOgcAutocomplete[bundle.id] = this.form.controls['autocomplete'].valueChanges.pipe(map(value => {
|
|
1015
|
-
if (value.length) {
|
|
1016
|
-
return domValues?.filter((option) => {
|
|
1017
|
-
const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
|
|
1018
|
-
const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
1019
|
-
return featureNameNormalized.includes(filterNormalized);
|
|
1020
|
-
});
|
|
1021
|
-
}
|
|
1022
|
-
}));
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
// getButtonStyle(pb: OgcPushButton): {} {
|
|
1027
|
-
// let styles;
|
|
1028
|
-
// if (pb.color) {
|
|
1029
|
-
// styles = {
|
|
1030
|
-
// 'background-color': pb.enabled ? `rgba(${pb.color})` : `rgba(255,255,255,0)`
|
|
1031
|
-
// };
|
|
1032
|
-
// } else {
|
|
1033
|
-
// styles = {
|
|
1034
|
-
// 'background-color': pb.enabled ? 'accent': `rgba(255,255,255,0)`,
|
|
1035
|
-
// 'color': pb.enabled ? `rgba(0,0,0,0.9)` : `rgba(33,33,33,0.38)`
|
|
1036
|
-
// }
|
|
1037
|
-
// }
|
|
1038
|
-
// return styles;
|
|
1039
|
-
// }
|
|
1040
|
-
getButtonColor(pushButton) {
|
|
1041
|
-
let styles;
|
|
1042
|
-
if (pushButton.color && pushButton.enabled) {
|
|
1043
|
-
styles = {
|
|
1044
|
-
'background-color': `rgba(${pushButton.color})`
|
|
1045
|
-
};
|
|
1046
|
-
}
|
|
1047
|
-
return styles;
|
|
1048
|
-
}
|
|
1049
|
-
bundleIsVertical(bundle) {
|
|
1050
|
-
return bundle.vertical ? bundle.vertical : false;
|
|
1051
|
-
}
|
|
1052
|
-
onPushButtonsChangeGroup() {
|
|
1053
|
-
this.getPushButtonsGroups().map(group => group.enabled = false);
|
|
1054
|
-
this.getPushButtonsGroups().find(group => group === this.currentPushButtonsGroup).enabled = true;
|
|
1055
|
-
}
|
|
1056
|
-
onCheckboxesChangeGroup() {
|
|
1057
|
-
this.getCheckboxesGroups().map(group => group.enabled = false);
|
|
1058
|
-
this.getCheckboxesGroups().find(group => group === this.currentCheckboxesGroup).enabled = true;
|
|
1059
|
-
}
|
|
1060
|
-
onRadioButtonsChangeGroup() {
|
|
1061
|
-
this.getRadioButtonsGroups().map(group => group.enabled = false);
|
|
1062
|
-
this.getRadioButtonsGroups().find(group => group === this.currentRadioButtonsGroup).enabled = true;
|
|
1063
|
-
}
|
|
1064
|
-
onSelectChangeGroup() {
|
|
1065
|
-
this.getSelectGroups().map(group => group.enabled = false);
|
|
1066
|
-
this.getSelectGroups().find(group => group === this.currentSelectGroup).enabled = true;
|
|
1067
|
-
}
|
|
1068
|
-
onAutocompleteChangeGroup() {
|
|
1069
|
-
this.getAutocompleteGroups().map(group => group.enabled = false);
|
|
1070
|
-
this.getAutocompleteGroups().find(group => group === this.currentAutocompleteGroup).enabled = true;
|
|
1071
|
-
}
|
|
1072
|
-
onSelectionChange(currentOgcSelection, selectorType) {
|
|
1073
|
-
clearTimeout(this.applyFiltersTimeout);
|
|
1074
|
-
if (selectorType === 'radioButton') {
|
|
1075
|
-
this.emptyRadioButtons();
|
|
1076
|
-
}
|
|
1077
|
-
if (currentOgcSelection) {
|
|
1078
|
-
currentOgcSelection.enabled = !currentOgcSelection.enabled;
|
|
1079
|
-
}
|
|
1080
|
-
this.applyFiltersTimeout = setTimeout(() => {
|
|
1081
|
-
this.applyFilters();
|
|
1082
|
-
}, 750);
|
|
1083
|
-
}
|
|
1084
|
-
emptyRadioButtons() {
|
|
1085
|
-
this.currentRadioButtonsGroup.computedSelectors.forEach(compSelect => {
|
|
1086
|
-
compSelect.selectors.map(selector => selector.enabled = false);
|
|
1087
|
-
this.applyFiltersTimeout = setTimeout(() => {
|
|
1088
|
-
this.applyFilters();
|
|
1089
|
-
}, 750);
|
|
1090
|
-
});
|
|
1091
|
-
}
|
|
1092
|
-
emptySelect() {
|
|
1093
|
-
this.selectEnabled = undefined;
|
|
1094
|
-
}
|
|
1095
|
-
emptyAutocomplete() {
|
|
1096
|
-
this.autocompleteEnabled = undefined;
|
|
1097
|
-
this.form.controls['autocomplete'].setValue('');
|
|
1098
|
-
this.form.controls['autocomplete'].markAsUntouched();
|
|
1099
|
-
}
|
|
1100
|
-
toggleAllSelection() {
|
|
1101
|
-
if (this.selectAllSelected) {
|
|
1102
|
-
const enableds = [];
|
|
1103
|
-
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
1104
|
-
compSelect.selectors?.forEach(selector => {
|
|
1105
|
-
enableds.push(selector);
|
|
1106
|
-
});
|
|
1107
|
-
});
|
|
1108
|
-
this.sel.options.forEach((item) => item.select());
|
|
1109
|
-
this.selectEnableds = enableds;
|
|
1110
|
-
}
|
|
1111
|
-
else {
|
|
1112
|
-
this.sel.options.forEach((item) => item.deselect());
|
|
1113
|
-
this.selectEnableds = [];
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
selectOptionClick(value, bundle, event) {
|
|
1117
|
-
if (bundle.multiple) {
|
|
1118
|
-
const enableds = this.selectEnableds;
|
|
1119
|
-
let newStatus = true;
|
|
1120
|
-
this.sel.options.forEach((item) => {
|
|
1121
|
-
if (!item.selected) {
|
|
1122
|
-
newStatus = false;
|
|
1123
|
-
}
|
|
1124
|
-
});
|
|
1125
|
-
this.selectAllSelected = newStatus;
|
|
1126
|
-
if (event.isUserInput) {
|
|
1127
|
-
if (enableds.length) {
|
|
1128
|
-
for (const enabled of enableds) {
|
|
1129
|
-
if (enabled.title === value.title) {
|
|
1130
|
-
if (enabled.enabled && value.enabled) {
|
|
1131
|
-
enableds.splice(enableds.indexOf(enabled), 1);
|
|
1132
|
-
this.selectEnableds = enableds;
|
|
1133
|
-
break;
|
|
1134
|
-
}
|
|
1135
|
-
}
|
|
1136
|
-
else if (enableds.indexOf(enabled) === enableds.length - 1) {
|
|
1137
|
-
enableds.push(value);
|
|
1138
|
-
this.selectEnableds = enableds;
|
|
1139
|
-
break;
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
}
|
|
1143
|
-
else {
|
|
1144
|
-
enableds.push(value);
|
|
1145
|
-
this.selectEnableds = enableds;
|
|
1146
|
-
}
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
else {
|
|
1150
|
-
this.selectEnabled = value;
|
|
1151
|
-
}
|
|
1152
|
-
}
|
|
1153
|
-
autocompleteOptionClick(value) {
|
|
1154
|
-
this.autocompleteEnabled = value.value;
|
|
1155
|
-
}
|
|
1156
|
-
displayFn(dom) {
|
|
1157
|
-
return dom ? dom.value : undefined;
|
|
1158
|
-
}
|
|
1159
|
-
applyFilters() {
|
|
1160
|
-
let filterQueryString = '';
|
|
1161
|
-
const conditions = [];
|
|
1162
|
-
const currentGroups = [this.currentPushButtonsGroup, this.currentCheckboxesGroup,
|
|
1163
|
-
this.currentRadioButtonsGroup, this.currentSelectGroup, this.currentAutocompleteGroup];
|
|
1164
|
-
for (const currentGroup of currentGroups) {
|
|
1165
|
-
if (currentGroup.computedSelectors) {
|
|
1166
|
-
currentGroup.computedSelectors.map(selectorBundle => {
|
|
1167
|
-
const bundleCondition = [];
|
|
1168
|
-
selectorBundle.selectors?.filter(ogcSelector => ogcSelector.enabled === true)
|
|
1169
|
-
.forEach(enabledSelector => bundleCondition.push(enabledSelector.filters));
|
|
1170
|
-
if (bundleCondition.length >= 1) {
|
|
1171
|
-
if (bundleCondition.length === 1) {
|
|
1172
|
-
conditions.push(bundleCondition[0]);
|
|
1173
|
-
}
|
|
1174
|
-
else {
|
|
1175
|
-
conditions.push({ logical: selectorBundle.logical, filters: bundleCondition });
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
});
|
|
1179
|
-
}
|
|
1180
|
-
}
|
|
1181
|
-
if (this.isTemporalOperator() && this._currentFilter.active) {
|
|
1182
|
-
conditions.push(this.datasource.options.ogcFilters.interfaceOgcFilters[0]);
|
|
1183
|
-
}
|
|
1184
|
-
if (conditions.length >= 1) {
|
|
1185
|
-
filterQueryString = this.ogcFilterWriter
|
|
1186
|
-
.buildFilter(conditions.length === 1 ?
|
|
1187
|
-
conditions[0] : { logical: 'And', filters: conditions });
|
|
1188
|
-
}
|
|
1189
|
-
if (this.datasource.options.type === 'wms') {
|
|
1190
|
-
this.ogcFilterService.filterByOgc(this.datasource, filterQueryString);
|
|
1191
|
-
}
|
|
1192
|
-
if (this.datasource.options.type === 'wfs') {
|
|
1193
|
-
// TODO: Check how to prevent wfs to refresh when filter icon is pushed...
|
|
1194
|
-
this.datasource.ol.refresh();
|
|
1195
|
-
}
|
|
1196
|
-
this.datasource.setOgcFilters(this.datasource.options.ogcFilters, true);
|
|
1197
|
-
}
|
|
1198
|
-
isMoreResults(bundle, type) {
|
|
1199
|
-
let selectorsLength = 0;
|
|
1200
|
-
for (const selectors of bundle.selectors) {
|
|
1201
|
-
selectorsLength++;
|
|
1202
|
-
}
|
|
1203
|
-
const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
|
|
1204
|
-
return selectorsLength > index;
|
|
1205
|
-
}
|
|
1206
|
-
displayMoreResults(type) {
|
|
1207
|
-
type === 'radio' ? this.radioButtonsIndex += 5 : this.checkboxesIndex += 5;
|
|
1208
|
-
return;
|
|
1209
|
-
}
|
|
1210
|
-
isLessResults(bundle, type) {
|
|
1211
|
-
let selectorsLength = 0;
|
|
1212
|
-
for (const selectors of bundle.selectors) {
|
|
1213
|
-
selectorsLength++;
|
|
1214
|
-
}
|
|
1215
|
-
const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
|
|
1216
|
-
return this.baseIndex !== index && selectorsLength > this.baseIndex;
|
|
1217
|
-
}
|
|
1218
|
-
displayLessResults(type) {
|
|
1219
|
-
type === 'radio' ? this.radioButtonsIndex = this.baseIndex : this.checkboxesIndex = this.baseIndex;
|
|
1220
|
-
return;
|
|
1221
|
-
}
|
|
1222
|
-
isTemporalOperator() {
|
|
1223
|
-
return (this.currentFilter?.operator?.toLowerCase() ===
|
|
1224
|
-
this.ogcFilterOperator.During.toLowerCase());
|
|
1225
|
-
}
|
|
1226
|
-
changeProperty(value, pos, refreshFilter = true) {
|
|
1227
|
-
const detectedProperty = this.detectProperty(pos);
|
|
1228
|
-
if (detectedProperty) {
|
|
1229
|
-
this.datasource.options.ogcFilters.interfaceOgcFilters.find(filter => filter.filterid === this.currentFilter.filterid)[detectedProperty] = value;
|
|
1230
|
-
if (refreshFilter) {
|
|
1231
|
-
this.applyFilters();
|
|
1232
|
-
}
|
|
1233
|
-
}
|
|
1234
|
-
}
|
|
1235
|
-
detectProperty(pos) {
|
|
1236
|
-
switch (this.currentFilter.operator) {
|
|
1237
|
-
case OgcFilterOperator.PropertyIsNotEqualTo:
|
|
1238
|
-
case OgcFilterOperator.PropertyIsEqualTo:
|
|
1239
|
-
case OgcFilterOperator.PropertyIsGreaterThan:
|
|
1240
|
-
case OgcFilterOperator.PropertyIsGreaterThanOrEqualTo:
|
|
1241
|
-
case OgcFilterOperator.PropertyIsLessThan:
|
|
1242
|
-
case OgcFilterOperator.PropertyIsLessThanOrEqualTo:
|
|
1243
|
-
return 'expression';
|
|
1244
|
-
case OgcFilterOperator.PropertyIsLike:
|
|
1245
|
-
return 'pattern';
|
|
1246
|
-
case OgcFilterOperator.PropertyIsBetween:
|
|
1247
|
-
return pos && pos === 1
|
|
1248
|
-
? 'lowerBoundary'
|
|
1249
|
-
: pos && pos === 2
|
|
1250
|
-
? 'upperBoundary'
|
|
1251
|
-
: undefined;
|
|
1252
|
-
case OgcFilterOperator.During:
|
|
1253
|
-
return pos && pos === 1
|
|
1254
|
-
? 'begin'
|
|
1255
|
-
: pos && pos === 2
|
|
1256
|
-
? 'end'
|
|
1257
|
-
: undefined;
|
|
1258
|
-
default:
|
|
1259
|
-
return;
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1263
|
-
OgcFilterSelectionComponent.ɵfac = function OgcFilterSelectionComponent_Factory(t) { return new (t || OgcFilterSelectionComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterService), i0.ɵɵdirectiveInject(i2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.DOMService), i0.ɵɵdirectiveInject(i4.ConfigService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1264
|
-
OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterSelectionComponent, selectors: [["igo-ogc-filter-selection"]], viewQuery: function OgcFilterSelectionComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1265
|
-
i0.ɵɵviewQuery(_c0, 5);
|
|
1266
|
-
} if (rf & 2) {
|
|
1267
|
-
let _t;
|
|
1268
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sel = _t.first);
|
|
1269
|
-
} }, inputs: { refreshFilters: "refreshFilters", datasource: "datasource", map: "map", checkboxesIndex: "checkboxesIndex", radioButtonsIndex: "radioButtonsIndex", baseIndex: "baseIndex", currentFilter: "currentFilter" }, features: [i0.ɵɵProvidersFeature([DOMService])], decls: 3, vars: 3, consts: [[3, "formGroup"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["class", "pushButtonGroups", 4, "ngIf"], ["class", "checkboxGroups", 4, "ngIf"], ["class", "radioButtonGroups", 4, "ngIf"], ["class", "selectGroups", 4, "ngIf"], ["class", "autocompleteGroups", 4, "ngIf"], [1, "pushButtonGroups"], ["class", "groupsSelector", 4, "ngIf"], [1, "groupsSelector"], ["formControlName", "pushButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], ["formControlName", "pushButtons", "appearance", "legacy", "multiple", "true", 1, "mat-typography", 3, "vertical"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change"], [1, "checkboxGroups"], ["formControlName", "checkboxesGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [1, "checkboxes", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change"], ["class", "lessResults mat-typography", 3, "click", 4, "ngIf"], ["class", "moreResults mat-typography", 3, "click", 4, "ngIf"], [1, "lessResults", "mat-typography", 3, "click"], [1, "moreResults", "mat-typography", 3, "click"], [1, "radioButtonGroups"], ["formControlName", "radioButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["formControlName", "radioButtons", 1, "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change"], [1, "selectGroups"], ["formControlName", "selectGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notMulti", ""], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click"], ["svgIcon", "filter-remove"], ["formControlName", "selectMulti", 3, "multiple", "placeholder"], ["selection", ""], [3, "ngModel", "ngModelOptions", "ngModelChange", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "ngModel", "ngModelOptions", "ngModelChange", "change"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange"], ["formControlName", "select", 3, "placeholder"], [1, "autocompleteGroups"], ["formControlName", "autocompleteGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "width", 4, "ngIf"], ["matInput", "", "type", "text", "formControlName", "autocomplete", 1, "autocomplete", 3, "matAutocomplete", "placeholder"], ["autocomplete", ""], [3, "displayWith", "optionSelected"], ["auto", "matAutocomplete", "autocomplete", ""], [3, "datasource", "currentFilter", "datasourceChange", "currentFilterChange", "changeProperty"]], template: function OgcFilterSelectionComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1270
|
-
i0.ɵɵelementStart(0, "form", 0);
|
|
1271
|
-
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_Template, 6, 5, "div", 1);
|
|
1272
|
-
i0.ɵɵelementEnd();
|
|
1273
|
-
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 5, 4, "div", 2);
|
|
1274
|
-
} if (rf & 2) {
|
|
1275
|
-
i0.ɵɵproperty("formGroup", ctx.form);
|
|
1276
|
-
i0.ɵɵadvance(1);
|
|
1277
|
-
i0.ɵɵproperty("ngForOf", ctx.ogcFiltersSelectors);
|
|
1278
|
-
i0.ɵɵadvance(1);
|
|
1279
|
-
i0.ɵɵproperty("ngIf", ctx.isTemporalOperator());
|
|
1280
|
-
} }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes[_ngcontent-%COMP%]{flex-wrap:wrap;box-shadow:none}.groupsSelector[_ngcontent-%COMP%]{text-align:center}mat-button-toggle[_ngcontent-%COMP%]{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle[_ngcontent-%COMP%]{width:45%}} .material-tooltip{white-space:pre-wrap}mat-checkbox[_ngcontent-%COMP%], mat-radio-button[_ngcontent-%COMP%]{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox[_ngcontent-%COMP%] label, mat-radio-button[_ngcontent-%COMP%] label{white-space:normal}mat-checkbox[_ngcontent-%COMP%]{vertical-align:middle}mat-button[_ngcontent-%COMP%]{padding-right:10px;cursor:pointer}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:0;margin:initial}"] });
|
|
1281
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
|
|
1282
|
-
type: Component,
|
|
1283
|
-
args: [{ selector: 'igo-ogc-filter-selection', providers: [DOMService], template: "<form [formGroup]=\"form\">\n <div *ngFor=\"let selector of ogcFiltersSelectors\">\n <div class=\"pushButtonGroups\" *ngIf=\"selector.selectorType === 'pushButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getPushButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"pushButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentPushButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getPushButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentPushButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-button-toggle-group\n formControlName=\"pushButtons\" class=\"mat-typography\" appearance=\"legacy\" vertical={{bundleIsVertical(bundle)}} multiple=\"true\">\n <mat-button-toggle *ngFor=\"let ogcPushButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcPushButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [ngStyle]=\"getButtonColor(ogcPushButton)\"\n [checked]=\"ogcPushButton.enabled\" (change)=\"onSelectionChange(ogcPushButton, selector.selectorType)\"\n [value]=\"ogcPushButton\">{{ogcPushButton.title}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"checkboxGroups\" *ngIf=\"selector.selectorType === 'checkbox'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getCheckboxesGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"checkboxesGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentCheckboxesGroup\">\n <mat-option *ngFor=\"let selectorGroup of getCheckboxesGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentCheckboxesGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngFor=\"let ogcCheckbox of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcCheckbox)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcCheckbox.enabled\" (change)=\"onSelectionChange(ogcCheckbox, selector.selectorType)\"\n [value]=\"ogcCheckbox\">{{ogcCheckbox.title}}\n </mat-checkbox>\n </div>\n <p *ngIf=\"isLessResults(bundle, 'checkbox') || isMoreResults(bundle, 'checkbox')\">\n <u *ngIf=\"isLessResults(bundle, 'checkbox')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('checkbox')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'checkbox')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('checkbox')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </ng-container>\n </div>\n\n <div class=\"radioButtonGroups\" *ngIf=\"selector.selectorType === 'radioButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getRadioButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"radioButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentRadioButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getRadioButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentRadioButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-radio-group\n formControlName=\"radioButtons\" class=\"mat-typography\">\n <mat-radio-button *ngIf=\"bundle.unfiltered\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (change)=\"emptyRadioButtons()\">{{ 'igo.geo.filter.resetFilters' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngFor=\"let ogcRadioButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcRadioButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcRadioButton.enabled\" (change)=\"onSelectionChange(ogcRadioButton, selector.selectorType)\"\n [value]=\"ogcRadioButton\">{{ogcRadioButton.title}}\n </mat-radio-button>\n <p *ngIf=\"isLessResults(bundle, 'radio') || isMoreResults(bundle, 'radio')\">\n <u *ngIf=\"isLessResults(bundle, 'radio')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('radio')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'radio')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('radio')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </mat-radio-group>\n </ng-container>\n </div>\n\n <div class=\"selectGroups\" *ngIf=\"selector.selectorType === 'select'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getSelectGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"selectGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentSelectGroup\">\n <mat-option *ngFor=\"let selectorGroup of getSelectGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentSelectGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered && !bundle.multiple\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptySelect()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <div *ngIf=\"bundle.multiple; else notMulti\">\n <mat-select\n #selection [multiple]=\"bundle.multiple\" [placeholder]=\"bundle.title\" formControlName=\"selectMulti\">\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngIf=\"bundle.multiple\"\n [(ngModel)]=\"selectAllSelected\" [ngModelOptions]=\"{standalone: true}\"\n (change)=\"toggleAllSelection()\">Tous\n </mat-checkbox>\n </div>\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (onSelectionChange)=\"selectOptionClick($event.source.value, bundle, $event)\"\n [value]=\"ogcSelect\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </div>\n <ng-template #notMulti>\n <mat-select\n [placeholder]=\"bundle.title\" formControlName=\"select\">\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [value]=\"ogcSelect\" (onSelectionChange)=\"selectOptionClick($event.source.value, bundle)\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </ng-template>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n\n <div class=\"autocompleteGroups\" *ngIf=\"selector.selectorType === 'autocomplete'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getAutocompleteGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"autocompleteGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentAutocompleteGroup\">\n <mat-option *ngFor=\"let autocompleteGroup of getAutocompleteGroups()\"\n [value]=\"autocompleteGroup\">{{autocompleteGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentAutocompleteGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptyAutocomplete()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field *ngIf=\"filteredOgcAutocomplete[bundle.id]\" [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <input matInput type=\"text\" formControlName=\"autocomplete\" #autocomplete class=\"autocomplete\"\n [matAutocomplete]=\"auto\" [placeholder]=\"bundle.title\">\n <mat-autocomplete #auto=\"matAutocomplete\" #autocomplete (optionSelected)=\"autocompleteOptionClick($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let ogcAutocomplete of filteredOgcAutocomplete[bundle.id] | async\" [value]=\"ogcAutocomplete\">\n {{ ogcAutocomplete.value }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n </div>\n</form>\n\n<div *ngIf=\"isTemporalOperator()\">\n <mat-divider></mat-divider>\n <h4 *ngIf=\"!currentFilter.title\">{{ 'igo.geo.filter.reportingDate' | translate }}</h4>\n <h4 *ngIf=\"currentFilter.title\">{{ currentFilter.title }}</h4>\n <igo-ogc-filter-time\n [(datasource)]=\"datasource\"\n [(currentFilter)]=\"currentFilter\"\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\n </igo-ogc-filter-time>\n</div>", styles: [".mat-button-toggle-group{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes{flex-wrap:wrap;box-shadow:none}.groupsSelector{text-align:center}mat-button-toggle{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle ::ng-deep .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle{width:45%}}::ng-deep .material-tooltip{white-space:pre-wrap}mat-checkbox,mat-radio-button{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox ::ng-deep label,mat-radio-button ::ng-deep label{white-space:normal}mat-checkbox{vertical-align:middle}mat-button{padding-right:10px;cursor:pointer}h4{margin:7px;text-align:left}u{cursor:pointer;color:#00f;margin:5px}p{margin:0;margin:initial}\n"] }]
|
|
1284
|
-
}], function () { return [{ type: i1.OGCFilterService }, { type: i2.UntypedFormBuilder }, { type: i3.DOMService }, { type: i4.ConfigService }, { type: i0.ChangeDetectorRef }]; }, { sel: [{
|
|
1285
|
-
type: ViewChild,
|
|
1286
|
-
args: ['selection']
|
|
1287
|
-
}], refreshFilters: [{
|
|
1288
|
-
type: Input
|
|
1289
|
-
}], datasource: [{
|
|
1290
|
-
type: Input
|
|
1291
|
-
}], map: [{
|
|
1292
|
-
type: Input
|
|
1293
|
-
}], checkboxesIndex: [{
|
|
1294
|
-
type: Input
|
|
1295
|
-
}], radioButtonsIndex: [{
|
|
1296
|
-
type: Input
|
|
1297
|
-
}], baseIndex: [{
|
|
1298
|
-
type: Input
|
|
1299
|
-
}], currentFilter: [{
|
|
1300
|
-
type: Input
|
|
1301
|
-
}] }); })();
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { DOMService } from '@igo2/common';
|
|
3
|
+
import { OgcFilterWriter } from '../../filter/shared/ogc-filter';
|
|
4
|
+
import { Validators } from '@angular/forms';
|
|
5
|
+
import { debounceTime, map } from 'rxjs/operators';
|
|
6
|
+
import { OgcFilterOperator } from '../shared/ogc-filter.enum';
|
|
7
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../shared/ogc-filter.service";
|
|
10
|
+
import * as i2 from "@angular/forms";
|
|
11
|
+
import * as i3 from "@igo2/common";
|
|
12
|
+
import * as i4 from "@igo2/core";
|
|
13
|
+
const _c0 = ["selection"];
|
|
14
|
+
function OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
16
|
+
i0.ɵɵtext(1);
|
|
17
|
+
i0.ɵɵelementEnd();
|
|
18
|
+
} if (rf & 2) {
|
|
19
|
+
const selectorGroup_r11 = ctx.$implicit;
|
|
20
|
+
i0.ɵɵproperty("value", selectorGroup_r11);
|
|
21
|
+
i0.ɵɵadvance(1);
|
|
22
|
+
i0.ɵɵtextInterpolate1("", selectorGroup_r11.title, " ");
|
|
23
|
+
} }
|
|
24
|
+
function OgcFilterSelectionComponent_div_1_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 11);
|
|
27
|
+
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_1_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.currentPushButtonsGroup = $event); });
|
|
28
|
+
i0.ɵɵpipe(3, "translate");
|
|
29
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
30
|
+
i0.ɵɵelementEnd()()();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
const ctx_r8 = i0.ɵɵnextContext(3);
|
|
33
|
+
i0.ɵɵadvance(2);
|
|
34
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r8.currentPushButtonsGroup);
|
|
35
|
+
i0.ɵɵadvance(2);
|
|
36
|
+
i0.ɵɵproperty("ngForOf", ctx_r8.getPushButtonsGroups());
|
|
37
|
+
} }
|
|
38
|
+
function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
40
|
+
i0.ɵɵelementStart(0, "mat-button-toggle", 16);
|
|
41
|
+
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template_mat_button_toggle_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const ogcPushButton_r16 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onSelectionChange(ogcPushButton_r16, selector_r2.selectorType)); });
|
|
42
|
+
i0.ɵɵtext(1);
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const ogcPushButton_r16 = ctx.$implicit;
|
|
46
|
+
const ctx_r15 = i0.ɵɵnextContext(4);
|
|
47
|
+
i0.ɵɵproperty("matTooltip", ctx_r15.getToolTip(ogcPushButton_r16))("ngStyle", ctx_r15.getButtonColor(ogcPushButton_r16))("checked", ogcPushButton_r16.enabled)("value", ogcPushButton_r16);
|
|
48
|
+
i0.ɵɵadvance(1);
|
|
49
|
+
i0.ɵɵtextInterpolate1("", ogcPushButton_r16.title, " ");
|
|
50
|
+
} }
|
|
51
|
+
function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelementContainerStart(0);
|
|
53
|
+
i0.ɵɵelementStart(1, "h4");
|
|
54
|
+
i0.ɵɵtext(2);
|
|
55
|
+
i0.ɵɵelementEnd();
|
|
56
|
+
i0.ɵɵelementStart(3, "mat-button-toggle-group", 14);
|
|
57
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template, 2, 5, "mat-button-toggle", 15);
|
|
58
|
+
i0.ɵɵelementEnd();
|
|
59
|
+
i0.ɵɵelementContainerEnd();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
const bundle_r14 = ctx.$implicit;
|
|
62
|
+
const ctx_r9 = i0.ɵɵnextContext(3);
|
|
63
|
+
i0.ɵɵadvance(2);
|
|
64
|
+
i0.ɵɵtextInterpolate(bundle_r14.title);
|
|
65
|
+
i0.ɵɵadvance(1);
|
|
66
|
+
i0.ɵɵpropertyInterpolate("vertical", ctx_r9.bundleIsVertical(bundle_r14));
|
|
67
|
+
i0.ɵɵadvance(1);
|
|
68
|
+
i0.ɵɵproperty("ngForOf", bundle_r14.selectors);
|
|
69
|
+
} }
|
|
70
|
+
function OgcFilterSelectionComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
72
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
73
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_1_div_2_Template, 5, 5, "div", 9);
|
|
74
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template, 5, 3, "ng-container", 1);
|
|
75
|
+
i0.ɵɵelementEnd();
|
|
76
|
+
} if (rf & 2) {
|
|
77
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
78
|
+
i0.ɵɵadvance(2);
|
|
79
|
+
i0.ɵɵproperty("ngIf", ctx_r3.getPushButtonsGroups().length > 1);
|
|
80
|
+
i0.ɵɵadvance(1);
|
|
81
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.currentPushButtonsGroup.computedSelectors);
|
|
82
|
+
} }
|
|
83
|
+
function OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
85
|
+
i0.ɵɵtext(1);
|
|
86
|
+
i0.ɵɵelementEnd();
|
|
87
|
+
} if (rf & 2) {
|
|
88
|
+
const selectorGroup_r23 = ctx.$implicit;
|
|
89
|
+
i0.ɵɵproperty("value", selectorGroup_r23);
|
|
90
|
+
i0.ɵɵadvance(1);
|
|
91
|
+
i0.ɵɵtextInterpolate1("", selectorGroup_r23.title, " ");
|
|
92
|
+
} }
|
|
93
|
+
function OgcFilterSelectionComponent_div_1_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
95
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 18);
|
|
96
|
+
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_2_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.currentCheckboxesGroup = $event); });
|
|
97
|
+
i0.ɵɵpipe(3, "translate");
|
|
98
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
99
|
+
i0.ɵɵelementEnd()()();
|
|
100
|
+
} if (rf & 2) {
|
|
101
|
+
const ctx_r20 = i0.ɵɵnextContext(3);
|
|
102
|
+
i0.ɵɵadvance(2);
|
|
103
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r20.currentCheckboxesGroup);
|
|
104
|
+
i0.ɵɵadvance(2);
|
|
105
|
+
i0.ɵɵproperty("ngForOf", ctx_r20.getCheckboxesGroups());
|
|
106
|
+
} }
|
|
107
|
+
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
109
|
+
i0.ɵɵelementStart(0, "mat-checkbox", 21);
|
|
110
|
+
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r31); const ogcCheckbox_r29 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.onSelectionChange(ogcCheckbox_r29, selector_r2.selectorType)); });
|
|
111
|
+
i0.ɵɵtext(1);
|
|
112
|
+
i0.ɵɵelementEnd();
|
|
113
|
+
} if (rf & 2) {
|
|
114
|
+
const ogcCheckbox_r29 = ctx.$implicit;
|
|
115
|
+
const ctx_r27 = i0.ɵɵnextContext(4);
|
|
116
|
+
i0.ɵɵproperty("matTooltip", ctx_r27.getToolTip(ogcCheckbox_r29))("checked", ogcCheckbox_r29.enabled)("value", ogcCheckbox_r29);
|
|
117
|
+
i0.ɵɵadvance(1);
|
|
118
|
+
i0.ɵɵtextInterpolate1("", ogcCheckbox_r29.title, " ");
|
|
119
|
+
} }
|
|
120
|
+
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
122
|
+
i0.ɵɵelementStart(0, "u", 24);
|
|
123
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r35.displayLessResults("checkbox")); });
|
|
124
|
+
i0.ɵɵtext(1);
|
|
125
|
+
i0.ɵɵpipe(2, "translate");
|
|
126
|
+
i0.ɵɵelementEnd();
|
|
127
|
+
} if (rf & 2) {
|
|
128
|
+
i0.ɵɵadvance(1);
|
|
129
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
|
|
130
|
+
} }
|
|
131
|
+
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
133
|
+
i0.ɵɵelementStart(0, "u", 25);
|
|
134
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r37.displayMoreResults("checkbox")); });
|
|
135
|
+
i0.ɵɵtext(1);
|
|
136
|
+
i0.ɵɵpipe(2, "translate");
|
|
137
|
+
i0.ɵɵelementEnd();
|
|
138
|
+
} if (rf & 2) {
|
|
139
|
+
i0.ɵɵadvance(1);
|
|
140
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
|
|
141
|
+
} }
|
|
142
|
+
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
+
i0.ɵɵelementStart(0, "p");
|
|
144
|
+
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template, 3, 3, "u", 22);
|
|
145
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template, 3, 3, "u", 23);
|
|
146
|
+
i0.ɵɵelementEnd();
|
|
147
|
+
} if (rf & 2) {
|
|
148
|
+
const bundle_r26 = i0.ɵɵnextContext().$implicit;
|
|
149
|
+
const ctx_r28 = i0.ɵɵnextContext(3);
|
|
150
|
+
i0.ɵɵadvance(1);
|
|
151
|
+
i0.ɵɵproperty("ngIf", ctx_r28.isLessResults(bundle_r26, "checkbox"));
|
|
152
|
+
i0.ɵɵadvance(1);
|
|
153
|
+
i0.ɵɵproperty("ngIf", ctx_r28.isMoreResults(bundle_r26, "checkbox"));
|
|
154
|
+
} }
|
|
155
|
+
function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementContainerStart(0);
|
|
157
|
+
i0.ɵɵelementStart(1, "h4");
|
|
158
|
+
i0.ɵɵtext(2);
|
|
159
|
+
i0.ɵɵelementEnd();
|
|
160
|
+
i0.ɵɵelementStart(3, "div", 19);
|
|
161
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template, 2, 4, "mat-checkbox", 20);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template, 3, 2, "p", 2);
|
|
164
|
+
i0.ɵɵelementContainerEnd();
|
|
165
|
+
} if (rf & 2) {
|
|
166
|
+
const bundle_r26 = ctx.$implicit;
|
|
167
|
+
const ctx_r21 = i0.ɵɵnextContext(3);
|
|
168
|
+
i0.ɵɵadvance(2);
|
|
169
|
+
i0.ɵɵtextInterpolate(bundle_r26.title);
|
|
170
|
+
i0.ɵɵadvance(2);
|
|
171
|
+
i0.ɵɵproperty("ngForOf", bundle_r26.selectors);
|
|
172
|
+
i0.ɵɵadvance(1);
|
|
173
|
+
i0.ɵɵproperty("ngIf", ctx_r21.isLessResults(bundle_r26, "checkbox") || ctx_r21.isMoreResults(bundle_r26, "checkbox"));
|
|
174
|
+
} }
|
|
175
|
+
function OgcFilterSelectionComponent_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
176
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
177
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
178
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_div_2_Template, 5, 5, "div", 9);
|
|
179
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template, 6, 3, "ng-container", 1);
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
} if (rf & 2) {
|
|
182
|
+
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
183
|
+
i0.ɵɵadvance(2);
|
|
184
|
+
i0.ɵɵproperty("ngIf", ctx_r4.getCheckboxesGroups().length > 1);
|
|
185
|
+
i0.ɵɵadvance(1);
|
|
186
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.currentCheckboxesGroup.computedSelectors);
|
|
187
|
+
} }
|
|
188
|
+
function OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
190
|
+
i0.ɵɵtext(1);
|
|
191
|
+
i0.ɵɵelementEnd();
|
|
192
|
+
} if (rf & 2) {
|
|
193
|
+
const selectorGroup_r43 = ctx.$implicit;
|
|
194
|
+
i0.ɵɵproperty("value", selectorGroup_r43);
|
|
195
|
+
i0.ɵɵadvance(1);
|
|
196
|
+
i0.ɵɵtextInterpolate1("", selectorGroup_r43.title, " ");
|
|
197
|
+
} }
|
|
198
|
+
function OgcFilterSelectionComponent_div_1_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
+
const _r45 = i0.ɵɵgetCurrentView();
|
|
200
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 27);
|
|
201
|
+
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_3_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.currentRadioButtonsGroup = $event); });
|
|
202
|
+
i0.ɵɵpipe(3, "translate");
|
|
203
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
204
|
+
i0.ɵɵelementEnd()()();
|
|
205
|
+
} if (rf & 2) {
|
|
206
|
+
const ctx_r40 = i0.ɵɵnextContext(3);
|
|
207
|
+
i0.ɵɵadvance(2);
|
|
208
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r40.currentRadioButtonsGroup);
|
|
209
|
+
i0.ɵɵadvance(2);
|
|
210
|
+
i0.ɵɵproperty("ngForOf", ctx_r40.getRadioButtonsGroups());
|
|
211
|
+
} }
|
|
212
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
213
|
+
const _r51 = i0.ɵɵgetCurrentView();
|
|
214
|
+
i0.ɵɵelementStart(0, "mat-radio-button", 30);
|
|
215
|
+
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template_mat_radio_button_change_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r50.emptyRadioButtons()); });
|
|
216
|
+
i0.ɵɵpipe(1, "translate");
|
|
217
|
+
i0.ɵɵtext(2);
|
|
218
|
+
i0.ɵɵpipe(3, "translate");
|
|
219
|
+
i0.ɵɵelementEnd();
|
|
220
|
+
} if (rf & 2) {
|
|
221
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.filter.resetFilters"));
|
|
222
|
+
i0.ɵɵadvance(2);
|
|
223
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 4, "igo.geo.filter.resetFilters"), " ");
|
|
224
|
+
} }
|
|
225
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
226
|
+
const _r54 = i0.ɵɵgetCurrentView();
|
|
227
|
+
i0.ɵɵelementStart(0, "mat-radio-button", 21);
|
|
228
|
+
i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template_mat_radio_button_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r54); const ogcRadioButton_r52 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.onSelectionChange(ogcRadioButton_r52, selector_r2.selectorType)); });
|
|
229
|
+
i0.ɵɵtext(1);
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
} if (rf & 2) {
|
|
232
|
+
const ogcRadioButton_r52 = ctx.$implicit;
|
|
233
|
+
const ctx_r48 = i0.ɵɵnextContext(4);
|
|
234
|
+
i0.ɵɵproperty("matTooltip", ctx_r48.getToolTip(ogcRadioButton_r52))("checked", ogcRadioButton_r52.enabled)("value", ogcRadioButton_r52);
|
|
235
|
+
i0.ɵɵadvance(1);
|
|
236
|
+
i0.ɵɵtextInterpolate1("", ogcRadioButton_r52.title, " ");
|
|
237
|
+
} }
|
|
238
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
+
const _r59 = i0.ɵɵgetCurrentView();
|
|
240
|
+
i0.ɵɵelementStart(0, "u", 24);
|
|
241
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r58.displayLessResults("radio")); });
|
|
242
|
+
i0.ɵɵtext(1);
|
|
243
|
+
i0.ɵɵpipe(2, "translate");
|
|
244
|
+
i0.ɵɵelementEnd();
|
|
245
|
+
} if (rf & 2) {
|
|
246
|
+
i0.ɵɵadvance(1);
|
|
247
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
|
|
248
|
+
} }
|
|
249
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
+
const _r61 = i0.ɵɵgetCurrentView();
|
|
251
|
+
i0.ɵɵelementStart(0, "u", 25);
|
|
252
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r60.displayMoreResults("radio")); });
|
|
253
|
+
i0.ɵɵtext(1);
|
|
254
|
+
i0.ɵɵpipe(2, "translate");
|
|
255
|
+
i0.ɵɵelementEnd();
|
|
256
|
+
} if (rf & 2) {
|
|
257
|
+
i0.ɵɵadvance(1);
|
|
258
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
|
|
259
|
+
} }
|
|
260
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template(rf, ctx) { if (rf & 1) {
|
|
261
|
+
i0.ɵɵelementStart(0, "p");
|
|
262
|
+
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template, 3, 3, "u", 22);
|
|
263
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template, 3, 3, "u", 23);
|
|
264
|
+
i0.ɵɵelementEnd();
|
|
265
|
+
} if (rf & 2) {
|
|
266
|
+
const bundle_r46 = i0.ɵɵnextContext().$implicit;
|
|
267
|
+
const ctx_r49 = i0.ɵɵnextContext(3);
|
|
268
|
+
i0.ɵɵadvance(1);
|
|
269
|
+
i0.ɵɵproperty("ngIf", ctx_r49.isLessResults(bundle_r46, "radio"));
|
|
270
|
+
i0.ɵɵadvance(1);
|
|
271
|
+
i0.ɵɵproperty("ngIf", ctx_r49.isMoreResults(bundle_r46, "radio"));
|
|
272
|
+
} }
|
|
273
|
+
function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
274
|
+
i0.ɵɵelementContainerStart(0);
|
|
275
|
+
i0.ɵɵelementStart(1, "h4");
|
|
276
|
+
i0.ɵɵtext(2);
|
|
277
|
+
i0.ɵɵelementEnd();
|
|
278
|
+
i0.ɵɵelementStart(3, "mat-radio-group", 28);
|
|
279
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template, 4, 6, "mat-radio-button", 29);
|
|
280
|
+
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template, 2, 4, "mat-radio-button", 20);
|
|
281
|
+
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template, 3, 2, "p", 2);
|
|
282
|
+
i0.ɵɵelementEnd();
|
|
283
|
+
i0.ɵɵelementContainerEnd();
|
|
284
|
+
} if (rf & 2) {
|
|
285
|
+
const bundle_r46 = ctx.$implicit;
|
|
286
|
+
const ctx_r41 = i0.ɵɵnextContext(3);
|
|
287
|
+
i0.ɵɵadvance(2);
|
|
288
|
+
i0.ɵɵtextInterpolate(bundle_r46.title);
|
|
289
|
+
i0.ɵɵadvance(2);
|
|
290
|
+
i0.ɵɵproperty("ngIf", bundle_r46.unfiltered);
|
|
291
|
+
i0.ɵɵadvance(1);
|
|
292
|
+
i0.ɵɵproperty("ngForOf", bundle_r46.selectors);
|
|
293
|
+
i0.ɵɵadvance(1);
|
|
294
|
+
i0.ɵɵproperty("ngIf", ctx_r41.isLessResults(bundle_r46, "radio") || ctx_r41.isMoreResults(bundle_r46, "radio"));
|
|
295
|
+
} }
|
|
296
|
+
function OgcFilterSelectionComponent_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
297
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
298
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
299
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_div_2_Template, 5, 5, "div", 9);
|
|
300
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template, 7, 4, "ng-container", 1);
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
} if (rf & 2) {
|
|
303
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
304
|
+
i0.ɵɵadvance(2);
|
|
305
|
+
i0.ɵɵproperty("ngIf", ctx_r5.getRadioButtonsGroups().length > 1);
|
|
306
|
+
i0.ɵɵadvance(1);
|
|
307
|
+
i0.ɵɵproperty("ngForOf", ctx_r5.currentRadioButtonsGroup.computedSelectors);
|
|
308
|
+
} }
|
|
309
|
+
function OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
311
|
+
i0.ɵɵtext(1);
|
|
312
|
+
i0.ɵɵelementEnd();
|
|
313
|
+
} if (rf & 2) {
|
|
314
|
+
const selectorGroup_r66 = ctx.$implicit;
|
|
315
|
+
i0.ɵɵproperty("value", selectorGroup_r66);
|
|
316
|
+
i0.ɵɵadvance(1);
|
|
317
|
+
i0.ɵɵtextInterpolate1("", selectorGroup_r66.title, " ");
|
|
318
|
+
} }
|
|
319
|
+
function OgcFilterSelectionComponent_div_1_div_4_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
320
|
+
const _r68 = i0.ɵɵgetCurrentView();
|
|
321
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 32);
|
|
322
|
+
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_4_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r67 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r67.currentSelectGroup = $event); });
|
|
323
|
+
i0.ɵɵpipe(3, "translate");
|
|
324
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
325
|
+
i0.ɵɵelementEnd()()();
|
|
326
|
+
} if (rf & 2) {
|
|
327
|
+
const ctx_r63 = i0.ɵɵnextContext(3);
|
|
328
|
+
i0.ɵɵadvance(2);
|
|
329
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r63.currentSelectGroup);
|
|
330
|
+
i0.ɵɵadvance(2);
|
|
331
|
+
i0.ɵɵproperty("ngForOf", ctx_r63.getSelectGroups());
|
|
332
|
+
} }
|
|
333
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
+
const _r75 = i0.ɵɵgetCurrentView();
|
|
335
|
+
i0.ɵɵelementStart(0, "mat-button", 36);
|
|
336
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r74.emptySelect()); });
|
|
337
|
+
i0.ɵɵpipe(1, "translate");
|
|
338
|
+
i0.ɵɵelement(2, "mat-icon", 37);
|
|
339
|
+
i0.ɵɵelementEnd();
|
|
340
|
+
} if (rf & 2) {
|
|
341
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
|
|
342
|
+
} }
|
|
343
|
+
const _c1 = function () { return { standalone: true }; };
|
|
344
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
|
|
345
|
+
const _r80 = i0.ɵɵgetCurrentView();
|
|
346
|
+
i0.ɵɵelementStart(0, "mat-checkbox", 42);
|
|
347
|
+
i0.ɵɵlistener("ngModelChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r79.selectAllSelected = $event); })("change", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r81.toggleAllSelection()); });
|
|
348
|
+
i0.ɵɵtext(1, "Tous ");
|
|
349
|
+
i0.ɵɵelementEnd();
|
|
350
|
+
} if (rf & 2) {
|
|
351
|
+
const ctx_r77 = i0.ɵɵnextContext(5);
|
|
352
|
+
i0.ɵɵproperty("ngModel", ctx_r77.selectAllSelected)("ngModelOptions", i0.ɵɵpureFunction0(2, _c1));
|
|
353
|
+
} }
|
|
354
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
355
|
+
const _r85 = i0.ɵɵgetCurrentView();
|
|
356
|
+
i0.ɵɵelementStart(0, "mat-option", 43);
|
|
357
|
+
i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r85); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r83 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r83.selectOptionClick($event.source.value, bundle_r69, $event)); });
|
|
358
|
+
i0.ɵɵtext(1);
|
|
359
|
+
i0.ɵɵelementEnd();
|
|
360
|
+
} if (rf & 2) {
|
|
361
|
+
const ogcSelect_r82 = ctx.$implicit;
|
|
362
|
+
const ctx_r78 = i0.ɵɵnextContext(5);
|
|
363
|
+
i0.ɵɵproperty("matTooltip", ctx_r78.getToolTip(ogcSelect_r82))("value", ogcSelect_r82);
|
|
364
|
+
i0.ɵɵadvance(1);
|
|
365
|
+
i0.ɵɵtextInterpolate1("", ogcSelect_r82.title, " ");
|
|
366
|
+
} }
|
|
367
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
i0.ɵɵelementStart(0, "div")(1, "mat-select", 38, 39)(3, "div", 19);
|
|
369
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template, 2, 3, "mat-checkbox", 40);
|
|
370
|
+
i0.ɵɵelementEnd();
|
|
371
|
+
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template, 2, 3, "mat-option", 41);
|
|
372
|
+
i0.ɵɵelementEnd()();
|
|
373
|
+
} if (rf & 2) {
|
|
374
|
+
const bundle_r69 = i0.ɵɵnextContext().$implicit;
|
|
375
|
+
i0.ɵɵadvance(1);
|
|
376
|
+
i0.ɵɵproperty("multiple", bundle_r69.multiple)("placeholder", bundle_r69.title);
|
|
377
|
+
i0.ɵɵadvance(3);
|
|
378
|
+
i0.ɵɵproperty("ngIf", bundle_r69.multiple);
|
|
379
|
+
i0.ɵɵadvance(1);
|
|
380
|
+
i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
|
|
381
|
+
} }
|
|
382
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
383
|
+
const _r91 = i0.ɵɵgetCurrentView();
|
|
384
|
+
i0.ɵɵelementStart(0, "mat-option", 43);
|
|
385
|
+
i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r91); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r89 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r89.selectOptionClick($event.source.value, bundle_r69)); });
|
|
386
|
+
i0.ɵɵtext(1);
|
|
387
|
+
i0.ɵɵelementEnd();
|
|
388
|
+
} if (rf & 2) {
|
|
389
|
+
const ogcSelect_r88 = ctx.$implicit;
|
|
390
|
+
const ctx_r87 = i0.ɵɵnextContext(5);
|
|
391
|
+
i0.ɵɵproperty("matTooltip", ctx_r87.getToolTip(ogcSelect_r88))("value", ogcSelect_r88);
|
|
392
|
+
i0.ɵɵadvance(1);
|
|
393
|
+
i0.ɵɵtextInterpolate1("", ogcSelect_r88.title, " ");
|
|
394
|
+
} }
|
|
395
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
396
|
+
i0.ɵɵelementStart(0, "mat-select", 44);
|
|
397
|
+
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template, 2, 3, "mat-option", 41);
|
|
398
|
+
i0.ɵɵelementEnd();
|
|
399
|
+
} if (rf & 2) {
|
|
400
|
+
const bundle_r69 = i0.ɵɵnextContext().$implicit;
|
|
401
|
+
i0.ɵɵproperty("placeholder", bundle_r69.title);
|
|
402
|
+
i0.ɵɵadvance(1);
|
|
403
|
+
i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
|
|
404
|
+
} }
|
|
405
|
+
function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
406
|
+
i0.ɵɵelementContainerStart(0);
|
|
407
|
+
i0.ɵɵelementStart(1, "h4");
|
|
408
|
+
i0.ɵɵtext(2);
|
|
409
|
+
i0.ɵɵelementEnd();
|
|
410
|
+
i0.ɵɵelementStart(3, "div", 10);
|
|
411
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
|
|
412
|
+
i0.ɵɵelementStart(5, "mat-form-field");
|
|
413
|
+
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template, 6, 4, "div", 34);
|
|
414
|
+
i0.ɵɵtemplate(7, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template, 2, 2, "ng-template", null, 35, i0.ɵɵtemplateRefExtractor);
|
|
415
|
+
i0.ɵɵelementEnd()();
|
|
416
|
+
i0.ɵɵelementContainerEnd();
|
|
417
|
+
} if (rf & 2) {
|
|
418
|
+
const bundle_r69 = ctx.$implicit;
|
|
419
|
+
const _r72 = i0.ɵɵreference(8);
|
|
420
|
+
i0.ɵɵadvance(2);
|
|
421
|
+
i0.ɵɵtextInterpolate(bundle_r69.title);
|
|
422
|
+
i0.ɵɵadvance(2);
|
|
423
|
+
i0.ɵɵproperty("ngIf", bundle_r69.unfiltered && !bundle_r69.multiple);
|
|
424
|
+
i0.ɵɵadvance(1);
|
|
425
|
+
i0.ɵɵstyleProp("width", bundle_r69.width ? bundle_r69.width : undefined, "%");
|
|
426
|
+
i0.ɵɵadvance(1);
|
|
427
|
+
i0.ɵɵproperty("ngIf", bundle_r69.multiple)("ngIfElse", _r72);
|
|
428
|
+
} }
|
|
429
|
+
function OgcFilterSelectionComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
430
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
431
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
432
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_4_div_2_Template, 5, 5, "div", 9);
|
|
433
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template, 9, 6, "ng-container", 1);
|
|
434
|
+
i0.ɵɵelementEnd();
|
|
435
|
+
} if (rf & 2) {
|
|
436
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
437
|
+
i0.ɵɵadvance(2);
|
|
438
|
+
i0.ɵɵproperty("ngIf", ctx_r6.getSelectGroups().length > 1);
|
|
439
|
+
i0.ɵɵadvance(1);
|
|
440
|
+
i0.ɵɵproperty("ngForOf", ctx_r6.currentSelectGroup.computedSelectors);
|
|
441
|
+
} }
|
|
442
|
+
function OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
443
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
444
|
+
i0.ɵɵtext(1);
|
|
445
|
+
i0.ɵɵelementEnd();
|
|
446
|
+
} if (rf & 2) {
|
|
447
|
+
const autocompleteGroup_r96 = ctx.$implicit;
|
|
448
|
+
i0.ɵɵproperty("value", autocompleteGroup_r96);
|
|
449
|
+
i0.ɵɵadvance(1);
|
|
450
|
+
i0.ɵɵtextInterpolate1("", autocompleteGroup_r96.title, " ");
|
|
451
|
+
} }
|
|
452
|
+
function OgcFilterSelectionComponent_div_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
453
|
+
const _r98 = i0.ɵɵgetCurrentView();
|
|
454
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 46);
|
|
455
|
+
i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_5_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r97.currentAutocompleteGroup = $event); });
|
|
456
|
+
i0.ɵɵpipe(3, "translate");
|
|
457
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
|
|
458
|
+
i0.ɵɵelementEnd()()();
|
|
459
|
+
} if (rf & 2) {
|
|
460
|
+
const ctx_r93 = i0.ɵɵnextContext(3);
|
|
461
|
+
i0.ɵɵadvance(2);
|
|
462
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r93.currentAutocompleteGroup);
|
|
463
|
+
i0.ɵɵadvance(2);
|
|
464
|
+
i0.ɵɵproperty("ngForOf", ctx_r93.getAutocompleteGroups());
|
|
465
|
+
} }
|
|
466
|
+
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
467
|
+
const _r103 = i0.ɵɵgetCurrentView();
|
|
468
|
+
i0.ɵɵelementStart(0, "mat-button", 36);
|
|
469
|
+
i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r103); const ctx_r102 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r102.emptyAutocomplete()); });
|
|
470
|
+
i0.ɵɵpipe(1, "translate");
|
|
471
|
+
i0.ɵɵelement(2, "mat-icon", 37);
|
|
472
|
+
i0.ɵɵelementEnd();
|
|
473
|
+
} if (rf & 2) {
|
|
474
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
|
|
475
|
+
} }
|
|
476
|
+
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
477
|
+
i0.ɵɵelementStart(0, "mat-option", 13);
|
|
478
|
+
i0.ɵɵtext(1);
|
|
479
|
+
i0.ɵɵelementEnd();
|
|
480
|
+
} if (rf & 2) {
|
|
481
|
+
const ogcAutocomplete_r108 = ctx.$implicit;
|
|
482
|
+
i0.ɵɵproperty("value", ogcAutocomplete_r108);
|
|
483
|
+
i0.ɵɵadvance(1);
|
|
484
|
+
i0.ɵɵtextInterpolate1(" ", ogcAutocomplete_r108.value, " ");
|
|
485
|
+
} }
|
|
486
|
+
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template(rf, ctx) { if (rf & 1) {
|
|
487
|
+
const _r110 = i0.ɵɵgetCurrentView();
|
|
488
|
+
i0.ɵɵelementStart(0, "mat-form-field");
|
|
489
|
+
i0.ɵɵelement(1, "input", 48, 49);
|
|
490
|
+
i0.ɵɵelementStart(3, "mat-autocomplete", 50, 51);
|
|
491
|
+
i0.ɵɵlistener("optionSelected", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template_mat_autocomplete_optionSelected_3_listener($event) { i0.ɵɵrestoreView(_r110); const ctx_r109 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r109.autocompleteOptionClick($event.option.value)); });
|
|
492
|
+
i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template, 2, 2, "mat-option", 12);
|
|
493
|
+
i0.ɵɵpipe(7, "async");
|
|
494
|
+
i0.ɵɵelementEnd()();
|
|
495
|
+
} if (rf & 2) {
|
|
496
|
+
const _r105 = i0.ɵɵreference(4);
|
|
497
|
+
const bundle_r99 = i0.ɵɵnextContext().$implicit;
|
|
498
|
+
const ctx_r101 = i0.ɵɵnextContext(3);
|
|
499
|
+
i0.ɵɵstyleProp("width", bundle_r99.width ? bundle_r99.width : undefined, "%");
|
|
500
|
+
i0.ɵɵadvance(1);
|
|
501
|
+
i0.ɵɵproperty("matAutocomplete", _r105)("placeholder", bundle_r99.title);
|
|
502
|
+
i0.ɵɵadvance(2);
|
|
503
|
+
i0.ɵɵproperty("displayWith", ctx_r101.displayFn);
|
|
504
|
+
i0.ɵɵadvance(3);
|
|
505
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 6, ctx_r101.filteredOgcAutocomplete[bundle_r99.id]));
|
|
506
|
+
} }
|
|
507
|
+
function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
508
|
+
i0.ɵɵelementContainerStart(0);
|
|
509
|
+
i0.ɵɵelementStart(1, "h4");
|
|
510
|
+
i0.ɵɵtext(2);
|
|
511
|
+
i0.ɵɵelementEnd();
|
|
512
|
+
i0.ɵɵelementStart(3, "div", 10);
|
|
513
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
|
|
514
|
+
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template, 8, 8, "mat-form-field", 47);
|
|
515
|
+
i0.ɵɵelementEnd();
|
|
516
|
+
i0.ɵɵelementContainerEnd();
|
|
517
|
+
} if (rf & 2) {
|
|
518
|
+
const bundle_r99 = ctx.$implicit;
|
|
519
|
+
const ctx_r94 = i0.ɵɵnextContext(3);
|
|
520
|
+
i0.ɵɵadvance(2);
|
|
521
|
+
i0.ɵɵtextInterpolate(bundle_r99.title);
|
|
522
|
+
i0.ɵɵadvance(2);
|
|
523
|
+
i0.ɵɵproperty("ngIf", bundle_r99.unfiltered);
|
|
524
|
+
i0.ɵɵadvance(1);
|
|
525
|
+
i0.ɵɵproperty("ngIf", ctx_r94.filteredOgcAutocomplete[bundle_r99.id]);
|
|
526
|
+
} }
|
|
527
|
+
function OgcFilterSelectionComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
528
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
529
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
530
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_5_div_2_Template, 5, 5, "div", 9);
|
|
531
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template, 6, 3, "ng-container", 1);
|
|
532
|
+
i0.ɵɵelementEnd();
|
|
533
|
+
} if (rf & 2) {
|
|
534
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
535
|
+
i0.ɵɵadvance(2);
|
|
536
|
+
i0.ɵɵproperty("ngIf", ctx_r7.getAutocompleteGroups().length > 1);
|
|
537
|
+
i0.ɵɵadvance(1);
|
|
538
|
+
i0.ɵɵproperty("ngForOf", ctx_r7.currentAutocompleteGroup.computedSelectors);
|
|
539
|
+
} }
|
|
540
|
+
function OgcFilterSelectionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
+
i0.ɵɵelementStart(0, "div");
|
|
542
|
+
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_1_Template, 4, 2, "div", 3);
|
|
543
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_Template, 4, 2, "div", 4);
|
|
544
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_Template, 4, 2, "div", 5);
|
|
545
|
+
i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_Template, 4, 2, "div", 6);
|
|
546
|
+
i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_Template, 4, 2, "div", 7);
|
|
547
|
+
i0.ɵɵelementEnd();
|
|
548
|
+
} if (rf & 2) {
|
|
549
|
+
const selector_r2 = ctx.$implicit;
|
|
550
|
+
i0.ɵɵadvance(1);
|
|
551
|
+
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "pushButton");
|
|
552
|
+
i0.ɵɵadvance(1);
|
|
553
|
+
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "checkbox");
|
|
554
|
+
i0.ɵɵadvance(1);
|
|
555
|
+
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "radioButton");
|
|
556
|
+
i0.ɵɵadvance(1);
|
|
557
|
+
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "select");
|
|
558
|
+
i0.ɵɵadvance(1);
|
|
559
|
+
i0.ɵɵproperty("ngIf", selector_r2.selectorType === "autocomplete");
|
|
560
|
+
} }
|
|
561
|
+
function OgcFilterSelectionComponent_div_2_h4_2_Template(rf, ctx) { if (rf & 1) {
|
|
562
|
+
i0.ɵɵelementStart(0, "h4");
|
|
563
|
+
i0.ɵɵtext(1);
|
|
564
|
+
i0.ɵɵpipe(2, "translate");
|
|
565
|
+
i0.ɵɵelementEnd();
|
|
566
|
+
} if (rf & 2) {
|
|
567
|
+
i0.ɵɵadvance(1);
|
|
568
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.reportingDate"));
|
|
569
|
+
} }
|
|
570
|
+
function OgcFilterSelectionComponent_div_2_h4_3_Template(rf, ctx) { if (rf & 1) {
|
|
571
|
+
i0.ɵɵelementStart(0, "h4");
|
|
572
|
+
i0.ɵɵtext(1);
|
|
573
|
+
i0.ɵɵelementEnd();
|
|
574
|
+
} if (rf & 2) {
|
|
575
|
+
const ctx_r113 = i0.ɵɵnextContext(2);
|
|
576
|
+
i0.ɵɵadvance(1);
|
|
577
|
+
i0.ɵɵtextInterpolate(ctx_r113.currentFilter.title);
|
|
578
|
+
} }
|
|
579
|
+
function OgcFilterSelectionComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
580
|
+
const _r115 = i0.ɵɵgetCurrentView();
|
|
581
|
+
i0.ɵɵelementStart(0, "div");
|
|
582
|
+
i0.ɵɵelement(1, "mat-divider");
|
|
583
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_h4_2_Template, 3, 3, "h4", 2);
|
|
584
|
+
i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_2_h4_3_Template, 2, 1, "h4", 2);
|
|
585
|
+
i0.ɵɵelementStart(4, "igo-ogc-filter-time", 52);
|
|
586
|
+
i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r114 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r114.datasource = $event); })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r116 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r116.currentFilter = $event); })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r117 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r117.changeProperty($event.value, $event.pos)); });
|
|
587
|
+
i0.ɵɵelementEnd()();
|
|
588
|
+
} if (rf & 2) {
|
|
589
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
590
|
+
i0.ɵɵadvance(2);
|
|
591
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.currentFilter.title);
|
|
592
|
+
i0.ɵɵadvance(1);
|
|
593
|
+
i0.ɵɵproperty("ngIf", ctx_r1.currentFilter.title);
|
|
594
|
+
i0.ɵɵadvance(1);
|
|
595
|
+
i0.ɵɵproperty("datasource", ctx_r1.datasource)("currentFilter", ctx_r1.currentFilter);
|
|
596
|
+
} }
|
|
597
|
+
export class OgcFilterSelectionComponent {
|
|
598
|
+
constructor(ogcFilterService, formBuilder, domService, configService, cdRef) {
|
|
599
|
+
this.ogcFilterService = ogcFilterService;
|
|
600
|
+
this.formBuilder = formBuilder;
|
|
601
|
+
this.domService = domService;
|
|
602
|
+
this.configService = configService;
|
|
603
|
+
this.cdRef = cdRef;
|
|
604
|
+
this.checkboxesIndex = 5;
|
|
605
|
+
this.radioButtonsIndex = 5;
|
|
606
|
+
this.baseIndex = 5;
|
|
607
|
+
this.ogcFilterOperator = OgcFilterOperator;
|
|
608
|
+
this.color = 'primary';
|
|
609
|
+
this.selectAllSelected = false;
|
|
610
|
+
this.selectEnabled$ = new BehaviorSubject(undefined);
|
|
611
|
+
this.selectEnableds$ = new BehaviorSubject([]);
|
|
612
|
+
this.autocompleteEnabled$ = new BehaviorSubject(undefined);
|
|
613
|
+
this.filteredOgcAutocomplete = {};
|
|
614
|
+
this.ogcFilterWriter = new OgcFilterWriter();
|
|
615
|
+
this.buildForm();
|
|
616
|
+
}
|
|
617
|
+
get currentFilter() {
|
|
618
|
+
return this._currentFilter;
|
|
619
|
+
}
|
|
620
|
+
set currentFilter(value) {
|
|
621
|
+
this._currentFilter = value;
|
|
622
|
+
if (this._currentFilter?.sliderOptions) {
|
|
623
|
+
this._currentFilter.sliderOptions.enabled = false; // remove slider toggle (animation temporelle)
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
get ogcFiltersSelectors() {
|
|
627
|
+
const ogcSelector = [];
|
|
628
|
+
if (this.datasource?.options?.ogcFilters?.pushButtons) {
|
|
629
|
+
ogcSelector.push(this.datasource?.options?.ogcFilters?.pushButtons);
|
|
630
|
+
}
|
|
631
|
+
if (this.datasource?.options?.ogcFilters?.checkboxes) {
|
|
632
|
+
ogcSelector.push(this.datasource?.options?.ogcFilters?.checkboxes);
|
|
633
|
+
}
|
|
634
|
+
if (this.datasource?.options?.ogcFilters?.radioButtons) {
|
|
635
|
+
ogcSelector.push(this.datasource?.options?.ogcFilters?.radioButtons);
|
|
636
|
+
}
|
|
637
|
+
if (this.datasource?.options?.ogcFilters?.select) {
|
|
638
|
+
ogcSelector.push(this.datasource?.options?.ogcFilters?.select);
|
|
639
|
+
}
|
|
640
|
+
if (this.datasource?.options?.ogcFilters?.autocomplete) {
|
|
641
|
+
ogcSelector.push(this.datasource?.options?.ogcFilters?.autocomplete);
|
|
642
|
+
}
|
|
643
|
+
ogcSelector.sort((a, b) => {
|
|
644
|
+
if (a.order < b.order) {
|
|
645
|
+
return -1;
|
|
646
|
+
}
|
|
647
|
+
if (a.order > b.order) {
|
|
648
|
+
return 1;
|
|
649
|
+
}
|
|
650
|
+
return 0;
|
|
651
|
+
});
|
|
652
|
+
return ogcSelector;
|
|
653
|
+
}
|
|
654
|
+
get currentPushButtonsGroup() {
|
|
655
|
+
return this.form.get('pushButtonsGroup').value;
|
|
656
|
+
}
|
|
657
|
+
set currentPushButtonsGroup(value) {
|
|
658
|
+
this.form.patchValue({ pushButtonsGroup: value });
|
|
659
|
+
}
|
|
660
|
+
get currentCheckboxesGroup() {
|
|
661
|
+
return this.form.get('checkboxesGroup').value;
|
|
662
|
+
}
|
|
663
|
+
set currentCheckboxesGroup(value) {
|
|
664
|
+
this.form.patchValue({ checkboxesGroup: value });
|
|
665
|
+
}
|
|
666
|
+
get currentRadioButtonsGroup() {
|
|
667
|
+
return this.form.get('radioButtonsGroup').value;
|
|
668
|
+
}
|
|
669
|
+
set currentRadioButtonsGroup(value) {
|
|
670
|
+
this.form.patchValue({ radioButtonsGroup: value });
|
|
671
|
+
}
|
|
672
|
+
get currentSelectGroup() {
|
|
673
|
+
return this.form.get('selectGroup').value;
|
|
674
|
+
}
|
|
675
|
+
set currentSelectGroup(value) {
|
|
676
|
+
this.form.patchValue({ selectGroup: value });
|
|
677
|
+
this.cdRef.detectChanges();
|
|
678
|
+
}
|
|
679
|
+
get currentAutocompleteGroup() {
|
|
680
|
+
return this.form.get('autocompleteGroup').value;
|
|
681
|
+
}
|
|
682
|
+
set currentAutocompleteGroup(value) {
|
|
683
|
+
this.form.patchValue({ autocompleteGroup: value });
|
|
684
|
+
this.cdRef.detectChanges();
|
|
685
|
+
}
|
|
686
|
+
get selectEnabled() {
|
|
687
|
+
return this.selectEnabled$.value;
|
|
688
|
+
}
|
|
689
|
+
set selectEnabled(value) {
|
|
690
|
+
this.selectEnabled$.next(value);
|
|
691
|
+
clearTimeout(this.applyFiltersTimeout);
|
|
692
|
+
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
693
|
+
compSelect.selectors?.forEach(selector => {
|
|
694
|
+
value === selector ? selector.enabled = true : selector.enabled = false;
|
|
695
|
+
});
|
|
696
|
+
});
|
|
697
|
+
this.applyFiltersTimeout = setTimeout(() => {
|
|
698
|
+
this.applyFilters();
|
|
699
|
+
}, 750);
|
|
700
|
+
}
|
|
701
|
+
get selectEnableds() {
|
|
702
|
+
return this.selectEnableds$.value;
|
|
703
|
+
}
|
|
704
|
+
set selectEnableds(value) {
|
|
705
|
+
this.selectEnableds$.next(value);
|
|
706
|
+
clearTimeout(this.applyFiltersTimeout);
|
|
707
|
+
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
708
|
+
compSelect.selectors?.forEach(selector => {
|
|
709
|
+
value.includes(selector) ? selector.enabled = true : selector.enabled = false;
|
|
710
|
+
});
|
|
711
|
+
});
|
|
712
|
+
this.applyFiltersTimeout = setTimeout(() => {
|
|
713
|
+
this.applyFilters();
|
|
714
|
+
}, 750);
|
|
715
|
+
}
|
|
716
|
+
get autocompleteEnabled() {
|
|
717
|
+
return this.autocompleteEnabled$.value;
|
|
718
|
+
}
|
|
719
|
+
set autocompleteEnabled(value) {
|
|
720
|
+
this.autocompleteEnabled$.next(value);
|
|
721
|
+
clearTimeout(this.applyFiltersTimeout);
|
|
722
|
+
this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
|
|
723
|
+
compSelect.selectors?.forEach(selector => {
|
|
724
|
+
value === selector.title ? selector.enabled = true : selector.enabled = false;
|
|
725
|
+
});
|
|
726
|
+
});
|
|
727
|
+
this.applyFiltersTimeout = setTimeout(() => {
|
|
728
|
+
this.applyFilters();
|
|
729
|
+
}, 750);
|
|
730
|
+
}
|
|
731
|
+
buildForm() {
|
|
732
|
+
this.form = this.formBuilder.group({
|
|
733
|
+
pushButtons: ['', [Validators.required]],
|
|
734
|
+
radioButtons: ['', [Validators.required]],
|
|
735
|
+
pushButtonsGroup: ['', [Validators.required]],
|
|
736
|
+
checkboxesGroup: ['', [Validators.required]],
|
|
737
|
+
radioButtonsGroup: ['', [Validators.required]],
|
|
738
|
+
selectGroup: ['', [Validators.required]],
|
|
739
|
+
select: ['', [Validators.required]],
|
|
740
|
+
selectMulti: ['', [Validators.required]],
|
|
741
|
+
autocompleteGroup: ['', [Validators.required]],
|
|
742
|
+
autocomplete: ['', [Validators.required]]
|
|
743
|
+
});
|
|
744
|
+
}
|
|
745
|
+
getPushButtonsGroups() {
|
|
746
|
+
if (this.datasource?.options?.ogcFilters?.pushButtons) {
|
|
747
|
+
return this.datasource.options.ogcFilters.pushButtons.groups;
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
getCheckboxesGroups() {
|
|
751
|
+
if (this.datasource?.options?.ogcFilters?.checkboxes) {
|
|
752
|
+
return this.datasource.options.ogcFilters.checkboxes.groups;
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
getRadioButtonsGroups() {
|
|
756
|
+
if (this.datasource?.options?.ogcFilters?.radioButtons) {
|
|
757
|
+
return this.datasource.options.ogcFilters.radioButtons.groups;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
getSelectGroups() {
|
|
761
|
+
if (this.datasource?.options?.ogcFilters?.select) {
|
|
762
|
+
return this.datasource.options.ogcFilters.select.groups;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
getAutocompleteGroups() {
|
|
766
|
+
if (this.datasource?.options?.ogcFilters?.autocomplete) {
|
|
767
|
+
return this.datasource.options.ogcFilters.autocomplete.groups;
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
async ngOnInit() {
|
|
771
|
+
if (this.datasource.options.ogcFilters) {
|
|
772
|
+
if (this.datasource.options.ogcFilters.pushButtons) {
|
|
773
|
+
this.currentPushButtonsGroup =
|
|
774
|
+
this.datasource.options.ogcFilters.pushButtons.groups.find(group => group.enabled) ||
|
|
775
|
+
this.datasource.options.ogcFilters.pushButtons.groups[0];
|
|
776
|
+
}
|
|
777
|
+
if (this.datasource.options.ogcFilters.checkboxes) {
|
|
778
|
+
this.currentCheckboxesGroup =
|
|
779
|
+
this.datasource.options.ogcFilters.checkboxes.groups.find(group => group.enabled) ||
|
|
780
|
+
this.datasource.options.ogcFilters.checkboxes.groups[0];
|
|
781
|
+
}
|
|
782
|
+
if (this.datasource.options.ogcFilters.radioButtons) {
|
|
783
|
+
this.currentRadioButtonsGroup =
|
|
784
|
+
this.datasource.options.ogcFilters.radioButtons.groups.find(group => group.enabled) ||
|
|
785
|
+
this.datasource.options.ogcFilters.radioButtons.groups[0];
|
|
786
|
+
}
|
|
787
|
+
if (this.datasource.options.ogcFilters.select) {
|
|
788
|
+
this.currentSelectGroup =
|
|
789
|
+
this.datasource.options.ogcFilters.select.groups.find(group => group.enabled) ||
|
|
790
|
+
this.datasource.options.ogcFilters.select.groups[0];
|
|
791
|
+
this.getSelectEnabled();
|
|
792
|
+
await this.getSelectDomValues();
|
|
793
|
+
}
|
|
794
|
+
if (this.datasource.options.ogcFilters.autocomplete) {
|
|
795
|
+
this.currentAutocompleteGroup =
|
|
796
|
+
this.datasource.options.ogcFilters.autocomplete.groups.find(group => group.enabled) ||
|
|
797
|
+
this.datasource.options.ogcFilters.autocomplete.groups[0];
|
|
798
|
+
this.getAutocompleteEnabled();
|
|
799
|
+
await this.getAutocompleteDomValues();
|
|
800
|
+
}
|
|
801
|
+
this.applyFilters();
|
|
802
|
+
}
|
|
803
|
+
this.form
|
|
804
|
+
.get('pushButtonsGroup')
|
|
805
|
+
.valueChanges
|
|
806
|
+
.pipe(debounceTime(750))
|
|
807
|
+
.subscribe(() => {
|
|
808
|
+
this.onPushButtonsChangeGroup();
|
|
809
|
+
this.applyFilters();
|
|
810
|
+
});
|
|
811
|
+
this.form
|
|
812
|
+
.get('checkboxesGroup')
|
|
813
|
+
.valueChanges
|
|
814
|
+
.pipe(debounceTime(750))
|
|
815
|
+
.subscribe(() => {
|
|
816
|
+
this.onCheckboxesChangeGroup();
|
|
817
|
+
this.applyFilters();
|
|
818
|
+
});
|
|
819
|
+
this.form
|
|
820
|
+
.get('radioButtonsGroup')
|
|
821
|
+
.valueChanges
|
|
822
|
+
.pipe(debounceTime(750))
|
|
823
|
+
.subscribe(() => {
|
|
824
|
+
this.onRadioButtonsChangeGroup();
|
|
825
|
+
this.applyFilters();
|
|
826
|
+
});
|
|
827
|
+
this.form
|
|
828
|
+
.get('selectGroup')
|
|
829
|
+
.valueChanges
|
|
830
|
+
.pipe(debounceTime(750))
|
|
831
|
+
.subscribe(() => {
|
|
832
|
+
this.onSelectChangeGroup();
|
|
833
|
+
this.applyFilters();
|
|
834
|
+
});
|
|
835
|
+
this.form
|
|
836
|
+
.get('autocompleteGroup')
|
|
837
|
+
.valueChanges
|
|
838
|
+
.pipe(debounceTime(750))
|
|
839
|
+
.subscribe(() => {
|
|
840
|
+
this.onAutocompleteChangeGroup();
|
|
841
|
+
this.applyFilters();
|
|
842
|
+
});
|
|
843
|
+
this.form
|
|
844
|
+
.get('pushButtons')
|
|
845
|
+
.valueChanges
|
|
846
|
+
.pipe(debounceTime(750))
|
|
847
|
+
.subscribe(() => {
|
|
848
|
+
this.applyFilters();
|
|
849
|
+
});
|
|
850
|
+
this.form
|
|
851
|
+
.get('radioButtons')
|
|
852
|
+
.valueChanges
|
|
853
|
+
.pipe(debounceTime(750))
|
|
854
|
+
.subscribe(() => {
|
|
855
|
+
this.applyFilters();
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
getSelectEnabled() {
|
|
859
|
+
const enableds = [];
|
|
860
|
+
let enabled;
|
|
861
|
+
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
862
|
+
if (compSelect.multiple) {
|
|
863
|
+
compSelect.selectors?.forEach(selector => {
|
|
864
|
+
if (selector.enabled) {
|
|
865
|
+
enableds.push(selector);
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
this.selectEnableds = enableds;
|
|
869
|
+
this.form.controls['selectMulti'].setValue(enableds);
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
compSelect.selectors?.forEach(selector => {
|
|
873
|
+
if (selector.enabled) {
|
|
874
|
+
enabled = selector;
|
|
875
|
+
}
|
|
876
|
+
});
|
|
877
|
+
this.form.controls['select'].reset(enabled);
|
|
878
|
+
this.selectEnabled$.subscribe((value) => {
|
|
879
|
+
if (this.form.controls['select'].value !== value) {
|
|
880
|
+
this.form.controls['select'].setValue(value);
|
|
881
|
+
}
|
|
882
|
+
});
|
|
883
|
+
this.selectEnabled = enabled;
|
|
884
|
+
}
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
getAutocompleteEnabled() {
|
|
888
|
+
let enabled;
|
|
889
|
+
this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
|
|
890
|
+
compSelect.selectors?.forEach(selector => {
|
|
891
|
+
if (selector.enabled) {
|
|
892
|
+
const dom = {
|
|
893
|
+
id: selector.filters.expression,
|
|
894
|
+
value: selector.title
|
|
895
|
+
};
|
|
896
|
+
enabled = selector.title;
|
|
897
|
+
this.form.controls['autocomplete'].setValue(dom);
|
|
898
|
+
}
|
|
899
|
+
});
|
|
900
|
+
this.autocompleteEnabled = enabled;
|
|
901
|
+
});
|
|
902
|
+
}
|
|
903
|
+
getToolTip(selector) {
|
|
904
|
+
let toolTip;
|
|
905
|
+
if (selector.tooltip) {
|
|
906
|
+
if (Array.isArray(selector.tooltip)) {
|
|
907
|
+
toolTip = selector.tooltip.join('\n');
|
|
908
|
+
}
|
|
909
|
+
else {
|
|
910
|
+
toolTip = selector.tooltip;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
return toolTip || '';
|
|
914
|
+
}
|
|
915
|
+
async getSelectDomValues() {
|
|
916
|
+
for (const bundle of this.datasource.options.ogcFilters.select.bundles) {
|
|
917
|
+
if (bundle.domSelectors) {
|
|
918
|
+
let domValues;
|
|
919
|
+
for (const domSelector of bundle.domSelectors) {
|
|
920
|
+
let filterDOM;
|
|
921
|
+
for (const domOptions of this.configService.getConfig('dom')) {
|
|
922
|
+
if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
|
|
923
|
+
filterDOM = {
|
|
924
|
+
id: domOptions.id,
|
|
925
|
+
url: domOptions.url,
|
|
926
|
+
name: domOptions.name,
|
|
927
|
+
values: domOptions.values
|
|
928
|
+
};
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
|
|
932
|
+
domValues = filterDOM.values;
|
|
933
|
+
if (domValues) {
|
|
934
|
+
let newBundle = bundle;
|
|
935
|
+
newBundle.selectors = [];
|
|
936
|
+
let selector;
|
|
937
|
+
for (const value of domValues) {
|
|
938
|
+
if (bundle.multiple) {
|
|
939
|
+
let enabled;
|
|
940
|
+
this.selectEnableds?.find(sel => sel.title === value.value) ? enabled = true : enabled = false;
|
|
941
|
+
selector = {
|
|
942
|
+
title: value.value,
|
|
943
|
+
enabled,
|
|
944
|
+
filters: {
|
|
945
|
+
operator: domSelector.operator,
|
|
946
|
+
propertyName: domSelector.propertyName,
|
|
947
|
+
expression: value.id,
|
|
948
|
+
}
|
|
949
|
+
};
|
|
950
|
+
}
|
|
951
|
+
else {
|
|
952
|
+
selector = {
|
|
953
|
+
title: value.value,
|
|
954
|
+
enabled: this.selectEnabled?.title === value.value ?
|
|
955
|
+
true : false,
|
|
956
|
+
filters: {
|
|
957
|
+
operator: domSelector.operator,
|
|
958
|
+
propertyName: domSelector.propertyName,
|
|
959
|
+
expression: value.id,
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
}
|
|
963
|
+
newBundle.selectors.push(selector);
|
|
964
|
+
}
|
|
965
|
+
this.getSelectGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
|
|
966
|
+
.find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
this.getSelectEnabled();
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
async getAutocompleteDomValues() {
|
|
974
|
+
for (const bundle of this.datasource.options.ogcFilters.autocomplete.bundles) {
|
|
975
|
+
if (bundle.domSelectors) {
|
|
976
|
+
let domValues;
|
|
977
|
+
for (const domSelector of bundle.domSelectors) {
|
|
978
|
+
let filterDOM;
|
|
979
|
+
for (const domOptions of this.configService.getConfig('dom')) {
|
|
980
|
+
if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
|
|
981
|
+
filterDOM = {
|
|
982
|
+
id: domOptions.id,
|
|
983
|
+
url: domOptions.url,
|
|
984
|
+
name: domOptions.name,
|
|
985
|
+
values: domOptions.values
|
|
986
|
+
};
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
|
|
990
|
+
domValues = filterDOM.values;
|
|
991
|
+
if (domValues) {
|
|
992
|
+
let newBundle = bundle;
|
|
993
|
+
newBundle.selectors = [];
|
|
994
|
+
let selector;
|
|
995
|
+
for (const value of domValues) {
|
|
996
|
+
selector = {
|
|
997
|
+
title: value.value,
|
|
998
|
+
enabled: this.autocompleteEnabled && this.autocompleteEnabled === value.value ?
|
|
999
|
+
true : false,
|
|
1000
|
+
filters: {
|
|
1001
|
+
operator: domSelector.operator,
|
|
1002
|
+
propertyName: domSelector.propertyName,
|
|
1003
|
+
expression: value.id,
|
|
1004
|
+
}
|
|
1005
|
+
};
|
|
1006
|
+
newBundle.selectors.push(selector);
|
|
1007
|
+
}
|
|
1008
|
+
this.getAutocompleteGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
|
|
1009
|
+
.find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
this.filteredOgcAutocomplete[bundle.id] = new Observable();
|
|
1013
|
+
this.cdRef.detectChanges();
|
|
1014
|
+
this.filteredOgcAutocomplete[bundle.id] = this.form.controls['autocomplete'].valueChanges.pipe(map(value => {
|
|
1015
|
+
if (value.length) {
|
|
1016
|
+
return domValues?.filter((option) => {
|
|
1017
|
+
const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
|
|
1018
|
+
const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
1019
|
+
return featureNameNormalized.includes(filterNormalized);
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
1022
|
+
}));
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
// getButtonStyle(pb: OgcPushButton): {} {
|
|
1027
|
+
// let styles;
|
|
1028
|
+
// if (pb.color) {
|
|
1029
|
+
// styles = {
|
|
1030
|
+
// 'background-color': pb.enabled ? `rgba(${pb.color})` : `rgba(255,255,255,0)`
|
|
1031
|
+
// };
|
|
1032
|
+
// } else {
|
|
1033
|
+
// styles = {
|
|
1034
|
+
// 'background-color': pb.enabled ? 'accent': `rgba(255,255,255,0)`,
|
|
1035
|
+
// 'color': pb.enabled ? `rgba(0,0,0,0.9)` : `rgba(33,33,33,0.38)`
|
|
1036
|
+
// }
|
|
1037
|
+
// }
|
|
1038
|
+
// return styles;
|
|
1039
|
+
// }
|
|
1040
|
+
getButtonColor(pushButton) {
|
|
1041
|
+
let styles;
|
|
1042
|
+
if (pushButton.color && pushButton.enabled) {
|
|
1043
|
+
styles = {
|
|
1044
|
+
'background-color': `rgba(${pushButton.color})`
|
|
1045
|
+
};
|
|
1046
|
+
}
|
|
1047
|
+
return styles;
|
|
1048
|
+
}
|
|
1049
|
+
bundleIsVertical(bundle) {
|
|
1050
|
+
return bundle.vertical ? bundle.vertical : false;
|
|
1051
|
+
}
|
|
1052
|
+
onPushButtonsChangeGroup() {
|
|
1053
|
+
this.getPushButtonsGroups().map(group => group.enabled = false);
|
|
1054
|
+
this.getPushButtonsGroups().find(group => group === this.currentPushButtonsGroup).enabled = true;
|
|
1055
|
+
}
|
|
1056
|
+
onCheckboxesChangeGroup() {
|
|
1057
|
+
this.getCheckboxesGroups().map(group => group.enabled = false);
|
|
1058
|
+
this.getCheckboxesGroups().find(group => group === this.currentCheckboxesGroup).enabled = true;
|
|
1059
|
+
}
|
|
1060
|
+
onRadioButtonsChangeGroup() {
|
|
1061
|
+
this.getRadioButtonsGroups().map(group => group.enabled = false);
|
|
1062
|
+
this.getRadioButtonsGroups().find(group => group === this.currentRadioButtonsGroup).enabled = true;
|
|
1063
|
+
}
|
|
1064
|
+
onSelectChangeGroup() {
|
|
1065
|
+
this.getSelectGroups().map(group => group.enabled = false);
|
|
1066
|
+
this.getSelectGroups().find(group => group === this.currentSelectGroup).enabled = true;
|
|
1067
|
+
}
|
|
1068
|
+
onAutocompleteChangeGroup() {
|
|
1069
|
+
this.getAutocompleteGroups().map(group => group.enabled = false);
|
|
1070
|
+
this.getAutocompleteGroups().find(group => group === this.currentAutocompleteGroup).enabled = true;
|
|
1071
|
+
}
|
|
1072
|
+
onSelectionChange(currentOgcSelection, selectorType) {
|
|
1073
|
+
clearTimeout(this.applyFiltersTimeout);
|
|
1074
|
+
if (selectorType === 'radioButton') {
|
|
1075
|
+
this.emptyRadioButtons();
|
|
1076
|
+
}
|
|
1077
|
+
if (currentOgcSelection) {
|
|
1078
|
+
currentOgcSelection.enabled = !currentOgcSelection.enabled;
|
|
1079
|
+
}
|
|
1080
|
+
this.applyFiltersTimeout = setTimeout(() => {
|
|
1081
|
+
this.applyFilters();
|
|
1082
|
+
}, 750);
|
|
1083
|
+
}
|
|
1084
|
+
emptyRadioButtons() {
|
|
1085
|
+
this.currentRadioButtonsGroup.computedSelectors.forEach(compSelect => {
|
|
1086
|
+
compSelect.selectors.map(selector => selector.enabled = false);
|
|
1087
|
+
this.applyFiltersTimeout = setTimeout(() => {
|
|
1088
|
+
this.applyFilters();
|
|
1089
|
+
}, 750);
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
emptySelect() {
|
|
1093
|
+
this.selectEnabled = undefined;
|
|
1094
|
+
}
|
|
1095
|
+
emptyAutocomplete() {
|
|
1096
|
+
this.autocompleteEnabled = undefined;
|
|
1097
|
+
this.form.controls['autocomplete'].setValue('');
|
|
1098
|
+
this.form.controls['autocomplete'].markAsUntouched();
|
|
1099
|
+
}
|
|
1100
|
+
toggleAllSelection() {
|
|
1101
|
+
if (this.selectAllSelected) {
|
|
1102
|
+
const enableds = [];
|
|
1103
|
+
this.currentSelectGroup.computedSelectors.forEach(compSelect => {
|
|
1104
|
+
compSelect.selectors?.forEach(selector => {
|
|
1105
|
+
enableds.push(selector);
|
|
1106
|
+
});
|
|
1107
|
+
});
|
|
1108
|
+
this.sel.options.forEach((item) => item.select());
|
|
1109
|
+
this.selectEnableds = enableds;
|
|
1110
|
+
}
|
|
1111
|
+
else {
|
|
1112
|
+
this.sel.options.forEach((item) => item.deselect());
|
|
1113
|
+
this.selectEnableds = [];
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
selectOptionClick(value, bundle, event) {
|
|
1117
|
+
if (bundle.multiple) {
|
|
1118
|
+
const enableds = this.selectEnableds;
|
|
1119
|
+
let newStatus = true;
|
|
1120
|
+
this.sel.options.forEach((item) => {
|
|
1121
|
+
if (!item.selected) {
|
|
1122
|
+
newStatus = false;
|
|
1123
|
+
}
|
|
1124
|
+
});
|
|
1125
|
+
this.selectAllSelected = newStatus;
|
|
1126
|
+
if (event.isUserInput) {
|
|
1127
|
+
if (enableds.length) {
|
|
1128
|
+
for (const enabled of enableds) {
|
|
1129
|
+
if (enabled.title === value.title) {
|
|
1130
|
+
if (enabled.enabled && value.enabled) {
|
|
1131
|
+
enableds.splice(enableds.indexOf(enabled), 1);
|
|
1132
|
+
this.selectEnableds = enableds;
|
|
1133
|
+
break;
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
else if (enableds.indexOf(enabled) === enableds.length - 1) {
|
|
1137
|
+
enableds.push(value);
|
|
1138
|
+
this.selectEnableds = enableds;
|
|
1139
|
+
break;
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
enableds.push(value);
|
|
1145
|
+
this.selectEnableds = enableds;
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
this.selectEnabled = value;
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
autocompleteOptionClick(value) {
|
|
1154
|
+
this.autocompleteEnabled = value.value;
|
|
1155
|
+
}
|
|
1156
|
+
displayFn(dom) {
|
|
1157
|
+
return dom ? dom.value : undefined;
|
|
1158
|
+
}
|
|
1159
|
+
applyFilters() {
|
|
1160
|
+
let filterQueryString = '';
|
|
1161
|
+
const conditions = [];
|
|
1162
|
+
const currentGroups = [this.currentPushButtonsGroup, this.currentCheckboxesGroup,
|
|
1163
|
+
this.currentRadioButtonsGroup, this.currentSelectGroup, this.currentAutocompleteGroup];
|
|
1164
|
+
for (const currentGroup of currentGroups) {
|
|
1165
|
+
if (currentGroup.computedSelectors) {
|
|
1166
|
+
currentGroup.computedSelectors.map(selectorBundle => {
|
|
1167
|
+
const bundleCondition = [];
|
|
1168
|
+
selectorBundle.selectors?.filter(ogcSelector => ogcSelector.enabled === true)
|
|
1169
|
+
.forEach(enabledSelector => bundleCondition.push(enabledSelector.filters));
|
|
1170
|
+
if (bundleCondition.length >= 1) {
|
|
1171
|
+
if (bundleCondition.length === 1) {
|
|
1172
|
+
conditions.push(bundleCondition[0]);
|
|
1173
|
+
}
|
|
1174
|
+
else {
|
|
1175
|
+
conditions.push({ logical: selectorBundle.logical, filters: bundleCondition });
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
});
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
if (this.isTemporalOperator() && this._currentFilter.active) {
|
|
1182
|
+
conditions.push(this.datasource.options.ogcFilters.interfaceOgcFilters[0]);
|
|
1183
|
+
}
|
|
1184
|
+
if (conditions.length >= 1) {
|
|
1185
|
+
filterQueryString = this.ogcFilterWriter
|
|
1186
|
+
.buildFilter(conditions.length === 1 ?
|
|
1187
|
+
conditions[0] : { logical: 'And', filters: conditions });
|
|
1188
|
+
}
|
|
1189
|
+
if (this.datasource.options.type === 'wms') {
|
|
1190
|
+
this.ogcFilterService.filterByOgc(this.datasource, filterQueryString);
|
|
1191
|
+
}
|
|
1192
|
+
if (this.datasource.options.type === 'wfs') {
|
|
1193
|
+
// TODO: Check how to prevent wfs to refresh when filter icon is pushed...
|
|
1194
|
+
this.datasource.ol.refresh();
|
|
1195
|
+
}
|
|
1196
|
+
this.datasource.setOgcFilters(this.datasource.options.ogcFilters, true);
|
|
1197
|
+
}
|
|
1198
|
+
isMoreResults(bundle, type) {
|
|
1199
|
+
let selectorsLength = 0;
|
|
1200
|
+
for (const selectors of bundle.selectors) {
|
|
1201
|
+
selectorsLength++;
|
|
1202
|
+
}
|
|
1203
|
+
const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
|
|
1204
|
+
return selectorsLength > index;
|
|
1205
|
+
}
|
|
1206
|
+
displayMoreResults(type) {
|
|
1207
|
+
type === 'radio' ? this.radioButtonsIndex += 5 : this.checkboxesIndex += 5;
|
|
1208
|
+
return;
|
|
1209
|
+
}
|
|
1210
|
+
isLessResults(bundle, type) {
|
|
1211
|
+
let selectorsLength = 0;
|
|
1212
|
+
for (const selectors of bundle.selectors) {
|
|
1213
|
+
selectorsLength++;
|
|
1214
|
+
}
|
|
1215
|
+
const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
|
|
1216
|
+
return this.baseIndex !== index && selectorsLength > this.baseIndex;
|
|
1217
|
+
}
|
|
1218
|
+
displayLessResults(type) {
|
|
1219
|
+
type === 'radio' ? this.radioButtonsIndex = this.baseIndex : this.checkboxesIndex = this.baseIndex;
|
|
1220
|
+
return;
|
|
1221
|
+
}
|
|
1222
|
+
isTemporalOperator() {
|
|
1223
|
+
return (this.currentFilter?.operator?.toLowerCase() ===
|
|
1224
|
+
this.ogcFilterOperator.During.toLowerCase());
|
|
1225
|
+
}
|
|
1226
|
+
changeProperty(value, pos, refreshFilter = true) {
|
|
1227
|
+
const detectedProperty = this.detectProperty(pos);
|
|
1228
|
+
if (detectedProperty) {
|
|
1229
|
+
this.datasource.options.ogcFilters.interfaceOgcFilters.find(filter => filter.filterid === this.currentFilter.filterid)[detectedProperty] = value;
|
|
1230
|
+
if (refreshFilter) {
|
|
1231
|
+
this.applyFilters();
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
detectProperty(pos) {
|
|
1236
|
+
switch (this.currentFilter.operator) {
|
|
1237
|
+
case OgcFilterOperator.PropertyIsNotEqualTo:
|
|
1238
|
+
case OgcFilterOperator.PropertyIsEqualTo:
|
|
1239
|
+
case OgcFilterOperator.PropertyIsGreaterThan:
|
|
1240
|
+
case OgcFilterOperator.PropertyIsGreaterThanOrEqualTo:
|
|
1241
|
+
case OgcFilterOperator.PropertyIsLessThan:
|
|
1242
|
+
case OgcFilterOperator.PropertyIsLessThanOrEqualTo:
|
|
1243
|
+
return 'expression';
|
|
1244
|
+
case OgcFilterOperator.PropertyIsLike:
|
|
1245
|
+
return 'pattern';
|
|
1246
|
+
case OgcFilterOperator.PropertyIsBetween:
|
|
1247
|
+
return pos && pos === 1
|
|
1248
|
+
? 'lowerBoundary'
|
|
1249
|
+
: pos && pos === 2
|
|
1250
|
+
? 'upperBoundary'
|
|
1251
|
+
: undefined;
|
|
1252
|
+
case OgcFilterOperator.During:
|
|
1253
|
+
return pos && pos === 1
|
|
1254
|
+
? 'begin'
|
|
1255
|
+
: pos && pos === 2
|
|
1256
|
+
? 'end'
|
|
1257
|
+
: undefined;
|
|
1258
|
+
default:
|
|
1259
|
+
return;
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
OgcFilterSelectionComponent.ɵfac = function OgcFilterSelectionComponent_Factory(t) { return new (t || OgcFilterSelectionComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterService), i0.ɵɵdirectiveInject(i2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.DOMService), i0.ɵɵdirectiveInject(i4.ConfigService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1264
|
+
OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterSelectionComponent, selectors: [["igo-ogc-filter-selection"]], viewQuery: function OgcFilterSelectionComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1265
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
1266
|
+
} if (rf & 2) {
|
|
1267
|
+
let _t;
|
|
1268
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sel = _t.first);
|
|
1269
|
+
} }, inputs: { refreshFilters: "refreshFilters", datasource: "datasource", map: "map", checkboxesIndex: "checkboxesIndex", radioButtonsIndex: "radioButtonsIndex", baseIndex: "baseIndex", currentFilter: "currentFilter" }, features: [i0.ɵɵProvidersFeature([DOMService])], decls: 3, vars: 3, consts: [[3, "formGroup"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["class", "pushButtonGroups", 4, "ngIf"], ["class", "checkboxGroups", 4, "ngIf"], ["class", "radioButtonGroups", 4, "ngIf"], ["class", "selectGroups", 4, "ngIf"], ["class", "autocompleteGroups", 4, "ngIf"], [1, "pushButtonGroups"], ["class", "groupsSelector", 4, "ngIf"], [1, "groupsSelector"], ["formControlName", "pushButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], ["formControlName", "pushButtons", "appearance", "legacy", "multiple", "true", 1, "mat-typography", 3, "vertical"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change"], [1, "checkboxGroups"], ["formControlName", "checkboxesGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [1, "checkboxes", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change"], ["class", "lessResults mat-typography", 3, "click", 4, "ngIf"], ["class", "moreResults mat-typography", 3, "click", 4, "ngIf"], [1, "lessResults", "mat-typography", 3, "click"], [1, "moreResults", "mat-typography", 3, "click"], [1, "radioButtonGroups"], ["formControlName", "radioButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["formControlName", "radioButtons", 1, "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change"], [1, "selectGroups"], ["formControlName", "selectGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notMulti", ""], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click"], ["svgIcon", "filter-remove"], ["formControlName", "selectMulti", 3, "multiple", "placeholder"], ["selection", ""], [3, "ngModel", "ngModelOptions", "ngModelChange", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "ngModel", "ngModelOptions", "ngModelChange", "change"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange"], ["formControlName", "select", 3, "placeholder"], [1, "autocompleteGroups"], ["formControlName", "autocompleteGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "width", 4, "ngIf"], ["matInput", "", "type", "text", "formControlName", "autocomplete", 1, "autocomplete", 3, "matAutocomplete", "placeholder"], ["autocomplete", ""], [3, "displayWith", "optionSelected"], ["auto", "matAutocomplete", "autocomplete", ""], [3, "datasource", "currentFilter", "datasourceChange", "currentFilterChange", "changeProperty"]], template: function OgcFilterSelectionComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1270
|
+
i0.ɵɵelementStart(0, "form", 0);
|
|
1271
|
+
i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_Template, 6, 5, "div", 1);
|
|
1272
|
+
i0.ɵɵelementEnd();
|
|
1273
|
+
i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 5, 4, "div", 2);
|
|
1274
|
+
} if (rf & 2) {
|
|
1275
|
+
i0.ɵɵproperty("formGroup", ctx.form);
|
|
1276
|
+
i0.ɵɵadvance(1);
|
|
1277
|
+
i0.ɵɵproperty("ngForOf", ctx.ogcFiltersSelectors);
|
|
1278
|
+
i0.ɵɵadvance(1);
|
|
1279
|
+
i0.ɵɵproperty("ngIf", ctx.isTemporalOperator());
|
|
1280
|
+
} }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes[_ngcontent-%COMP%]{flex-wrap:wrap;box-shadow:none}.groupsSelector[_ngcontent-%COMP%]{text-align:center}mat-button-toggle[_ngcontent-%COMP%]{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle[_ngcontent-%COMP%]{width:45%}} .material-tooltip{white-space:pre-wrap}mat-checkbox[_ngcontent-%COMP%], mat-radio-button[_ngcontent-%COMP%]{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox[_ngcontent-%COMP%] label, mat-radio-button[_ngcontent-%COMP%] label{white-space:normal}mat-checkbox[_ngcontent-%COMP%]{vertical-align:middle}mat-button[_ngcontent-%COMP%]{padding-right:10px;cursor:pointer}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:0;margin:initial}"] });
|
|
1281
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
|
|
1282
|
+
type: Component,
|
|
1283
|
+
args: [{ selector: 'igo-ogc-filter-selection', providers: [DOMService], template: "<form [formGroup]=\"form\">\n <div *ngFor=\"let selector of ogcFiltersSelectors\">\n <div class=\"pushButtonGroups\" *ngIf=\"selector.selectorType === 'pushButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getPushButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"pushButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentPushButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getPushButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentPushButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-button-toggle-group\n formControlName=\"pushButtons\" class=\"mat-typography\" appearance=\"legacy\" vertical={{bundleIsVertical(bundle)}} multiple=\"true\">\n <mat-button-toggle *ngFor=\"let ogcPushButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcPushButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [ngStyle]=\"getButtonColor(ogcPushButton)\"\n [checked]=\"ogcPushButton.enabled\" (change)=\"onSelectionChange(ogcPushButton, selector.selectorType)\"\n [value]=\"ogcPushButton\">{{ogcPushButton.title}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"checkboxGroups\" *ngIf=\"selector.selectorType === 'checkbox'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getCheckboxesGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"checkboxesGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentCheckboxesGroup\">\n <mat-option *ngFor=\"let selectorGroup of getCheckboxesGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentCheckboxesGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngFor=\"let ogcCheckbox of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcCheckbox)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcCheckbox.enabled\" (change)=\"onSelectionChange(ogcCheckbox, selector.selectorType)\"\n [value]=\"ogcCheckbox\">{{ogcCheckbox.title}}\n </mat-checkbox>\n </div>\n <p *ngIf=\"isLessResults(bundle, 'checkbox') || isMoreResults(bundle, 'checkbox')\">\n <u *ngIf=\"isLessResults(bundle, 'checkbox')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('checkbox')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'checkbox')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('checkbox')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </ng-container>\n </div>\n\n <div class=\"radioButtonGroups\" *ngIf=\"selector.selectorType === 'radioButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getRadioButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"radioButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentRadioButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getRadioButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentRadioButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-radio-group\n formControlName=\"radioButtons\" class=\"mat-typography\">\n <mat-radio-button *ngIf=\"bundle.unfiltered\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (change)=\"emptyRadioButtons()\">{{ 'igo.geo.filter.resetFilters' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngFor=\"let ogcRadioButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcRadioButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcRadioButton.enabled\" (change)=\"onSelectionChange(ogcRadioButton, selector.selectorType)\"\n [value]=\"ogcRadioButton\">{{ogcRadioButton.title}}\n </mat-radio-button>\n <p *ngIf=\"isLessResults(bundle, 'radio') || isMoreResults(bundle, 'radio')\">\n <u *ngIf=\"isLessResults(bundle, 'radio')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('radio')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'radio')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('radio')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </mat-radio-group>\n </ng-container>\n </div>\n\n <div class=\"selectGroups\" *ngIf=\"selector.selectorType === 'select'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getSelectGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"selectGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentSelectGroup\">\n <mat-option *ngFor=\"let selectorGroup of getSelectGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentSelectGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered && !bundle.multiple\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptySelect()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <div *ngIf=\"bundle.multiple; else notMulti\">\n <mat-select\n #selection [multiple]=\"bundle.multiple\" [placeholder]=\"bundle.title\" formControlName=\"selectMulti\">\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngIf=\"bundle.multiple\"\n [(ngModel)]=\"selectAllSelected\" [ngModelOptions]=\"{standalone: true}\"\n (change)=\"toggleAllSelection()\">Tous\n </mat-checkbox>\n </div>\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (onSelectionChange)=\"selectOptionClick($event.source.value, bundle, $event)\"\n [value]=\"ogcSelect\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </div>\n <ng-template #notMulti>\n <mat-select\n [placeholder]=\"bundle.title\" formControlName=\"select\">\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [value]=\"ogcSelect\" (onSelectionChange)=\"selectOptionClick($event.source.value, bundle)\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </ng-template>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n\n <div class=\"autocompleteGroups\" *ngIf=\"selector.selectorType === 'autocomplete'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getAutocompleteGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"autocompleteGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentAutocompleteGroup\">\n <mat-option *ngFor=\"let autocompleteGroup of getAutocompleteGroups()\"\n [value]=\"autocompleteGroup\">{{autocompleteGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentAutocompleteGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptyAutocomplete()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field *ngIf=\"filteredOgcAutocomplete[bundle.id]\" [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <input matInput type=\"text\" formControlName=\"autocomplete\" #autocomplete class=\"autocomplete\"\n [matAutocomplete]=\"auto\" [placeholder]=\"bundle.title\">\n <mat-autocomplete #auto=\"matAutocomplete\" #autocomplete (optionSelected)=\"autocompleteOptionClick($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let ogcAutocomplete of filteredOgcAutocomplete[bundle.id] | async\" [value]=\"ogcAutocomplete\">\n {{ ogcAutocomplete.value }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n </div>\n</form>\n\n<div *ngIf=\"isTemporalOperator()\">\n <mat-divider></mat-divider>\n <h4 *ngIf=\"!currentFilter.title\">{{ 'igo.geo.filter.reportingDate' | translate }}</h4>\n <h4 *ngIf=\"currentFilter.title\">{{ currentFilter.title }}</h4>\n <igo-ogc-filter-time\n [(datasource)]=\"datasource\"\n [(currentFilter)]=\"currentFilter\"\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\n </igo-ogc-filter-time>\n</div>", styles: [".mat-button-toggle-group{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes{flex-wrap:wrap;box-shadow:none}.groupsSelector{text-align:center}mat-button-toggle{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle ::ng-deep .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle{width:45%}}::ng-deep .material-tooltip{white-space:pre-wrap}mat-checkbox,mat-radio-button{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox ::ng-deep label,mat-radio-button ::ng-deep label{white-space:normal}mat-checkbox{vertical-align:middle}mat-button{padding-right:10px;cursor:pointer}h4{margin:7px;text-align:left}u{cursor:pointer;color:#00f;margin:5px}p{margin:0;margin:initial}\n"] }]
|
|
1284
|
+
}], function () { return [{ type: i1.OGCFilterService }, { type: i2.UntypedFormBuilder }, { type: i3.DOMService }, { type: i4.ConfigService }, { type: i0.ChangeDetectorRef }]; }, { sel: [{
|
|
1285
|
+
type: ViewChild,
|
|
1286
|
+
args: ['selection']
|
|
1287
|
+
}], refreshFilters: [{
|
|
1288
|
+
type: Input
|
|
1289
|
+
}], datasource: [{
|
|
1290
|
+
type: Input
|
|
1291
|
+
}], map: [{
|
|
1292
|
+
type: Input
|
|
1293
|
+
}], checkboxesIndex: [{
|
|
1294
|
+
type: Input
|
|
1295
|
+
}], radioButtonsIndex: [{
|
|
1296
|
+
type: Input
|
|
1297
|
+
}], baseIndex: [{
|
|
1298
|
+
type: Input
|
|
1299
|
+
}], currentFilter: [{
|
|
1300
|
+
type: Input
|
|
1301
|
+
}] }); })();
|
|
1302
1302
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL29nYy1maWx0ZXItc2VsZWN0aW9uL29nYy1maWx0ZXItc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXNlbGVjdGlvbi9vZ2MtZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGNBQWMsQ0FBQztBQVVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJakUsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztJQ2xCdkMsc0NBQzBCO0lBQUEsWUFDMUI7SUFBQSxpQkFBYTs7O0lBRFgseUNBQXVCO0lBQUMsZUFDMUI7SUFEMEIsdURBQzFCOzs7O0lBUk4sK0JBQXNFLHFCQUFBLHFCQUFBO0lBS2hFLHlRQUFtQzs7SUFDbkMsNkdBRWE7SUFDZixpQkFBYSxFQUFBLEVBQUE7OztJQUxYLGVBQTZEO0lBQTdELHFGQUE2RCx5Q0FBQTtJQUV2QixlQUF5QjtJQUF6Qix1REFBeUI7Ozs7SUFVakUsNkNBSTBCO0lBRFUsd1ZBQVUsZUFBQSxzRUFB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O1lBRWIsY0FBYztrQkFBdEIsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxHQUFHO2tCQUFYLEtBQUs7WUFFRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUdGLGFBQWE7a0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IERPTVNlcnZpY2UsIERPTVZhbHVlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgT2djUHVzaEJ1dHRvbixcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcblxufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9nY0ZpbHRlcldyaXRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlcic7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xuaW1wb3J0IHsgT0dDRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2djRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci1zZWxlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgRE9NU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIE9nY0ZpbHRlclNlbGVjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0aW9uJykgc2VsOiBNYXRTZWxlY3Q7XG5cbiAgQElucHV0KCkgcmVmcmVzaEZpbHRlcnM6ICgpID0+IHZvaWQ7XG5cbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XG5cbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XG5cbiAgQElucHV0KCkgY2hlY2tib3hlc0luZGV4ID0gNTtcbiAgQElucHV0KCkgcmFkaW9CdXR0b25zSW5kZXggPSA1O1xuICBASW5wdXQoKSBiYXNlSW5kZXggPSA1O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjdXJyZW50RmlsdGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGaWx0ZXI7XG4gIH1cbiAgc2V0IGN1cnJlbnRGaWx0ZXIodmFsdWUpIHtcbiAgICB0aGlzLl9jdXJyZW50RmlsdGVyID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRGaWx0ZXI/LnNsaWRlck9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucy5lbmFibGVkID0gZmFsc2U7IC8vIHJlbW92ZSBzbGlkZXIgdG9nZ2xlIChhbmltYXRpb24gdGVtcG9yZWxsZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY3VycmVudEZpbHRlcjogYW55O1xuXG4gIHB1YmxpYyBvZ2NGaWx0ZXJPcGVyYXRvciA9IE9nY0ZpbHRlck9wZXJhdG9yO1xuXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwcml2YXRlIG9nY0ZpbHRlcldyaXRlcjogT2djRmlsdGVyV3JpdGVyO1xuICBwdWJsaWMgY29sb3IgPSAncHJpbWFyeSc7XG4gIHB1YmxpYyBzZWxlY3RBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0RW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBzZWxlY3RFbmFibGVkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgcHVibGljIGF1dG9jb21wbGV0ZUVuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuICBwdWJsaWMgZmlsdGVyZWRPZ2NBdXRvY29tcGxldGUgPSB7fTtcblxuICBwdWJsaWMgYXBwbHlGaWx0ZXJzVGltZW91dDtcblxuICBnZXQgb2djRmlsdGVyc1NlbGVjdG9ycygpIHtcbiAgICBjb25zdCBvZ2NTZWxlY3RvciA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICBvZ2NTZWxlY3Rvci5wdXNoKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8ucHVzaEJ1dHRvbnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhc291cmNlPy5vcHRpb25zPy5vZ2NGaWx0ZXJzPy5jaGVja2JveGVzKSB7XG4gICAgICBvZ2NTZWxlY3Rvci5wdXNoKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8uY2hlY2tib3hlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucykge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnNlbGVjdCkge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnNlbGVjdCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSkge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSk7XG4gICAgfVxuICAgIG9nY1NlbGVjdG9yLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLm9yZGVyIDwgYi5vcmRlcikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICBpZiAoYS5vcmRlciA+IGIub3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gb2djU2VsZWN0b3I7XG4gIH1cblxuICBnZXQgY3VycmVudFB1c2hCdXR0b25zR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3B1c2hCdXR0b25zR3JvdXAnKS52YWx1ZTtcbiAgfVxuICBzZXQgY3VycmVudFB1c2hCdXR0b25zR3JvdXAodmFsdWUpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHB1c2hCdXR0b25zR3JvdXA6IHZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDaGVja2JveGVzR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2NoZWNrYm94ZXNHcm91cCcpLnZhbHVlO1xuICB9XG4gIHNldCBjdXJyZW50Q2hlY2tib3hlc0dyb3VwKHZhbHVlKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjaGVja2JveGVzR3JvdXA6IHZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgncmFkaW9CdXR0b25zR3JvdXAnKS52YWx1ZTtcbiAgfVxuICBzZXQgY3VycmVudFJhZGlvQnV0dG9uc0dyb3VwKHZhbHVlKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyByYWRpb0J1dHRvbnNHcm91cDogdmFsdWUgfSk7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RHcm91cCcpLnZhbHVlO1xuICB9XG4gIHNldCBjdXJyZW50U2VsZWN0R3JvdXAodmFsdWUpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdEdyb3VwOiB2YWx1ZSB9KTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50QXV0b2NvbXBsZXRlR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2F1dG9jb21wbGV0ZUdyb3VwJykudmFsdWU7XG4gIH1cbiAgc2V0IGN1cnJlbnRBdXRvY29tcGxldGVHcm91cCh2YWx1ZSkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgYXV0b2NvbXBsZXRlR3JvdXA6IHZhbHVlIH0pO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0RW5hYmxlZCQudmFsdWU7XG4gIH1cblxuICBzZXQgc2VsZWN0RW5hYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCk7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzPy5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgICAgdmFsdWUgPT09IHNlbGVjdG9yID8gc2VsZWN0b3IuZW5hYmxlZCA9IHRydWUgOiBzZWxlY3Rvci5lbmFibGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9LCA3NTApO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEVuYWJsZWRzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEVuYWJsZWRzJC52YWx1ZTtcbiAgfVxuXG4gIHNldCBzZWxlY3RFbmFibGVkcyh2YWx1ZSkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMkLm5leHQodmFsdWUpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQpO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKHNlbGVjdG9yKSA/IHNlbGVjdG9yLmVuYWJsZWQgPSB0cnVlIDogc2VsZWN0b3IuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfSwgNzUwKTtcbiAgfVxuXG4gIGdldCBhdXRvY29tcGxldGVFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQkLnZhbHVlO1xuICB9XG5cbiAgc2V0IGF1dG9jb21wbGV0ZUVuYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQkLm5leHQodmFsdWUpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQpO1xuICAgIHRoaXMuY3VycmVudEF1dG9jb21wbGV0ZUdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgIHZhbHVlID09PSBzZWxlY3Rvci50aXRsZSA/IHNlbGVjdG9yLmVuYWJsZWQgPSB0cnVlIDogc2VsZWN0b3IuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfSwgNzUwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb2djRmlsdGVyU2VydmljZTogT0dDRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLm9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwdXNoQnV0dG9uczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcmFkaW9CdXR0b25zOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwdXNoQnV0dG9uc0dyb3VwOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjaGVja2JveGVzR3JvdXA6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJhZGlvQnV0dG9uc0dyb3VwOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzZWxlY3RHcm91cDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc2VsZWN0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzZWxlY3RNdWx0aTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYXV0b2NvbXBsZXRlR3JvdXA6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGF1dG9jb21wbGV0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXG4gICAgfSk7XG4gIH1cblxuICBnZXRQdXNoQnV0dG9uc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucy5ncm91cHM7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2hlY2tib3hlc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmNoZWNrYm94ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmNoZWNrYm94ZXMuZ3JvdXBzO1xuICAgIH1cbiAgfVxuXG4gIGdldFJhZGlvQnV0dG9uc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMucmFkaW9CdXR0b25zLmdyb3VwcztcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RHcm91cHMoKTogU2VsZWN0b3JHcm91cFtdIHtcbiAgICBpZiAodGhpcy5kYXRhc291cmNlPy5vcHRpb25zPy5vZ2NGaWx0ZXJzPy5zZWxlY3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnNlbGVjdC5ncm91cHM7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXV0b2NvbXBsZXRlR3JvdXBzKCk6IFNlbGVjdG9yR3JvdXBbXSB7XG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8uYXV0b2NvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5hdXRvY29tcGxldGUuZ3JvdXBzO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzKSB7XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucykge1xuICAgICAgICB0aGlzLmN1cnJlbnRQdXNoQnV0dG9uc0dyb3VwID1cbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnB1c2hCdXR0b25zLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucy5ncm91cHNbMF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENoZWNrYm94ZXNHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzLmdyb3Vwc1swXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xuICAgICAgICB0aGlzLmN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5yYWRpb0J1dHRvbnMuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCkgfHxcbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucy5ncm91cHNbMF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5zZWxlY3QpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAgPVxuICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuc2VsZWN0Lmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5zZWxlY3QuZ3JvdXBzWzBdO1xuICAgICAgICB0aGlzLmdldFNlbGVjdEVuYWJsZWQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRTZWxlY3REb21WYWx1ZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5hdXRvY29tcGxldGUuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCkgfHxcbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZS5ncm91cHNbMF07XG4gICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlRW5hYmxlZCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmdldEF1dG9jb21wbGV0ZURvbVZhbHVlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1cbiAgICAuZ2V0KCdwdXNoQnV0dG9uc0dyb3VwJylcbiAgICAudmFsdWVDaGFuZ2VzXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9uUHVzaEJ1dHRvbnNDaGFuZ2VHcm91cCgpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgIC5nZXQoJ2NoZWNrYm94ZXNHcm91cCcpXG4gICAgLnZhbHVlQ2hhbmdlc1xuICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoZWNrYm94ZXNDaGFuZ2VHcm91cCgpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncmFkaW9CdXR0b25zR3JvdXAnKVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblJhZGlvQnV0dG9uc0NoYW5nZUdyb3VwKCk7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZvcm1cbiAgICAgIC5nZXQoJ3NlbGVjdEdyb3VwJylcbiAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2VHcm91cCgpO1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5mb3JtXG4gICAgICAuZ2V0KCdhdXRvY29tcGxldGVHcm91cCcpXG4gICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uQXV0b2NvbXBsZXRlQ2hhbmdlR3JvdXAoKTtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncHVzaEJ1dHRvbnMnKVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncmFkaW9CdXR0b25zJylcbiAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0RW5hYmxlZCgpIHtcbiAgICBjb25zdCBlbmFibGVkcyA9IFtdO1xuICAgIGxldCBlbmFibGVkO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBpZiAoY29tcFNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgICAgaWYgKHNlbGVjdG9yLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGVuYWJsZWRzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMgPSBlbmFibGVkcztcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydzZWxlY3RNdWx0aSddLnNldFZhbHVlKGVuYWJsZWRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzPy5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0b3IuZW5hYmxlZCkge1xuICAgICAgICAgICAgZW5hYmxlZCA9IHNlbGVjdG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snc2VsZWN0J10ucmVzZXQoZW5hYmxlZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZCQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbJ3NlbGVjdCddLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydzZWxlY3QnXS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkID0gZW5hYmxlZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlRW5hYmxlZCgpIHtcbiAgICBsZXQgZW5hYmxlZDtcbiAgICB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cC5jb21wdXRlZFNlbGVjdG9ycy5mb3JFYWNoKGNvbXBTZWxlY3QgPT4ge1xuICAgICAgY29tcFNlbGVjdC5zZWxlY3RvcnM/LmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0b3IuZW5hYmxlZCkge1xuICAgICAgICAgIGNvbnN0IGRvbSA9IHtcbiAgICAgICAgICAgIGlkOiBzZWxlY3Rvci5maWx0ZXJzLmV4cHJlc3Npb24sXG4gICAgICAgICAgICB2YWx1ZTogc2VsZWN0b3IudGl0bGVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGVuYWJsZWQgPSBzZWxlY3Rvci50aXRsZTtcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLnNldFZhbHVlKGRvbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFRvb2xUaXAoc2VsZWN0b3IpOiBzdHJpbmcge1xuICAgIGxldCB0b29sVGlwO1xuICAgIGlmIChzZWxlY3Rvci50b29sdGlwKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3Rvci50b29sdGlwKSkge1xuICAgICAgICB0b29sVGlwID0gc2VsZWN0b3IudG9vbHRpcC5qb2luKCdcXG4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvb2xUaXAgPSBzZWxlY3Rvci50b29sdGlwO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG9vbFRpcCB8fCAnJztcbiAgfVxuXG4gIGFzeW5jIGdldFNlbGVjdERvbVZhbHVlcygpIHtcbiAgICBmb3IgKGNvbnN0IGJ1bmRsZSBvZiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnNlbGVjdC5idW5kbGVzKSB7XG4gICAgICBpZiAoYnVuZGxlLmRvbVNlbGVjdG9ycykge1xuICAgICAgICBsZXQgZG9tVmFsdWVzO1xuICAgICAgICBmb3IgKGNvbnN0IGRvbVNlbGVjdG9yIG9mIGJ1bmRsZS5kb21TZWxlY3RvcnMpIHtcbiAgICAgICAgICBsZXQgZmlsdGVyRE9NO1xuICAgICAgICAgIGZvciAoY29uc3QgZG9tT3B0aW9ucyBvZiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkb20nKSkge1xuICAgICAgICAgICAgaWYgKGRvbVNlbGVjdG9yLmlkID09PSBkb21PcHRpb25zLmlkIHx8IGRvbVNlbGVjdG9yLm5hbWUgPT09IGRvbU9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICBmaWx0ZXJET00gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGRvbU9wdGlvbnMuaWQsXG4gICAgICAgICAgICAgICAgdXJsOiBkb21PcHRpb25zLnVybCxcbiAgICAgICAgICAgICAgICBuYW1lOiBkb21PcHRpb25zLm5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBkb21PcHRpb25zLnZhbHVlc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmaWx0ZXJET00udXJsID8gZG9tVmFsdWVzID0gYXdhaXQgdGhpcy5kb21TZXJ2aWNlLmdldERvbShmaWx0ZXJET00pIGFzIERPTVZhbHVlW10gOlxuICAgICAgICAgICAgZG9tVmFsdWVzID0gZmlsdGVyRE9NLnZhbHVlcztcblxuICAgICAgICAgIGlmIChkb21WYWx1ZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdCdW5kbGUgPSBidW5kbGU7XG4gICAgICAgICAgICBuZXdCdW5kbGUuc2VsZWN0b3JzID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0b3I7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRvbVZhbHVlcykge1xuICAgICAgICAgICAgICBpZiAoYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcz8uZmluZChzZWwgPT4gc2VsLnRpdGxlID09PSB2YWx1ZS52YWx1ZSkgPyBlbmFibGVkID0gdHJ1ZSA6IGVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBkb21TZWxlY3Rvci5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBkb21TZWxlY3Rvci5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IHZhbHVlLmlkLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSB7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLnNlbGVjdEVuYWJsZWQ/LnRpdGxlID09PSB2YWx1ZS52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IGRvbVNlbGVjdG9yLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IGRvbVNlbGVjdG9yLnByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogdmFsdWUuaWQsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuZXdCdW5kbGUuc2VsZWN0b3JzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhuZXdCdW5kbGUuaWQpKS5jb21wdXRlZFNlbGVjdG9yc1xuICAgICAgICAgICAgICAuZmluZChjb21wID0+IGNvbXAudGl0bGUgPT09IG5ld0J1bmRsZS50aXRsZSkuc2VsZWN0b3JzID0gbmV3QnVuZGxlLnNlbGVjdG9ycztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRTZWxlY3RFbmFibGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QXV0b2NvbXBsZXRlRG9tVmFsdWVzKCkge1xuICAgIGZvciAoY29uc3QgYnVuZGxlIG9mIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlLmJ1bmRsZXMpIHtcbiAgICAgIGlmIChidW5kbGUuZG9tU2VsZWN0b3JzKSB7XG4gICAgICAgIGxldCBkb21WYWx1ZXM7XG4gICAgICAgIGZvciAoY29uc3QgZG9tU2VsZWN0b3Igb2YgYnVuZGxlLmRvbVNlbGVjdG9ycykge1xuICAgICAgICAgIGxldCBmaWx0ZXJET007XG4gICAgICAgICAgZm9yIChjb25zdCBkb21PcHRpb25zIG9mIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2RvbScpKSB7XG4gICAgICAgICAgICBpZiAoZG9tU2VsZWN0b3IuaWQgPT09IGRvbU9wdGlvbnMuaWQgfHwgZG9tU2VsZWN0b3IubmFtZSA9PT0gZG9tT3B0aW9ucy5uYW1lKSB7XG4gICAgICAgICAgICAgIGZpbHRlckRPTSA9IHtcbiAgICAgICAgICAgICAgICBpZDogZG9tT3B0aW9ucy5pZCxcbiAgICAgICAgICAgICAgICB1cmw6IGRvbU9wdGlvbnMudXJsLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRvbU9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGRvbU9wdGlvbnMudmFsdWVzXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbHRlckRPTS51cmwgPyBkb21WYWx1ZXMgPSBhd2FpdCB0aGlzLmRvbVNlcnZpY2UuZ2V0RG9tKGZpbHRlckRPTSkgYXMgRE9NVmFsdWVbXSA6XG4gICAgICAgICAgICBkb21WYWx1ZXMgPSBmaWx0ZXJET00udmFsdWVzO1xuXG4gICAgICAgICAgaWYgKGRvbVZhbHVlcykge1xuICAgICAgICAgICAgbGV0IG5ld0J1bmRsZSA9IGJ1bmRsZTtcbiAgICAgICAgICAgIG5ld0J1bmRsZS5zZWxlY3RvcnMgPSBbXTtcbiAgICAgICAgICAgIGxldCBzZWxlY3RvcjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZG9tVmFsdWVzKSB7XG4gICAgICAgICAgICAgIHNlbGVjdG9yID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQgJiYgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID09PSB2YWx1ZS52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IGRvbVNlbGVjdG9yLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBkb21TZWxlY3Rvci5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiB2YWx1ZS5pZCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIG5ld0J1bmRsZS5zZWxlY3RvcnMucHVzaChzZWxlY3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldEF1dG9jb21wbGV0ZUdyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuaWRzLmluY2x1ZGVzKG5ld0J1bmRsZS5pZCkpLmNvbXB1dGVkU2VsZWN0b3JzXG4gICAgICAgICAgICAgIC5maW5kKGNvbXAgPT4gY29tcC50aXRsZSA9PT0gbmV3QnVuZGxlLnRpdGxlKS5zZWxlY3RvcnMgPSBuZXdCdW5kbGUuc2VsZWN0b3JzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPZ2NBdXRvY29tcGxldGVbYnVuZGxlLmlkXSA9IG5ldyBPYnNlcnZhYmxlPGFueVtdPigpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9nY0F1dG9jb21wbGV0ZVtidW5kbGUuaWRdID0gdGhpcy5mb3JtLmNvbnRyb2xzWydhdXRvY29tcGxldGUnXS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBtYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gZG9tVmFsdWVzPy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB2YWx1ZSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQgPSBvcHRpb24udmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmVhdHVyZU5hbWVOb3JtYWxpemVkLmluY2x1ZGVzKGZpbHRlck5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGdldEJ1dHRvblN0eWxlKHBiOiBPZ2NQdXNoQnV0dG9uKToge30ge1xuXG4gIC8vICAgbGV0IHN0eWxlcztcbiAgLy8gICBpZiAocGIuY29sb3IpIHtcbiAgLy8gICAgIHN0eWxlcyA9IHtcbiAgLy8gICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBwYi5lbmFibGVkID8gYHJnYmEoJHtwYi5jb2xvcn0pYCA6IGByZ2JhKDI1NSwyNTUsMjU1LDApYFxuICAvLyAgICAgfTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc3R5bGVzID0ge1xuICAvLyAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHBiLmVuYWJsZWQgPyAnYWNjZW50JzogYHJnYmEoMjU1LDI1NSwyNTUsMClgLFxuICAvLyAgICAgICAnY29sb3InOiBwYi5lbmFibGVkID8gYHJnYmEoMCwwLDAsMC45KWAgOiBgcmdiYSgzMywzMywzMywwLjM4KWBcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHN0eWxlcztcbiAgLy8gfVxuXG4gIGdldEJ1dHRvbkNvbG9yKHB1c2hCdXR0b246IE9nY1B1c2hCdXR0b24pOiB7fSB7XG4gICAgbGV0IHN0eWxlcztcbiAgICBpZiAocHVzaEJ1dHRvbi5jb2xvciAmJiBwdXNoQnV0dG9uLmVuYWJsZWQpIHtcbiAgICAgIHN0eWxlcyA9IHtcbiAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBgcmdiYSgke3B1c2hCdXR0b24uY29sb3J9KWBcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICBidW5kbGVJc1ZlcnRpY2FsKGJ1bmRsZTogT2djU2VsZWN0b3JCdW5kbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYnVuZGxlLnZlcnRpY2FsID8gYnVuZGxlLnZlcnRpY2FsIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9uUHVzaEJ1dHRvbnNDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldFB1c2hCdXR0b25zR3JvdXBzKCkubWFwKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5nZXRQdXNoQnV0dG9uc0dyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAgPT09IHRoaXMuY3VycmVudFB1c2hCdXR0b25zR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoZWNrYm94ZXNDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldENoZWNrYm94ZXNHcm91cHMoKS5tYXAoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCA9IGZhbHNlKTtcbiAgICB0aGlzLmdldENoZWNrYm94ZXNHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwID09PSB0aGlzLmN1cnJlbnRDaGVja2JveGVzR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvblJhZGlvQnV0dG9uc0NoYW5nZUdyb3VwKCkge1xuICAgIHRoaXMuZ2V0UmFkaW9CdXR0b25zR3JvdXBzKCkubWFwKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5nZXRSYWRpb0J1dHRvbnNHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwID09PSB0aGlzLmN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCkuZW5hYmxlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIG9uU2VsZWN0Q2hhbmdlR3JvdXAoKSB7XG4gICAgdGhpcy5nZXRTZWxlY3RHcm91cHMoKS5tYXAoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCA9IGZhbHNlKTtcbiAgICB0aGlzLmdldFNlbGVjdEdyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAgPT09IHRoaXMuY3VycmVudFNlbGVjdEdyb3VwKS5lbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25BdXRvY29tcGxldGVDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldEF1dG9jb21wbGV0ZUdyb3VwcygpLm1hcChncm91cCA9PiBncm91cC5lbmFibGVkID0gZmFsc2UpO1xuICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlR3JvdXBzKCkuZmluZChncm91cCA9PiBncm91cCA9PT0gdGhpcy5jdXJyZW50QXV0b2NvbXBsZXRlR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UoY3VycmVudE9nY1NlbGVjdGlvbj8sIHNlbGVjdG9yVHlwZT8pIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hcHBseUZpbHRlcnNUaW1lb3V0KTtcbiAgICBpZiAoc2VsZWN0b3JUeXBlID09PSAncmFkaW9CdXR0b24nKSB7XG4gICAgICB0aGlzLmVtcHR5UmFkaW9CdXR0b25zKCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPZ2NTZWxlY3Rpb24pIHtcbiAgICAgIGN1cnJlbnRPZ2NTZWxlY3Rpb24uZW5hYmxlZCA9ICFjdXJyZW50T2djU2VsZWN0aW9uLmVuYWJsZWQ7XG4gICAgfVxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9LCA3NTApO1xuICB9XG5cbiAgZW1wdHlSYWRpb0J1dHRvbnMoKSB7XG4gICAgdGhpcy5jdXJyZW50UmFkaW9CdXR0b25zR3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzLm1hcChzZWxlY3RvciA9PiBzZWxlY3Rvci5lbmFibGVkID0gZmFsc2UpO1xuXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0sIDc1MCk7XG4gICB9KTtcbiAgfVxuXG4gIGVtcHR5U2VsZWN0KCkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGVtcHR5QXV0b2NvbXBsZXRlKCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRW5hYmxlZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLm1hcmtBc1VudG91Y2hlZCgpO1xuICB9XG5cbiAgdG9nZ2xlQWxsU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdEFsbFNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBlbmFibGVkcyA9IFtdO1xuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgICAgY29tcFNlbGVjdC5zZWxlY3RvcnM/LmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgICAgIGVuYWJsZWRzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWwub3B0aW9ucy5mb3JFYWNoKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0KCkpO1xuICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbC5vcHRpb25zLmZvckVhY2goKGl0ZW06IE1hdE9wdGlvbikgPT4gaXRlbS5kZXNlbGVjdCgpKTtcbiAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RPcHRpb25DbGljayh2YWx1ZSwgYnVuZGxlLCBldmVudD8pIHtcbiAgICBpZiAoYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBlbmFibGVkcyA9IHRoaXMuc2VsZWN0RW5hYmxlZHM7XG4gICAgICBsZXQgbmV3U3RhdHVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsLm9wdGlvbnMuZm9yRWFjaCgoaXRlbTogTWF0T3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICghaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICAgIG5ld1N0YXR1cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQgPSBuZXdTdGF0dXM7XG4gICAgICBpZiAoZXZlbnQuaXNVc2VySW5wdXQpIHtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgZW5hYmxlZCBvZiBlbmFibGVkcykge1xuICAgICAgICAgICAgaWYgKGVuYWJsZWQudGl0bGUgPT09IHZhbHVlLnRpdGxlKSB7XG4gICAgICAgICAgICAgIGlmIChlbmFibGVkLmVuYWJsZWQgJiYgdmFsdWUuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGVuYWJsZWRzLnNwbGljZShlbmFibGVkcy5pbmRleE9mKGVuYWJsZWQpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVuYWJsZWRzID0gZW5hYmxlZHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5hYmxlZHMuaW5kZXhPZihlbmFibGVkKSA9PT0gZW5hYmxlZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBlbmFibGVkcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5hYmxlZHMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZU9wdGlvbkNsaWNrKHZhbHVlKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID0gdmFsdWUudmFsdWU7XG4gIH1cblxuICBkaXNwbGF5Rm4oZG9tKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZG9tID8gZG9tLnZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnMoKSB7XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRHcm91cHMgPSBbdGhpcy5jdXJyZW50UHVzaEJ1dHRvbnNHcm91cCwgdGhpcy5jdXJyZW50Q2hlY2tib3hlc0dyb3VwLFxuICAgICAgdGhpcy5jdXJyZW50UmFkaW9CdXR0b25zR3JvdXAsIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLCB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cF07XG4gICAgZm9yIChjb25zdCBjdXJyZW50R3JvdXAgb2YgY3VycmVudEdyb3Vwcykge1xuICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb21wdXRlZFNlbGVjdG9ycykge1xuICAgICAgICBjdXJyZW50R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMubWFwKHNlbGVjdG9yQnVuZGxlID0+IHtcbiAgICAgICAgICBjb25zdCBidW5kbGVDb25kaXRpb24gPSBbXTtcbiAgICAgICAgICBzZWxlY3RvckJ1bmRsZS5zZWxlY3RvcnM/LmZpbHRlcihvZ2NTZWxlY3RvciA9PiBvZ2NTZWxlY3Rvci5lbmFibGVkID09PSB0cnVlKVxuICAgICAgICAgIC5mb3JFYWNoKGVuYWJsZWRTZWxlY3RvciA9PiBidW5kbGVDb25kaXRpb24ucHVzaChlbmFibGVkU2VsZWN0b3IuZmlsdGVycykpO1xuICAgICAgICAgIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID49IDEgKSB7XG4gICAgICAgICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaCh7bG9naWNhbDogc2VsZWN0b3JCdW5kbGUubG9naWNhbCwgZmlsdGVyczogYnVuZGxlQ29uZGl0aW9ufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNUZW1wb3JhbE9wZXJhdG9yKCkgJiYgdGhpcy5fY3VycmVudEZpbHRlci5hY3RpdmUpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnNbMF0pO1xuICAgIH1cbiAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLm9nY0ZpbHRlcldyaXRlclxuICAgICAgICAuYnVpbGRGaWx0ZXIoY29uZGl0aW9ucy5sZW5ndGggPT09IDEgP1xuICAgICAgICAgIGNvbmRpdGlvbnNbMF0gOiB7bG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSBhcyBJZ29PZ2NGaWx0ZXJPYmplY3QpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIHRoaXMub2djRmlsdGVyU2VydmljZS5maWx0ZXJCeU9nYyh0aGlzLmRhdGFzb3VyY2UgYXMgV01TRGF0YVNvdXJjZSwgZmlsdGVyUXVlcnlTdHJpbmcgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAvLyBUT0RPOiBDaGVjayBob3cgdG8gcHJldmVudCB3ZnMgdG8gcmVmcmVzaCB3aGVuIGZpbHRlciBpY29uIGlzIHB1c2hlZC4uLlxuICAgICAgdGhpcy5kYXRhc291cmNlLm9sLnJlZnJlc2goKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhc291cmNlLnNldE9nY0ZpbHRlcnModGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycywgdHJ1ZSk7XG4gIH1cblxuICBpc01vcmVSZXN1bHRzKGJ1bmRsZSwgdHlwZSkge1xuICAgIGxldCBzZWxlY3RvcnNMZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3JzIG9mIGJ1bmRsZS5zZWxlY3RvcnMpIHtcbiAgICAgIHNlbGVjdG9yc0xlbmd0aCsrO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHR5cGUgPT09ICdyYWRpbycgPyB0aGlzLnJhZGlvQnV0dG9uc0luZGV4IDogdGhpcy5jaGVja2JveGVzSW5kZXg7XG4gICAgcmV0dXJuIHNlbGVjdG9yc0xlbmd0aCA+IGluZGV4O1xuICB9XG5cbiAgZGlzcGxheU1vcmVSZXN1bHRzKHR5cGUpIHtcbiAgICB0eXBlID09PSAncmFkaW8nID8gdGhpcy5yYWRpb0J1dHRvbnNJbmRleCArPSA1IDogdGhpcy5jaGVja2JveGVzSW5kZXggKz0gNTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpc0xlc3NSZXN1bHRzKGJ1bmRsZSwgdHlwZSkge1xuICAgIGxldCBzZWxlY3RvcnNMZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3JzIG9mIGJ1bmRsZS5zZWxlY3RvcnMpIHtcbiAgICAgIHNlbGVjdG9yc0xlbmd0aCsrO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHR5cGUgPT09ICdyYWRpbycgPyB0aGlzLnJhZGlvQnV0dG9uc0luZGV4IDogdGhpcy5jaGVja2JveGVzSW5kZXg7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUluZGV4ICE9PSBpbmRleCAmJiBzZWxlY3RvcnNMZW5ndGggPiB0aGlzLmJhc2VJbmRleDtcbiAgfVxuXG4gIGRpc3BsYXlMZXNzUmVzdWx0cyh0eXBlKSB7XG4gICAgdHlwZSA9PT0gJ3JhZGlvJyA/IHRoaXMucmFkaW9CdXR0b25zSW5kZXggPSB0aGlzLmJhc2VJbmRleCA6IHRoaXMuY2hlY2tib3hlc0luZGV4ID0gdGhpcy5iYXNlSW5kZXg7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaXNUZW1wb3JhbE9wZXJhdG9yKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXI/Lm9wZXJhdG9yPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgdGhpcy5vZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VQcm9wZXJ0eSh2YWx1ZTogYW55LCBwb3M/OiBudW1iZXIsIHJlZnJlc2hGaWx0ZXIgPSB0cnVlKSB7XG4gICAgY29uc3QgZGV0ZWN0ZWRQcm9wZXJ0eSA9IHRoaXMuZGV0ZWN0UHJvcGVydHkocG9zKTtcbiAgICBpZiAoZGV0ZWN0ZWRQcm9wZXJ0eSkge1xuICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzLmZpbmQoXG4gICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZmlsdGVyaWQgPT09IHRoaXMuY3VycmVudEZpbHRlci5maWx0ZXJpZFxuICAgICAgKVtkZXRlY3RlZFByb3BlcnR5XSA9IHZhbHVlO1xuXG4gICAgICBpZiAoIHJlZnJlc2hGaWx0ZXIgKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGV0ZWN0UHJvcGVydHkocG9zPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudEZpbHRlci5vcGVyYXRvcikge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUbzpcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG86XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbjpcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvOlxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW46XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUbzpcbiAgICAgICAgcmV0dXJuICdleHByZXNzaW9uJztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2U6XG4gICAgICAgIHJldHVybiAncGF0dGVybic7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNCZXR3ZWVuOlxuICAgICAgICByZXR1cm4gcG9zICYmIHBvcyA9PT0gMVxuICAgICAgICAgID8gJ2xvd2VyQm91bmRhcnknXG4gICAgICAgICAgOiBwb3MgJiYgcG9zID09PSAyXG4gICAgICAgICAgPyAndXBwZXJCb3VuZGFyeSdcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nOlxuICAgICAgICByZXR1cm4gcG9zICYmIHBvcyA9PT0gMVxuICAgICAgICAgID8gJ2JlZ2luJ1xuICAgICAgICAgIDogcG9zICYmIHBvcyA9PT0gMlxuICAgICAgICAgID8gJ2VuZCdcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RvciBvZiBvZ2NGaWx0ZXJzU2VsZWN0b3JzXCI+XG4gICAgPGRpdiBjbGFzcz1cInB1c2hCdXR0b25Hcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nXCI+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiICpuZ0lmPVwiZ2V0UHVzaEJ1dHRvbnNHcm91cHMoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHVzaEJ1dHRvbnNHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50UHVzaEJ1dHRvbnNHcm91cFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlbGVjdG9yR3JvdXAgb2YgZ2V0UHVzaEJ1dHRvbnNHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3Rvckdyb3VwXCI+e3tzZWxlY3Rvckdyb3VwLnRpdGxlfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1bmRsZSBvZiBjdXJyZW50UHVzaEJ1dHRvbnNHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInB1c2hCdXR0b25zXCIgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiIGFwcGVhcmFuY2U9XCJsZWdhY3lcIiB2ZXJ0aWNhbD17e2J1bmRsZUlzVmVydGljYWwoYnVuZGxlKX19IG11bHRpcGxlPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgb2djUHVzaEJ1dHRvbiBvZiBidW5kbGUuc2VsZWN0b3JzXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2xUaXAob2djUHVzaEJ1dHRvbilcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCdXR0b25Db2xvcihvZ2NQdXNoQnV0dG9uKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJvZ2NQdXNoQnV0dG9uLmVuYWJsZWRcIiAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKG9nY1B1c2hCdXR0b24sIHNlbGVjdG9yLnNlbGVjdG9yVHlwZSlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1B1c2hCdXR0b25cIj57e29nY1B1c2hCdXR0b24udGl0bGV9fVxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveEdyb3Vwc1wiICpuZ0lmPVwic2VsZWN0b3Iuc2VsZWN0b3JUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiICpuZ0lmPVwiZ2V0Q2hlY2tib3hlc0dyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2JveGVzR3JvdXBcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNlbGVjdFN0eWxlJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgWyh2YWx1ZSldPVwiY3VycmVudENoZWNrYm94ZXNHcm91cFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlbGVjdG9yR3JvdXAgb2YgZ2V0Q2hlY2tib3hlc0dyb3VwcygpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdG9yR3JvdXBcIj57e3NlbGVjdG9yR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRDaGVja2JveGVzR3JvdXAuY29tcHV0ZWRTZWxlY3RvcnNcIj5cbiAgICAgICAgPGg0Pnt7YnVuZGxlLnRpdGxlfX08L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hlcyBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IG9nY0NoZWNrYm94IG9mIGJ1bmRsZS5zZWxlY3RvcnNcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2V0VG9vbFRpcChvZ2NDaGVja2JveClcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwib2djQ2hlY2tib3guZW5hYmxlZFwiIChjaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2Uob2djQ2hlY2tib3gsIHNlbGVjdG9yLnNlbGVjdG9yVHlwZSlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY0NoZWNrYm94XCI+e3tvZ2NDaGVja2JveC50aXRsZX19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKSB8fCBpc01vcmVSZXN1bHRzKGJ1bmRsZSwgJ2NoZWNrYm94JylcIj5cbiAgICAgICAgICA8dSAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxlc3NSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TGVzc1Jlc3VsdHMoJ2NoZWNrYm94JylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheUxlc3NSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdT5cbiAgICAgICAgICA8dSAqbmdJZj1cImlzTW9yZVJlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vcmVSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoJ2NoZWNrYm94JylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFkaW9CdXR0b25Hcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJ1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIiAqbmdJZj1cImdldFJhZGlvQnV0dG9uc0dyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb0J1dHRvbnNHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50UmFkaW9CdXR0b25zR3JvdXBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZWxlY3Rvckdyb3VwIG9mIGdldFJhZGlvQnV0dG9uc0dyb3VwcygpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdG9yR3JvdXBcIj57e3NlbGVjdG9yR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb0J1dHRvbnNcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJidW5kbGUudW5maWx0ZXJlZFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIiAgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImVtcHR5UmFkaW9CdXR0b25zKClcIj57eyAnaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgb2djUmFkaW9CdXR0b24gb2YgYnVuZGxlLnNlbGVjdG9yc1wiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sVGlwKG9nY1JhZGlvQnV0dG9uKVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIiAgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJvZ2NSYWRpb0J1dHRvbi5lbmFibGVkXCIgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZShvZ2NSYWRpb0J1dHRvbiwgc2VsZWN0b3Iuc2VsZWN0b3JUeXBlKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib2djUmFkaW9CdXR0b25cIj57e29nY1JhZGlvQnV0dG9uLnRpdGxlfX1cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPHAgKm5nSWY9XCJpc0xlc3NSZXN1bHRzKGJ1bmRsZSwgJ3JhZGlvJykgfHwgaXNNb3JlUmVzdWx0cyhidW5kbGUsICdyYWRpbycpXCI+XG4gICAgICAgICAgICA8dSAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAncmFkaW8nKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGVzc1Jlc3VsdHMgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGlzcGxheUxlc3NSZXN1bHRzKCdyYWRpbycpXCI+e3sgJ2lnby5nZW8uZmlsdGVyLmRpc3BsYXlMZXNzUmVzdWx0cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvdT5cbiAgICAgICAgICAgIDx1ICpuZ0lmPVwiaXNNb3JlUmVzdWx0cyhidW5kbGUsICdyYWRpbycpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb3JlUmVzdWx0cyBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoJ3JhZGlvJylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC91PlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RHcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3Vwc1NlbGVjdG9yXCIgKm5nSWY9XCJnZXRTZWxlY3RHcm91cHMoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0R3JvdXBcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNlbGVjdFN0eWxlJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgWyh2YWx1ZSldPVwiY3VycmVudFNlbGVjdEdyb3VwXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc2VsZWN0b3JHcm91cCBvZiBnZXRTZWxlY3RHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3Rvckdyb3VwXCI+e3tzZWxlY3Rvckdyb3VwLnRpdGxlfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1bmRsZSBvZiBjdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnNcIj5cbiAgICAgICAgPGg0Pnt7YnVuZGxlLnRpdGxlfX08L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIj5cbiAgICAgICAgICA8bWF0LWJ1dHRvbiAqbmdJZj1cImJ1bmRsZS51bmZpbHRlcmVkICYmICFidW5kbGUubXVsdGlwbGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVtcHR5U2VsZWN0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZmlsdGVyLXJlbW92ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtYnV0dG9uPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbc3R5bGUud2lkdGguJV09XCJidW5kbGUud2lkdGggPyBidW5kbGUud2lkdGggOiB1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidW5kbGUubXVsdGlwbGU7IGVsc2Ugbm90TXVsdGlcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAjc2VsZWN0aW9uIFttdWx0aXBsZV09XCJidW5kbGUubXVsdGlwbGVcIiBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0TXVsdGlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hlcyBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cImJ1bmRsZS5tdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0QWxsU2VsZWN0ZWRcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxTZWxlY3Rpb24oKVwiPlRvdXNcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvZ2NTZWxlY3Qgb2YgYnVuZGxlLnNlbGVjdG9yc1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sVGlwKG9nY1NlbGVjdClcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwRGVsYXk9XCI1MDBcIiBtYXRUb29sdGlwQ2xhc3M9XCJtYXRlcmlhbC10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RPcHRpb25DbGljaygkZXZlbnQuc291cmNlLnZhbHVlLCBidW5kbGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1NlbGVjdFwiPnt7b2djU2VsZWN0LnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RNdWx0aT5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9nY1NlbGVjdCBvZiBidW5kbGUuc2VsZWN0b3JzXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2xUaXAob2djU2VsZWN0KVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBEZWxheT1cIjUwMFwiIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1NlbGVjdFwiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RPcHRpb25DbGljaygkZXZlbnQuc291cmNlLnZhbHVlLCBidW5kbGUpXCI+e3tvZ2NTZWxlY3QudGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZUdyb3Vwc1wiICpuZ0lmPVwic2VsZWN0b3Iuc2VsZWN0b3JUeXBlID09PSAnYXV0b2NvbXBsZXRlJ1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIiAqbmdJZj1cImdldEF1dG9jb21wbGV0ZUdyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdXRvY29tcGxldGVHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50QXV0b2NvbXBsZXRlR3JvdXBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBhdXRvY29tcGxldGVHcm91cCBvZiBnZXRBdXRvY29tcGxldGVHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhdXRvY29tcGxldGVHcm91cFwiPnt7YXV0b2NvbXBsZXRlR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRBdXRvY29tcGxldGVHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiPlxuICAgICAgICAgIDxtYXQtYnV0dG9uICpuZ0lmPVwiYnVuZGxlLnVuZmlsdGVyZWRcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVtcHR5QXV0b2NvbXBsZXRlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZmlsdGVyLXJlbW92ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtYnV0dG9uPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImZpbHRlcmVkT2djQXV0b2NvbXBsZXRlW2J1bmRsZS5pZF1cIiBbc3R5bGUud2lkdGguJV09XCJidW5kbGUud2lkdGggPyBidW5kbGUud2lkdGggOiB1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImF1dG9jb21wbGV0ZVwiICNhdXRvY29tcGxldGUgY2xhc3M9XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCI+XG4gICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgI2F1dG9jb21wbGV0ZSAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlT3B0aW9uQ2xpY2soJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9nY0F1dG9jb21wbGV0ZSBvZiBmaWx0ZXJlZE9nY0F1dG9jb21wbGV0ZVtidW5kbGUuaWRdIHwgYXN5bmNcIiBbdmFsdWVdPVwib2djQXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBvZ2NBdXRvY29tcGxldGUudmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdiAqbmdJZj1cImlzVGVtcG9yYWxPcGVyYXRvcigpXCI+XG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8aDQgKm5nSWY9XCIhY3VycmVudEZpbHRlci50aXRsZVwiPnt7ICdpZ28uZ2VvLmZpbHRlci5yZXBvcnRpbmdEYXRlJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDxoNCAqbmdJZj1cImN1cnJlbnRGaWx0ZXIudGl0bGVcIj57eyBjdXJyZW50RmlsdGVyLnRpdGxlIH19PC9oND5cbiAgPGlnby1vZ2MtZmlsdGVyLXRpbWVcbiAgICBbKGRhdGFzb3VyY2UpXT1cImRhdGFzb3VyY2VcIlxuICAgIFsoY3VycmVudEZpbHRlcildPVwiY3VycmVudEZpbHRlclwiXG4gICAgKGNoYW5nZVByb3BlcnR5KT1cImNoYW5nZVByb3BlcnR5KCRldmVudC52YWx1ZSwgJGV2ZW50LnBvcylcIj5cbiAgPC9pZ28tb2djLWZpbHRlci10aW1lPlxuPC9kaXY+Il19
|