@igo2/geo 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/bundles/igo2-geo.umd.js +2604 -789
  7. package/bundles/igo2-geo.umd.js.map +1 -1
  8. package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +1 -1
  9. package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +1 -1
  10. package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +2 -2
  11. package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +1 -1
  12. package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +1 -1
  13. package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +1 -1
  14. package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +6 -6
  15. package/esm2015/lib/catalog/catalog-library/catalog-library.module.js +1 -1
  16. package/esm2015/lib/catalog/catalog.module.js +1 -1
  17. package/esm2015/lib/catalog/index.js +1 -1
  18. package/esm2015/lib/catalog/shared/catalog.abstract.js +1 -1
  19. package/esm2015/lib/catalog/shared/catalog.enum.js +1 -1
  20. package/esm2015/lib/catalog/shared/catalog.interface.js +1 -1
  21. package/esm2015/lib/catalog/shared/catalog.service.js +5 -2
  22. package/esm2015/lib/catalog/shared/index.js +1 -1
  23. package/esm2015/lib/datasource/datasource.module.js +1 -1
  24. package/esm2015/lib/datasource/index.js +1 -1
  25. package/esm2015/lib/datasource/shared/capabilities.service.js +25 -11
  26. package/esm2015/lib/datasource/shared/datasource.service.js +1 -1
  27. package/esm2015/lib/datasource/shared/datasources/any-datasource.interface.js +1 -1
  28. package/esm2015/lib/datasource/shared/datasources/any-datasource.js +1 -1
  29. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js +1 -1
  30. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +84 -14
  31. package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +1 -1
  32. package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +1 -1
  33. package/esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js +1 -1
  34. package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +1 -1
  35. package/esm2015/lib/datasource/shared/datasources/data.service.js +1 -1
  36. package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
  37. package/esm2015/lib/datasource/shared/datasources/datasource.js +1 -1
  38. package/esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js +1 -1
  39. package/esm2015/lib/datasource/shared/datasources/feature-datasource.js +1 -1
  40. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js +1 -1
  41. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +7 -10
  42. package/esm2015/lib/datasource/shared/datasources/index.js +1 -1
  43. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +1 -1
  44. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +1 -1
  45. package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +1 -1
  46. package/esm2015/lib/datasource/shared/datasources/osm-datasource.js +1 -1
  47. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js +1 -1
  48. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +7 -9
  49. package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js +1 -1
  50. package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js +1 -1
  51. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +1 -1
  52. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +1 -1
  53. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +1 -1
  54. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +3 -1
  55. package/esm2015/lib/datasource/shared/datasources/wfs.service.js +1 -1
  56. package/esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js +1 -1
  57. package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +7 -1
  58. package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +5 -2
  59. package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +1 -1
  60. package/esm2015/lib/datasource/shared/datasources/wmts-datasource.js +1 -1
  61. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +1 -1
  62. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +1 -1
  63. package/esm2015/lib/datasource/shared/index.js +1 -1
  64. package/esm2015/lib/datasource/shared/options/index.js +1 -1
  65. package/esm2015/lib/datasource/shared/options/options-api.interface.js +1 -1
  66. package/esm2015/lib/datasource/shared/options/options-api.providers.js +1 -1
  67. package/esm2015/lib/datasource/shared/options/options-api.service.js +1 -1
  68. package/esm2015/lib/datasource/shared/options/options.service.js +1 -1
  69. package/esm2015/lib/datasource/utils/esri-style-generator.js +1 -1
  70. package/esm2015/lib/datasource/utils/index.js +1 -1
  71. package/esm2015/lib/datasource/utils/tilegrid.js +1 -1
  72. package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +10 -4
  73. package/esm2015/lib/directions/directions-buttons/index.js +1 -1
  74. package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +1 -1
  75. package/esm2015/lib/directions/directions-inputs/index.js +1 -1
  76. package/esm2015/lib/directions/directions-results/directions-results.component.js +1 -1
  77. package/esm2015/lib/directions/directions-results/index.js +1 -1
  78. package/esm2015/lib/directions/directions-sources/directions-source.interface.js +1 -1
  79. package/esm2015/lib/directions/directions-sources/directions-source.js +1 -1
  80. package/esm2015/lib/directions/directions-sources/directions-source.provider.js +1 -1
  81. package/esm2015/lib/directions/directions-sources/index.js +1 -1
  82. package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +1 -1
  83. package/esm2015/lib/directions/directions.component.js +6 -4
  84. package/esm2015/lib/directions/directions.module.js +1 -1
  85. package/esm2015/lib/directions/index.js +1 -1
  86. package/esm2015/lib/directions/shared/directions-source.service.js +1 -1
  87. package/esm2015/lib/directions/shared/directions.enum.js +1 -1
  88. package/esm2015/lib/directions/shared/directions.interface.js +1 -1
  89. package/esm2015/lib/directions/shared/directions.service.js +1 -1
  90. package/esm2015/lib/directions/shared/directions.utils.js +4 -1
  91. package/esm2015/lib/directions/shared/index.js +1 -1
  92. package/esm2015/lib/directions/shared/store.js +1 -1
  93. package/esm2015/lib/download/download-button/download-button.component.js +1 -1
  94. package/esm2015/lib/download/download-button/index.js +1 -1
  95. package/esm2015/lib/download/download.module.js +1 -1
  96. package/esm2015/lib/download/index.js +1 -1
  97. package/esm2015/lib/download/shared/download.interface.js +1 -1
  98. package/esm2015/lib/download/shared/download.service.js +1 -1
  99. package/esm2015/lib/download/shared/index.js +1 -1
  100. package/esm2015/lib/draw/draw/draw-popup.component.js +1 -1
  101. package/esm2015/lib/draw/draw/draw-shorcuts.component.js +1 -1
  102. package/esm2015/lib/draw/draw/draw.component.js +2 -1
  103. package/esm2015/lib/draw/draw/draw.module.js +1 -1
  104. package/esm2015/lib/draw/drawingTool.module.js +1 -1
  105. package/esm2015/lib/draw/index.js +1 -1
  106. package/esm2015/lib/draw/shared/draw-icon.service.js +1 -1
  107. package/esm2015/lib/draw/shared/draw-style.service.js +1 -1
  108. package/esm2015/lib/draw/shared/draw.enum.js +1 -1
  109. package/esm2015/lib/draw/shared/draw.interface.js +1 -1
  110. package/esm2015/lib/draw/shared/draw.utils.js +1 -1
  111. package/esm2015/lib/draw/shared/index.js +1 -1
  112. package/esm2015/lib/feature/feature-details/feature-details.component.js +1 -1
  113. package/esm2015/lib/feature/feature-details/feature-details.directive.js +1 -1
  114. package/esm2015/lib/feature/feature-details/feature-details.module.js +1 -1
  115. package/esm2015/lib/feature/feature-form/feature-form.component.js +1 -1
  116. package/esm2015/lib/feature/feature-form/feature-form.module.js +1 -1
  117. package/esm2015/lib/feature/feature.module.js +1 -1
  118. package/esm2015/lib/feature/index.js +1 -1
  119. package/esm2015/lib/feature/shared/feature.enums.js +1 -1
  120. package/esm2015/lib/feature/shared/feature.interfaces.js +1 -1
  121. package/esm2015/lib/feature/shared/feature.utils.js +2 -1
  122. package/esm2015/lib/feature/shared/index.js +1 -1
  123. package/esm2015/lib/feature/shared/store.js +1 -1
  124. package/esm2015/lib/feature/shared/strategies/in-map-extent.js +17 -4
  125. package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +1 -1
  126. package/esm2015/lib/feature/shared/strategies/index.js +1 -1
  127. package/esm2015/lib/feature/shared/strategies/loading-layer.js +1 -1
  128. package/esm2015/lib/feature/shared/strategies/loading.js +1 -1
  129. package/esm2015/lib/feature/shared/strategies/selection.js +1 -1
  130. package/esm2015/lib/feature/shared/strategies.utils.js +1 -1
  131. package/esm2015/lib/filter/filter.module.js +2 -2
  132. package/esm2015/lib/filter/index.js +1 -1
  133. package/esm2015/lib/filter/ogc-filter-button/index.js +1 -1
  134. package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +15 -1
  135. package/esm2015/lib/filter/ogc-filter-form/index.js +1 -1
  136. package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +1 -1
  137. package/esm2015/lib/filter/ogc-filter-selection/index.js +1 -1
  138. package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +31 -13
  139. package/esm2015/lib/filter/ogc-filter-time/index.js +1 -1
  140. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +1 -1
  141. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +296 -161
  142. package/esm2015/lib/filter/ogc-filterable-form/index.js +1 -1
  143. package/esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js +1 -1
  144. package/esm2015/lib/filter/ogc-filterable-item/index.js +1 -1
  145. package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +1 -1
  146. package/esm2015/lib/filter/ogc-filterable-list/index.js +1 -1
  147. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +1 -1
  148. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +1 -1
  149. package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +1 -1
  150. package/esm2015/lib/filter/shared/index.js +1 -1
  151. package/esm2015/lib/filter/shared/ogc-filter-time.service.js +1 -1
  152. package/esm2015/lib/filter/shared/ogc-filter.enum.js +1 -1
  153. package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
  154. package/esm2015/lib/filter/shared/ogc-filter.js +8 -1
  155. package/esm2015/lib/filter/shared/ogc-filter.service.js +1 -1
  156. package/esm2015/lib/filter/shared/spatial-filter.enum.js +1 -1
  157. package/esm2015/lib/filter/shared/spatial-filter.interface.js +1 -1
  158. package/esm2015/lib/filter/shared/spatial-filter.service.js +1 -1
  159. package/esm2015/lib/filter/shared/time-filter.enum.js +1 -1
  160. package/esm2015/lib/filter/shared/time-filter.interface.js +1 -1
  161. package/esm2015/lib/filter/shared/time-filter.service.js +1 -1
  162. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +1 -1
  163. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +1 -1
  164. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +1 -1
  165. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +1 -1
  166. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +1 -1
  167. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +1 -1
  168. package/esm2015/lib/filter/time-filter-button/index.js +1 -1
  169. package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +1 -1
  170. package/esm2015/lib/filter/time-filter-form/index.js +1 -1
  171. package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +1 -1
  172. package/esm2015/lib/filter/time-filter-item/index.js +1 -1
  173. package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +1 -1
  174. package/esm2015/lib/filter/time-filter-list/index.js +1 -1
  175. package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +1 -1
  176. package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +1 -1
  177. package/esm2015/lib/geo.module.js +1 -1
  178. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +1 -1
  179. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +1 -1
  180. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +1 -1
  181. package/esm2015/lib/geometry/geometry.module.js +1 -1
  182. package/esm2015/lib/geometry/index.js +1 -1
  183. package/esm2015/lib/geometry/shared/controls/draw.js +7 -2
  184. package/esm2015/lib/geometry/shared/controls/index.js +1 -1
  185. package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
  186. package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
  187. package/esm2015/lib/geometry/shared/geometry.errors.js +1 -1
  188. package/esm2015/lib/geometry/shared/geometry.interfaces.js +1 -1
  189. package/esm2015/lib/geometry/shared/geometry.utils.js +1 -1
  190. package/esm2015/lib/geometry/shared/index.js +1 -1
  191. package/esm2015/lib/import-export/export-button/export-button.component.js +1 -1
  192. package/esm2015/lib/import-export/export-button/index.js +1 -1
  193. package/esm2015/lib/import-export/import-export/import-export.component.js +60 -11
  194. package/esm2015/lib/import-export/import-export/index.js +1 -1
  195. package/esm2015/lib/import-export/import-export.module.js +1 -1
  196. package/esm2015/lib/import-export/index.js +1 -1
  197. package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +1 -1
  198. package/esm2015/lib/import-export/shared/export.errors.js +1 -1
  199. package/esm2015/lib/import-export/shared/export.interface.js +1 -1
  200. package/esm2015/lib/import-export/shared/export.service.js +1 -1
  201. package/esm2015/lib/import-export/shared/export.type.js +1 -1
  202. package/esm2015/lib/import-export/shared/export.utils.js +1 -1
  203. package/esm2015/lib/import-export/shared/import.errors.js +1 -1
  204. package/esm2015/lib/import-export/shared/import.interface.js +1 -1
  205. package/esm2015/lib/import-export/shared/import.service.js +1 -1
  206. package/esm2015/lib/import-export/shared/import.utils.js +1 -1
  207. package/esm2015/lib/import-export/shared/index.js +1 -1
  208. package/esm2015/lib/import-export/style-list/index.js +1 -1
  209. package/esm2015/lib/import-export/style-list/style-list.interface.js +1 -1
  210. package/esm2015/lib/import-export/style-list/style-list.module.js +1 -1
  211. package/esm2015/lib/import-export/style-list/style-list.provider.js +1 -1
  212. package/esm2015/lib/import-export/style-list/style-list.service.js +1 -1
  213. package/esm2015/lib/layer/index.js +1 -1
  214. package/esm2015/lib/layer/layer-item/index.js +1 -1
  215. package/esm2015/lib/layer/layer-item/layer-item.component.js +1 -1
  216. package/esm2015/lib/layer/layer-legend/index.js +1 -1
  217. package/esm2015/lib/layer/layer-legend/layer-legend.component.js +20 -21
  218. package/esm2015/lib/layer/layer-legend-item/index.js +1 -1
  219. package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +1 -1
  220. package/esm2015/lib/layer/layer-legend-list/index.js +1 -1
  221. package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +1 -1
  222. package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +1 -1
  223. package/esm2015/lib/layer/layer-list/index.js +1 -1
  224. package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +1 -1
  225. package/esm2015/lib/layer/layer-list/layer-list.component.js +1 -1
  226. package/esm2015/lib/layer/layer-list/layer-list.enum.js +1 -1
  227. package/esm2015/lib/layer/layer-list-tool/index.js +1 -1
  228. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +1 -1
  229. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +1 -1
  230. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +1 -1
  231. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +1 -1
  232. package/esm2015/lib/layer/layer.module.js +1 -1
  233. package/esm2015/lib/layer/shared/clusterParam.js +1 -1
  234. package/esm2015/lib/layer/shared/index.js +1 -1
  235. package/esm2015/lib/layer/shared/layer.enums.js +1 -1
  236. package/esm2015/lib/layer/shared/layer.service.js +1 -1
  237. package/esm2015/lib/layer/shared/layers/any-layer.interface.js +1 -1
  238. package/esm2015/lib/layer/shared/layers/any-layer.js +1 -1
  239. package/esm2015/lib/layer/shared/layers/image-layer.interface.js +1 -1
  240. package/esm2015/lib/layer/shared/layers/image-layer.js +1 -1
  241. package/esm2015/lib/layer/shared/layers/index.js +1 -1
  242. package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
  243. package/esm2015/lib/layer/shared/layers/layer.js +9 -1
  244. package/esm2015/lib/layer/shared/layers/tile-layer.interface.js +1 -1
  245. package/esm2015/lib/layer/shared/layers/tile-layer.js +1 -1
  246. package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
  247. package/esm2015/lib/layer/shared/layers/vector-layer.js +13 -5
  248. package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
  249. package/esm2015/lib/layer/shared/layers/vectortile-layer.js +1 -1
  250. package/esm2015/lib/layer/shared/style.service.js +1 -1
  251. package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
  252. package/esm2015/lib/layer/track-feature-button/index.js +1 -1
  253. package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +1 -1
  254. package/esm2015/lib/layer/utils/image-watcher.js +1 -1
  255. package/esm2015/lib/layer/utils/index.js +1 -1
  256. package/esm2015/lib/layer/utils/layer.utils.js +1 -1
  257. package/esm2015/lib/layer/utils/layerSync-watcher.js +10 -6
  258. package/esm2015/lib/layer/utils/outputLegend.js +1 -1
  259. package/esm2015/lib/layer/utils/tile-watcher.js +1 -1
  260. package/esm2015/lib/layer/utils/vector-watcher.js +1 -1
  261. package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +1 -1
  262. package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +1 -1
  263. package/esm2015/lib/map/baselayers-switcher/index.js +1 -1
  264. package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +1 -1
  265. package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +1 -1
  266. package/esm2015/lib/map/geolocate-button/index.js +1 -1
  267. package/esm2015/lib/map/home-extent-button/home-extent-button.component.js +69 -0
  268. package/esm2015/lib/map/home-extent-button/index.js +2 -0
  269. package/esm2015/lib/map/index.js +3 -1
  270. package/esm2015/lib/map/info-section/index.js +2 -0
  271. package/esm2015/lib/map/info-section/info-section.component.js +36 -0
  272. package/esm2015/lib/map/map-browser/index.js +1 -1
  273. package/esm2015/lib/map/map-browser/map-browser.component.js +2 -2
  274. package/esm2015/lib/map/map-center/index.js +1 -1
  275. package/esm2015/lib/map/map-center/map-center.component.js +2 -2
  276. package/esm2015/lib/map/map.module.js +11 -1
  277. package/esm2015/lib/map/menu-button/index.js +1 -1
  278. package/esm2015/lib/map/menu-button/menu-button.component.js +1 -1
  279. package/esm2015/lib/map/offline-button/index.js +1 -1
  280. package/esm2015/lib/map/offline-button/offline-button.component.js +1 -1
  281. package/esm2015/lib/map/rotation-button/index.js +1 -1
  282. package/esm2015/lib/map/rotation-button/rotation-button.component.js +1 -1
  283. package/esm2015/lib/map/shared/controllers/controller.js +1 -1
  284. package/esm2015/lib/map/shared/controllers/index.js +1 -1
  285. package/esm2015/lib/map/shared/controllers/view.js +1 -1
  286. package/esm2015/lib/map/shared/hover-feature.directive.js +2 -1
  287. package/esm2015/lib/map/shared/index.js +1 -1
  288. package/esm2015/lib/map/shared/map-pointer-position.directive.js +1 -1
  289. package/esm2015/lib/map/shared/map.enums.js +1 -1
  290. package/esm2015/lib/map/shared/map.interface.js +1 -1
  291. package/esm2015/lib/map/shared/map.js +1 -1
  292. package/esm2015/lib/map/shared/map.service.js +1 -1
  293. package/esm2015/lib/map/shared/map.utils.js +1 -1
  294. package/esm2015/lib/map/shared/mapOffline.directive.js +17 -6
  295. package/esm2015/lib/map/shared/projection.interfaces.js +1 -1
  296. package/esm2015/lib/map/shared/projection.service.js +1 -1
  297. package/esm2015/lib/map/shared/projection.utils.js +1 -1
  298. package/esm2015/lib/map/swipe-control/index.js +1 -1
  299. package/esm2015/lib/map/swipe-control/swipe-control.component.js +1 -1
  300. package/esm2015/lib/map/utils/layer-watcher.js +1 -1
  301. package/esm2015/lib/map/zoom-button/index.js +1 -1
  302. package/esm2015/lib/map/zoom-button/zoom-button.component.js +1 -1
  303. package/esm2015/lib/measure/index.js +1 -1
  304. package/esm2015/lib/measure/measure.module.js +1 -1
  305. package/esm2015/lib/measure/measurer/measure-format.pipe.js +1 -1
  306. package/esm2015/lib/measure/measurer/measurer-dialog.component.js +1 -1
  307. package/esm2015/lib/measure/measurer/measurer-item.component.js +1 -1
  308. package/esm2015/lib/measure/measurer/measurer.component.js +7 -1
  309. package/esm2015/lib/measure/measurer/measurer.module.js +1 -1
  310. package/esm2015/lib/measure/shared/index.js +1 -1
  311. package/esm2015/lib/measure/shared/measure.enum.js +1 -1
  312. package/esm2015/lib/measure/shared/measure.interfaces.js +1 -1
  313. package/esm2015/lib/measure/shared/measure.utils.js +1 -1
  314. package/esm2015/lib/metadata/index.js +1 -1
  315. package/esm2015/lib/metadata/metadata-button/index.js +1 -1
  316. package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +1 -1
  317. package/esm2015/lib/metadata/metadata.module.js +1 -1
  318. package/esm2015/lib/metadata/shared/index.js +1 -1
  319. package/esm2015/lib/metadata/shared/metadata.interface.js +1 -1
  320. package/esm2015/lib/metadata/shared/metadata.service.js +1 -1
  321. package/esm2015/lib/overlay/index.js +1 -1
  322. package/esm2015/lib/overlay/overlay.module.js +1 -1
  323. package/esm2015/lib/overlay/shared/index.js +1 -1
  324. package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +1 -1
  325. package/esm2015/lib/overlay/shared/overlay.directive.js +1 -1
  326. package/esm2015/lib/overlay/shared/overlay.enum.js +1 -1
  327. package/esm2015/lib/overlay/shared/overlay.js +1 -1
  328. package/esm2015/lib/overlay/shared/overlay.service.js +1 -1
  329. package/esm2015/lib/overlay/shared/overlay.utils.js +1 -1
  330. package/esm2015/lib/print/index.js +1 -1
  331. package/esm2015/lib/print/print/print.component.js +1 -1
  332. package/esm2015/lib/print/print-form/index.js +1 -1
  333. package/esm2015/lib/print/print-form/print-form.component.js +1 -1
  334. package/esm2015/lib/print/print.module.js +1 -1
  335. package/esm2015/lib/print/shared/index.js +1 -1
  336. package/esm2015/lib/print/shared/print.interface.js +1 -1
  337. package/esm2015/lib/print/shared/print.service.js +1 -1
  338. package/esm2015/lib/print/shared/print.type.js +1 -1
  339. package/esm2015/lib/query/index.js +1 -1
  340. package/esm2015/lib/query/query.module.js +1 -1
  341. package/esm2015/lib/query/shared/index.js +1 -1
  342. package/esm2015/lib/query/shared/query-search-source.js +1 -1
  343. package/esm2015/lib/query/shared/query-search-source.providers.js +1 -1
  344. package/esm2015/lib/query/shared/query.directive.js +4 -1
  345. package/esm2015/lib/query/shared/query.enums.js +1 -1
  346. package/esm2015/lib/query/shared/query.interfaces.js +1 -1
  347. package/esm2015/lib/query/shared/query.service.js +35 -13
  348. package/esm2015/lib/query/shared/query.utils.js +1 -1
  349. package/esm2015/lib/search/index.js +1 -1
  350. package/esm2015/lib/search/search-bar/search-bar.component.js +4 -2
  351. package/esm2015/lib/search/search-bar/search-bar.module.js +1 -1
  352. package/esm2015/lib/search/search-bar/search-url-param.directive.js +1 -1
  353. package/esm2015/lib/search/search-results/search-results-add-button.component.js +7 -7
  354. package/esm2015/lib/search/search-results/search-results-item.component.js +1 -1
  355. package/esm2015/lib/search/search-results/search-results.component.js +1 -1
  356. package/esm2015/lib/search/search-results/search-results.module.js +1 -1
  357. package/esm2015/lib/search/search-selector/search-selector.component.js +1 -1
  358. package/esm2015/lib/search/search-selector/search-selector.module.js +1 -1
  359. package/esm2015/lib/search/search-settings/search-settings.component.js +1 -1
  360. package/esm2015/lib/search/search-settings/search-settings.module.js +1 -1
  361. package/esm2015/lib/search/search.module.js +1 -1
  362. package/esm2015/lib/search/shared/index.js +1 -1
  363. package/esm2015/lib/search/shared/search-pointer-summary.directive.js +2 -1
  364. package/esm2015/lib/search/shared/search-source-service.providers.js +1 -1
  365. package/esm2015/lib/search/shared/search-source.service.js +1 -1
  366. package/esm2015/lib/search/shared/search.enums.js +1 -1
  367. package/esm2015/lib/search/shared/search.interfaces.js +1 -1
  368. package/esm2015/lib/search/shared/search.service.js +1 -1
  369. package/esm2015/lib/search/shared/search.utils.js +1 -1
  370. package/esm2015/lib/search/shared/sources/cadastre.js +1 -1
  371. package/esm2015/lib/search/shared/sources/cadastre.providers.js +1 -1
  372. package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +1 -1
  373. package/esm2015/lib/search/shared/sources/coordinates.js +1 -1
  374. package/esm2015/lib/search/shared/sources/coordinates.providers.js +1 -1
  375. package/esm2015/lib/search/shared/sources/icherche.interfaces.js +1 -1
  376. package/esm2015/lib/search/shared/sources/icherche.js +1 -1
  377. package/esm2015/lib/search/shared/sources/icherche.providers.js +1 -1
  378. package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +1 -1
  379. package/esm2015/lib/search/shared/sources/ilayer.js +1 -1
  380. package/esm2015/lib/search/shared/sources/ilayer.providers.js +1 -1
  381. package/esm2015/lib/search/shared/sources/index.js +1 -1
  382. package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +1 -1
  383. package/esm2015/lib/search/shared/sources/nominatim.js +2 -2
  384. package/esm2015/lib/search/shared/sources/nominatim.providers.js +1 -1
  385. package/esm2015/lib/search/shared/sources/source.interfaces.js +1 -1
  386. package/esm2015/lib/search/shared/sources/source.js +2 -2
  387. package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +1 -1
  388. package/esm2015/lib/search/shared/sources/storedqueries.js +2 -2
  389. package/esm2015/lib/search/shared/sources/storedqueries.providers.js +1 -1
  390. package/esm2015/lib/toast/index.js +1 -1
  391. package/esm2015/lib/toast/toast.component.js +1 -1
  392. package/esm2015/lib/toast/toast.module.js +1 -1
  393. package/esm2015/lib/utils/commonVectorStyle.interface.js +1 -1
  394. package/esm2015/lib/utils/commonVectorStyle.js +1 -1
  395. package/esm2015/lib/utils/googleLinks.js +1 -1
  396. package/esm2015/lib/utils/id-generator.js +1 -1
  397. package/esm2015/lib/utils/index.js +1 -1
  398. package/esm2015/lib/utils/osmLinks.js +1 -1
  399. package/esm2015/lib/wkt/index.js +1 -1
  400. package/esm2015/lib/wkt/shared/index.js +1 -1
  401. package/esm2015/lib/wkt/shared/wkt.service.js +15 -15
  402. package/esm2015/lib/wkt/wkt.module.js +1 -1
  403. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +56 -0
  404. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +38 -0
  405. package/esm2015/lib/workspace/confirmation-popup/index.js +3 -0
  406. package/esm2015/lib/workspace/index.js +2 -1
  407. package/esm2015/lib/workspace/shared/edition-workspace.js +271 -0
  408. package/esm2015/lib/workspace/shared/edition-workspace.service.js +619 -0
  409. package/esm2015/lib/workspace/shared/feature-workspace.js +18 -1
  410. package/esm2015/lib/workspace/shared/feature-workspace.service.js +27 -6
  411. package/esm2015/lib/workspace/shared/index.js +3 -1
  412. package/esm2015/lib/workspace/shared/wfs-workspace.js +18 -1
  413. package/esm2015/lib/workspace/shared/wfs-workspace.service.js +27 -5
  414. package/esm2015/lib/workspace/shared/wms-workspace.service.js +59 -15
  415. package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
  416. package/esm2015/lib/workspace/widgets/index.js +1 -1
  417. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +1 -1
  418. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +1 -1
  419. package/esm2015/lib/workspace/widgets/widgets.js +1 -1
  420. package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +40 -10
  421. package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +1 -1
  422. package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +22 -8
  423. package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +1 -1
  424. package/esm2015/lib/workspace/workspace.module.js +19 -7
  425. package/esm2015/public_api.js +1 -1
  426. package/fesm2015/igo2-geo.js +2025 -398
  427. package/fesm2015/igo2-geo.js.map +1 -1
  428. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -0
  429. package/lib/datasource/shared/datasources/datasource.interface.d.ts +44 -0
  430. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
  431. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +1 -1
  432. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -1
  433. package/lib/directions/directions.component.d.ts +2 -1
  434. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -0
  435. package/lib/filter/shared/ogc-filter.interface.d.ts +1 -0
  436. package/lib/geometry/shared/controls/draw.d.ts +8 -4
  437. package/lib/geometry/shared/controls/modify.d.ts +3 -4
  438. package/lib/geometry/shared/controls/slice.d.ts +3 -4
  439. package/lib/layer/shared/layers/layer.d.ts +6 -0
  440. package/lib/layer/shared/layers/layer.interface.d.ts +8 -0
  441. package/lib/layer/shared/layers/vector-layer.d.ts +2 -1
  442. package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -0
  443. package/lib/map/home-extent-button/index.d.ts +1 -0
  444. package/lib/map/index.d.ts +2 -0
  445. package/lib/map/info-section/index.d.ts +1 -0
  446. package/lib/map/info-section/info-section.component.d.ts +7 -0
  447. package/lib/map/map.module.d.ts +19 -17
  448. package/lib/map/shared/mapOffline.directive.d.ts +1 -0
  449. package/lib/query/shared/query.interfaces.d.ts +1 -0
  450. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -0
  451. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -0
  452. package/lib/workspace/confirmation-popup/index.d.ts +2 -0
  453. package/lib/workspace/index.d.ts +1 -0
  454. package/lib/workspace/shared/edition-workspace.d.ts +81 -0
  455. package/lib/workspace/shared/edition-workspace.service.d.ts +45 -0
  456. package/lib/workspace/shared/feature-workspace.d.ts +3 -0
  457. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -0
  458. package/lib/workspace/shared/index.d.ts +2 -0
  459. package/lib/workspace/shared/wfs-workspace.d.ts +3 -0
  460. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -0
  461. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -0
  462. package/lib/workspace/shared/workspace.utils.d.ts +3 -2
  463. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +10 -3
  464. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -1
  465. package/lib/workspace/workspace.module.d.ts +8 -5
  466. package/ngcc.config.js +3 -3
  467. package/package.json +4 -4
  468. package/style/geo.theming.scss +12 -11
@@ -10,7 +10,7 @@ import * as i1$3 from '@angular/material/list';
10
10
  import { MatListModule } from '@angular/material/list';
11
11
  import * as i3 from '@angular/material/tooltip';
12
12
  import { MatTooltipModule } from '@angular/material/tooltip';
13
- import * as i6$1 from '@igo2/common';
13
+ import * as i6 from '@igo2/common';
14
14
  import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer, IgoEntityModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
15
15
  import * as i2 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
@@ -85,7 +85,7 @@ import olFormatMVT from 'ol/format/MVT';
85
85
  import { __decorate, __awaiter } from 'tslib';
86
86
  import { Cacheable } from 'ts-cacheable';
87
87
  import { optionsFromCapabilities } from 'ol/source/WMTS.js';
88
- import * as i6 from '@igo2/auth';
88
+ import * as i5 from '@igo2/auth';
89
89
  import { AuthService } from '@igo2/auth';
90
90
  import OlDragBoxInteraction from 'ol/interaction/DragBox';
91
91
  import olLayerVectorTile from 'ol/layer/VectorTile';
@@ -108,15 +108,15 @@ import * as i11 from '@angular/material/checkbox';
108
108
  import { MatCheckboxModule } from '@angular/material/checkbox';
109
109
  import * as i10 from '@angular/material/divider';
110
110
  import { MatDividerModule } from '@angular/material/divider';
111
- import * as i5 from '@angular/material/input';
111
+ import * as i5$1 from '@angular/material/input';
112
112
  import { MatInputModule } from '@angular/material/input';
113
- import * as i5$1 from '@angular/material/menu';
113
+ import * as i5$2 from '@angular/material/menu';
114
114
  import { MatMenuModule } from '@angular/material/menu';
115
115
  import * as i22 from '@angular/material/slide-toggle';
116
116
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
117
117
  import * as i13$1 from '@angular/material/slider';
118
118
  import { MatSliderModule, MatSlider } from '@angular/material/slider';
119
- import * as i6$2 from '@angular/material/autocomplete';
119
+ import * as i6$1 from '@angular/material/autocomplete';
120
120
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
121
121
  import * as i18 from '@angular/material/button-toggle';
122
122
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
@@ -156,6 +156,7 @@ import html2canvas from 'html2canvas';
156
156
  import * as JSZip from 'jszip';
157
157
  import * as i2$2 from '@angular/cdk/drag-drop';
158
158
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
159
+ import Collection from 'ol/Collection';
159
160
 
160
161
  class MetadataService {
161
162
  constructor() { }
@@ -1252,6 +1253,10 @@ class OgcFilterWriter {
1252
1253
  return conditions;
1253
1254
  }
1254
1255
  formatProcessedOgcFilter(processedFilter, layersOrTypenames) {
1256
+ if (!processedFilter) {
1257
+ return undefined;
1258
+ }
1259
+ ;
1255
1260
  let appliedFilter = '';
1256
1261
  if (processedFilter.length === 0 && layersOrTypenames.indexOf(',') === -1) {
1257
1262
  appliedFilter = processedFilter;
@@ -1271,6 +1276,9 @@ class OgcFilterWriter {
1271
1276
  if (!value) {
1272
1277
  return defaultValue;
1273
1278
  }
1279
+ else if (value === 'today') {
1280
+ return undefined;
1281
+ }
1274
1282
  else if (moment$3(value).isValid()) {
1275
1283
  return value;
1276
1284
  }
@@ -1324,7 +1332,7 @@ const jsonRegex = new RegExp(/(.*)?json(.*)?/gi);
1324
1332
  * @param ogcFilters OgcFiltersOptions
1325
1333
  * @returns A string representing the datasource options, based on filter and views
1326
1334
  */
1327
- function buildUrl(options, extent, proj, ogcFilters) {
1335
+ function buildUrl(options, extent, proj, ogcFilters, randomParam) {
1328
1336
  const paramsWFS = options.paramsWFS;
1329
1337
  const queryStringValues = formatWFSQueryString(options, undefined, options.paramsWFS.srsName);
1330
1338
  let igoFilters;
@@ -1344,6 +1352,9 @@ function buildUrl(options, extent, proj, ogcFilters) {
1344
1352
  const patternFilter = /(filter|bbox)=.*/gi;
1345
1353
  baseUrl = patternFilter.test(paramsWFS.xmlFilter) ? `${baseUrl}&${paramsWFS.xmlFilter}` : baseUrl;
1346
1354
  options.download = Object.assign({}, options.download, { dynamicUrl: baseUrl });
1355
+ if (randomParam) {
1356
+ baseUrl += `$&_t${new Date().getTime()}`;
1357
+ }
1347
1358
  return baseUrl.replace(/&&/g, '&');
1348
1359
  }
1349
1360
  /**
@@ -1558,6 +1569,12 @@ class WMSDataSource extends DataSource {
1558
1569
  || initOgcFilters.radioButtons || initOgcFilters.select)
1559
1570
  ? false
1560
1571
  : true;
1572
+ if (initOgcFilters.advancedOgcFilters && initOgcFilters.filters) {
1573
+ const filterDuring = initOgcFilters.filters;
1574
+ if (filterDuring.calendarModeYear) {
1575
+ initOgcFilters.advancedOgcFilters = false;
1576
+ }
1577
+ }
1561
1578
  if (initOgcFilters.pushButtons) {
1562
1579
  initOgcFilters.pushButtons.selectorType = 'pushButton';
1563
1580
  }
@@ -1846,7 +1863,9 @@ class LayerSyncWatcher extends Watcher {
1846
1863
  const layerType = layerToApply.ol.getProperties().sourceOptions.type;
1847
1864
  layerToApply.dataSource.setOgcFilters(ogcFilters, false);
1848
1865
  if (layerType === 'wfs') {
1849
- layerToApply.ol.getSource().refresh();
1866
+ if (ogcFilters !== layerToApply.dataSource.ogcFilters$.value) {
1867
+ layerToApply.ol.getSource().refresh();
1868
+ }
1850
1869
  }
1851
1870
  if (layerType === 'wms') {
1852
1871
  let appliedOgcFilter;
@@ -1872,8 +1891,10 @@ class LayerSyncWatcher extends Watcher {
1872
1891
  l.bidirectionnal !== false && l.linkedIds.indexOf(currentLinkedId) !== -1) {
1873
1892
  const layerType = layer.ol.getProperties().sourceOptions.type;
1874
1893
  if (layerType === 'wfs') {
1875
- layer.dataSource.setOgcFilters(ogcFilters, true);
1876
- layer.ol.getSource().refresh();
1894
+ if (ogcFilters !== layer.dataSource.ogcFilters$.value) {
1895
+ layer.dataSource.setOgcFilters(ogcFilters, true);
1896
+ layer.ol.getSource().refresh();
1897
+ }
1877
1898
  }
1878
1899
  if (layerType === 'wms') {
1879
1900
  let appliedOgcFilter;
@@ -1914,7 +1935,7 @@ class LayerSyncWatcher extends Watcher {
1914
1935
  });
1915
1936
  if (childLayer) {
1916
1937
  childLayer.dataSource.setTimeFilter(timeFilter, false);
1917
- const appliedTimeFilter = this.ol.get('values_').source.getParams().TIME;
1938
+ const appliedTimeFilter = this.ol.getSource().getParams().TIME;
1918
1939
  childLayer.dataSource.ol.updateParams({ TIME: appliedTimeFilter });
1919
1940
  }
1920
1941
  });
@@ -1930,7 +1951,7 @@ class LayerSyncWatcher extends Watcher {
1930
1951
  parentLayer.options.linkedLayers.links.map(l => {
1931
1952
  if (l.properties && l.properties.indexOf(LinkedProperties.TIMEFILTER) !== -1 &&
1932
1953
  l.bidirectionnal !== false && l.linkedIds.indexOf(currentLinkedId) !== -1) {
1933
- const appliedTimeFilter = this.ol.get('values_').source.getParams().TIME;
1954
+ const appliedTimeFilter = this.ol.getSource().getParams().TIME;
1934
1955
  parentLayer.dataSource.ol.updateParams({ TIME: appliedTimeFilter });
1935
1956
  parentLayer.dataSource.setTimeFilter(timeFilter, true);
1936
1957
  }
@@ -2607,6 +2628,14 @@ class Layer {
2607
2628
  : true;
2608
2629
  this.ol.set('_layer', this, true);
2609
2630
  }
2631
+ /**
2632
+ * Define if a layer is generated by code OR defined by layer/context user layer.
2633
+ * Useful for filtering layers list in mapOffline.directive or in the sharemap...
2634
+ * return false by default.
2635
+ */
2636
+ get isIgoInternalLayer() {
2637
+ return this.options.isIgoInternalLayer || false;
2638
+ }
2610
2639
  get id() {
2611
2640
  return this.options.id || this.dataSource.id;
2612
2641
  }
@@ -2891,14 +2920,15 @@ class VectorLayer extends Layer {
2891
2920
  * @param proj the projection to retrieve the data
2892
2921
  * @param success success callback
2893
2922
  * @param failure failure callback
2923
+ * @param randomParam random parameter to ensure cache is not causing problems in retrieving new data
2894
2924
  */
2895
- customWFSLoader(vectorSource, options, interceptor, extent, resolution, proj, success, failure) {
2925
+ customWFSLoader(vectorSource, options, interceptor, extent, resolution, proj, success, failure, randomParam) {
2896
2926
  {
2897
2927
  const paramsWFS = options.paramsWFS;
2898
2928
  const wfsProj = paramsWFS.srsName ? new olProjection({ code: paramsWFS.srsName }) : proj;
2899
2929
  const currentExtent = olproj.transformExtent(extent, proj, wfsProj);
2900
2930
  paramsWFS.srsName = paramsWFS.srsName || proj.getCode();
2901
- const url = buildUrl(options, currentExtent, wfsProj, options.ogcFilters);
2931
+ const url = buildUrl(options, currentExtent, wfsProj, options.ogcFilters, randomParam);
2902
2932
  let startIndex = 0;
2903
2933
  if (paramsWFS.version === '2.0.0' && paramsWFS.maxFeatures > defaultMaxFeatures) {
2904
2934
  const nbOfFeature = 1000;
@@ -2930,6 +2960,7 @@ class VectorLayer extends Layer {
2930
2960
  * @param failure failure callback
2931
2961
  */
2932
2962
  getFeatures(vectorSource, interceptor, extent, dataProjection, featureProjection, url, threshold, success, failure) {
2963
+ const idAssociatedCall = this.dataSource.mostRecentIdCallOGCFilter;
2933
2964
  const xhr = new XMLHttpRequest();
2934
2965
  const alteredUrlWithKeyAuth = interceptor.alterUrlWithKeyAuth(url);
2935
2966
  let modifiedUrl = url;
@@ -2954,8 +2985,14 @@ class VectorLayer extends Layer {
2954
2985
  /*if (features.length === 0 || features.length < threshold ) {
2955
2986
  console.log('No more data to download at this resolution');
2956
2987
  }*/
2957
- vectorSource.addFeatures(features);
2958
- success(features);
2988
+ // Avoids retrieving an older call that took longer to be process
2989
+ if (idAssociatedCall === this.dataSource.mostRecentIdCallOGCFilter) {
2990
+ vectorSource.addFeatures(features);
2991
+ success(features);
2992
+ }
2993
+ else {
2994
+ success([]);
2995
+ }
2959
2996
  }
2960
2997
  else {
2961
2998
  onError();
@@ -3058,6 +3095,7 @@ class WFSDataSource extends DataSource {
3058
3095
  this.options = options;
3059
3096
  this.wfsService = wfsService;
3060
3097
  this.authInterceptor = authInterceptor;
3098
+ this.mostRecentIdCallOGCFilter = 0;
3061
3099
  this.ogcFilters$ = new BehaviorSubject(undefined);
3062
3100
  const ogcFilters = this.options.ogcFilters;
3063
3101
  const fieldNameGeometry = this.options.paramsWFS.fieldNameGeometry || defaultFieldNameGeometry;
@@ -3106,6 +3144,7 @@ class WFSDataSource extends DataSource {
3106
3144
  }
3107
3145
  setOgcFilters(ogcFilters, triggerEvent = false) {
3108
3146
  this.ogcFilters = ogcFilters;
3147
+ this.mostRecentIdCallOGCFilter += 1;
3109
3148
  if (triggerEvent) {
3110
3149
  this.ogcFilters$.next(this.ogcFilters);
3111
3150
  }
@@ -3443,26 +3482,96 @@ class ArcGISRestDataSource extends DataSource {
3443
3482
  if (legendInfo === undefined || legend.length > 0) {
3444
3483
  return legend;
3445
3484
  }
3446
- const id = parseInt(this.options.layer, 10);
3447
- const lyr = legendInfo.layers.find(layer => layer.layerId === id);
3448
- if (!lyr) {
3485
+ if (!legendInfo) {
3449
3486
  return;
3450
3487
  }
3451
3488
  let htmlString = '<table>';
3452
- for (const lyrLegend of lyr.legend) {
3453
- const modifiedUrl = this.options.url.replace('FeatureServer', 'MapServer');
3454
- const src = `${modifiedUrl}/${lyr.layerId}/images/${lyrLegend.url}`;
3455
- const label = lyrLegend.label.replace('<Null>', 'Null');
3456
- htmlString +=
3457
- `<tr><td align='left'><img src="` +
3458
- src +
3459
- `" alt ='' /></td><td>` +
3460
- label +
3461
- '</td></tr>';
3489
+ let src;
3490
+ let label;
3491
+ let svg;
3492
+ if (legendInfo.legend) {
3493
+ for (const legendElement of legendInfo.legend) {
3494
+ src = this.htmlImgSrc(legendElement.contentType, legendElement.imageData);
3495
+ label = legendElement.label ? legendElement.label.replace('<Null>', 'Null') : '';
3496
+ htmlString +=
3497
+ `<tr><td align='left'><img src="` +
3498
+ src +
3499
+ `" alt ='' /></td><td class="mat-typography">` +
3500
+ label +
3501
+ '</td></tr>';
3502
+ }
3503
+ }
3504
+ else if (legendInfo.type === "uniqueValue") {
3505
+ for (const legendElement of legendInfo.uniqueValueInfos) {
3506
+ label = legendElement.label.replace('<Null>', 'Null');
3507
+ if (legendElement.symbol.type === 'esriPMS') {
3508
+ src = this.htmlImgSrc(legendElement.symbol.contentType, legendElement.symbol.imageData);
3509
+ htmlString +=
3510
+ `<tr><td align='left'><img src="` +
3511
+ src +
3512
+ `" alt ='' /></td><td class="mat-typography">` +
3513
+ label +
3514
+ '</td></tr>';
3515
+ }
3516
+ else if (legendElement.symbol.type !== 'esriPMS') {
3517
+ svg = this.createSVG(legendElement.symbol);
3518
+ htmlString += `<tr><td align='left'>` + svg + `</td><td class="mat-typography">` + label + '</td></tr>';
3519
+ }
3520
+ }
3521
+ }
3522
+ else if (legendInfo.type === "simple") {
3523
+ label = legendInfo.label ? legendInfo.label.replace('<Null>', 'Null') : '';
3524
+ if (legendInfo.symbol.type === 'esriPMS') {
3525
+ src = this.htmlImgSrc(legendInfo.symbol.contentType, legendInfo.symbol.imageData);
3526
+ htmlString +=
3527
+ `<tr><td align='left'><img src="` +
3528
+ src +
3529
+ `" alt ='' /></td><td class="mat-typography">` +
3530
+ label +
3531
+ '</td></tr>';
3532
+ }
3533
+ else if (legendInfo.symbol.type !== 'esriPMS') {
3534
+ svg = this.createSVG(legendInfo.symbol);
3535
+ htmlString += `<tr><td align='left'>` + svg + `</td><td class="mat-typography">` + label + '</td></tr>';
3536
+ }
3462
3537
  }
3463
3538
  htmlString += '</table>';
3464
3539
  return [{ html: htmlString }];
3465
3540
  }
3541
+ htmlImgSrc(contentType, imageData) {
3542
+ return `data:${contentType};base64,${imageData}`;
3543
+ }
3544
+ createSVG(symbol) {
3545
+ let svg = '';
3546
+ const color = symbol.color ? symbol.color : [0, 0, 0, 0];
3547
+ if (symbol.type === 'esriSLS') {
3548
+ const width = symbol.width ? symbol.width : 0;
3549
+ const stroke = `stroke:rgba(` + color[0] + ',' + color[1] + ',' + color[2] + ',' + color[3] + ')';
3550
+ const strokeWidth = `stroke-width:` + width;
3551
+ if (symbol.style === 'esriSLSSolid') {
3552
+ svg = `<svg height="30" width="30"><line x1="0" y1="15" x2="30" y2="15" style="` + stroke + ';' + strokeWidth + `"/></svg>`;
3553
+ }
3554
+ else if (symbol.style === 'esriSLSDash') {
3555
+ const strokeDashArray = `stroke-dasharray="5,5"`;
3556
+ svg = `<svg height="30" width="30"><line x1="0" y1="15" x2="30" y2="15" style="` + stroke + ';' + strokeWidth + `" ` + strokeDashArray + `/></svg>`;
3557
+ }
3558
+ }
3559
+ else if (symbol.style === 'esriSMSCircle' || symbol.style === 'esriSFSSolid') {
3560
+ const outlineColor = symbol.outline.color;
3561
+ const outlineWidth = symbol.outline.width;
3562
+ const size = symbol.size;
3563
+ const stroke = `stroke:rgba(` + outlineColor[0] + ',' + outlineColor[1] + ',' + outlineColor[2] + ',' + outlineColor[3] + ')';
3564
+ const strokeWidth = `stroke-width:` + outlineWidth;
3565
+ const fill = `fill:rgba(` + color[0] + ',' + color[1] + ',' + color[2] + ',' + color[3] + ')';
3566
+ if (symbol.style === 'esriSMSCircle') {
3567
+ svg = `<svg height="30" width="30"><circle cx="15" cy="15" r="` + size / 2 + `" style="` + stroke + ';' + strokeWidth + ';' + fill + `"/></svg>`;
3568
+ }
3569
+ else {
3570
+ svg = `<svg height="30" width="30"><rect x="5" y="5" width="20" height="20" style ="` + stroke + ';' + strokeWidth + ';' + fill + `"/></svg>`;
3571
+ }
3572
+ }
3573
+ return svg;
3574
+ }
3466
3575
  onUnwatch() { }
3467
3576
  }
3468
3577
 
@@ -3495,25 +3604,22 @@ class ImageArcGISRestDataSource extends DataSource {
3495
3604
  });
3496
3605
  }
3497
3606
  getLegend() {
3498
- var _a, _b;
3499
- const legendInfo = ((_a = this.options.options) === null || _a === void 0 ? void 0 : _a.legendInfo) || ((_b = this.params) === null || _b === void 0 ? void 0 : _b.legendInfo);
3607
+ const legendInfo = this.options.legendInfo;
3500
3608
  const legend = super.getLegend();
3501
3609
  if (legendInfo === undefined || this.options.layer === undefined || legend.length > 0) {
3502
3610
  return legend;
3503
3611
  }
3504
- const id = parseInt(this.options.layer, 10);
3505
- const lyr = legendInfo.layers.find(layer => layer.layerId === id);
3506
- if (!lyr) {
3612
+ if (!legendInfo) {
3507
3613
  return;
3508
3614
  }
3509
3615
  let htmlString = '<table>';
3510
- for (const lyrLegend of lyr.legend) {
3511
- const src = `${this.options.url}/${lyr.layerId}/images/${lyrLegend.url}`;
3512
- const label = lyrLegend.label.replace('<Null>', 'Null');
3616
+ for (const legendElement of legendInfo.legend) {
3617
+ const src = `${this.options.url}/${legendInfo.layerId}/images/${legendElement.url}`;
3618
+ const label = legendElement.label.replace('<Null>', 'Null');
3513
3619
  htmlString +=
3514
3620
  `<tr><td align='left'><img src="` +
3515
3621
  src +
3516
- `" alt ='' /></td><td>` +
3622
+ `" alt ='' /></td><td class="mat-typography">` +
3517
3623
  label +
3518
3624
  '</td></tr>';
3519
3625
  }
@@ -3546,22 +3652,20 @@ class TileArcGISRestDataSource extends DataSource {
3546
3652
  getLegend() {
3547
3653
  const legendInfo = this.options.legendInfo;
3548
3654
  const legend = super.getLegend();
3549
- if (legendInfo === undefined || legend.length > 0) {
3655
+ if (legendInfo === undefined || this.options.layer === undefined || legend.length > 0) {
3550
3656
  return legend;
3551
3657
  }
3552
- const id = parseInt(this.options.layer, 10);
3553
- const lyr = legendInfo.layers.find(layer => layer.layerId === id);
3554
- if (!lyr) {
3658
+ if (!legendInfo) {
3555
3659
  return;
3556
3660
  }
3557
3661
  let htmlString = '<table>';
3558
- for (const lyrLegend of lyr.legend) {
3559
- const src = `${this.options.url}/${lyr.layerId}/images/${lyrLegend.url}`;
3560
- const label = lyrLegend.label.replace('<Null>', 'Null');
3662
+ for (const legendElement of legendInfo.legend) {
3663
+ const src = `${this.options.url}/${legendInfo.layerId}/images/${legendElement.url}`;
3664
+ const label = legendElement.label.replace('<Null>', 'Null');
3561
3665
  htmlString +=
3562
3666
  `<tr><td align='left'><img src="` +
3563
3667
  src +
3564
- `" alt ='' /></td><td>` +
3668
+ `" alt ='' /></td><td class="mat-typography">` +
3565
3669
  label +
3566
3670
  '</td></tr>';
3567
3671
  }
@@ -4287,12 +4391,25 @@ class CapabilitiesService {
4287
4391
  });
4288
4392
  return ObjectUtils.mergeDeep(options, baseOptions);
4289
4393
  }
4290
- parseArcgisOptions(baseOptions, arcgisOptions, serviceCapabilities, legend) {
4394
+ parseArcgisOptions(baseOptions, arcgisOptions, legend, serviceCapabilities) {
4395
+ var _a;
4291
4396
  const title = arcgisOptions.name;
4292
- const legendInfo = legend.layers ? legend : undefined;
4293
- const styleGenerator = new EsriStyleGenerator();
4294
- const units = arcgisOptions.units === 'esriMeters' ? 'm' : 'degrees';
4295
- const style = styleGenerator.generateStyle(arcgisOptions, units);
4397
+ let legendInfo;
4398
+ if (legend.layers) {
4399
+ legendInfo = legend.layers.find(x => x.layerName === title);
4400
+ }
4401
+ else if ((_a = arcgisOptions.drawingInfo) === null || _a === void 0 ? void 0 : _a.renderer) {
4402
+ legendInfo = arcgisOptions.drawingInfo.renderer;
4403
+ }
4404
+ else {
4405
+ legendInfo = undefined;
4406
+ }
4407
+ let style;
4408
+ if (arcgisOptions.drawingInfo) {
4409
+ const styleGenerator = new EsriStyleGenerator();
4410
+ const units = arcgisOptions.units === 'esriMeters' ? 'm' : 'degrees';
4411
+ style = styleGenerator.generateStyle(arcgisOptions, units);
4412
+ }
4296
4413
  const attributions = new olAttribution({
4297
4414
  target: arcgisOptions.copyrightText
4298
4415
  });
@@ -4314,10 +4431,9 @@ class CapabilitiesService {
4314
4431
  };
4315
4432
  }
4316
4433
  const params = Object.assign({}, {
4317
- legendInfo,
4318
4434
  style,
4319
- timeFilter,
4320
- timeExtent
4435
+ LAYERS: baseOptions.layer ? 'show:' + baseOptions.layer : undefined,
4436
+ time: timeExtent
4321
4437
  });
4322
4438
  const options = ObjectUtils.removeUndefined({
4323
4439
  params,
@@ -4330,15 +4446,17 @@ class CapabilitiesService {
4330
4446
  abstract: arcgisOptions.description || serviceCapabilities.serviceDescription
4331
4447
  },
4332
4448
  },
4449
+ legendInfo,
4450
+ timeFilter,
4333
4451
  sourceFields: arcgisOptions.fields,
4334
4452
  queryTitle: arcgisOptions.displayField
4335
4453
  });
4336
- options.params.attributions = attributions;
4454
+ options.attributions = attributions;
4337
4455
  return ObjectUtils.mergeDeep(options, baseOptions);
4338
4456
  }
4339
4457
  parseTileOrImageArcgisOptions(baseOptions, arcgisOptions, legend, serviceCapabilities) {
4340
4458
  const title = arcgisOptions.name;
4341
- const legendInfo = legend.layers ? legend : undefined;
4459
+ const legendInfo = legend.layers ? legend.layers.find(x => x.layerName === title) : undefined;
4342
4460
  const attributions = new olAttribution({
4343
4461
  target: arcgisOptions.copyrightText
4344
4462
  });
@@ -4723,7 +4841,7 @@ class DataSourceService {
4723
4841
  return new Observable(d => d.next(new ClusterDataSource(context)));
4724
4842
  }
4725
4843
  }
4726
- DataSourceService.ɵfac = function DataSourceService_Factory(t) { return new (t || DataSourceService)(i0.ɵɵinject(CapabilitiesService), i0.ɵɵinject(OptionsService, 8), i0.ɵɵinject(WFSService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(ProjectionService), i0.ɵɵinject(i6.AuthInterceptor)); };
4844
+ DataSourceService.ɵfac = function DataSourceService_Factory(t) { return new (t || DataSourceService)(i0.ɵɵinject(CapabilitiesService), i0.ɵɵinject(OptionsService, 8), i0.ɵɵinject(WFSService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(ProjectionService), i0.ɵɵinject(i5.AuthInterceptor)); };
4727
4845
  DataSourceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DataSourceService, factory: DataSourceService.ɵfac, providedIn: 'root' });
4728
4846
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataSourceService, [{
4729
4847
  type: Injectable,
@@ -4732,7 +4850,7 @@ DataSourceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DataSo
4732
4850
  }]
4733
4851
  }], function () { return [{ type: CapabilitiesService }, { type: OptionsService, decorators: [{
4734
4852
  type: Optional
4735
- }] }, { type: WFSService }, { type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: ProjectionService }, { type: i6.AuthInterceptor }]; }, null); })();
4853
+ }] }, { type: WFSService }, { type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: ProjectionService }, { type: i5.AuthInterceptor }]; }, null); })();
4736
4854
 
4737
4855
  class OptionsApiService extends OptionsService {
4738
4856
  constructor(http, options = {}) {
@@ -4954,6 +5072,7 @@ function featureFromOl(olFeature, projectionIn, olLayer, projectionOut = 'EPSG:4
4954
5072
  }
4955
5073
  const mapTitle = olFeature.get('_mapTitle');
4956
5074
  const id = olFeature.getId() ? olFeature.getId() : olFeature.get(idColumn) ? olFeature.get(idColumn) : uuid();
5075
+ const newFeature = olFeature.get('_newFeature');
4957
5076
  return {
4958
5077
  type: FEATURE,
4959
5078
  projection: projectionOut,
@@ -5331,10 +5450,23 @@ class FeatureStoreInMapExtentStrategy extends EntityStoreStrategy {
5331
5450
  if ((_b = (_a = store === null || store === void 0 ? void 0 : store.layer) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.viewController) {
5332
5451
  store.state.updateAll({ inMapExtent: false });
5333
5452
  const mapExtent = store.layer.map.viewController.getExtent();
5334
- const entitiesInMapExtent = store.entities$.value
5335
- .filter((entity) => olextent.intersects(entity.ol.getGeometry().getExtent(), mapExtent));
5453
+ let entitiesInMapExtent = [];
5454
+ let entitiesWithNoGeom = [];
5455
+ for (const entity of store.entities$.value) {
5456
+ if (entity.ol) {
5457
+ if (olextent.intersects(entity.ol.getGeometry().getExtent(), mapExtent)) {
5458
+ entitiesInMapExtent.push(entity);
5459
+ }
5460
+ }
5461
+ else {
5462
+ entitiesWithNoGeom.push(entity);
5463
+ }
5464
+ }
5336
5465
  if (entitiesInMapExtent.length > 0) {
5337
- store.state.updateMany(entitiesInMapExtent, { inMapExtent: true }, true);
5466
+ store.state.updateMany(entitiesInMapExtent, { inMapExtent: true }, false);
5467
+ }
5468
+ if (entitiesWithNoGeom.length > 0) {
5469
+ store.state.updateMany(entitiesWithNoGeom, { inMapExtent: true }, false);
5338
5470
  }
5339
5471
  }
5340
5472
  }
@@ -7651,7 +7783,7 @@ MapBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapBrow
7651
7783
  i0.ɵɵprojection(1);
7652
7784
  } if (rf & 2) {
7653
7785
  i0.ɵɵproperty("id", ctx.id);
7654
- } }, styles: ["[_nghost-%COMP%]{position:relative;display:block}[_nghost-%COMP%], .igo-map-browser-target[_ngcontent-%COMP%]{width:100%;height:100%}[_nghost-%COMP%] igo-zoom-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-zoom-button{display:none}}[_nghost-%COMP%] igo-offline-button{position:absolute;bottom:15px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-offline-button{bottom:5px}}[_nghost-%COMP%] igo-geolocate-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-geolocate-button{bottom:5px}}[_nghost-%COMP%] igo-rotation-button{position:absolute;top:calc(40px + 5px + 5px);right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-rotation-button{top:calc(40px + 5px + 5px)}}[_nghost-%COMP%] igo-user-button{position:absolute;bottom:5px;right:calc(5px + 50px)}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-user-button{right:calc(5px + 90px)}}[_nghost-%COMP%] igo-baselayers-switcher{position:absolute;bottom:5px;left:5px}[_nghost-%COMP%] .ol-attribution{flex-flow:row;left:calc(40px + 5px + 5px);bottom:5px;text-align:left;padding:0;margin-right:90px;background-color:#fff0;width:calc(100% - 100px)}[_nghost-%COMP%] .ol-attribution.ol-logo-only{height:inherit}[_nghost-%COMP%] .ol-attribution.ol-collapsed{background:none}[_nghost-%COMP%] .ol-attribution.ol-collapsed button{transform:none}[_nghost-%COMP%] .ol-attribution button{transform:rotate(180deg);background-color:#fff;cursor:pointer;outline:none}[_nghost-%COMP%] .ol-scale-line-inner{color:#000;border-color:#000;text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px;box-shadow:0 1px 0 1px #fff9}[_nghost-%COMP%] .ol-scale-line{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-bar{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-text{text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px}[_nghost-%COMP%] .ol-scale-step-text{text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px}[_nghost-%COMP%] canvas{display:block}"] });
7786
+ } }, styles: ["[_nghost-%COMP%]{position:relative;display:block}[_nghost-%COMP%], .igo-map-browser-target[_ngcontent-%COMP%]{width:100%;height:100%}[_nghost-%COMP%] igo-zoom-button{position:absolute;bottom:calc(40px + 5px + 5px);right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-zoom-button{display:none}}[_nghost-%COMP%] igo-offline-button{position:absolute;bottom:15px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-offline-button{bottom:5px}}[_nghost-%COMP%] igo-geolocate-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-geolocate-button{bottom:5px}}[_nghost-%COMP%] igo-rotation-button{position:absolute;top:calc(40px + 5px + 5px);right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-rotation-button{bottom:calc(40px + 5px + 5px)}}[_nghost-%COMP%] igo-home-extent-button{position:absolute;bottom:calc((3 * 40px) + 5px + (2 * 5px));right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-home-extent-button{bottom:5px;right:calc((2 * 40px) + (3 * 5px))}}[_nghost-%COMP%] igo-user-button{position:absolute;bottom:5px;right:calc(5px + 50px)}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-user-button{right:calc((2 * 40px) + (2 * 5px))}}[_nghost-%COMP%] igo-baselayers-switcher{position:absolute;bottom:5px;left:5px}[_nghost-%COMP%] .ol-attribution{flex-flow:row;left:calc(40px + 5px + 5px);bottom:5px;text-align:left;padding:0;margin-right:90px;background-color:#fff0;width:calc(100% - 100px)}[_nghost-%COMP%] .ol-attribution.ol-logo-only{height:inherit}[_nghost-%COMP%] .ol-attribution.ol-collapsed{background:none}[_nghost-%COMP%] .ol-attribution.ol-collapsed button{transform:none}[_nghost-%COMP%] .ol-attribution button{transform:rotate(180deg);background-color:#fff;cursor:pointer;outline:none}[_nghost-%COMP%] .ol-scale-line-inner{color:#000;border-color:#000;text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px;box-shadow:0 1px 0 1px #fff9}[_nghost-%COMP%] .ol-scale-line{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-bar{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-text{text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px}[_nghost-%COMP%] .ol-scale-step-text{text-shadow:white -1px -1px 3px,white 1px -1px 3px,white -1px 1px 3px,white 1px 1px 4px}[_nghost-%COMP%] canvas{display:block}"] });
7655
7787
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapBrowserComponent, [{
7656
7788
  type: Component,
7657
7789
  args: [{
@@ -7684,19 +7816,24 @@ class MapOfflineDirective {
7684
7816
  }
7685
7817
  ngAfterViewInit() {
7686
7818
  this.map.offlineButtonToggle$.subscribe((offlineButtonToggle) => {
7819
+ if (this.previousMessageId) {
7820
+ this.messageService.remove(this.previousMessageId);
7821
+ }
7687
7822
  this.offlineButtonStatus = offlineButtonToggle;
7688
7823
  const translate = this.languageService.translate;
7689
7824
  if (this.offlineButtonStatus && this.networkState.connection) {
7690
7825
  const message = translate.instant('igo.geo.network.offline.message');
7691
7826
  const title = translate.instant('igo.geo.network.offline.title');
7692
- this.messageService.info(message, title);
7827
+ const messageObj = this.messageService.info(message, title);
7828
+ this.previousMessageId = messageObj.toastId;
7693
7829
  this.offlineButtonState.connection = false;
7694
7830
  this.changeLayer();
7695
7831
  }
7696
7832
  else if (!this.offlineButtonStatus && !this.networkState.connection) {
7697
7833
  const message = translate.instant('igo.geo.network.offline.message');
7698
7834
  const title = translate.instant('igo.geo.network.offline.title');
7699
- this.messageService.info(message, title);
7835
+ const messageObj = this.messageService.info(message, title);
7836
+ this.previousMessageId = messageObj.toastId;
7700
7837
  this.offlineButtonState.connection = false;
7701
7838
  this.changeLayer();
7702
7839
  }
@@ -7711,7 +7848,10 @@ class MapOfflineDirective {
7711
7848
  titleObs.subscribe((title1) => {
7712
7849
  title = title1;
7713
7850
  });
7714
- this.messageService.info(message, title);
7851
+ if (message) {
7852
+ const messageObj = this.messageService.info(message, title);
7853
+ this.previousMessageId = messageObj.toastId;
7854
+ }
7715
7855
  this.offlineButtonState.connection = true;
7716
7856
  this.changeLayer();
7717
7857
  }
@@ -7730,6 +7870,9 @@ class MapOfflineDirective {
7730
7870
  let sourceOptions;
7731
7871
  const layerList = this.map.layers$.value;
7732
7872
  layerList.forEach(layer => {
7873
+ if (layer.isIgoInternalLayer) {
7874
+ return;
7875
+ }
7733
7876
  if (layer.options.source instanceof MVTDataSource) {
7734
7877
  sourceOptions = layer.options.sourceOptions;
7735
7878
  layer.ol.getSource().refresh();
@@ -7764,7 +7907,7 @@ class MapOfflineDirective {
7764
7907
  sourceOptions.type === 'cluster') {
7765
7908
  return;
7766
7909
  }
7767
- // layer.ol.getSource().setUrl(sourceOptions.pathOffline);
7910
+ layer.ol.getSource().setUrl(sourceOptions.pathOffline);
7768
7911
  }
7769
7912
  else if ((sourceOptions.pathOffline &&
7770
7913
  this.networkState.connection === false) ||
@@ -7774,7 +7917,7 @@ class MapOfflineDirective {
7774
7917
  sourceOptions.type === 'cluster') {
7775
7918
  return;
7776
7919
  }
7777
- // layer.ol.getSource().setUrl(sourceOptions.url);
7920
+ layer.ol.getSource().setUrl(sourceOptions.url);
7778
7921
  }
7779
7922
  else {
7780
7923
  if (this.networkState.connection === false ||
@@ -8183,6 +8326,7 @@ class HoverFeatureDirective {
8183
8326
  initStore() {
8184
8327
  const store = this.store;
8185
8328
  const layer = new VectorLayer({
8329
+ isIgoInternalLayer: true,
8186
8330
  id: 'hoverFeatureId',
8187
8331
  title: 'hoverFeature',
8188
8332
  zIndex: 900,
@@ -8810,6 +8954,67 @@ GeolocateButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ge
8810
8954
  type: Input
8811
8955
  }] }); })();
8812
8956
 
8957
+ /*
8958
+ Button to center the map to the home extent
8959
+ */
8960
+ class HomeExtentButtonComponent {
8961
+ constructor(configService) {
8962
+ this.configService = configService;
8963
+ this.computeHomeExtent();
8964
+ }
8965
+ computeHomeExtent() {
8966
+ this.homeExtentButtonExtent = this.extentOverride || this.configService.getConfig('homeExtentButton.homeExtButtonExtent');
8967
+ this.homeExtentButtonCenter = this.centerOverride || this.configService.getConfig('homeExtentButton.homeExtButtonCenter');
8968
+ this.homeExtentButtonZoom = this.zoomOverride || this.configService.getConfig('homeExtentButton.homeExtButtonZoom');
8969
+ // priority over extent if these 2 properties are defined;
8970
+ if (this.centerOverride && this.zoomOverride) {
8971
+ this.homeExtentButtonExtent = undefined;
8972
+ }
8973
+ }
8974
+ onToggleClick() {
8975
+ this.computeHomeExtent();
8976
+ if (this.homeExtentButtonExtent) {
8977
+ this.map.viewController.zoomToExtent(this.homeExtentButtonExtent);
8978
+ }
8979
+ else if (this.homeExtentButtonCenter && this.homeExtentButtonZoom) {
8980
+ const center = olproj.fromLonLat(this.homeExtentButtonCenter, this.map.viewController.olView.getProjection().getCode());
8981
+ this.map.viewController.olView.setCenter(center);
8982
+ this.map.viewController.zoomTo(this.homeExtentButtonZoom);
8983
+ }
8984
+ }
8985
+ }
8986
+ HomeExtentButtonComponent.ɵfac = function HomeExtentButtonComponent_Factory(t) { return new (t || HomeExtentButtonComponent)(i0.ɵɵdirectiveInject(i2$1.ConfigService)); };
8987
+ HomeExtentButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HomeExtentButtonComponent, selectors: [["igo-home-extent-button"]], inputs: { map: "map", color: "color", extentOverride: "extentOverride", centerOverride: "centerOverride", zoomOverride: "zoomOverride" }, decls: 4, vars: 4, consts: [[1, "igo-home-extent-button-container"], ["mat-icon-button", "", "matTooltipPosition", "left", 3, "matTooltip", "color", "click"], ["svgIcon", "home-map-marker"]], template: function HomeExtentButtonComponent_Template(rf, ctx) { if (rf & 1) {
8988
+ i0.ɵɵelementStart(0, "div", 0);
8989
+ i0.ɵɵelementStart(1, "button", 1);
8990
+ i0.ɵɵlistener("click", function HomeExtentButtonComponent_Template_button_click_1_listener() { return ctx.onToggleClick(); });
8991
+ i0.ɵɵpipe(2, "translate");
8992
+ i0.ɵɵelement(3, "mat-icon", 2);
8993
+ i0.ɵɵelementEnd();
8994
+ i0.ɵɵelementEnd();
8995
+ } if (rf & 2) {
8996
+ i0.ɵɵadvance(1);
8997
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 2, "igo.geo.mapButtons.home-extent"))("color", ctx.color);
8998
+ } }, directives: [i2.MatButton, i3.MatTooltip, i4.MatIcon], pipes: [i7.TranslatePipe], styles: ["@charset \"UTF-8\";.igo-home-extent-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}\\a0[_ngcontent-%COMP%] .igo-home-extent-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
8999
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HomeExtentButtonComponent, [{
9000
+ type: Component,
9001
+ args: [{
9002
+ selector: 'igo-home-extent-button',
9003
+ templateUrl: './home-extent-button.component.html',
9004
+ styleUrls: ['./home-extent-button.component.scss'],
9005
+ }]
9006
+ }], function () { return [{ type: i2$1.ConfigService }]; }, { map: [{
9007
+ type: Input
9008
+ }], color: [{
9009
+ type: Input
9010
+ }], extentOverride: [{
9011
+ type: Input
9012
+ }], centerOverride: [{
9013
+ type: Input
9014
+ }], zoomOverride: [{
9015
+ type: Input
9016
+ }] }); })();
9017
+
8813
9018
  const _c0$h = function (a0) { return [a0]; };
8814
9019
  function OfflineButtonComponent_div_0_Template(rf, ctx) { if (rf & 1) {
8815
9020
  const _r2 = i0.ɵɵgetCurrentView();
@@ -9142,14 +9347,14 @@ class LayerService {
9142
9347
  }));
9143
9348
  }
9144
9349
  }
9145
- LayerService.ɵfac = function LayerService_Factory(t) { return new (t || LayerService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(StyleService), i0.ɵɵinject(DataSourceService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i6.AuthInterceptor, 8)); };
9350
+ LayerService.ɵfac = function LayerService_Factory(t) { return new (t || LayerService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(StyleService), i0.ɵɵinject(DataSourceService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i5.AuthInterceptor, 8)); };
9146
9351
  LayerService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LayerService, factory: LayerService.ɵfac, providedIn: 'root' });
9147
9352
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerService, [{
9148
9353
  type: Injectable,
9149
9354
  args: [{
9150
9355
  providedIn: 'root'
9151
9356
  }]
9152
- }], function () { return [{ type: i1$2.HttpClient }, { type: StyleService }, { type: DataSourceService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i6.AuthInterceptor, decorators: [{
9357
+ }], function () { return [{ type: i1$2.HttpClient }, { type: StyleService }, { type: DataSourceService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i5.AuthInterceptor, decorators: [{
9153
9358
  type: Optional
9154
9359
  }] }]; }, null); })();
9155
9360
 
@@ -9613,7 +9818,7 @@ MapCenterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapCente
9613
9818
  i0.ɵɵelement(1, "div", 1);
9614
9819
  i0.ɵɵelement(2, "div", 2);
9615
9820
  i0.ɵɵelementEnd();
9616
- } }, styles: [".mapCenter[_ngcontent-%COMP%]{width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-15px,-15px)}.mapCenter[_ngcontent-%COMP%] .vertical[_ngcontent-%COMP%], .mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{width:4px;height:30px;position:absolute;left:13px;background-color:#000}.mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{transform:rotate(90deg)}"] });
9821
+ } }, styles: [".mapCenter[_ngcontent-%COMP%]{width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-15px,-15px);pointer-events:none}.mapCenter[_ngcontent-%COMP%] .vertical[_ngcontent-%COMP%], .mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{width:4px;height:30px;position:absolute;left:13px;background-color:#000}.mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{transform:rotate(90deg)}"] });
9617
9822
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapCenterComponent, [{
9618
9823
  type: Component,
9619
9824
  args: [{
@@ -9625,6 +9830,39 @@ MapCenterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapCente
9625
9830
  type: Input
9626
9831
  }] }); })();
9627
9832
 
9833
+ function InfoSectionComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9834
+ i0.ɵɵelementStart(0, "div", 1);
9835
+ i0.ɵɵelementStart(1, "pre");
9836
+ i0.ɵɵtext(2);
9837
+ i0.ɵɵelementEnd();
9838
+ i0.ɵɵelementEnd();
9839
+ } if (rf & 2) {
9840
+ const ctx_r0 = i0.ɵɵnextContext();
9841
+ i0.ɵɵadvance(2);
9842
+ i0.ɵɵtextInterpolate(ctx_r0.infoContent);
9843
+ } }
9844
+ class InfoSectionComponent {
9845
+ constructor() {
9846
+ this.infoContent = '';
9847
+ }
9848
+ }
9849
+ InfoSectionComponent.ɵfac = function InfoSectionComponent_Factory(t) { return new (t || InfoSectionComponent)(); };
9850
+ InfoSectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoSectionComponent, selectors: [["igo-info-section"]], inputs: { infoContent: "infoContent" }, decls: 1, vars: 1, consts: [["class", "infoSection", 4, "ngIf"], [1, "infoSection"]], template: function InfoSectionComponent_Template(rf, ctx) { if (rf & 1) {
9851
+ i0.ɵɵtemplate(0, InfoSectionComponent_div_0_Template, 3, 1, "div", 0);
9852
+ } if (rf & 2) {
9853
+ i0.ɵɵproperty("ngIf", ctx.infoContent && ctx.infoContent.length);
9854
+ } }, directives: [i1$1.NgIf], styles: [".infoSection[_ngcontent-%COMP%]{border-radius:10px;background-color:#6e6e6e66;padding:calc(5px / 2);position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection[_ngcontent-%COMP%]{top:calc(40px + 5px + 5px);left:10%}}"] });
9855
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoSectionComponent, [{
9856
+ type: Component,
9857
+ args: [{
9858
+ selector: 'igo-info-section',
9859
+ templateUrl: './info-section.component.html',
9860
+ styleUrls: ['./info-section.component.scss']
9861
+ }]
9862
+ }], function () { return []; }, { infoContent: [{
9863
+ type: Input
9864
+ }] }); })();
9865
+
9628
9866
  var CatalogItemType;
9629
9867
  (function (CatalogItemType) {
9630
9868
  CatalogItemType["Layer"] = "layer";
@@ -9754,16 +9992,19 @@ class QueryService {
9754
9992
  QueryFormat.HTMLGML2) {
9755
9993
  const urlGml = this.getQueryUrl(layer.dataSource, options, true);
9756
9994
  return this.http.get(urlGml, { responseType: 'text' }).pipe(mergeMap(gmlRes => {
9757
- const imposedGeom = this.mergeGML(gmlRes, url);
9995
+ const mergedGML = this.mergeGML(gmlRes, url, layer);
9996
+ const imposedGeom = mergedGML[0];
9997
+ const imposedProperties = mergedGML[1];
9758
9998
  return this.http
9759
9999
  .get(url, { responseType: 'text' })
9760
- .pipe(map(res => this.extractData(res, layer, options, url, imposedGeom)));
10000
+ .pipe(map(res => this.extractData(res, layer, options, url, imposedGeom, imposedProperties)));
9761
10001
  }));
9762
10002
  }
9763
10003
  const request = this.http.get(url, { responseType: 'text' });
9764
10004
  return request.pipe(map(res => this.extractData(res, layer, options, url)));
9765
10005
  }
9766
- mergeGML(gmlRes, url) {
10006
+ mergeGML(gmlRes, url, layer) {
10007
+ var _a, _b;
9767
10008
  const parser = new olFormatGML2();
9768
10009
  let features = parser.readFeatures(gmlRes);
9769
10010
  // Handle non standard GML output (MapServer)
@@ -9785,7 +10026,22 @@ class QueryService {
9785
10026
  const bboxExtent = olextent.createEmpty();
9786
10027
  olextent.extend(bboxExtent, bbox);
9787
10028
  const outBboxExtent = false;
10029
+ let titleContent;
10030
+ let queryTileField;
10031
+ if ((_b = (_a = layer.options) === null || _a === void 0 ? void 0 : _a.source) === null || _b === void 0 ? void 0 : _b.options) {
10032
+ const dataSourceOptions = layer.options.source
10033
+ .options;
10034
+ if (dataSourceOptions.queryTitle) {
10035
+ queryTileField = dataSourceOptions.queryTitle;
10036
+ }
10037
+ }
9788
10038
  features.map(feature => {
10039
+ if (queryTileField) {
10040
+ let queryTitleContent = feature.getProperties()[queryTileField];
10041
+ if (queryTitleContent) {
10042
+ titleContent = !titleContent ? queryTitleContent : `${titleContent},${queryTitleContent}`;
10043
+ }
10044
+ }
9789
10045
  /* if (!feature.getGeometry().simplify(100).intersectsExtent(bboxExtent)) {
9790
10046
  outBboxExtent = true;
9791
10047
  // TODO: Check to project the geometry?
@@ -9832,27 +10088,31 @@ class QueryService {
9832
10088
  coordinates: [this.convexHull(ptsArray)]
9833
10089
  };
9834
10090
  }
10091
+ let returnGeometry;
9835
10092
  switch (firstFeatureType) {
9836
10093
  case 'LineString':
9837
- return {
10094
+ returnGeometry = {
9838
10095
  type: olmline.getType(),
9839
10096
  coordinates: olmline.getCoordinates()
9840
10097
  };
9841
10098
  case 'Point':
9842
10099
  return olmpts;
9843
10100
  case 'Polygon':
9844
- return {
10101
+ returnGeometry = {
9845
10102
  type: olmpoly.getType(),
9846
10103
  coordinates: olmpoly.getCoordinates()
9847
10104
  };
9848
10105
  case 'MultiPolygon':
9849
- return {
10106
+ returnGeometry = {
9850
10107
  type: olmpoly.getType(),
9851
10108
  coordinates: olmpoly.getCoordinates()
9852
10109
  };
9853
- default:
9854
- return;
9855
10110
  }
10111
+ const imposedProperties = {};
10112
+ if (queryTileField) {
10113
+ imposedProperties[queryTileField] = titleContent;
10114
+ }
10115
+ return [returnGeometry, imposedProperties];
9856
10116
  }
9857
10117
  cross(a, b, o) {
9858
10118
  return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
@@ -9886,7 +10146,7 @@ class QueryService {
9886
10146
  lower.pop();
9887
10147
  return lower.concat(upper);
9888
10148
  }
9889
- extractData(res, layer, options, url, imposedGeometry) {
10149
+ extractData(res, layer, options, url, imposedGeometry, imposedProperties) {
9890
10150
  const queryDataSource = layer.dataSource;
9891
10151
  const allowedFieldsAndAlias = this.getAllowedFieldsAndAlias(layer);
9892
10152
  let features = [];
@@ -9909,7 +10169,7 @@ class QueryService {
9909
10169
  features = this.extractHtmlData(res, queryDataSource.queryHtmlTarget, url);
9910
10170
  break;
9911
10171
  case QueryFormat.HTMLGML2:
9912
- features = this.extractHtmlData(res, queryDataSource.queryHtmlTarget, url, imposedGeometry);
10172
+ features = this.extractHtmlData(res, queryDataSource.queryHtmlTarget, url, imposedGeometry, imposedProperties);
9913
10173
  break;
9914
10174
  case QueryFormat.GML2:
9915
10175
  default:
@@ -10065,7 +10325,7 @@ class QueryService {
10065
10325
  // TODO
10066
10326
  return [];
10067
10327
  }
10068
- extractHtmlData(res, htmlTarget, url, imposedGeometry) {
10328
+ extractHtmlData(res, htmlTarget, url, imposedGeometry, imposedProperties) {
10069
10329
  const searchParams = this.getQueryParams(url.toLowerCase());
10070
10330
  const projection = searchParams.crs || searchParams.srs || 'EPSG:3857';
10071
10331
  const geomToAdd = this.createGeometryFromUrlClick(url);
@@ -10085,7 +10345,7 @@ class QueryService {
10085
10345
  {
10086
10346
  type: FEATURE,
10087
10347
  projection,
10088
- properties: { target: htmlTarget, body: res, url },
10348
+ properties: Object.assign({ target: htmlTarget, body: res, url }, imposedProperties),
10089
10349
  geometry: imposedGeometry || geomToAdd
10090
10350
  }
10091
10351
  ];
@@ -10439,6 +10699,9 @@ class QueryDirective {
10439
10699
  if (event.type === 'singleclick') {
10440
10700
  this.map.ol.forEachFeatureAtPixel(event.pixel, (featureOL, layerOL) => {
10441
10701
  const layer = this.map.getLayerById(layerOL.values_._layer.id);
10702
+ if (layer.dataSource.options.queryFormatAsWms) {
10703
+ return;
10704
+ }
10442
10705
  if (featureOL) {
10443
10706
  if (featureOL.get('features')) {
10444
10707
  for (const feature of featureOL.get('features')) {
@@ -10725,7 +10988,7 @@ class SearchSource {
10725
10988
  hashtagsValid.push(types[index]);
10726
10989
  }
10727
10990
  }
10728
- if (conf.hashtags && conf.hashtags.indexOf(hashtagKey) !== -1) {
10991
+ if (conf.hashtags && conf.hashtags.indexOf(hashtagKey.toLowerCase()) !== -1) {
10729
10992
  hashtagsValid.push(conf.value);
10730
10993
  }
10731
10994
  });
@@ -11282,7 +11545,10 @@ class CatalogService {
11282
11545
  if (!capabilities) {
11283
11546
  return [];
11284
11547
  }
11285
- const layers = capabilities.layers.filter(layer => !layer.type || layer.type === 'Feature Layer');
11548
+ const layers = !capabilities.layers ? [] : capabilities.layers.filter(layer => !layer.type || layer.type === 'Feature Layer');
11549
+ if (!capabilities.layers) {
11550
+ this.messageService.error(this.languageService.translate.instant('igo.geo.catalog.someUnavailable'), this.languageService.translate.instant('igo.geo.catalog.unavailableTitle'));
11551
+ }
11286
11552
  const regexes = (catalog.regFilters || []).map((pattern) => new RegExp(pattern));
11287
11553
  let abstract;
11288
11554
  if (capabilities.serviceDescription && capabilities.serviceDescription.length) {
@@ -11523,7 +11789,7 @@ class CatalogBrowserComponent {
11523
11789
  */
11524
11790
  addLayersToMap(layers) {
11525
11791
  const layers$ = layers.map((layer) => {
11526
- if (layer.options.sourceOptions.optionsFromApi === undefined) {
11792
+ if (!layer.options.sourceOptions.optionsFromApi) {
11527
11793
  layer.options.sourceOptions.optionsFromApi = true;
11528
11794
  }
11529
11795
  return this.layerService.createAsyncLayer(layer.options);
@@ -11832,13 +12098,11 @@ class LayerLegendComponent {
11832
12098
  let lastlLegend = this.layer.legend;
11833
12099
  this.styles = this.listStyles();
11834
12100
  const sourceOptions = this.layer.options.source.options;
11835
- if (sourceOptions &&
11836
- sourceOptions.params &&
11837
- sourceOptions.params.STYLES) {
12101
+ if (sourceOptions && sourceOptions.params && sourceOptions.params.STYLES) {
11838
12102
  // if a styles is provided into the layers wms params
11839
12103
  this.currentStyle = this.styles.find(style => style.name === sourceOptions.params.STYLES).name;
11840
12104
  }
11841
- else if (!this.layer.legend) {
12105
+ else if (!lastlLegend) {
11842
12106
  // if no legend is manually provided
11843
12107
  if (this.styles && this.styles.length > 1) {
11844
12108
  this.currentStyle = this.styles[0].name;
@@ -11853,10 +12117,9 @@ class LayerLegendComponent {
11853
12117
  else {
11854
12118
  lastlLegend = this.layer.dataSource.getLegend(this.currentStyle, this.view);
11855
12119
  }
11856
- if (this.updateLegendOnResolutionChange === true || sourceOptions.contentDependentLegend) {
12120
+ if (this.updateLegendOnResolutionChange || sourceOptions.contentDependentLegend) {
11857
12121
  const state$ = this.layer.map.viewController.state$;
11858
- this.state$$ = state$
11859
- .subscribe(() => this.onViewControllerStateChange());
12122
+ this.state$$ = state$.subscribe(() => this.onViewControllerStateChange());
11860
12123
  }
11861
12124
  else if (lastlLegend && lastlLegend.length !== 0) {
11862
12125
  this.legendItems$.next(lastlLegend);
@@ -11874,20 +12137,22 @@ class LayerLegendComponent {
11874
12137
  }
11875
12138
  }
11876
12139
  getLegendGraphic(item) {
11877
- const secureIMG = new SecureImagePipe(this.http);
11878
- secureIMG.transform(item.url).pipe(catchError((err) => {
11879
- if (err.error) {
11880
- err.error.caught = true;
11881
- this.getLegend = false;
12140
+ if (item.url) {
12141
+ const secureIMG = new SecureImagePipe(this.http);
12142
+ secureIMG.transform(item.url).pipe(catchError((err) => {
12143
+ if (err.error) {
12144
+ err.error.caught = true;
12145
+ this.getLegend = false;
12146
+ this.cdRef.detectChanges();
12147
+ return err;
12148
+ }
12149
+ })).subscribe(obsLegGraph => {
12150
+ const idx = this.legendItems$.value.findIndex(leg => leg.title === item.title);
12151
+ const legendGraph = obsLegGraph;
12152
+ this.legendItems$.value[idx].imgGraphValue = legendGraph;
11882
12153
  this.cdRef.detectChanges();
11883
- return err;
11884
- }
11885
- })).subscribe(obsLegGraph => {
11886
- const idx = this.legendItems$.value.findIndex(leg => leg.title === item.title);
11887
- const legendGraph = obsLegGraph;
11888
- this.legendItems$.value[idx].imgGraphValue = legendGraph;
11889
- this.cdRef.detectChanges();
11890
- });
12154
+ });
12155
+ }
11891
12156
  }
11892
12157
  toggleLegendItem(collapsed, item) {
11893
12158
  item.collapsed = collapsed;
@@ -11993,7 +12258,7 @@ LayerLegendComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerL
11993
12258
  i0.ɵɵpipe(1, "async");
11994
12259
  } if (rf & 2) {
11995
12260
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.legendItems$));
11996
- } }, directives: [i1$1.NgIf, i1$1.NgForOf, i1$1.NgClass, i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6$1.CollapseDirective, i9.MatLine, i12.MatFormField, i13.MatSelect, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i9.MatOption, i1$1.NgStyle], pipes: [i1$1.AsyncPipe, i7.TranslatePipe, i6$1.SanitizeHtmlPipe], styles: [".igo-layer-legend.with-title[_ngcontent-%COMP%]{padding-left:18px}img[_ngcontent-%COMP%]:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
12261
+ } }, directives: [i1$1.NgIf, i1$1.NgForOf, i1$1.NgClass, i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6.CollapseDirective, i9.MatLine, i12.MatFormField, i13.MatSelect, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i9.MatOption, i1$1.NgStyle], pipes: [i1$1.AsyncPipe, i7.TranslatePipe, i6.SanitizeHtmlPipe], styles: [".igo-layer-legend.with-title[_ngcontent-%COMP%]{padding-left:18px}img[_ngcontent-%COMP%]:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
11997
12262
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerLegendComponent, [{
11998
12263
  type: Component,
11999
12264
  args: [{
@@ -12244,7 +12509,7 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
12244
12509
  i0.ɵɵproperty("matBadgeHidden", ctx.isInResolutionsRange())("svgIcon", i0.ɵɵpipeBind1(10, 15, ctx.isPreview$) ? "plus" : ctx.added ? "delete" : "plus");
12245
12510
  i0.ɵɵadvance(4);
12246
12511
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(14, 17, ctx.layerLegendShown$) && i0.ɵɵpipeBind1(15, 19, ctx.igoLayer$) && ctx.catalogAllowLegend);
12247
- } }, directives: [i1$3.MatListItem, i1$1.NgIf, i9.MatLine, i1$1.NgClass, i3.MatTooltip, MetadataButtonComponent, i2.MatButton, i4.MatIcon, i9$1.MatBadge, i6$1.IgoBadgeIconDirective, i1$3.MatListAvatarCssMatStyler, LayerLegendComponent], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
12512
+ } }, directives: [i1$3.MatListItem, i1$1.NgIf, i9.MatLine, i1$1.NgClass, i3.MatTooltip, MetadataButtonComponent, i2.MatButton, i4.MatIcon, i9$1.MatBadge, i6.IgoBadgeIconDirective, i1$3.MatListAvatarCssMatStyler, LayerLegendComponent], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
12248
12513
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserLayerComponent, [{
12249
12514
  type: Component,
12250
12515
  args: [{
@@ -12529,7 +12794,7 @@ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
12529
12794
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 8, ctx.added$) && i0.ɵɵpipeBind1(7, 10, ctx.preview$) === false)("ngIfElse", _r2);
12530
12795
  i0.ɵɵadvance(7);
12531
12796
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(13, 12, ctx.store.view.all$()));
12532
- } }, directives: [i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6$1.CollapseDirective, i9.MatLine, i3.MatTooltip, i1$1.NgIf, i1$1.NgForOf, i2.MatButton, CatalogBrowserLayerComponent, i6$1.ListItemDirective], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:bold}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
12797
+ } }, directives: [i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6.CollapseDirective, i9.MatLine, i3.MatTooltip, i1$1.NgIf, i1$1.NgForOf, i2.MatButton, CatalogBrowserLayerComponent, i6.ListItemDirective], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:bold}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
12533
12798
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserGroupComponent, [{
12534
12799
  type: Component,
12535
12800
  args: [{
@@ -14061,7 +14326,7 @@ LayerListToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Laye
14061
14326
  i0.ɵɵproperty("matTooltip", ctx.selectionMode ? i0.ɵɵpipeBind1(17, 26, "igo.geo.layer.deactivateSelectionMode") : i0.ɵɵpipeBind1(18, 28, "igo.geo.layer.activateSelectionMode"));
14062
14327
  i0.ɵɵadvance(4);
14063
14328
  i0.ɵɵproperty("svgIcon", ctx.selectionMode ? "checkbox-multiple-marked-outline" : "checkbox-multiple-blank-outline");
14064
- } }, directives: [i1$3.MatListItem, i12.MatFormField, i5.MatInput, i16.DefaultValueAccessor, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i1$1.NgIf, i2.MatButton, i4.MatIcon, i9$1.MatBadge, i6$1.IgoBadgeIconDirective, i12.MatSuffix], pipes: [i7.TranslatePipe], styles: ["mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.selection-mode[_ngcontent-%COMP%]{margin-left:5px}"], changeDetection: 0 });
14329
+ } }, directives: [i1$3.MatListItem, i12.MatFormField, i5$1.MatInput, i16.DefaultValueAccessor, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i1$1.NgIf, i2.MatButton, i4.MatIcon, i9$1.MatBadge, i6.IgoBadgeIconDirective, i12.MatSuffix], pipes: [i7.TranslatePipe], styles: ["mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.selection-mode[_ngcontent-%COMP%]{margin-left:5px}"], changeDetection: 0 });
14065
14330
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListToolComponent, [{
14066
14331
  type: Component,
14067
14332
  args: [{
@@ -14644,8 +14909,8 @@ IgoLayerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
14644
14909
  TrackFeatureButtonComponent] }); })();
14645
14910
  i0.ɵɵsetComponentScope(LayerItemComponent, [i1$3.MatListItem, i1$1.NgIf, i11.MatCheckbox, i1$3.MatListIconCssMatStyler, i9.MatLine, i3.MatTooltip, i2.MatButton, i4.MatIcon, i9$1.MatBadge, i1$1.NgClass, LayerLegendComponent], [i7.TranslatePipe, i1$1.AsyncPipe]);
14646
14911
  i0.ɵɵsetComponentScope(LayerLegendItemComponent, [i1$3.MatListItem, i9.MatLine, i3.MatTooltip, LayerLegendComponent], []);
14647
- i0.ɵɵsetComponentScope(LayerListComponent, [i1$3.MatList, i1$1.NgIf, LayerListToolComponent, i1$3.MatListItem, i11.MatCheckbox, i10.MatDivider, i6$1.ListComponent, i1$1.NgClass, i1$1.NgForOf, LayerItemComponent, i6$1.ListItemDirective, i6$1.PanelComponent, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, i5$1.MatMenuTrigger, i5$1.MatMenu, i13$1.MatSlider, i1$1.NgTemplateOutlet, i16.NgControlStatus, i16.NgModel], [i1$1.AsyncPipe, i7.TranslatePipe]);
14648
- i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1$1.NgIf, i22.MatSlideToggle, i3.MatTooltip, i10.MatDivider, i6$1.ListComponent, i1$1.NgForOf, LayerLegendItemComponent, i6$1.ListItemDirective], [i7.TranslatePipe, i1$1.AsyncPipe]);
14912
+ i0.ɵɵsetComponentScope(LayerListComponent, [i1$3.MatList, i1$1.NgIf, LayerListToolComponent, i1$3.MatListItem, i11.MatCheckbox, i10.MatDivider, i6.ListComponent, i1$1.NgClass, i1$1.NgForOf, LayerItemComponent, i6.ListItemDirective, i6.PanelComponent, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, i5$2.MatMenuTrigger, i5$2.MatMenu, i13$1.MatSlider, i1$1.NgTemplateOutlet, i16.NgControlStatus, i16.NgModel], [i1$1.AsyncPipe, i7.TranslatePipe]);
14913
+ i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1$1.NgIf, i22.MatSlideToggle, i3.MatTooltip, i10.MatDivider, i6.ListComponent, i1$1.NgForOf, LayerLegendItemComponent, i6.ListItemDirective], [i7.TranslatePipe, i1$1.AsyncPipe]);
14649
14914
 
14650
14915
  /**
14651
14916
  * @ignore
@@ -14709,8 +14974,8 @@ IgoCatalogBrowserModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [
14709
14974
  IgoCollapsibleModule,
14710
14975
  IgoMetadataModule,
14711
14976
  IgoLayerModule], exports: [CatalogBrowserComponent] }); })();
14712
- i0.ɵɵsetComponentScope(CatalogBrowserComponent, [i6$1.ListComponent, i1$1.NgForOf, i1$1.NgIf, CatalogBrowserGroupComponent,
14713
- CatalogBrowserLayerComponent, i6$1.ListItemDirective], [i1$1.AsyncPipe]);
14977
+ i0.ɵɵsetComponentScope(CatalogBrowserComponent, [i6.ListComponent, i1$1.NgForOf, i1$1.NgIf, CatalogBrowserGroupComponent,
14978
+ CatalogBrowserLayerComponent, i6.ListItemDirective], [i1$1.AsyncPipe]);
14714
14979
 
14715
14980
  function AddCatalogDialogComponent_mat_option_11_Template(rf, ctx) { if (rf & 1) {
14716
14981
  i0.ɵɵelementStart(0, "mat-option", 17);
@@ -14914,7 +15179,7 @@ AddCatalogDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A
14914
15179
  i0.ɵɵproperty("disabled", !ctx.form.valid);
14915
15180
  i0.ɵɵadvance(1);
14916
15181
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 23, "igo.geo.catalog.library.add"), " ");
14917
- } }, directives: [i1.MatDialogTitle, i1.MatDialogContent, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i16.DefaultValueAccessor, i5.MatInput, i6$2.MatAutocompleteTrigger, i16.NgControlStatus, i16.FormControlName, i6$2.MatAutocomplete, i1$1.NgForOf, i13.MatSelect, i1$1.NgIf, i1.MatDialogActions, i2.MatButton, i9.MatOption, i3.MatTooltip, i9.MatLine], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.add-catalog-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#addCatalogBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
15182
+ } }, directives: [i1.MatDialogTitle, i1.MatDialogContent, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i16.DefaultValueAccessor, i5$1.MatInput, i6$1.MatAutocompleteTrigger, i16.NgControlStatus, i16.FormControlName, i6$1.MatAutocomplete, i1$1.NgForOf, i13.MatSelect, i1$1.NgIf, i1.MatDialogActions, i2.MatButton, i9.MatOption, i3.MatTooltip, i9.MatLine], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.add-catalog-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#addCatalogBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
14918
15183
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddCatalogDialogComponent, [{
14919
15184
  type: Component,
14920
15185
  args: [{
@@ -15048,23 +15313,23 @@ class CatalogLibaryComponent {
15048
15313
  this.messageService.error(message, title);
15049
15314
  throw e;
15050
15315
  }))
15051
- .subscribe((capabilies) => {
15316
+ .subscribe((capabilities) => {
15052
15317
  let title;
15053
15318
  let version;
15054
15319
  switch (addedCatalog.type) {
15055
15320
  case 'wms':
15056
- title = addedCatalog.title || capabilies.Service.Title;
15057
- version = addedCatalog.version || capabilies.version;
15321
+ title = addedCatalog.title || capabilities.Service.Title;
15322
+ version = addedCatalog.version || capabilities.version;
15058
15323
  break;
15059
15324
  case 'arcgisrest':
15060
15325
  case 'imagearcgisrest':
15061
15326
  case 'tilearcgisrest':
15062
- title = addedCatalog.title || capabilies.mapName;
15327
+ title = addedCatalog.title || capabilities.mapName;
15063
15328
  break;
15064
15329
  case 'wmts':
15065
15330
  title =
15066
15331
  addedCatalog.title ||
15067
- capabilies.ServiceIdentification.ServiceType;
15332
+ capabilities.ServiceIdentification.ServiceType;
15068
15333
  break;
15069
15334
  default:
15070
15335
  title = addedCatalog.title;
@@ -15288,7 +15553,7 @@ IgoCatalogLibraryModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [
15288
15553
  MatAutocompleteModule,
15289
15554
  MatDialogModule], exports: [CatalogLibaryComponent,
15290
15555
  AddCatalogDialogComponent] }); })();
15291
- i0.ɵɵsetComponentScope(CatalogLibaryComponent, [i6$1.ListComponent, i1$1.NgForOf, CatalogLibaryItemComponent, i6$1.ListItemDirective, i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon], [i1$1.AsyncPipe, i7.TranslatePipe]);
15556
+ i0.ɵɵsetComponentScope(CatalogLibaryComponent, [i6.ListComponent, i1$1.NgForOf, CatalogLibaryItemComponent, i6.ListItemDirective, i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon], [i1$1.AsyncPipe, i7.TranslatePipe]);
15292
15557
 
15293
15558
  class IgoCatalogModule {
15294
15559
  }
@@ -16271,7 +16536,7 @@ FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Fea
16271
16536
  i0.ɵɵproperty("ngIf", ctx.ready && ctx.feature && ctx.isObject(ctx.feature.properties) && ctx.feature.properties.target !== "iframe");
16272
16537
  i0.ɵɵadvance(1);
16273
16538
  i0.ɵɵproperty("ngIf", ctx.isHtmlDisplay());
16274
- } }, directives: [i1$1.NgIf, i1$1.NgForOf, i4.MatIcon], pipes: [i6$1.KeyValuePipe, i7.TranslatePipe, i1$1.AsyncPipe, i6$1.SecureImagePipe, i1$1.JsonPipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}"], changeDetection: 0 });
16539
+ } }, directives: [i1$1.NgIf, i1$1.NgForOf, i4.MatIcon], pipes: [i6.KeyValuePipe, i7.TranslatePipe, i1$1.AsyncPipe, i6.SecureImagePipe, i1$1.JsonPipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}"], changeDetection: 0 });
16275
16540
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureDetailsComponent, [{
16276
16541
  type: Component,
16277
16542
  args: [{
@@ -16385,7 +16650,7 @@ FeatureFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Featur
16385
16650
  i0.ɵɵelementEnd();
16386
16651
  } if (rf & 2) {
16387
16652
  i0.ɵɵproperty("form", ctx.form)("formData", i0.ɵɵpipeBind1(2, 2, ctx.feature$));
16388
- } }, directives: [i6$1.FormComponent], pipes: [i1$1.AsyncPipe], styles: ["[_nghost-%COMP%]{display:block}igo-form[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 });
16653
+ } }, directives: [i6.FormComponent], pipes: [i1$1.AsyncPipe], styles: ["[_nghost-%COMP%]{display:block}igo-form[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 });
16389
16654
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureFormComponent, [{
16390
16655
  type: Component,
16391
16656
  args: [{
@@ -16580,6 +16845,10 @@ class DrawControl {
16580
16845
  * Draw select observable (modify drawn features)
16581
16846
  */
16582
16847
  this.select$ = new Subject();
16848
+ /**
16849
+ * Draw abort observable (abort drawn features)
16850
+ */
16851
+ this.abort$ = new Subject();
16583
16852
  /**
16584
16853
  * Freehand mode observable (defaults to false)
16585
16854
  */
@@ -16703,6 +16972,7 @@ class DrawControl {
16703
16972
  this.olDrawInteraction = olDrawInteraction;
16704
16973
  this.onDrawStartKey = olDrawInteraction.on('drawstart', (event) => this.onDrawStart(event));
16705
16974
  this.onDrawEndKey = olDrawInteraction.on('drawend', (event) => this.onDrawEnd(event));
16975
+ this.onDrawAbortKey = olDrawInteraction.on('drawabort', (event) => this.abort$.next(event.feature.getGeometry()));
16706
16976
  if (activateModifyAndSelect) {
16707
16977
  // Create a Modify interaction, add it to map and create a listener
16708
16978
  const olModifyInteraction = new OlModify({
@@ -16727,7 +16997,7 @@ class DrawControl {
16727
16997
  */
16728
16998
  removeOlInteractions() {
16729
16999
  this.unsubscribeKeyDown();
16730
- unByKey([this.onDrawStartKey, this.onDrawEndKey, this.onDrawKey]);
17000
+ unByKey([this.onDrawStartKey, this.onDrawEndKey, this.onDrawKey, this.onDrawAbortKey]);
16731
17001
  if (this.olMap) {
16732
17002
  this.olMap.removeInteraction(this.olDrawInteraction);
16733
17003
  this.olMap.removeInteraction(this.olModifyInteraction);
@@ -16853,7 +17123,7 @@ DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopu
16853
17123
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 9, "igo.geo.draw.noLabel"), " ");
16854
17124
  i0.ɵɵadvance(2);
16855
17125
  i0.ɵɵproperty("mat-dialog-close", _r0.value);
16856
- } }, directives: [i1.MatDialogContent, i12.MatFormField, i5.MatInput, i1.MatDialogActions, i2.MatButton, i1.MatDialogClose], pipes: [i7.TranslatePipe], styles: [""] });
17126
+ } }, directives: [i1.MatDialogContent, i12.MatFormField, i5$1.MatInput, i1.MatDialogActions, i2.MatButton, i1.MatDialogClose], pipes: [i7.TranslatePipe], styles: [""] });
16857
17127
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
16858
17128
  type: Component,
16859
17129
  args: [{
@@ -17862,6 +18132,7 @@ class DrawComponent {
17862
18132
  initStore() {
17863
18133
  this.map.removeLayer(this.olDrawingLayer);
17864
18134
  this.olDrawingLayer = new VectorLayer({
18135
+ isIgoInternalLayer: true,
17865
18136
  id: 'igo-draw-layer',
17866
18137
  title: this.languageService.translate.instant('igo.geo.draw.drawing'),
17867
18138
  zIndex: 200,
@@ -18288,7 +18559,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18288
18559
  i0.ɵɵproperty("store", ctx.store)("template", ctx.tableTemplate);
18289
18560
  i0.ɵɵadvance(3);
18290
18561
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(54, 76, "igo.geo.draw.shortcuts"));
18291
- } }, directives: [i18.MatButtonToggleGroup, i18.MatButtonToggle, i22.MatSlideToggle, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i4.MatIcon, i12.MatFormField, i3.MatTooltip, i12.MatLabel, i16.DefaultValueAccessor, i5.MatInput, i16.NgControlStatus, i16.FormControlName, i12$1.ColorPickerDirective, i1$1.NgIf, i10.MatDivider, i6$1.EntityTableComponent, i2.MatButton, i13.MatSelect, i13.MatSelectTrigger, i9.MatOption, i1$1.NgForOf], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}"], changeDetection: 0 });
18562
+ } }, directives: [i18.MatButtonToggleGroup, i18.MatButtonToggle, i22.MatSlideToggle, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i4.MatIcon, i12.MatFormField, i3.MatTooltip, i12.MatLabel, i16.DefaultValueAccessor, i5$1.MatInput, i16.NgControlStatus, i16.FormControlName, i12$1.ColorPickerDirective, i1$1.NgIf, i10.MatDivider, i6.EntityTableComponent, i2.MatButton, i13.MatSelect, i13.MatSelectTrigger, i9.MatOption, i1$1.NgForOf], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}"], changeDetection: 0 });
18292
18563
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawComponent, [{
18293
18564
  type: Component,
18294
18565
  args: [{
@@ -19991,6 +20262,7 @@ class MeasurerComponent {
19991
20262
  const store = this.store;
19992
20263
  const layer = new VectorLayer({
19993
20264
  title: this.languageService.translate.instant('igo.geo.measure.layerTitle'),
20265
+ isIgoInternalLayer: true,
19994
20266
  id: `igo-measures-${uuid()}`,
19995
20267
  zIndex: 200,
19996
20268
  source: new FeatureDataSource(),
@@ -20126,6 +20398,11 @@ class MeasurerComponent {
20126
20398
  .subscribe((olGeometry) => this.onDrawEnd(olGeometry));
20127
20399
  this.drawChanges$$ = drawControl.changes$
20128
20400
  .subscribe((olGeometry) => this.onDrawChanges(olGeometry));
20401
+ this.drawChanges$$ = drawControl.abort$
20402
+ .subscribe((olGeometry) => {
20403
+ this.clearTooltipsOfOlGeometry(olGeometry);
20404
+ this.clearMeasures();
20405
+ });
20129
20406
  drawControl.setOlMap(this.map.ol, false);
20130
20407
  }
20131
20408
  /**
@@ -21220,7 +21497,7 @@ GeometryFormFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
21220
21497
  i0.ɵɵproperty("ngIf", ctx.geometryTypeField);
21221
21498
  i0.ɵɵadvance(1);
21222
21499
  i0.ɵɵproperty("ngIf", ctx.drawGuideField);
21223
- } }, directives: [GeometryFormFieldInputComponent, i16.NgControlStatus, i16.FormControlDirective, i1$1.NgIf, i18.MatButtonToggleGroup, i16.NgModel, i18.MatButtonToggle, i12.MatFormField, i5.MatInput, i16.NumberValueAccessor, i16.DefaultValueAccessor, i4.MatIcon, i12.MatPrefix, i12.MatSuffix], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}.geometry-type-toggle[_ngcontent-%COMP%], .draw-guide-field[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.draw-guide-field[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0 10px}.draw-guide-units[_ngcontent-%COMP%]{padding:10px}"], changeDetection: 0 });
21500
+ } }, directives: [GeometryFormFieldInputComponent, i16.NgControlStatus, i16.FormControlDirective, i1$1.NgIf, i18.MatButtonToggleGroup, i16.NgModel, i18.MatButtonToggle, i12.MatFormField, i5$1.MatInput, i16.NumberValueAccessor, i16.DefaultValueAccessor, i4.MatIcon, i12.MatPrefix, i12.MatSuffix], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}.geometry-type-toggle[_ngcontent-%COMP%], .draw-guide-field[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.draw-guide-field[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0 10px}.draw-guide-units[_ngcontent-%COMP%]{padding:10px}"], changeDetection: 0 });
21224
21501
  GeometryFormFieldComponent = __decorate([
21225
21502
  IgoFormFieldComponent('geometry')
21226
21503
  ], GeometryFormFieldComponent);
@@ -22149,7 +22426,7 @@ TimeFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
22149
22426
  i0.ɵɵproperty("ngIf", !ctx.isRange && ctx.style === "slider" && ctx.type === "year");
22150
22427
  i0.ɵɵadvance(1);
22151
22428
  i0.ɵɵproperty("ngIf", ctx.style === "slider" && ctx.type !== "year");
22152
- } }, directives: [i1$1.NgIf, i12.MatFormField, i4$1.MatDatetimepickerToggle, i12.MatSuffix, i4$1.MatDatetimepicker, i5.MatInput, i4$1.MatDatetimepickerInput, i16.DefaultValueAccessor, i16.NgControlStatus, i16.NgModel, i13.MatSelect, i1$1.NgForOf, i9.MatOption, i13$1.MatSlider, i22.MatSlideToggle, i3.MatTooltip, i2.MatButton, i4.MatIcon], pipes: [i7.TranslatePipe], styles: [".igo-layer-filters-container[_ngcontent-%COMP%]{padding-left:5px}mat-slider[_ngcontent-%COMP%] div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider[_ngcontent-%COMP%] span.mat-slider-thumb-label-text{font-size:10px}#time-slider[_ngcontent-%COMP%]{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider[_ngcontent-%COMP%]{width:60%;margin:0 auto}}.date-below[_ngcontent-%COMP%]{margin:0}mat-form-field[_ngcontent-%COMP%]{text-align:center}mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{padding-bottom:30px}.igo-layer-actions-container[_ngcontent-%COMP%] > .mat-slide-toggle[_ngcontent-%COMP%]{vertical-align:middle}"] });
22429
+ } }, directives: [i1$1.NgIf, i12.MatFormField, i4$1.MatDatetimepickerToggle, i12.MatSuffix, i4$1.MatDatetimepicker, i5$1.MatInput, i4$1.MatDatetimepickerInput, i16.DefaultValueAccessor, i16.NgControlStatus, i16.NgModel, i13.MatSelect, i1$1.NgForOf, i9.MatOption, i13$1.MatSlider, i22.MatSlideToggle, i3.MatTooltip, i2.MatButton, i4.MatIcon], pipes: [i7.TranslatePipe], styles: [".igo-layer-filters-container[_ngcontent-%COMP%]{padding-left:5px}mat-slider[_ngcontent-%COMP%] div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider[_ngcontent-%COMP%] span.mat-slider-thumb-label-text{font-size:10px}#time-slider[_ngcontent-%COMP%]{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider[_ngcontent-%COMP%]{width:60%;margin:0 auto}}.date-below[_ngcontent-%COMP%]{margin:0}mat-form-field[_ngcontent-%COMP%]{text-align:center}mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{padding-bottom:30px}.igo-layer-actions-container[_ngcontent-%COMP%] > .mat-slide-toggle[_ngcontent-%COMP%]{vertical-align:middle}"] });
22153
22430
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterFormComponent, [{
22154
22431
  type: Component,
22155
22432
  args: [{
@@ -22373,22 +22650,22 @@ class WktService {
22373
22650
  extentToWkt(epsgTO, extent, extentProj) {
22374
22651
  let currentExtent = olproj.transformExtent(extent, extentProj, epsgTO);
22375
22652
  currentExtent = this.roundCoordinateArray(currentExtent, epsgTO, 0);
22376
- const wktPoly = `POLYGON((
22377
- ${extent[0]} ${extent[1]},
22378
- ${extent[0]} ${extent[3]},
22379
- ${extent[2]} ${extent[3]},
22380
- ${extent[2]} ${extent[1]},
22653
+ const wktPoly = `POLYGON((
22654
+ ${extent[0]} ${extent[1]},
22655
+ ${extent[0]} ${extent[3]},
22656
+ ${extent[2]} ${extent[3]},
22657
+ ${extent[2]} ${extent[1]},
22381
22658
  ${extent[0]} ${extent[1]}))`;
22382
- const wktLine = `LINESTRING(
22383
- ${extent[0]} ${extent[1]},
22384
- ${extent[0]} ${extent[3]},
22385
- ${extent[2]} ${extent[3]},
22386
- ${extent[2]} ${extent[1]},
22659
+ const wktLine = `LINESTRING(
22660
+ ${extent[0]} ${extent[1]},
22661
+ ${extent[0]} ${extent[3]},
22662
+ ${extent[2]} ${extent[3]},
22663
+ ${extent[2]} ${extent[1]},
22387
22664
  ${extent[0]} ${extent[1]})`;
22388
- const wktMultiPoints = `MULTIPOINT(
22389
- ${extent[0]} ${extent[1]},
22390
- ${extent[0]} ${extent[3]},
22391
- ${extent[2]} ${extent[3]},
22665
+ const wktMultiPoints = `MULTIPOINT(
22666
+ ${extent[0]} ${extent[1]},
22667
+ ${extent[0]} ${extent[3]},
22668
+ ${extent[2]} ${extent[3]},
22392
22669
  ${extent[2]} ${extent[1]})`;
22393
22670
  return {
22394
22671
  wktPoly,
@@ -23746,6 +24023,20 @@ class OgcFilterButtonComponent {
23746
24023
  else if (filter && filter.filters && filter.filters.filters) {
23747
24024
  return filter.filters.filters.length;
23748
24025
  }
24026
+ if (filter.filters && filter.filters.operator === 'During' && filter.filters.active &&
24027
+ filter.interfaceOgcFilters && filter.interfaceOgcFilters[0].active) {
24028
+ const filterActiveValue = filter.interfaceOgcFilters[0];
24029
+ if (filter.filters.calendarModeYear) {
24030
+ // year mode check just year
24031
+ if ((filterActiveValue.begin.substring(0, 4) !== this.options.minDate.substring(0, 4)) ||
24032
+ (filterActiveValue.end.substring(0, 4) !== this.options.maxDate.substring(0, 4))) {
24033
+ cnt += 1;
24034
+ }
24035
+ }
24036
+ else if ((filterActiveValue.begin !== this.options.minDate) || (filterActiveValue.end !== this.options.maxDate)) {
24037
+ cnt += 1;
24038
+ }
24039
+ }
23749
24040
  return cnt > 0 ? cnt : undefined;
23750
24041
  }
23751
24042
  get layer() {
@@ -24327,23 +24618,41 @@ function OgcFilterSelectionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
24327
24618
  i0.ɵɵadvance(1);
24328
24619
  i0.ɵɵproperty("ngIf", selector_r2.selectorType === "select");
24329
24620
  } }
24621
+ function OgcFilterSelectionComponent_div_2_h4_2_Template(rf, ctx) { if (rf & 1) {
24622
+ i0.ɵɵelementStart(0, "h4");
24623
+ i0.ɵɵtext(1);
24624
+ i0.ɵɵpipe(2, "translate");
24625
+ i0.ɵɵelementEnd();
24626
+ } if (rf & 2) {
24627
+ i0.ɵɵadvance(1);
24628
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.reportingDate"));
24629
+ } }
24630
+ function OgcFilterSelectionComponent_div_2_h4_3_Template(rf, ctx) { if (rf & 1) {
24631
+ i0.ɵɵelementStart(0, "h4");
24632
+ i0.ɵɵtext(1);
24633
+ i0.ɵɵelementEnd();
24634
+ } if (rf & 2) {
24635
+ const ctx_r93 = i0.ɵɵnextContext(2);
24636
+ i0.ɵɵadvance(1);
24637
+ i0.ɵɵtextInterpolate(ctx_r93.currentFilter.title);
24638
+ } }
24330
24639
  function OgcFilterSelectionComponent_div_2_Template(rf, ctx) { if (rf & 1) {
24331
- const _r93 = i0.ɵɵgetCurrentView();
24640
+ const _r95 = i0.ɵɵgetCurrentView();
24332
24641
  i0.ɵɵelementStart(0, "div");
24333
24642
  i0.ɵɵelement(1, "mat-divider");
24334
- i0.ɵɵelementStart(2, "h4");
24335
- i0.ɵɵtext(3);
24336
- i0.ɵɵpipe(4, "translate");
24337
- i0.ɵɵelementEnd();
24338
- i0.ɵɵelementStart(5, "igo-ogc-filter-time", 46);
24339
- i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_5_listener($event) { i0.ɵɵrestoreView(_r93); const ctx_r92 = i0.ɵɵnextContext(); return ctx_r92.datasource = $event; })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_5_listener($event) { i0.ɵɵrestoreView(_r93); const ctx_r94 = i0.ɵɵnextContext(); return ctx_r94.currentFilter = $event; })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_5_listener($event) { i0.ɵɵrestoreView(_r93); const ctx_r95 = i0.ɵɵnextContext(); return ctx_r95.changeProperty($event.value, $event.pos); });
24643
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_h4_2_Template, 3, 3, "h4", 2);
24644
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_2_h4_3_Template, 2, 1, "h4", 2);
24645
+ i0.ɵɵelementStart(4, "igo-ogc-filter-time", 46);
24646
+ i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_4_listener($event) { i0.ɵɵrestoreView(_r95); const ctx_r94 = i0.ɵɵnextContext(); return ctx_r94.datasource = $event; })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_4_listener($event) { i0.ɵɵrestoreView(_r95); const ctx_r96 = i0.ɵɵnextContext(); return ctx_r96.currentFilter = $event; })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_4_listener($event) { i0.ɵɵrestoreView(_r95); const ctx_r97 = i0.ɵɵnextContext(); return ctx_r97.changeProperty($event.value, $event.pos); });
24340
24647
  i0.ɵɵelementEnd();
24341
24648
  i0.ɵɵelementEnd();
24342
24649
  } if (rf & 2) {
24343
24650
  const ctx_r1 = i0.ɵɵnextContext();
24344
- i0.ɵɵadvance(3);
24345
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 3, "igo.geo.filter.reportingDate"));
24346
24651
  i0.ɵɵadvance(2);
24652
+ i0.ɵɵproperty("ngIf", !ctx_r1.currentFilter.title);
24653
+ i0.ɵɵadvance(1);
24654
+ i0.ɵɵproperty("ngIf", ctx_r1.currentFilter.title);
24655
+ i0.ɵɵadvance(1);
24347
24656
  i0.ɵɵproperty("datasource", ctx_r1.datasource)("currentFilter", ctx_r1.currentFilter);
24348
24657
  } }
24349
24658
  class OgcFilterSelectionComponent {
@@ -24697,7 +25006,7 @@ class OgcFilterSelectionComponent {
24697
25006
  });
24698
25007
  }
24699
25008
  }
24700
- if (this.isTemporalOperator()) {
25009
+ if (this.isTemporalOperator() && this._currentFilter.active) {
24701
25010
  conditions.push(this.datasource.options.ogcFilters.interfaceOgcFilters[0]);
24702
25011
  }
24703
25012
  if (conditions.length >= 1) {
@@ -24790,14 +25099,14 @@ OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
24790
25099
  i0.ɵɵelementStart(0, "form", 0);
24791
25100
  i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_Template, 5, 4, "div", 1);
24792
25101
  i0.ɵɵelementEnd();
24793
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 6, 5, "div", 2);
25102
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 5, 4, "div", 2);
24794
25103
  } if (rf & 2) {
24795
25104
  i0.ɵɵproperty("formGroup", ctx.form);
24796
25105
  i0.ɵɵadvance(1);
24797
25106
  i0.ɵɵproperty("ngForOf", ctx.ogcFiltersSelectors);
24798
25107
  i0.ɵɵadvance(1);
24799
25108
  i0.ɵɵproperty("ngIf", ctx.isTemporalOperator());
24800
- } }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none}.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:150px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:unset;font-size:small;display:block} .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}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:unset}igo-ogc-filter-time[_ngcontent-%COMP%] .datetime-input{width:140px;margin:10px 0 5px 10px}"] });
25109
+ } }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none}.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:150px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:unset;font-size:small;display:block} .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}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:unset}"] });
24801
25110
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
24802
25111
  type: Component,
24803
25112
  args: [{
@@ -25158,7 +25467,7 @@ SpatialFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
25158
25467
  i0.ɵɵproperty("value", ctx.measureUnit);
25159
25468
  i0.ɵɵadvance(1);
25160
25469
  i0.ɵɵproperty("ngForOf", ctx.measureUnits);
25161
- } }, directives: [i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.NgForm, i12.MatFormField, i5.MatInput, i16.DefaultValueAccessor, i6$2.MatAutocompleteTrigger, i16.NgControlStatus, i16.FormControlDirective, i6$2.MatAutocomplete, i1$1.NgForOf, i16.NumberValueAccessor, i13.MatSelect, i9.MatOption], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
25470
+ } }, directives: [i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.NgForm, i12.MatFormField, i5$1.MatInput, i16.DefaultValueAccessor, i6$1.MatAutocompleteTrigger, i16.NgControlStatus, i16.FormControlDirective, i6$1.MatAutocomplete, i1$1.NgForOf, i16.NumberValueAccessor, i13.MatSelect, i9.MatOption], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
25162
25471
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterListComponent, [{
25163
25472
  type: Component,
25164
25473
  args: [{
@@ -26304,7 +26613,7 @@ function OgcFilterTimeComponent_div_2_Template(rf, ctx) { if (rf & 1) {
26304
26613
  i0.ɵɵproperty("begin", ctx_r1.beginValue)("max", ctx_r1.restrictedToStep() ? ctx_r1.maxDate : ctx_r1.endValue)("currentFilter", ctx_r1.currentFilter)("datasource", ctx_r1.datasource);
26305
26614
  } }
26306
26615
  function OgcFilterTimeComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
26307
- const _r16 = i0.ɵɵgetCurrentView();
26616
+ const _r15 = i0.ɵɵgetCurrentView();
26308
26617
  i0.ɵɵelementStart(0, "div", 9);
26309
26618
  i0.ɵɵelementStart(1, "mat-form-field", 10);
26310
26619
  i0.ɵɵelementStart(2, "mat-label");
@@ -26312,11 +26621,11 @@ function OgcFilterTimeComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
26312
26621
  i0.ɵɵpipe(4, "translate");
26313
26622
  i0.ɵɵelementEnd();
26314
26623
  i0.ɵɵelementStart(5, "input", 11);
26315
- i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r16); const _r11 = i0.ɵɵreference(8); const ctx_r15 = i0.ɵɵnextContext(2); return ctx_r15.yearOnlyInputChange($event, _r11, "begin"); });
26624
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r14 = i0.ɵɵnextContext(2); return ctx_r14.yearOnlyInputChange($event, _r10, "begin"); });
26316
26625
  i0.ɵɵelementEnd();
26317
26626
  i0.ɵɵelement(6, "mat-datepicker-toggle", 12);
26318
26627
  i0.ɵɵelementStart(7, "mat-datepicker", 13, 14);
26319
- i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r16); const _r11 = i0.ɵɵreference(8); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.yearSelected($event, _r11, "begin"); });
26628
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.yearSelected($event, _r10, "begin"); });
26320
26629
  i0.ɵɵelementEnd();
26321
26630
  i0.ɵɵelement(9, "input", 15, 16);
26322
26631
  i0.ɵɵelementEnd();
@@ -26325,240 +26634,278 @@ function OgcFilterTimeComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
26325
26634
  i0.ɵɵtext(13);
26326
26635
  i0.ɵɵpipe(14, "translate");
26327
26636
  i0.ɵɵelementEnd();
26328
- i0.ɵɵelement(15, "input", 17);
26637
+ i0.ɵɵelementStart(15, "input", 11);
26638
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_15_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.yearOnlyInputChange($event, _r12, "end"); });
26639
+ i0.ɵɵelementEnd();
26329
26640
  i0.ɵɵelement(16, "mat-datepicker-toggle", 12);
26330
- i0.ɵɵelementStart(17, "mat-datepicker", 13, 18);
26331
- i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_17_listener($event) { i0.ɵɵrestoreView(_r16); const _r13 = i0.ɵɵreference(18); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.yearSelected($event, _r13, "end"); });
26641
+ i0.ɵɵelementStart(17, "mat-datepicker", 13, 17);
26642
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_17_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.yearSelected($event, _r12, "end"); });
26643
+ i0.ɵɵelementEnd();
26644
+ i0.ɵɵelement(19, "input", 15, 18);
26332
26645
  i0.ɵɵelementEnd();
26333
- i0.ɵɵelement(19, "input", 15, 19);
26646
+ i0.ɵɵelementStart(21, "button", 19);
26647
+ i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_1_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r15); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.resetFilter(); });
26648
+ i0.ɵɵpipe(22, "translate");
26649
+ i0.ɵɵelement(23, "mat-icon", 20);
26650
+ i0.ɵɵelementEnd();
26651
+ i0.ɵɵelementStart(24, "mat-slide-toggle", 21);
26652
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_mat_slide_toggle_change_24_listener() { i0.ɵɵrestoreView(_r15); const ctx_r20 = i0.ɵɵnextContext(2); return ctx_r20.toggleFilterState(); });
26653
+ i0.ɵɵpipe(25, "translate");
26334
26654
  i0.ɵɵelementEnd();
26335
26655
  i0.ɵɵelementEnd();
26336
26656
  } if (rf & 2) {
26337
- const _r11 = i0.ɵɵreference(8);
26338
- const _r13 = i0.ɵɵreference(18);
26657
+ const _r10 = i0.ɵɵreference(8);
26658
+ const _r12 = i0.ɵɵreference(18);
26339
26659
  const ctx_r8 = i0.ɵɵnextContext(2);
26340
26660
  i0.ɵɵadvance(3);
26341
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 18, "igo.geo.timeFilter.startYear"));
26661
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 27, "igo.geo.timeFilter.startYear"));
26342
26662
  i0.ɵɵadvance(2);
26343
26663
  i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearBegin);
26664
+ i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
26344
26665
  i0.ɵɵadvance(1);
26345
- i0.ɵɵproperty("for", _r11);
26666
+ i0.ɵɵproperty("for", _r10)("disabled", ctx_r8.filterStateDisable);
26346
26667
  i0.ɵɵadvance(1);
26347
26668
  i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.beginValue);
26348
26669
  i0.ɵɵadvance(2);
26349
- i0.ɵɵproperty("matDatepicker", _r11)("value", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("min", ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.endValue && !ctx_r8.restrictedToStep() ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
26670
+ i0.ɵɵproperty("matDatepicker", _r10)("value", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("min", ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.endValue && !ctx_r8.restrictedToStep() ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
26350
26671
  i0.ɵɵadvance(4);
26351
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 20, "igo.geo.timeFilter.endYear"));
26672
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 29, "igo.geo.timeFilter.endYear"));
26352
26673
  i0.ɵɵadvance(2);
26353
26674
  i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearEnd);
26675
+ i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
26354
26676
  i0.ɵɵadvance(1);
26355
- i0.ɵɵproperty("for", _r13);
26677
+ i0.ɵɵproperty("for", _r12)("disabled", ctx_r8.filterStateDisable);
26356
26678
  i0.ɵɵadvance(1);
26357
26679
  i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.endValue);
26358
26680
  i0.ɵɵadvance(2);
26359
- i0.ɵɵproperty("matDatepicker", _r13)("value", ctx_r8.endValue ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate))("min", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
26681
+ i0.ɵɵproperty("matDatepicker", _r12)("value", ctx_r8.endValue ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate))("min", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
26682
+ i0.ɵɵadvance(2);
26683
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(22, 31, "igo.geo.filter.resetFilters"))("disabled", ctx_r8.filterStateDisable);
26684
+ i0.ɵɵadvance(2);
26685
+ i0.ɵɵpropertyInterpolate("svgIcon", ctx_r8.resetIcon);
26686
+ i0.ɵɵadvance(1);
26687
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(25, 33, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r8.filterStateDisable);
26360
26688
  } }
26361
- function OgcFilterTimeComponent_div_3_div_2_mat_form_field_10_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26362
- i0.ɵɵelementStart(0, "mat-option", 32);
26689
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26690
+ i0.ɵɵelementStart(0, "mat-option", 36);
26363
26691
  i0.ɵɵtext(1);
26364
26692
  i0.ɵɵelementEnd();
26365
26693
  } if (rf & 2) {
26366
- const hour_r24 = ctx.$implicit;
26367
- i0.ɵɵproperty("value", hour_r24);
26694
+ const hour_r27 = ctx.$implicit;
26695
+ i0.ɵɵproperty("value", hour_r27);
26368
26696
  i0.ɵɵadvance(1);
26369
- i0.ɵɵtextInterpolate(hour_r24);
26697
+ i0.ɵɵtextInterpolate(hour_r27);
26370
26698
  } }
26371
- function OgcFilterTimeComponent_div_3_div_2_mat_form_field_10_Template(rf, ctx) { if (rf & 1) {
26372
- const _r26 = i0.ɵɵgetCurrentView();
26373
- i0.ɵɵelementStart(0, "mat-form-field", 29);
26699
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
26700
+ const _r29 = i0.ɵɵgetCurrentView();
26701
+ i0.ɵɵelementStart(0, "mat-form-field", 33);
26374
26702
  i0.ɵɵelementStart(1, "mat-label");
26375
26703
  i0.ɵɵtext(2);
26376
26704
  i0.ɵɵpipe(3, "translate");
26377
26705
  i0.ɵɵelementEnd();
26378
- i0.ɵɵelementStart(4, "mat-select", 30);
26379
- i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_10_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r26); i0.ɵɵnextContext(); const _r19 = i0.ɵɵreference(4); const ctx_r25 = i0.ɵɵnextContext(2); return ctx_r25.changeTemporalProperty(_r19.value, 1); });
26380
- i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_10_mat_option_5_Template, 2, 2, "mat-option", 31);
26706
+ i0.ɵɵelementStart(4, "mat-select", 34);
26707
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r29); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r28 = i0.ɵɵnextContext(2); return ctx_r28.changeTemporalProperty(_r21.value, 1); });
26708
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
26381
26709
  i0.ɵɵelementEnd();
26382
26710
  i0.ɵɵelementEnd();
26383
26711
  } if (rf & 2) {
26384
- const ctx_r21 = i0.ɵɵnextContext(3);
26712
+ const ctx_r23 = i0.ɵɵnextContext(3);
26385
26713
  i0.ɵɵadvance(2);
26386
26714
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
26387
26715
  i0.ɵɵadvance(2);
26388
- i0.ɵɵproperty("formControl", ctx_r21.beginHourFormControl);
26389
- i0.ɵɵattribute("disabled", !ctx_r21.currentFilter.active);
26716
+ i0.ɵɵproperty("formControl", ctx_r23.beginHourFormControl);
26717
+ i0.ɵɵattribute("disabled", !ctx_r23.currentFilter.active);
26390
26718
  i0.ɵɵadvance(1);
26391
- i0.ɵɵproperty("ngForOf", ctx_r21.beginHours);
26719
+ i0.ɵɵproperty("ngForOf", ctx_r23.beginHours);
26392
26720
  } }
26393
- function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26394
- i0.ɵɵelementStart(0, "mat-option", 32);
26721
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26722
+ i0.ɵɵelementStart(0, "mat-option", 36);
26395
26723
  i0.ɵɵtext(1);
26396
26724
  i0.ɵɵelementEnd();
26397
26725
  } if (rf & 2) {
26398
- const minute_r28 = ctx.$implicit;
26399
- i0.ɵɵproperty("value", minute_r28);
26726
+ const minute_r31 = ctx.$implicit;
26727
+ i0.ɵɵproperty("value", minute_r31);
26400
26728
  i0.ɵɵadvance(1);
26401
- i0.ɵɵtextInterpolate(minute_r28);
26729
+ i0.ɵɵtextInterpolate(minute_r31);
26402
26730
  } }
26403
- function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
26404
- const _r30 = i0.ɵɵgetCurrentView();
26405
- i0.ɵɵelementStart(0, "mat-form-field", 33);
26731
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template(rf, ctx) { if (rf & 1) {
26732
+ const _r33 = i0.ɵɵgetCurrentView();
26733
+ i0.ɵɵelementStart(0, "mat-form-field", 37);
26406
26734
  i0.ɵɵelementStart(1, "mat-label");
26407
26735
  i0.ɵɵtext(2);
26408
26736
  i0.ɵɵpipe(3, "translate");
26409
26737
  i0.ɵɵelementEnd();
26410
- i0.ɵɵelementStart(4, "mat-select", 30);
26411
- i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r30); i0.ɵɵnextContext(); const _r19 = i0.ɵɵreference(4); const ctx_r29 = i0.ɵɵnextContext(2); return ctx_r29.changeTemporalProperty(_r19.value, 1); });
26412
- i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 31);
26738
+ i0.ɵɵelementStart(4, "mat-select", 34);
26739
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r33); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r32 = i0.ɵɵnextContext(2); return ctx_r32.changeTemporalProperty(_r21.value, 1); });
26740
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template, 2, 2, "mat-option", 35);
26413
26741
  i0.ɵɵelementEnd();
26414
26742
  i0.ɵɵelementEnd();
26415
26743
  } if (rf & 2) {
26416
- const ctx_r22 = i0.ɵɵnextContext(3);
26744
+ const ctx_r24 = i0.ɵɵnextContext(3);
26417
26745
  i0.ɵɵadvance(2);
26418
26746
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
26419
26747
  i0.ɵɵadvance(2);
26420
- i0.ɵɵproperty("formControl", ctx_r22.beginMinuteFormControl);
26421
- i0.ɵɵattribute("disabled", !ctx_r22.currentFilter.active);
26422
- i0.ɵɵadvance(1);
26423
- i0.ɵɵproperty("ngForOf", ctx_r22.beginMinutes);
26424
- } }
26425
- function OgcFilterTimeComponent_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
26426
- const _r32 = i0.ɵɵgetCurrentView();
26427
- i0.ɵɵelementStart(0, "div", 20);
26428
- i0.ɵɵelementStart(1, "mat-form-field", 21);
26429
- i0.ɵɵelement(2, "mat-datepicker-toggle", 12);
26430
- i0.ɵɵelementStart(3, "input", 22, 23);
26431
- i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_Template_input_dateChange_3_listener() { i0.ɵɵrestoreView(_r32); const _r19 = i0.ɵɵreference(4); const ctx_r31 = i0.ɵɵnextContext(2); return ctx_r31.changeTemporalProperty(_r19.value, 1); });
26432
- i0.ɵɵpipe(5, "translate");
26433
- i0.ɵɵelementEnd();
26434
- i0.ɵɵelement(6, "span", 24);
26435
- i0.ɵɵelementStart(7, "mat-datepicker", 25, 14);
26436
- i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r32); const _r20 = i0.ɵɵreference(8); const ctx_r33 = i0.ɵɵnextContext(2); return ctx_r33.yearSelected($event, _r20, "begin"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_monthSelected_7_listener($event) { i0.ɵɵrestoreView(_r32); const _r20 = i0.ɵɵreference(8); const ctx_r34 = i0.ɵɵnextContext(2); return ctx_r34.monthSelected($event, _r20, "begin"); });
26437
- i0.ɵɵelementEnd();
26438
- i0.ɵɵelementEnd();
26439
- i0.ɵɵelementStart(9, "div", 26);
26440
- i0.ɵɵtemplate(10, OgcFilterTimeComponent_div_3_div_2_mat_form_field_10_Template, 6, 6, "mat-form-field", 27);
26441
- i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template, 6, 6, "mat-form-field", 28);
26442
- i0.ɵɵelementEnd();
26443
- i0.ɵɵelementEnd();
26444
- } if (rf & 2) {
26445
- const _r20 = i0.ɵɵreference(8);
26446
- const ctx_r9 = i0.ɵɵnextContext(2);
26447
- i0.ɵɵadvance(2);
26448
- i0.ɵɵproperty("for", _r20);
26449
- i0.ɵɵadvance(1);
26450
- i0.ɵɵproperty("matDatepicker", _r20)("placeholder", i0.ɵɵpipeBind1(5, 12, "igo.geo.timeFilter.startDate"))("matDatepickerFilter", ctx_r9.dateFilter.bind(ctx_r9, "begin"))("value", ctx_r9.beginValue ? ctx_r9.beginValue : ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("min", ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("max", ctx_r9.endValue && !ctx_r9.restrictedToStep() ? ctx_r9.endValue : ctx_r9.handleDate(ctx_r9.datasource.options.maxDate));
26451
- i0.ɵɵattribute("disabled", !ctx_r9.currentFilter.active);
26452
- i0.ɵɵadvance(4);
26453
- i0.ɵɵproperty("startView", ctx_r9.calendarView())("startAt", ctx_r9.beginValue);
26454
- i0.ɵɵadvance(3);
26455
- i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
26748
+ i0.ɵɵproperty("formControl", ctx_r24.beginMinuteFormControl);
26749
+ i0.ɵɵattribute("disabled", !ctx_r24.currentFilter.active);
26456
26750
  i0.ɵɵadvance(1);
26457
- i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
26751
+ i0.ɵɵproperty("ngForOf", ctx_r24.beginMinutes);
26458
26752
  } }
26459
- function OgcFilterTimeComponent_div_3_div_3_mat_form_field_10_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26460
- i0.ɵɵelementStart(0, "mat-option", 32);
26753
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26754
+ i0.ɵɵelementStart(0, "mat-option", 36);
26461
26755
  i0.ɵɵtext(1);
26462
26756
  i0.ɵɵelementEnd();
26463
26757
  } if (rf & 2) {
26464
- const hour_r40 = ctx.$implicit;
26465
- i0.ɵɵproperty("value", hour_r40);
26758
+ const hour_r39 = ctx.$implicit;
26759
+ i0.ɵɵproperty("value", hour_r39);
26466
26760
  i0.ɵɵadvance(1);
26467
- i0.ɵɵtextInterpolate(hour_r40);
26761
+ i0.ɵɵtextInterpolate(hour_r39);
26468
26762
  } }
26469
- function OgcFilterTimeComponent_div_3_div_3_mat_form_field_10_Template(rf, ctx) { if (rf & 1) {
26470
- const _r42 = i0.ɵɵgetCurrentView();
26471
- i0.ɵɵelementStart(0, "mat-form-field", 29);
26763
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template(rf, ctx) { if (rf & 1) {
26764
+ const _r41 = i0.ɵɵgetCurrentView();
26765
+ i0.ɵɵelementStart(0, "mat-form-field", 33);
26472
26766
  i0.ɵɵelementStart(1, "mat-label");
26473
26767
  i0.ɵɵtext(2);
26474
26768
  i0.ɵɵpipe(3, "translate");
26475
26769
  i0.ɵɵelementEnd();
26476
- i0.ɵɵelementStart(4, "mat-select", 30);
26477
- i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_3_mat_form_field_10_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r42); i0.ɵɵnextContext(); const _r35 = i0.ɵɵreference(4); const ctx_r41 = i0.ɵɵnextContext(2); return ctx_r41.changeTemporalProperty(_r35.value, 2); });
26478
- i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_3_mat_form_field_10_mat_option_5_Template, 2, 2, "mat-option", 31);
26770
+ i0.ɵɵelementStart(4, "mat-select", 34);
26771
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r41); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r40 = i0.ɵɵnextContext(3); return ctx_r40.changeTemporalProperty(_r34.value, 2); });
26772
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template, 2, 2, "mat-option", 35);
26479
26773
  i0.ɵɵelementEnd();
26480
26774
  i0.ɵɵelementEnd();
26481
26775
  } if (rf & 2) {
26482
- const ctx_r37 = i0.ɵɵnextContext(3);
26776
+ const ctx_r36 = i0.ɵɵnextContext(4);
26483
26777
  i0.ɵɵadvance(2);
26484
26778
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
26485
26779
  i0.ɵɵadvance(2);
26486
- i0.ɵɵproperty("formControl", ctx_r37.endHourFormControl);
26487
- i0.ɵɵattribute("disabled", !ctx_r37.currentFilter.active);
26780
+ i0.ɵɵproperty("formControl", ctx_r36.endHourFormControl);
26781
+ i0.ɵɵattribute("disabled", !ctx_r36.currentFilter.active);
26488
26782
  i0.ɵɵadvance(1);
26489
- i0.ɵɵproperty("ngForOf", ctx_r37.endHours);
26783
+ i0.ɵɵproperty("ngForOf", ctx_r36.endHours);
26490
26784
  } }
26491
- function OgcFilterTimeComponent_div_3_div_3_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26492
- i0.ɵɵelementStart(0, "mat-option", 32);
26785
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
26786
+ i0.ɵɵelementStart(0, "mat-option", 36);
26493
26787
  i0.ɵɵtext(1);
26494
26788
  i0.ɵɵelementEnd();
26495
26789
  } if (rf & 2) {
26496
- const minute_r44 = ctx.$implicit;
26497
- i0.ɵɵproperty("value", minute_r44);
26790
+ const minute_r43 = ctx.$implicit;
26791
+ i0.ɵɵproperty("value", minute_r43);
26498
26792
  i0.ɵɵadvance(1);
26499
- i0.ɵɵtextInterpolate(minute_r44);
26793
+ i0.ɵɵtextInterpolate(minute_r43);
26500
26794
  } }
26501
- function OgcFilterTimeComponent_div_3_div_3_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
26502
- const _r46 = i0.ɵɵgetCurrentView();
26503
- i0.ɵɵelementStart(0, "mat-form-field", 33);
26795
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
26796
+ const _r45 = i0.ɵɵgetCurrentView();
26797
+ i0.ɵɵelementStart(0, "mat-form-field", 37);
26504
26798
  i0.ɵɵelementStart(1, "mat-label");
26505
26799
  i0.ɵɵtext(2);
26506
26800
  i0.ɵɵpipe(3, "translate");
26507
26801
  i0.ɵɵelementEnd();
26508
- i0.ɵɵelementStart(4, "mat-select", 30);
26509
- i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_3_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r46); i0.ɵɵnextContext(); const _r35 = i0.ɵɵreference(4); const ctx_r45 = i0.ɵɵnextContext(2); return ctx_r45.changeTemporalProperty(_r35.value, 2); });
26510
- i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_3_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 31);
26802
+ i0.ɵɵelementStart(4, "mat-select", 34);
26803
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r45); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r44 = i0.ɵɵnextContext(3); return ctx_r44.changeTemporalProperty(_r34.value, 2); });
26804
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
26511
26805
  i0.ɵɵelementEnd();
26512
26806
  i0.ɵɵelementEnd();
26513
26807
  } if (rf & 2) {
26514
- const ctx_r38 = i0.ɵɵnextContext(3);
26808
+ const ctx_r37 = i0.ɵɵnextContext(4);
26515
26809
  i0.ɵɵadvance(2);
26516
26810
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
26517
26811
  i0.ɵɵadvance(2);
26518
- i0.ɵɵproperty("formControl", ctx_r38.endMinuteFormControl);
26519
- i0.ɵɵattribute("disabled", !ctx_r38.currentFilter.active);
26812
+ i0.ɵɵproperty("formControl", ctx_r37.endMinuteFormControl);
26813
+ i0.ɵɵattribute("disabled", !ctx_r37.currentFilter.active);
26520
26814
  i0.ɵɵadvance(1);
26521
- i0.ɵɵproperty("ngForOf", ctx_r38.endMinutes);
26815
+ i0.ɵɵproperty("ngForOf", ctx_r37.endMinutes);
26522
26816
  } }
26523
- function OgcFilterTimeComponent_div_3_div_3_Template(rf, ctx) { if (rf & 1) {
26524
- const _r48 = i0.ɵɵgetCurrentView();
26525
- i0.ɵɵelementStart(0, "div", 20);
26526
- i0.ɵɵelementStart(1, "mat-form-field", 21);
26817
+ function OgcFilterTimeComponent_div_3_div_2_div_13_Template(rf, ctx) { if (rf & 1) {
26818
+ const _r47 = i0.ɵɵgetCurrentView();
26819
+ i0.ɵɵelementStart(0, "div", 23);
26820
+ i0.ɵɵelementStart(1, "mat-form-field", 24);
26527
26821
  i0.ɵɵelement(2, "mat-datepicker-toggle", 12);
26528
- i0.ɵɵelementStart(3, "input", 22, 34);
26529
- i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_3_Template_input_dateChange_3_listener() { i0.ɵɵrestoreView(_r48); const _r35 = i0.ɵɵreference(4); const ctx_r47 = i0.ɵɵnextContext(2); return ctx_r47.changeTemporalProperty(_r35.value, 2); });
26822
+ i0.ɵɵelementStart(3, "input", 25, 38);
26823
+ i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_input_dateChange_3_listener() { i0.ɵɵrestoreView(_r47); const _r34 = i0.ɵɵreference(4); const ctx_r46 = i0.ɵɵnextContext(3); return ctx_r46.changeTemporalProperty(_r34.value, 2); });
26530
26824
  i0.ɵɵpipe(5, "translate");
26531
26825
  i0.ɵɵelementEnd();
26532
- i0.ɵɵelement(6, "span", 24);
26533
- i0.ɵɵelementStart(7, "mat-datepicker", 25, 18);
26534
- i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_3_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r48); const _r36 = i0.ɵɵreference(8); const ctx_r49 = i0.ɵɵnextContext(2); return ctx_r49.yearSelected($event, _r36, "end"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_3_Template_mat_datepicker_monthSelected_7_listener($event) { i0.ɵɵrestoreView(_r48); const _r36 = i0.ɵɵreference(8); const ctx_r50 = i0.ɵɵnextContext(2); return ctx_r50.monthSelected($event, _r36, "end"); });
26826
+ i0.ɵɵelement(6, "span", 27);
26827
+ i0.ɵɵelementStart(7, "mat-datepicker", 28, 17);
26828
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r48 = i0.ɵɵnextContext(3); return ctx_r48.yearSelected($event, _r35, "end"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_monthSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r49 = i0.ɵɵnextContext(3); return ctx_r49.monthSelected($event, _r35, "end"); });
26535
26829
  i0.ɵɵelementEnd();
26536
26830
  i0.ɵɵelementEnd();
26537
- i0.ɵɵelementStart(9, "div", 26);
26538
- i0.ɵɵtemplate(10, OgcFilterTimeComponent_div_3_div_3_mat_form_field_10_Template, 6, 6, "mat-form-field", 27);
26539
- i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_3_mat_form_field_11_Template, 6, 6, "mat-form-field", 28);
26831
+ i0.ɵɵelementStart(9, "div", 29);
26832
+ i0.ɵɵtemplate(10, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template, 6, 6, "mat-form-field", 30);
26833
+ i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template, 6, 6, "mat-form-field", 31);
26540
26834
  i0.ɵɵelementEnd();
26541
26835
  i0.ɵɵelementEnd();
26542
26836
  } if (rf & 2) {
26543
- const _r36 = i0.ɵɵreference(8);
26544
- const ctx_r10 = i0.ɵɵnextContext(2);
26837
+ const _r35 = i0.ɵɵreference(8);
26838
+ const ctx_r25 = i0.ɵɵnextContext(3);
26545
26839
  i0.ɵɵadvance(2);
26546
- i0.ɵɵproperty("for", _r36);
26840
+ i0.ɵɵproperty("for", _r35)("disabled", ctx_r25.filterStateDisable);
26841
+ i0.ɵɵadvance(1);
26842
+ i0.ɵɵproperty("matDatepicker", _r35)("placeholder", i0.ɵɵpipeBind1(5, 14, "igo.geo.timeFilter.endDate"))("matDatepickerFilter", ctx_r25.dateFilter.bind(ctx_r25, "end"))("value", ctx_r25.endValue ? ctx_r25.endValue : ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("min", ctx_r25.beginValue ? ctx_r25.beginValue : ctx_r25.handleDate(ctx_r25.datasource.options.minDate))("max", ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("disabled", ctx_r25.filterStateDisable);
26843
+ i0.ɵɵattribute("disabled", !ctx_r25.currentFilter.active);
26844
+ i0.ɵɵadvance(4);
26845
+ i0.ɵɵproperty("startView", ctx_r25.calendarView())("startAt", ctx_r25.endValue);
26846
+ i0.ɵɵadvance(3);
26847
+ i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
26848
+ i0.ɵɵadvance(1);
26849
+ i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
26850
+ } }
26851
+ function OgcFilterTimeComponent_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
26852
+ const _r51 = i0.ɵɵgetCurrentView();
26853
+ i0.ɵɵelementStart(0, "div", 22);
26854
+ i0.ɵɵelementStart(1, "div", 23);
26855
+ i0.ɵɵelementStart(2, "mat-form-field", 24);
26856
+ i0.ɵɵelement(3, "mat-datepicker-toggle", 12);
26857
+ i0.ɵɵelementStart(4, "input", 25, 26);
26858
+ i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_Template_input_dateChange_4_listener() { i0.ɵɵrestoreView(_r51); const _r21 = i0.ɵɵreference(5); const ctx_r50 = i0.ɵɵnextContext(2); return ctx_r50.changeTemporalProperty(_r21.value, 1); });
26859
+ i0.ɵɵpipe(6, "translate");
26860
+ i0.ɵɵelementEnd();
26861
+ i0.ɵɵelement(7, "span", 27);
26862
+ i0.ɵɵelementStart(8, "mat-datepicker", 28, 14);
26863
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_yearSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r52 = i0.ɵɵnextContext(2); return ctx_r52.yearSelected($event, _r22, "begin"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_monthSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r53 = i0.ɵɵnextContext(2); return ctx_r53.monthSelected($event, _r22, "begin"); });
26864
+ i0.ɵɵelementEnd();
26865
+ i0.ɵɵelementEnd();
26866
+ i0.ɵɵelementStart(10, "div", 29);
26867
+ i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template, 6, 6, "mat-form-field", 30);
26868
+ i0.ɵɵtemplate(12, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template, 6, 6, "mat-form-field", 31);
26869
+ i0.ɵɵelementEnd();
26870
+ i0.ɵɵelementEnd();
26871
+ i0.ɵɵtemplate(13, OgcFilterTimeComponent_div_3_div_2_div_13_Template, 12, 16, "div", 32);
26872
+ i0.ɵɵelementStart(14, "button", 19);
26873
+ i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r51); const ctx_r54 = i0.ɵɵnextContext(2); return ctx_r54.resetFilter(); });
26874
+ i0.ɵɵpipe(15, "translate");
26875
+ i0.ɵɵelement(16, "mat-icon", 20);
26876
+ i0.ɵɵelementEnd();
26877
+ i0.ɵɵelementStart(17, "mat-slide-toggle", 21);
26878
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_2_Template_mat_slide_toggle_change_17_listener() { i0.ɵɵrestoreView(_r51); const ctx_r55 = i0.ɵɵnextContext(2); return ctx_r55.toggleFilterState(); });
26879
+ i0.ɵɵpipe(18, "translate");
26880
+ i0.ɵɵelementEnd();
26881
+ i0.ɵɵelementEnd();
26882
+ } if (rf & 2) {
26883
+ const _r22 = i0.ɵɵreference(9);
26884
+ const ctx_r9 = i0.ɵɵnextContext(2);
26885
+ i0.ɵɵadvance(3);
26886
+ i0.ɵɵproperty("for", _r22)("disabled", ctx_r9.filterStateDisable);
26547
26887
  i0.ɵɵadvance(1);
26548
- i0.ɵɵproperty("matDatepicker", _r36)("placeholder", i0.ɵɵpipeBind1(5, 12, "igo.geo.timeFilter.endDate"))("matDatepickerFilter", ctx_r10.dateFilter.bind(ctx_r10, "end"))("value", ctx_r10.endValue ? ctx_r10.endValue : ctx_r10.handleDate(ctx_r10.datasource.options.maxDate))("min", ctx_r10.beginValue ? ctx_r10.beginValue : ctx_r10.handleDate(ctx_r10.datasource.options.minDate))("max", ctx_r10.handleDate(ctx_r10.datasource.options.maxDate));
26549
- i0.ɵɵattribute("disabled", !ctx_r10.currentFilter.active);
26888
+ i0.ɵɵproperty("matDatepicker", _r22)("placeholder", i0.ɵɵpipeBind1(6, 20, "igo.geo.timeFilter.startDate"))("matDatepickerFilter", ctx_r9.dateFilter.bind(ctx_r9, "begin"))("value", ctx_r9.beginValue ? ctx_r9.beginValue : ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("min", ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("max", ctx_r9.endValue && !ctx_r9.restrictedToStep() ? ctx_r9.endValue : ctx_r9.handleDate(ctx_r9.datasource.options.maxDate))("disabled", ctx_r9.filterStateDisable);
26889
+ i0.ɵɵattribute("disabled", !ctx_r9.currentFilter.active);
26550
26890
  i0.ɵɵadvance(4);
26551
- i0.ɵɵproperty("startView", ctx_r10.calendarView())("startAt", ctx_r10.endValue);
26891
+ i0.ɵɵproperty("startView", ctx_r9.calendarView())("startAt", ctx_r9.beginValue);
26552
26892
  i0.ɵɵadvance(3);
26553
- i0.ɵɵproperty("ngIf", ctx_r10.calendarType() === "datetime");
26893
+ i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
26894
+ i0.ɵɵadvance(1);
26895
+ i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
26896
+ i0.ɵɵadvance(1);
26897
+ i0.ɵɵproperty("ngIf", !ctx_r9.restrictedToStep());
26554
26898
  i0.ɵɵadvance(1);
26555
- i0.ɵɵproperty("ngIf", ctx_r10.calendarType() === "datetime");
26899
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(15, 22, "igo.geo.filter.resetFilters"))("disabled", ctx_r9.filterStateDisable);
26900
+ i0.ɵɵadvance(2);
26901
+ i0.ɵɵpropertyInterpolate("svgIcon", ctx_r9.resetIcon);
26902
+ i0.ɵɵadvance(1);
26903
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(18, 24, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r9.filterStateDisable);
26556
26904
  } }
26557
26905
  function OgcFilterTimeComponent_div_3_Template(rf, ctx) { if (rf & 1) {
26558
26906
  i0.ɵɵelementStart(0, "div");
26559
- i0.ɵɵtemplate(1, OgcFilterTimeComponent_div_3_div_1_Template, 21, 22, "div", 7);
26560
- i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_3_div_2_Template, 12, 14, "div", 8);
26561
- i0.ɵɵtemplate(3, OgcFilterTimeComponent_div_3_div_3_Template, 12, 14, "div", 8);
26907
+ i0.ɵɵtemplate(1, OgcFilterTimeComponent_div_3_div_1_Template, 26, 35, "div", 7);
26908
+ i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_3_div_2_Template, 19, 26, "div", 8);
26562
26909
  i0.ɵɵelementEnd();
26563
26910
  } if (rf & 2) {
26564
26911
  const ctx_r2 = i0.ɵɵnextContext();
@@ -26566,8 +26913,6 @@ function OgcFilterTimeComponent_div_3_Template(rf, ctx) { if (rf & 1) {
26566
26913
  i0.ɵɵproperty("ngIf", ctx_r2.calendarTypeYear);
26567
26914
  i0.ɵɵadvance(1);
26568
26915
  i0.ɵɵproperty("ngIf", ctx_r2.calendarType() !== "year");
26569
- i0.ɵɵadvance(1);
26570
- i0.ɵɵproperty("ngIf", !ctx_r2.restrictedToStep() && ctx_r2.calendarType() !== "year");
26571
26916
  } }
26572
26917
  const moment$1 = moment_;
26573
26918
  class OgcFilterTimeComponent {
@@ -26586,6 +26931,7 @@ class OgcFilterTimeComponent {
26586
26931
  this.sliderMode = false;
26587
26932
  this.defaultStepMillisecond = 60000;
26588
26933
  this.calendarTypeYear = false;
26934
+ this.resetIcon = 'replay';
26589
26935
  }
26590
26936
  get step() {
26591
26937
  return this.datasource.options.stepDate
@@ -26629,12 +26975,10 @@ class OgcFilterTimeComponent {
26629
26975
  this.onlyYearBegin = this.beginValue.getUTCFullYear();
26630
26976
  this.onlyYearEnd = this.endValue.getUTCFullYear();
26631
26977
  this.calendarTypeYear = this.isCalendarYearMode();
26978
+ this.setFilterStateDisable();
26632
26979
  this.updateHoursMinutesArray();
26633
26980
  // update value for now value
26634
26981
  this.updateValues();
26635
- if (this.currentFilter.calendarModeYear) {
26636
- this.beginValue.setUTCFullYear(this.beginValue.getUTCFullYear() + 1);
26637
- }
26638
26982
  }
26639
26983
  parseFilter(filter) {
26640
26984
  if (!filter) {
@@ -26668,10 +27012,32 @@ class OgcFilterTimeComponent {
26668
27012
  }
26669
27013
  return new Date();
26670
27014
  }
26671
- return filter ? new Date(filter) : new Date();
27015
+ if (this.currentFilter.calendarModeYear) {
27016
+ const date = this.getDateFromStringWithoutTime(filter);
27017
+ return date;
27018
+ }
27019
+ else {
27020
+ return filter ? new Date(filter) : new Date();
27021
+ }
26672
27022
  }
26673
27023
  changeTemporalProperty(value, position, refreshFilter = true) {
26674
27024
  let valueTmp = this.getDateTime(value, position);
27025
+ if (this.isCalendarYearMode()) {
27026
+ let dateStringFromYearNotime;
27027
+ if (position === 1) {
27028
+ this.beginValue = value;
27029
+ this.onlyYearBegin = this.beginValue.getFullYear();
27030
+ dateStringFromYearNotime = `${this.onlyYearBegin}-01-01`;
27031
+ }
27032
+ else {
27033
+ this.endValue = value;
27034
+ this.onlyYearEnd = this.endValue.getFullYear();
27035
+ dateStringFromYearNotime = `${this.onlyYearEnd}-01-01`;
27036
+ }
27037
+ // call service with string date without time
27038
+ this.changeProperty.next({ value: dateStringFromYearNotime, pos: position, refreshFilter });
27039
+ return;
27040
+ }
26675
27041
  if (position === 2 && this.calendarType() === 'date' && !this.sliderMode) {
26676
27042
  /* Above month: see yearSelected or monthSelected */
26677
27043
  valueTmp = moment$1(valueTmp).endOf('day').toDate();
@@ -26692,6 +27058,9 @@ class OgcFilterTimeComponent {
26692
27058
  if (!value || value === '') {
26693
27059
  return undefined;
26694
27060
  }
27061
+ if (typeof (value) === 'string' && this.currentFilter.calendarModeYear) {
27062
+ return this.getDateFromStringWithoutTime(value);
27063
+ }
26695
27064
  return new Date(value);
26696
27065
  }
26697
27066
  calendarType() {
@@ -26713,38 +27082,22 @@ class OgcFilterTimeComponent {
26713
27082
  }
26714
27083
  yearOnlyInputChange(changeEvent, datePicker, property) {
26715
27084
  const year = changeEvent.target.value;
26716
- const dateString = `${year}-01-01T05:00:00.000Z`;
26717
- const dateUtc = new Date(dateString);
26718
- this.yearSelected(dateUtc, datePicker, property);
27085
+ const date = this.getDateFromStringWithoutTime(year);
27086
+ this.yearSelected(date, datePicker, property);
26719
27087
  }
26720
27088
  yearSelected(year, datePicker, property, refreshFilter = true) {
26721
27089
  if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
26722
27090
  if (datePicker) {
26723
27091
  datePicker.close();
26724
27092
  }
26725
- const yearInt = year.getUTCFullYear();
26726
- if (property === 'begin' && this.currentFilter.calendarModeYear) {
26727
- this.onlyYearBegin = yearInt;
26728
- // in year mode, change begin date -1 to include day 1 of same year in filter
26729
- const yearPast = year.getUTCFullYear() - 1;
26730
- year = moment$1().set('year', yearPast).toDate();
26731
- year = moment$1(year).endOf('year').toDate();
26732
- }
26733
27093
  if (property === 'end') {
26734
- this.onlyYearEnd = yearInt;
26735
27094
  // change value 01 jan to 31 dec same year
26736
27095
  year = moment$1(year).endOf('year').toDate();
26737
27096
  }
26738
- else if (property === 'begin' && this.restrictedToStep()) {
27097
+ else if (property === 'begin' && this.restrictedToStep() && !this.calendarTypeYear) {
26739
27098
  this.yearSelected(year, undefined, 'end');
26740
27099
  }
26741
27100
  this.changeTemporalProperty(year, property === 'begin' ? 1 : 2, refreshFilter);
26742
- if (property === 'begin' && this.currentFilter.calendarModeYear) {
26743
- // datepicker value set to original year not year-1
26744
- const newMoment = moment$1(year).startOf('year');
26745
- const newDate = newMoment.set('year', year.getFullYear() + 1).toDate();
26746
- this.beginValue = newDate;
26747
- }
26748
27101
  }
26749
27102
  }
26750
27103
  monthSelected(month, datePicker, property, refreshFilter = true) {
@@ -26977,6 +27330,97 @@ class OgcFilterTimeComponent {
26977
27330
  this.updateValues();
26978
27331
  }
26979
27332
  }
27333
+ setFilterStateDisable() {
27334
+ if (this.currentFilter) {
27335
+ this.filterStateDisable = !this.currentFilter.active;
27336
+ }
27337
+ else {
27338
+ this.filterStateDisable = false;
27339
+ }
27340
+ if (this.calendarType() === 'datetime') {
27341
+ if (this.filterStateDisable === true) {
27342
+ this.beginHourFormControl.disable();
27343
+ this.beginMinuteFormControl.disable();
27344
+ this.endHourFormControl.disable();
27345
+ this.endMinuteFormControl.disable();
27346
+ }
27347
+ else {
27348
+ this.beginHourFormControl.enable();
27349
+ this.beginMinuteFormControl.enable();
27350
+ this.endHourFormControl.enable();
27351
+ this.endMinuteFormControl.enable();
27352
+ }
27353
+ }
27354
+ }
27355
+ getDateFromStringWithoutTime(stringDate) {
27356
+ // warning create date with no time make a date UTC with TZ and the date create maybe not the same year, month and day
27357
+ // exemple:
27358
+ // new Date('2022-01-01') -> Fri Dec 31 2021 19:00:00 GMT-0500 (heure normale de l’Est nord-américain)
27359
+ // to create same date as string, add time 00 in the creation
27360
+ // new Date('2022-01-01 00:00:00') -> Sat Jan 01 2022 00:00:00 GMT-0500 (heure normale de l’Est nord-américain)
27361
+ let year;
27362
+ let month = '01';
27363
+ let day = '01';
27364
+ if (stringDate.length === 10) {
27365
+ const dateItems = stringDate.split('-');
27366
+ if (dateItems.length !== 3) {
27367
+ throw new Error('Error in config date begin-end for ogcFilter: Date without time format need to be YYYY-MM-DD or YYYY');
27368
+ }
27369
+ else {
27370
+ year = dateItems[0];
27371
+ month = dateItems[1];
27372
+ day = dateItems[2];
27373
+ }
27374
+ }
27375
+ else if (stringDate.length === 4) {
27376
+ year = stringDate;
27377
+ }
27378
+ else {
27379
+ return new Date(stringDate);
27380
+ }
27381
+ return new Date(`${year}-${month}-${day} 00:00:00`);
27382
+ }
27383
+ resetFilter() {
27384
+ let filterOriginConfig = this.datasource.options.ogcFilters.filters;
27385
+ let minDefaultDate;
27386
+ let maxDefaultDate;
27387
+ let minDefaultISOString;
27388
+ let maxDefaultISOString;
27389
+ if (this.calendarTypeYear) {
27390
+ if (filterOriginConfig.end === 'today') {
27391
+ let todayDateStringNoTime = new Date().toLocaleDateString('en-CA'); // '2022-02-13'
27392
+ maxDefaultISOString = `${todayDateStringNoTime.substring(0, 4)}-01-01`;
27393
+ }
27394
+ else {
27395
+ maxDefaultISOString = `${filterOriginConfig.end.substring(0, 4)}-01-01`;
27396
+ }
27397
+ minDefaultISOString = `${filterOriginConfig.begin.substring(0, 4)}-01-01`;
27398
+ minDefaultDate = this.getDateFromStringWithoutTime(minDefaultISOString);
27399
+ maxDefaultDate = this.getDateFromStringWithoutTime(maxDefaultISOString);
27400
+ }
27401
+ else {
27402
+ minDefaultDate = this.parseFilter(filterOriginConfig.begin);
27403
+ maxDefaultDate = this.parseFilter(filterOriginConfig.end);
27404
+ minDefaultISOString = minDefaultDate.toISOString();
27405
+ maxDefaultISOString = maxDefaultDate.toISOString();
27406
+ }
27407
+ if ((this.currentFilter.begin !== minDefaultISOString) ||
27408
+ (this.currentFilter.end !== maxDefaultISOString)) {
27409
+ this.beginValue = minDefaultDate;
27410
+ this.endValue = maxDefaultDate;
27411
+ this.updateValues();
27412
+ }
27413
+ }
27414
+ toggleFilterState() {
27415
+ if (this.currentFilter.active === true) {
27416
+ this.currentFilter.active = false;
27417
+ }
27418
+ else {
27419
+ this.currentFilter.active = true;
27420
+ }
27421
+ this.setFilterStateDisable();
27422
+ this.updateValues();
27423
+ }
26980
27424
  }
26981
27425
  OgcFilterTimeComponent.ɵfac = function OgcFilterTimeComponent_Factory(t) { return new (t || OgcFilterTimeComponent)(i0.ɵɵdirectiveInject(OGCFilterTimeService)); };
26982
27426
  OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterTimeComponent, selectors: [["igo-ogc-filter-time"]], viewQuery: function OgcFilterTimeComponent_Query(rf, ctx) { if (rf & 1) {
@@ -26990,11 +27434,11 @@ OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
26990
27434
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginDatepickerTime = _t.first);
26991
27435
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginTime = _t.first);
26992
27436
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTime = _t.first);
26993
- } }, inputs: { datasource: "datasource", currentFilter: "currentFilter" }, outputs: { changeProperty: "changeProperty" }, decls: 4, vars: 3, consts: [[1, "datetime-container"], [3, "ngModel", "ngModelChange", "change", 4, "ngIf"], ["class", "slider-container", 4, "ngIf"], [4, "ngIf"], [3, "ngModel", "ngModelChange", "change"], [1, "slider-container"], [3, "begin", "max", "currentFilter", "datasource", "changeProperty"], ["class", "year-input-container", 4, "ngIf"], ["class", "datetime-input", 4, "ngIf"], [1, "year-input-container"], [1, "year-input"], ["matInput", "", 1, "year-input-only-year", 3, "value", "change"], ["matSuffix", "", 3, "for"], ["panelClass", "datepicker-year", 3, "startView", "startAt", "yearSelected"], ["beginDatepicker", ""], ["matInput", "", "enabled", "false", "readonly", "true", 1, "year-input-hide", 3, "matDatepicker", "value", "min", "max"], ["beginYear", ""], ["matInput", "", 1, "year-input-only-year", 3, "value"], ["endDatepicker", ""], ["endYear", ""], [1, "datetime-input"], [1, "date-input"], ["matInput", "", 3, "matDatepicker", "placeholder", "matDatepickerFilter", "value", "min", "max", "dateChange"], ["begin", ""], [1, "filler"], [3, "startView", "startAt", "yearSelected", "monthSelected"], [1, "time-input"], ["class", "hour-input", 4, "ngIf"], ["class", "minute-input", 4, "ngIf"], [1, "hour-input"], [3, "formControl", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "minute-input"], ["end", ""]], template: function OgcFilterTimeComponent_Template(rf, ctx) { if (rf & 1) {
27437
+ } }, inputs: { datasource: "datasource", currentFilter: "currentFilter" }, outputs: { changeProperty: "changeProperty" }, decls: 4, vars: 3, consts: [[1, "datetime-container"], [3, "ngModel", "ngModelChange", "change", 4, "ngIf"], ["class", "slider-container", 4, "ngIf"], [4, "ngIf"], [3, "ngModel", "ngModelChange", "change"], [1, "slider-container"], [3, "begin", "max", "currentFilter", "datasource", "changeProperty"], ["class", "year-input-container", 4, "ngIf"], ["class", "datetime-input-container", 4, "ngIf"], [1, "year-input-container"], [1, "year-input"], ["matInput", "", 1, "year-input-only-year", 3, "value", "disabled", "change"], ["matSuffix", "", 3, "for", "disabled"], ["panelClass", "datepicker-year", 3, "startView", "startAt", "yearSelected"], ["beginDatepicker", ""], ["matInput", "", "enabled", "false", "readonly", "true", 1, "year-input-hide", 3, "matDatepicker", "value", "min", "max"], ["beginYear", ""], ["endDatepicker", ""], ["endYear", ""], ["mat-icon-button", "", "color", "primary", 1, "reset-button", 3, "matTooltip", "disabled", "click"], [3, "svgIcon"], ["tooltip-position", "below", "matTooltipShowDelay", "500", 1, "toggle-filter-state", 3, "matTooltip", "checked", "change"], [1, "datetime-input-container"], [1, "datetime-input"], [1, "date-input"], ["matInput", "", 3, "matDatepicker", "placeholder", "matDatepickerFilter", "value", "min", "max", "disabled", "dateChange"], ["begin", ""], [1, "filler"], [3, "startView", "startAt", "yearSelected", "monthSelected"], [1, "time-input"], ["class", "hour-input", 4, "ngIf"], ["class", "minute-input", 4, "ngIf"], ["class", "datetime-input", 4, "ngIf"], [1, "hour-input"], [3, "formControl", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "minute-input"], ["end", ""]], template: function OgcFilterTimeComponent_Template(rf, ctx) { if (rf & 1) {
26994
27438
  i0.ɵɵelementStart(0, "div", 0);
26995
27439
  i0.ɵɵtemplate(1, OgcFilterTimeComponent_mat_slide_toggle_1_Template, 3, 4, "mat-slide-toggle", 1);
26996
27440
  i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_2_Template, 2, 4, "div", 2);
26997
- i0.ɵɵtemplate(3, OgcFilterTimeComponent_div_3_Template, 4, 3, "div", 3);
27441
+ i0.ɵɵtemplate(3, OgcFilterTimeComponent_div_3_Template, 3, 2, "div", 3);
26998
27442
  i0.ɵɵelementEnd();
26999
27443
  } if (rf & 2) {
27000
27444
  i0.ɵɵadvance(1);
@@ -27003,7 +27447,7 @@ OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
27003
27447
  i0.ɵɵproperty("ngIf", ctx.sliderMode);
27004
27448
  i0.ɵɵadvance(1);
27005
27449
  i0.ɵɵproperty("ngIf", !ctx.sliderMode);
27006
- } }, styles: ["input{text-align:center!important;margin:auto 5px!important}.slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;margin:5px 25px}.year-input-container[_ngcontent-%COMP%]{display:inline-block;margin:5px 25px}.date-input[_ngcontent-%COMP%]{width:120px;margin-right:25px}.time-input[_ngcontent-%COMP%]{display:inherit;margin-right:25px}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:40px}.minute-input[_ngcontent-%COMP%]{margin-left:10px}.year-input[_ngcontent-%COMP%]{width:120px;margin-right:25px}.year-input-hide[_ngcontent-%COMP%]{width:120px;margin-right:25px;display:none}.year-input-only-year[_ngcontent-%COMP%]{width:120px;margin-right:25px} .datepicker-year .mat-calendar-arrow{display:none} .datepicker-year .mat-calendar-period-button{pointer-events:none} .datepicker-year .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}"] });
27450
+ } }, styles: ["input{text-align:center!important;margin:auto 5px!important}.slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;width:117px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input[_ngcontent-%COMP%]{width:36%;margin:0}}.date-input[_ngcontent-%COMP%]{width:100px;margin-right:25px}.time-input[_ngcontent-%COMP%]{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input[_ngcontent-%COMP%]{margin-right:5px}}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:35px;margin-left:7px}.year-input[_ngcontent-%COMP%]{width:98px;margin:10px 18px 5px 12px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input[_ngcontent-%COMP%]{width:33%;margin:0 0 0 10px}}.year-input-hide[_ngcontent-%COMP%]{width:120px;margin-right:25px;display:none}.year-input-only-year[_ngcontent-%COMP%]{width:120px;margin-right:25px}.reset-button[_ngcontent-%COMP%]{width:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button[_ngcontent-%COMP%]{padding-left:6px}}.toggle-filter-state[_ngcontent-%COMP%]{padding-left:15px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state[_ngcontent-%COMP%]{padding-left:7px}} .datepicker-year .mat-calendar-arrow{display:none} .datepicker-year .mat-calendar-period-button{pointer-events:none} .datepicker-year .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}"] });
27007
27451
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeComponent, [{
27008
27452
  type: Component,
27009
27453
  args: [{
@@ -27405,18 +27849,18 @@ IgoFilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [TimeFi
27405
27849
  SpatialFilterItemComponent,
27406
27850
  OgcFilterTimeComponent,
27407
27851
  OgcFilterTimeSliderComponent] }); })();
27408
- i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, TimeFilterItemComponent, i6$1.ListItemDirective], [i7.TranslatePipe]);
27409
- i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1$1.NgIf, i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6$1.CollapseDirective, i9.MatLine, i1$1.NgStyle, i2.MatButton, i3.MatTooltip, i1$1.NgClass, LayerLegendComponent, TimeFilterFormComponent], [i7.TranslatePipe, i1$1.AsyncPipe]);
27410
- i0.ɵɵsetComponentScope(TimeFilterListComponent, [i6$1.ListComponent, i1$1.NgForOf, TimeFilterItemComponent, i6$1.ListItemDirective], [FilterableDataSourcePipe]);
27411
- i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i11.MatCheckbox, i3.MatTooltip, i12.MatFormField, i1$1.NgClass, i13.MatSelect, i9.MatOption, i1$1.NgIf, i5.MatInput, i6$2.MatAutocompleteTrigger, i6$2.MatAutocomplete, i1$1.NgForOf, i2.MatButton, i12.MatSuffix, i4.MatIcon, OgcFilterTimeComponent], [i7.TranslatePipe, i1$1.AsyncPipe, i6$1.KeyValuePipe]);
27412
- i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, OgcFilterableItemComponent, i6$1.ListItemDirective], [i7.TranslatePipe]);
27852
+ i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, TimeFilterItemComponent, i6.ListItemDirective], [i7.TranslatePipe]);
27853
+ i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1$1.NgIf, i1$3.MatListItem, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6.CollapseDirective, i9.MatLine, i1$1.NgStyle, i2.MatButton, i3.MatTooltip, i1$1.NgClass, LayerLegendComponent, TimeFilterFormComponent], [i7.TranslatePipe, i1$1.AsyncPipe]);
27854
+ i0.ɵɵsetComponentScope(TimeFilterListComponent, [i6.ListComponent, i1$1.NgForOf, TimeFilterItemComponent, i6.ListItemDirective], [FilterableDataSourcePipe]);
27855
+ i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i11.MatCheckbox, i3.MatTooltip, i12.MatFormField, i1$1.NgClass, i13.MatSelect, i9.MatOption, i1$1.NgIf, i5$1.MatInput, i6$1.MatAutocompleteTrigger, i6$1.MatAutocomplete, i1$1.NgForOf, i2.MatButton, i12.MatSuffix, i4.MatIcon, OgcFilterTimeComponent], [i7.TranslatePipe, i1$1.AsyncPipe, i6.KeyValuePipe]);
27856
+ i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, OgcFilterableItemComponent, i6.ListItemDirective], [i7.TranslatePipe]);
27413
27857
  i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i1$1.NgForOf, i1$1.NgIf, i10.MatDivider, i12.MatFormField, i13.MatSelect, i16.NgControlStatus, i16.FormControlName, i3.MatTooltip, i9.MatOption, i18.MatButtonToggleGroup, i18.MatButtonToggle, i1$1.NgStyle, i11.MatCheckbox, i19.MatRadioGroup, i19.MatRadioButton, i4.MatIcon, i16.FormControlDirective, i16.NgModel, OgcFilterTimeComponent], [i7.TranslatePipe]);
27414
- i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgIf, OgcFilterSelectionComponent, i6$1.ListItemDirective, i1$1.NgForOf, OgcFilterFormComponent], []);
27415
- i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$3.MatListItem, i1$1.NgIf, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6$1.CollapseDirective, i9.MatLine, i1$1.NgStyle, i3.MatTooltip, i2.MatButton, i1$1.NgClass, LayerLegendComponent, OgcFilterableFormComponent, i10.MatDivider, i11.MatCheckbox, i16.NgControlStatus, i16.NgModel], [i7.TranslatePipe, i1$1.AsyncPipe]);
27416
- i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i6$1.ListComponent, i1$1.NgForOf, OgcFilterableItemComponent, i6$1.ListItemDirective], [FilterableDataSourcePipe]);
27858
+ i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgIf, OgcFilterSelectionComponent, i6.ListItemDirective, i1$1.NgForOf, OgcFilterFormComponent], []);
27859
+ i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$3.MatListItem, i1$1.NgIf, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i6.CollapseDirective, i9.MatLine, i1$1.NgStyle, i3.MatTooltip, i2.MatButton, i1$1.NgClass, LayerLegendComponent, OgcFilterableFormComponent, i10.MatDivider, i11.MatCheckbox, i16.NgControlStatus, i16.NgModel], [i7.TranslatePipe, i1$1.AsyncPipe]);
27860
+ i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i6.ListComponent, i1$1.NgForOf, OgcFilterableItemComponent, i6.ListItemDirective], [FilterableDataSourcePipe]);
27417
27861
  i0.ɵɵsetComponentScope(SpatialFilterTypeComponent, [i20.MatTabGroup, i20.MatTab, i12.MatFormField, i12.MatLabel, i13.MatSelect, i1$1.NgForOf, i9.MatOption, SpatialFilterListComponent, i18.MatButtonToggleGroup, i18.MatButtonToggle, i3.MatTooltip, i4.MatIcon], [i7.TranslatePipe]);
27418
- i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [GeometryFormFieldInputComponent, i16.NgControlStatus, i16.FormControlDirective, i1$1.NgIf, i22.MatSlideToggle, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.NgForm, i12.MatFormField, i16.NumberValueAccessor, i5.MatInput, i16.DefaultValueAccessor, i13.MatSelect, i1$1.NgForOf, i9.MatOption, i12.MatLabel, i19.MatRadioGroup, i19.MatRadioButton, i23.MatTable, i23.MatColumnDef, i23.MatHeaderCellDef, i23.MatHeaderCell, i11.MatCheckbox, i23.MatHeaderRowDef, i23.MatHeaderRow, i23.MatRowDef, i23.MatRow, i24.MatTree, i24.MatTreeNodeDef, i24.MatTreeNode, i24.MatTreeNodeToggle, i2.MatButton, i24.MatNestedTreeNode, i4.MatIcon, i24.MatTreeNodeOutlet, i3.MatTooltip, i6$1.EntityTableComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
27419
- i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1$1.NgIf, i22.MatSlideToggle, i16.NgControlStatus, i16.NgModel, OgcFilterTimeSliderComponent, i12.MatFormField, i12.MatLabel, i5.MatInput, i25.MatDatepickerToggle, i12.MatSuffix, i25.MatDatepicker, i25.MatDatepickerInput, i13.MatSelect, i16.FormControlDirective, i1$1.NgForOf, i9.MatOption], [i7.TranslatePipe]);
27862
+ i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [GeometryFormFieldInputComponent, i16.NgControlStatus, i16.FormControlDirective, i1$1.NgIf, i22.MatSlideToggle, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.NgForm, i12.MatFormField, i16.NumberValueAccessor, i5$1.MatInput, i16.DefaultValueAccessor, i13.MatSelect, i1$1.NgForOf, i9.MatOption, i12.MatLabel, i19.MatRadioGroup, i19.MatRadioButton, i23.MatTable, i23.MatColumnDef, i23.MatHeaderCellDef, i23.MatHeaderCell, i11.MatCheckbox, i23.MatHeaderRowDef, i23.MatHeaderRow, i23.MatRowDef, i23.MatRow, i24.MatTree, i24.MatTreeNodeDef, i24.MatTreeNode, i24.MatTreeNodeToggle, i2.MatButton, i24.MatNestedTreeNode, i4.MatIcon, i24.MatTreeNodeOutlet, i3.MatTooltip, i6.EntityTableComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
27863
+ i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1$1.NgIf, i22.MatSlideToggle, i16.NgControlStatus, i16.NgModel, OgcFilterTimeSliderComponent, i12.MatFormField, i12.MatLabel, i5$1.MatInput, i25.MatDatepickerToggle, i12.MatSuffix, i25.MatDatepicker, i25.MatDatepickerInput, i2.MatButton, i3.MatTooltip, i4.MatIcon, i13.MatSelect, i16.FormControlDirective, i1$1.NgForOf, i9.MatOption], [i7.TranslatePipe]);
27420
27864
 
27421
27865
  function ExportButtonComponent_button_0_Template(rf, ctx) { if (rf & 1) {
27422
27866
  i0.ɵɵelementStart(0, "button", 1);
@@ -28795,7 +29239,8 @@ class ImportExportComponent {
28795
29239
  return;
28796
29240
  }
28797
29241
  getLayerTitleById(id) {
28798
- return this.map.getLayerById(id).title;
29242
+ var _a;
29243
+ return (_a = this.map.getLayerById(id)) === null || _a === void 0 ? void 0 : _a.title;
28799
29244
  }
28800
29245
  layerHasSelectedFeatures(layer) {
28801
29246
  const wksFromLayer = this.getWorkspaceByLayerId(layer.id);
@@ -28996,6 +29441,7 @@ class ImportExportComponent {
28996
29441
  previousFeature.get('_featureStore').layer.options.title) {
28997
29442
  const titleEmptyRows = this.createTitleEmptyRows(previousFeature, currentFeature);
28998
29443
  featuresCSV.push(titleEmptyRows[2]);
29444
+ featuresCSV.push(titleEmptyRows[0]);
28999
29445
  featuresCSV.push(titleEmptyRows[1]);
29000
29446
  }
29001
29447
  }
@@ -29042,24 +29488,71 @@ class ImportExportComponent {
29042
29488
  }
29043
29489
  }
29044
29490
  createTitleEmptyRows(previousFeature, currentFeature) {
29045
- const titleRow = previousFeature.clone();
29046
- const titleRowWithArrow = previousFeature.clone();
29047
- const emptyRow = previousFeature.clone();
29491
+ const titleRow = currentFeature.clone();
29492
+ const headerRow = currentFeature.clone();
29493
+ const emptyRow = currentFeature.clone();
29048
29494
  const previousFeatureKeys = previousFeature.getKeys();
29049
- const firstKey = previousFeatureKeys[1];
29050
- previousFeatureKeys.forEach(key => {
29051
- if (key === firstKey) {
29495
+ let firstKeyPrevious = '';
29496
+ for (const key in previousFeatureKeys) {
29497
+ if (previousFeatureKeys[key] !== 'geometry') {
29498
+ firstKeyPrevious = previousFeatureKeys[key];
29499
+ break;
29500
+ }
29501
+ }
29502
+ const currentFeatureKeys = currentFeature.getKeys();
29503
+ let firstKeyCurrent = '';
29504
+ for (const key in currentFeatureKeys) {
29505
+ if (currentFeatureKeys[key] !== 'geometry') {
29506
+ firstKeyCurrent = currentFeatureKeys[key];
29507
+ break;
29508
+ }
29509
+ }
29510
+ const allKeys = currentFeature.getKeys();
29511
+ previousFeatureKeys.forEach(previousKey => {
29512
+ if (allKeys.includes(previousKey) && previousKey !== firstKeyPrevious) {
29513
+ allKeys.push(previousKey);
29514
+ }
29515
+ });
29516
+ allKeys.unshift(firstKeyPrevious);
29517
+ let firstKeyAll = '';
29518
+ for (const key in allKeys) {
29519
+ if (allKeys[key] !== 'geometry') {
29520
+ firstKeyAll = allKeys[key];
29521
+ break;
29522
+ }
29523
+ }
29524
+ allKeys.forEach(key => {
29525
+ const sameKeys = previousFeatureKeys.length === currentFeatureKeys.length &&
29526
+ previousFeatureKeys.every((value, index) => value === currentFeatureKeys[index]);
29527
+ if (key === firstKeyAll && !sameKeys) {
29528
+ titleRow.set(key, currentFeature.get('_featureStore').layer.options.title + " ===============>", true);
29529
+ headerRow.set(key, key, true);
29530
+ emptyRow.unset(key, true);
29531
+ }
29532
+ else if (key === firstKeyAll && sameKeys) {
29052
29533
  titleRow.set(key, currentFeature.get('_featureStore').layer.options.title, true);
29053
- titleRowWithArrow.set(key, currentFeature.get('_featureStore').layer.options.title + " ===================>", true);
29534
+ headerRow.set(key, key, true);
29535
+ emptyRow.unset(key, true);
29536
+ }
29537
+ else if (key === firstKeyCurrent) {
29538
+ titleRow.set(key, currentFeature.get('_featureStore').layer.options.title, true);
29539
+ headerRow.set(key, key, true);
29540
+ emptyRow.unset(key, true);
29541
+ }
29542
+ else if (key !== 'geometry') {
29543
+ titleRow.unset(key, true);
29544
+ headerRow.set(key, key, true);
29054
29545
  emptyRow.unset(key, true);
29055
29546
  }
29056
29547
  else {
29057
29548
  titleRow.unset(key, true);
29058
- titleRowWithArrow.unset(key, true);
29059
29549
  emptyRow.unset(key, true);
29060
29550
  }
29551
+ if (!(currentFeatureKeys.includes(key))) {
29552
+ headerRow.unset(key, true);
29553
+ }
29061
29554
  });
29062
- const titleEmptyRows = [titleRow, titleRowWithArrow, emptyRow];
29555
+ const titleEmptyRows = [titleRow, headerRow, emptyRow];
29063
29556
  return titleEmptyRows;
29064
29557
  }
29065
29558
  circleToPoint(feature) {
@@ -29329,7 +29822,7 @@ ImportExportComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Impor
29329
29822
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 13, ctx.exportableLayers$).length === 0 && ctx.selectedMode === "export");
29330
29823
  i0.ɵɵadvance(2);
29331
29824
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(13, 15, ctx.exportableLayers$).length > 0 && ctx.selectedMode === "export");
29332
- } }, directives: [i18.MatButtonToggleGroup, i18.MatButtonToggle, i1$1.NgIf, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i12.MatLabel, i13.MatSelect, i1$1.NgForOf, i3.MatTooltip, i2.MatButton, i6$1.SpinnerComponent, i9.MatOption, i13.MatSelectTrigger, i16.NgControlStatus, i16.FormControlName, i1$1.NgClass, i22.MatSlideToggle, i5.MatInput, i16.DefaultValueAccessor], pipes: [i7.TranslatePipe, i1$1.AsyncPipe, i6$1.KeyValuePipe], styles: ["mat-option.igo-export-layer-mat-option[_ngcontent-%COMP%]{height:5em;line-height:1em}.import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}.export-options[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%]{overflow-x:hidden}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger[_ngcontent-%COMP%]{opacity:.75;font-size:.75em}"] });
29825
+ } }, directives: [i18.MatButtonToggleGroup, i18.MatButtonToggle, i1$1.NgIf, i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i12.MatLabel, i13.MatSelect, i1$1.NgForOf, i3.MatTooltip, i2.MatButton, i6.SpinnerComponent, i9.MatOption, i13.MatSelectTrigger, i16.NgControlStatus, i16.FormControlName, i1$1.NgClass, i22.MatSlideToggle, i5$1.MatInput, i16.DefaultValueAccessor], pipes: [i7.TranslatePipe, i1$1.AsyncPipe, i6.KeyValuePipe], styles: ["mat-option.igo-export-layer-mat-option[_ngcontent-%COMP%]{height:5em;line-height:1em}.import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}.export-options[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%]{overflow-x:hidden}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger[_ngcontent-%COMP%]{opacity:.75;font-size:.75em}"] });
29333
29826
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportExportComponent, [{
29334
29827
  type: Component,
29335
29828
  args: [{
@@ -29620,7 +30113,9 @@ IgoMapModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
29620
30113
  MapBrowserComponent,
29621
30114
  ZoomButtonComponent,
29622
30115
  GeolocateButtonComponent,
30116
+ HomeExtentButtonComponent,
29623
30117
  RotationButtonComponent,
30118
+ InfoSectionComponent,
29624
30119
  BaseLayersSwitcherComponent,
29625
30120
  MiniBaseMapComponent,
29626
30121
  MapOfflineDirective,
@@ -29635,7 +30130,9 @@ IgoMapModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
29635
30130
  MapBrowserComponent,
29636
30131
  ZoomButtonComponent,
29637
30132
  GeolocateButtonComponent,
30133
+ HomeExtentButtonComponent,
29638
30134
  RotationButtonComponent,
30135
+ InfoSectionComponent,
29639
30136
  BaseLayersSwitcherComponent,
29640
30137
  MiniBaseMapComponent,
29641
30138
  MapOfflineDirective,
@@ -29651,7 +30148,9 @@ IgoMapModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
29651
30148
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoMapModule, { declarations: [MapBrowserComponent,
29652
30149
  ZoomButtonComponent,
29653
30150
  GeolocateButtonComponent,
30151
+ HomeExtentButtonComponent,
29654
30152
  RotationButtonComponent,
30153
+ InfoSectionComponent,
29655
30154
  BaseLayersSwitcherComponent,
29656
30155
  MiniBaseMapComponent,
29657
30156
  MapOfflineDirective,
@@ -29668,7 +30167,9 @@ IgoMapModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
29668
30167
  MatTooltipModule], exports: [MapBrowserComponent,
29669
30168
  ZoomButtonComponent,
29670
30169
  GeolocateButtonComponent,
30170
+ HomeExtentButtonComponent,
29671
30171
  RotationButtonComponent,
30172
+ InfoSectionComponent,
29672
30173
  BaseLayersSwitcherComponent,
29673
30174
  MiniBaseMapComponent,
29674
30175
  MapOfflineDirective,
@@ -29794,7 +30295,7 @@ MeasurerItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Measu
29794
30295
  i0.ɵɵproperty("value", ctx.measureUnit)("disabled", ctx.auto);
29795
30296
  i0.ɵɵadvance(1);
29796
30297
  i0.ɵɵproperty("ngForOf", ctx.measureUnits);
29797
- } }, directives: [i12.MatFormField, i12.MatLabel, i5.MatInput, i13.MatSelect, i1$1.NgForOf, i9.MatOption], pipes: [MeasureFormatPipe, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:flex;width:100%;padding:5px 10px}.measure-field[_ngcontent-%COMP%]{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}"], changeDetection: 0 });
30298
+ } }, directives: [i12.MatFormField, i12.MatLabel, i5$1.MatInput, i13.MatSelect, i1$1.NgForOf, i9.MatOption], pipes: [MeasureFormatPipe, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:flex;width:100%;padding:5px 10px}.measure-field[_ngcontent-%COMP%]{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}"], changeDetection: 0 });
29798
30299
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerItemComponent, [{
29799
30300
  type: Component,
29800
30301
  args: [{
@@ -29883,7 +30384,7 @@ IgoMeasurerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
29883
30384
  IgoLanguageModule,
29884
30385
  IgoEntityTableModule], exports: [MeasureFormatPipe,
29885
30386
  MeasurerComponent] }); })();
29886
- i0.ɵɵsetComponentScope(MeasurerComponent, [i18.MatButtonToggleGroup, i18.MatButtonToggle, i22.MatSlideToggle, i1$1.NgIf, i10.MatDivider, MeasurerItemComponent, i2.MatButton, i3.MatTooltip, i4.MatIcon, i6$1.EntityTableComponent], [i7.TranslatePipe, i1$1.AsyncPipe]);
30387
+ i0.ɵɵsetComponentScope(MeasurerComponent, [i18.MatButtonToggleGroup, i18.MatButtonToggle, i22.MatSlideToggle, i1$1.NgIf, i10.MatDivider, MeasurerItemComponent, i2.MatButton, i3.MatTooltip, i4.MatIcon, i6.EntityTableComponent], [i7.TranslatePipe, i1$1.AsyncPipe]);
29887
30388
  i0.ɵɵsetComponentScope(MeasurerDialogComponent, [i1$1.NgIf], [i7.TranslatePipe, MeasureFormatPipe]);
29888
30389
 
29889
30390
  class IgoMeasureModule {
@@ -31203,7 +31704,7 @@ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFor
31203
31704
  i0.ɵɵproperty("disabled", !ctx.form.valid || i0.ɵɵpipeBind1(62, 68, ctx.disabled$));
31204
31705
  i0.ɵɵadvance(2);
31205
31706
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(64, 70, "igo.geo.printForm.saveBtn"), " ");
31206
- } }, directives: [i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i5.MatInput, i16.DefaultValueAccessor, i16.NgControlStatus, i16.FormControlName, i22.MatSlideToggle, i13.MatSelect, i1$1.NgForOf, i2.MatButton, i9.MatOption], pipes: [i7.TranslatePipe, i6$1.KeyValuePipe, i1$1.AsyncPipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
31707
+ } }, directives: [i16.ɵNgNoValidate, i16.NgControlStatusGroup, i16.FormGroupDirective, i12.MatFormField, i5$1.MatInput, i16.DefaultValueAccessor, i16.NgControlStatus, i16.FormControlName, i22.MatSlideToggle, i13.MatSelect, i1$1.NgForOf, i2.MatButton, i9.MatOption], pipes: [i7.TranslatePipe, i6.KeyValuePipe, i1$1.AsyncPipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
31207
31708
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintFormComponent, [{
31208
31709
  type: Component,
31209
31710
  args: [{
@@ -31610,6 +32111,7 @@ function initStopsFeatureStore(stopsFeatureStore, languageService) {
31610
32111
  motion: FeatureMotion.None
31611
32112
  });
31612
32113
  const stopsLayer = new VectorLayer({
32114
+ isIgoInternalLayer: true,
31613
32115
  id: 'igo-direction-stops-layer',
31614
32116
  title: languageService.translate.instant('igo.geo.directionsForm.stopLayer'),
31615
32117
  zIndex: 911,
@@ -31642,6 +32144,7 @@ function initRoutesFeatureStore(routesFeatureStore, languageService) {
31642
32144
  motion: FeatureMotion.None
31643
32145
  });
31644
32146
  const routeLayer = new VectorLayer({
32147
+ isIgoInternalLayer: true,
31645
32148
  id: 'igo-direction-route-layer',
31646
32149
  title: languageService.translate.instant('igo.geo.directionsForm.routeLayer'),
31647
32150
  zIndex: 910,
@@ -31666,6 +32169,7 @@ function initStepFeatureStore(stepFeatureStore) {
31666
32169
  motion: FeatureMotion.None
31667
32170
  });
31668
32171
  const stepLayer = new VectorLayer({
32172
+ isIgoInternalLayer: true,
31669
32173
  id: 'igo-direction-step-layer',
31670
32174
  title: '',
31671
32175
  zIndex: 910,
@@ -32251,7 +32755,7 @@ DirectionsInputsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: D
32251
32755
  } if (rf & 2) {
32252
32756
  i0.ɵɵadvance(1);
32253
32757
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx.stopsStore.view.all$()));
32254
- } }, directives: [i2$2.CdkDropList, i1$1.NgForOf, i2$2.CdkDrag, i1$1.NgClass, i12.MatFormField, i5.MatInput, i16.DefaultValueAccessor, i6$2.MatAutocompleteTrigger, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i1$1.NgIf, i6$2.MatAutocomplete, i2.MatButton, i12.MatSuffix, i4.MatIcon, i9.MatOptgroup, i9.MatOption, i2$2.CdkDragHandle], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
32758
+ } }, directives: [i2$2.CdkDropList, i1$1.NgForOf, i2$2.CdkDrag, i1$1.NgClass, i12.MatFormField, i5$1.MatInput, i16.DefaultValueAccessor, i6$1.MatAutocompleteTrigger, i3.MatTooltip, i16.NgControlStatus, i16.NgModel, i1$1.NgIf, i6$1.MatAutocomplete, i2.MatButton, i12.MatSuffix, i4.MatIcon, i9.MatOptgroup, i9.MatOption, i2$2.CdkDragHandle], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
32255
32759
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsInputsComponent, [{
32256
32760
  type: Component,
32257
32761
  args: [{
@@ -32684,6 +33188,10 @@ class DirectionsButtonsComponent {
32684
33188
  if (!this.route) {
32685
33189
  return;
32686
33190
  }
33191
+ let context = '';
33192
+ if (this.contextUri) {
33193
+ context = `context=${this.contextUri}&`;
33194
+ }
32687
33195
  const pos = this.routesFeatureStore.all()
32688
33196
  .map((direction) => direction.properties.id).indexOf(this.activeRoute.properties.id);
32689
33197
  let routingOptions = '';
@@ -32696,13 +33204,13 @@ class DirectionsButtonsComponent {
32696
33204
  let directionsUrl = '';
32697
33205
  if (stopsCoordinates.length >= 2) {
32698
33206
  directionsUrl = `${directionsKey}=${stopsCoordinates.join(';')}`;
32699
- return `${location.origin}${location.pathname}?tool=directions&sidenav=1&${directionsUrl}${routingOptions}`;
33207
+ return `${location.origin}${location.pathname}?${context}tool=directions&sidenav=1&${directionsUrl}${routingOptions}`;
32700
33208
  }
32701
33209
  return;
32702
33210
  }
32703
33211
  }
32704
33212
  DirectionsButtonsComponent.ɵfac = function DirectionsButtonsComponent_Factory(t) { return new (t || DirectionsButtonsComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.RouteService, 8)); };
32705
- DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsButtonsComponent, selectors: [["igo-directions-buttons"]], inputs: { zoomToActiveRoute$: "zoomToActiveRoute$", stopsStore: "stopsStore", routesFeatureStore: "routesFeatureStore" }, decls: 13, vars: 17, consts: [[1, "igo-form-button-group"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "map-marker-plus"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click"], ["svgIcon", "file-restore"], ["svgIcon", "magnify-plus-outline"], ["svgIcon", "content-copy"], ["svgIcon", "link"]], template: function DirectionsButtonsComponent_Template(rf, ctx) { if (rf & 1) {
33213
+ DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsButtonsComponent, selectors: [["igo-directions-buttons"]], inputs: { contextUri: "contextUri", zoomToActiveRoute$: "zoomToActiveRoute$", stopsStore: "stopsStore", routesFeatureStore: "routesFeatureStore" }, decls: 13, vars: 17, consts: [[1, "igo-form-button-group"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "map-marker-plus"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click"], ["svgIcon", "file-restore"], ["svgIcon", "magnify-plus-outline"], ["svgIcon", "content-copy"], ["svgIcon", "link"]], template: function DirectionsButtonsComponent_Template(rf, ctx) { if (rf & 1) {
32706
33214
  i0.ɵɵelementStart(0, "div", 0);
32707
33215
  i0.ɵɵelementStart(1, "button", 1);
32708
33216
  i0.ɵɵlistener("click", function DirectionsButtonsComponent_Template_button_click_1_listener() { return ctx.addStop(); });
@@ -32740,7 +33248,9 @@ DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
32740
33248
  }]
32741
33249
  }], function () { return [{ type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: i2$1.RouteService, decorators: [{
32742
33250
  type: Optional
32743
- }] }]; }, { zoomToActiveRoute$: [{
33251
+ }] }]; }, { contextUri: [{
33252
+ type: Input
33253
+ }], zoomToActiveRoute$: [{
32744
33254
  type: Input
32745
33255
  }], stopsStore: [{
32746
33256
  type: Input
@@ -33188,7 +33698,7 @@ class DirectionsComponent {
33188
33698
  }
33189
33699
  }
33190
33700
  DirectionsComponent.ɵfac = function DirectionsComponent_Factory(t) { return new (t || DirectionsComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(DirectionsService), i0.ɵɵdirectiveInject(SearchService), i0.ɵɵdirectiveInject(QueryService)); };
33191
- DirectionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsComponent, selectors: [["igo-directions"]], inputs: { stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$" }, decls: 4, vars: 11, consts: [[3, "zoomToActiveRoute$", "routesFeatureStore", "stopsStore"], [3, "coordRoundedDecimals", "projection", "stopsFeatureStore", "stopsStore", "debounce", "length", "stopInputHasFocus"], [3, "stepFeatureStore", "routesFeatureStore"]], template: function DirectionsComponent_Template(rf, ctx) { if (rf & 1) {
33701
+ DirectionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsComponent, selectors: [["igo-directions"]], inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$" }, decls: 4, vars: 12, consts: [[3, "contextUri", "zoomToActiveRoute$", "routesFeatureStore", "stopsStore"], [3, "coordRoundedDecimals", "projection", "stopsFeatureStore", "stopsStore", "debounce", "length", "stopInputHasFocus"], [3, "stepFeatureStore", "routesFeatureStore"]], template: function DirectionsComponent_Template(rf, ctx) { if (rf & 1) {
33192
33702
  i0.ɵɵelement(0, "igo-directions-buttons", 0);
33193
33703
  i0.ɵɵelementStart(1, "igo-directions-inputs", 1);
33194
33704
  i0.ɵɵlistener("stopInputHasFocus", function DirectionsComponent_Template_igo_directions_inputs_stopInputHasFocus_1_listener($event) { return ctx.onStopInputHasFocusChange($event); });
@@ -33196,7 +33706,7 @@ DirectionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Directi
33196
33706
  i0.ɵɵelement(2, "br");
33197
33707
  i0.ɵɵelement(3, "igo-directions-results", 2);
33198
33708
  } if (rf & 2) {
33199
- i0.ɵɵproperty("zoomToActiveRoute$", ctx.zoomToActiveRoute$)("routesFeatureStore", ctx.routesFeatureStore)("stopsStore", ctx.stopsStore);
33709
+ i0.ɵɵproperty("contextUri", ctx.contextUri)("zoomToActiveRoute$", ctx.zoomToActiveRoute$)("routesFeatureStore", ctx.routesFeatureStore)("stopsStore", ctx.stopsStore);
33200
33710
  i0.ɵɵadvance(1);
33201
33711
  i0.ɵɵproperty("coordRoundedDecimals", ctx.coordRoundedDecimals)("projection", ctx.projection)("stopsFeatureStore", ctx.stopsFeatureStore)("stopsStore", ctx.stopsStore)("debounce", ctx.debounce)("length", ctx.length);
33202
33712
  i0.ɵɵadvance(2);
@@ -33209,7 +33719,9 @@ DirectionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Directi
33209
33719
  templateUrl: './directions.component.html',
33210
33720
  styleUrls: ['./directions.component.scss']
33211
33721
  }]
33212
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i2$1.LanguageService }, { type: DirectionsService }, { type: SearchService }, { type: QueryService }]; }, { stopsStore: [{
33722
+ }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i2$1.LanguageService }, { type: DirectionsService }, { type: SearchService }, { type: QueryService }]; }, { contextUri: [{
33723
+ type: Input
33724
+ }], stopsStore: [{
33213
33725
  type: Input
33214
33726
  }], stopsFeatureStore: [{
33215
33727
  type: Input
@@ -34742,7 +35254,7 @@ SearchSelectorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
34742
35254
  i0.ɵɵproperty("value", i0.ɵɵpipeBind1(7, 6, ctx.searchType$));
34743
35255
  i0.ɵɵadvance(2);
34744
35256
  i0.ɵɵproperty("ngForOf", ctx.searchTypes);
34745
- } }, directives: [i2.MatButton, i3.MatTooltip, i5$1.MatMenuTrigger, i4.MatIcon, i5$1.MatMenu, i19.MatRadioGroup, i1$1.NgForOf, i19.MatRadioButton], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".igo-search-selector-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}"], changeDetection: 0 });
35257
+ } }, directives: [i2.MatButton, i3.MatTooltip, i5$2.MatMenuTrigger, i4.MatIcon, i5$2.MatMenu, i19.MatRadioGroup, i1$1.NgForOf, i19.MatRadioButton], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [".igo-search-selector-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}"], changeDetection: 0 });
34746
35258
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSelectorComponent, [{
34747
35259
  type: Component,
34748
35260
  args: [{
@@ -35201,7 +35713,7 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
35201
35713
  i0.ɵɵproperty("ngForOf", ctx.getSearchSources());
35202
35714
  i0.ɵɵadvance(1);
35203
35715
  i0.ɵɵproperty("ngIf", ctx.hasPointerReverseSearchSource && !ctx.isTouchScreen);
35204
- } }, directives: [i2.MatButton, i3.MatTooltip, i5$1.MatMenuTrigger, i4.MatIcon, i5$1.MatMenu, i1$1.NgIf, i1$1.NgForOf, i11.MatCheckbox, i5$1.MatMenuItem, i1$1.NgSwitch, i1$1.NgSwitchCase, i19.MatRadioGroup, i19.MatRadioButton, i10.MatDivider, i22.MatSlideToggle], pipes: [i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
35716
+ } }, directives: [i2.MatButton, i3.MatTooltip, i5$2.MatMenuTrigger, i4.MatIcon, i5$2.MatMenu, i1$1.NgIf, i1$1.NgForOf, i11.MatCheckbox, i5$2.MatMenuItem, i1$1.NgSwitch, i1$1.NgSwitchCase, i19.MatRadioGroup, i19.MatRadioButton, i10.MatDivider, i22.MatSlideToggle], pipes: [i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
35205
35717
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSettingsComponent, [{
35206
35718
  type: Component,
35207
35719
  args: [{
@@ -35590,7 +36102,9 @@ class SearchBarComponent {
35590
36102
  let terms;
35591
36103
  if (this.termSplitter && rawTerm.match(new RegExp(this.termSplitter, 'g'))) {
35592
36104
  terms = rawTerm.split(this.termSplitter).filter((t) => t.length >= this.minLength);
35593
- this.store.clear();
36105
+ if (this.store) {
36106
+ this.store.clear();
36107
+ }
35594
36108
  }
35595
36109
  else {
35596
36110
  terms = [rawTerm];
@@ -35686,7 +36200,7 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
35686
36200
  i0.ɵɵproperty("ngIf", ctx.searchSelector);
35687
36201
  i0.ɵɵadvance(1);
35688
36202
  i0.ɵɵproperty("ngIf", ctx.searchSettings);
35689
- } }, directives: [i1$1.NgClass, i12.MatFormField, i1$1.NgIf, i5.MatInput, i12.MatLabel, i2.MatButton, i4.MatIcon, SearchSelectorComponent, SearchSettingsComponent], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-form-field{padding:0 5px}[_nghost-%COMP%] .mat-form-field-wrapper{margin-bottom:-1.5em}[_nghost-%COMP%] span.mat-form-field-label-wrapper{top:-20px}[_nghost-%COMP%] div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}[_nghost-%COMP%] div.mat-form-field-underline{display:none}.igo-search-bar-container[_ngcontent-%COMP%]{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - (2 * 40px))}.igo-search-bar-container.empty[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 40px)}.search-bar-buttons[_ngcontent-%COMP%]{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}igo-search-settings[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}"], changeDetection: 0 });
36203
+ } }, directives: [i1$1.NgClass, i12.MatFormField, i1$1.NgIf, i5$1.MatInput, i12.MatLabel, i2.MatButton, i4.MatIcon, SearchSelectorComponent, SearchSettingsComponent], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-form-field{padding:0 5px}[_nghost-%COMP%] .mat-form-field-wrapper{margin-bottom:-1.5em}[_nghost-%COMP%] span.mat-form-field-label-wrapper{top:-20px}[_nghost-%COMP%] div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}[_nghost-%COMP%] div.mat-form-field-underline{display:none}.igo-search-bar-container[_ngcontent-%COMP%]{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - (2 * 40px))}.igo-search-bar-container.empty[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 40px)}.search-bar-buttons[_ngcontent-%COMP%]{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}igo-search-settings[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}"], changeDetection: 0 });
35690
36204
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchBarComponent, [{
35691
36205
  type: Component,
35692
36206
  args: [{
@@ -35940,7 +36454,7 @@ SearchResultsItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
35940
36454
  i0.ɵɵproperty("ngIf", !ctx.titleHtml);
35941
36455
  i0.ɵɵadvance(1);
35942
36456
  i0.ɵɵproperty("ngIf", ctx.withZoomButton);
35943
- } }, directives: [i1$3.MatListItem, i1$1.NgIf, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i9.MatLine, i3.MatTooltip, i2.MatButton, i6$1.StopPropagationDirective], styles: ["[_nghost-%COMP%] small{color:#8c8c8c} .search-result-tooltip{white-space:pre-line}"], changeDetection: 0 });
36457
+ } }, directives: [i1$3.MatListItem, i1$1.NgIf, i4.MatIcon, i1$3.MatListAvatarCssMatStyler, i9.MatLine, i3.MatTooltip, i2.MatButton, i6.StopPropagationDirective], styles: ["[_nghost-%COMP%] small{color:#8c8c8c} .search-result-tooltip{white-space:pre-line}"], changeDetection: 0 });
35944
36458
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsItemComponent, [{
35945
36459
  type: Component,
35946
36460
  args: [{
@@ -36246,7 +36760,7 @@ SearchResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sear
36246
36760
  i0.ɵɵproperty("navigation", true);
36247
36761
  i0.ɵɵadvance(1);
36248
36762
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(3, 2, ctx.results$));
36249
- } }, directives: [i6$1.ListComponent, i1$1.NgForOf, i1$1.NgIf, i6$1.CollapsibleComponent, i1$1.NgTemplateOutlet, SearchResultsItemComponent, i6$1.ListItemDirective], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".moreResults[_ngcontent-%COMP%]{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list[_ngcontent-%COMP%] mat-list{height:100%}"], changeDetection: 0 });
36763
+ } }, directives: [i6.ListComponent, i1$1.NgForOf, i1$1.NgIf, i6.CollapsibleComponent, i1$1.NgTemplateOutlet, SearchResultsItemComponent, i6.ListItemDirective], pipes: [i1$1.AsyncPipe, i7.TranslatePipe], styles: [".moreResults[_ngcontent-%COMP%]{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list[_ngcontent-%COMP%] mat-list{height:100%}"], changeDetection: 0 });
36250
36764
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsComponent, [{
36251
36765
  type: Component,
36252
36766
  args: [{
@@ -36451,11 +36965,11 @@ class SearchResultAddButtonComponent {
36451
36965
  }
36452
36966
  }
36453
36967
  SearchResultAddButtonComponent.ɵfac = function SearchResultAddButtonComponent_Factory(t) { return new (t || SearchResultAddButtonComponent)(i0.ɵɵdirectiveInject(LayerService)); };
36454
- SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultAddButtonComponent, selectors: [["igo-search-add-button"]], inputs: { layer: "layer", added: "added", map: "map", color: "color" }, decls: 1, vars: 1, consts: [["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "matBadgeHidden", "svgIcon"]], template: function SearchResultAddButtonComponent_Template(rf, ctx) { if (rf & 1) {
36968
+ SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultAddButtonComponent, selectors: [["igo-search-add-button"]], inputs: { layer: "layer", added: "added", map: "map", color: "color" }, decls: 1, vars: 1, consts: [["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "matBadgeHidden", "svgIcon"]], template: function SearchResultAddButtonComponent_Template(rf, ctx) { if (rf & 1) {
36455
36969
  i0.ɵɵtemplate(0, SearchResultAddButtonComponent_button_0_Template, 7, 14, "button", 0);
36456
36970
  } if (rf & 2) {
36457
36971
  i0.ɵɵproperty("ngIf", ctx.layer.meta.dataType === "Layer");
36458
- } }, directives: [i1$1.NgIf, i2.MatButton, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, i6$1.IgoBadgeIconDirective], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [""], changeDetection: 0 });
36972
+ } }, directives: [i1$1.NgIf, i2.MatButton, i6.StopPropagationDirective, i3.MatTooltip, i4.MatIcon, i9$1.MatBadge, i6.IgoBadgeIconDirective], pipes: [i7.TranslatePipe, i1$1.AsyncPipe], styles: [""], changeDetection: 0 });
36459
36973
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultAddButtonComponent, [{
36460
36974
  type: Component,
36461
36975
  args: [{
@@ -36599,6 +37113,7 @@ class SearchPointerSummaryDirective {
36599
37113
  initStore() {
36600
37114
  const store = this.store;
36601
37115
  const layer = new VectorLayer({
37116
+ isIgoInternalLayer: true,
36602
37117
  id: 'searchPointerSummaryId',
36603
37118
  title: 'searchPointerSummary',
36604
37119
  zIndex: 900,
@@ -36986,7 +37501,7 @@ ToastComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ToastCompone
36986
37501
  i0.ɵɵproperty("ngIf", ctx.feature.geometry);
36987
37502
  i0.ɵɵadvance(1);
36988
37503
  i0.ɵɵproperty("feature", ctx.feature);
36989
- } }, directives: [i6$1.FlexibleComponent, i6$1.PanelComponent, i2.MatButton, i4.MatIcon, i1$1.NgIf, FeatureDetailsComponent], styles: ["[_nghost-%COMP%]{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details[_ngcontent-%COMP%] table{width:100%}"] });
37504
+ } }, directives: [i6.FlexibleComponent, i6.PanelComponent, i2.MatButton, i4.MatIcon, i1$1.NgIf, FeatureDetailsComponent], styles: ["[_nghost-%COMP%]{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details[_ngcontent-%COMP%] table{width:100%}"] });
36990
37505
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToastComponent, [{
36991
37506
  type: Component,
36992
37507
  args: [{
@@ -37151,24 +37666,42 @@ class WfsWorkspace extends Workspace {
37151
37666
  }
37152
37667
  get layer() { return this.options.layer; }
37153
37668
  get map() { return this.options.map; }
37669
+ getLayerWksOptionTabQuery() {
37670
+ var _a;
37671
+ if (((_a = this.layer.options.workspace.queryOptions) === null || _a === void 0 ? void 0 : _a.tabQuery) !== undefined) {
37672
+ return this.layer.options.workspace.queryOptions.tabQuery;
37673
+ }
37674
+ return true;
37675
+ }
37676
+ getLayerWksOptionMapQuery() {
37677
+ var _a;
37678
+ if (((_a = this.layer.options.workspace.queryOptions) === null || _a === void 0 ? void 0 : _a.mapQueryOnOpenTab) !== undefined) {
37679
+ return this.layer.options.workspace.queryOptions.mapQueryOnOpenTab;
37680
+ }
37681
+ return true;
37682
+ }
37683
+ getInResolutionRange() {
37684
+ return this.inResolutionRange$.value;
37685
+ }
37154
37686
  }
37155
37687
 
37156
37688
  class WfsWorkspaceService {
37157
37689
  constructor(storageService) {
37158
37690
  this.storageService = storageService;
37691
+ this.ws$ = new BehaviorSubject(undefined);
37159
37692
  }
37160
37693
  get zoomAuto() {
37161
37694
  return this.storageService.get('zoomAuto');
37162
37695
  }
37163
37696
  createWorkspace(layer, map) {
37164
37697
  var _a;
37165
- if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
37698
+ if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) === false || layer.dataSource.options.edition) {
37166
37699
  return;
37167
37700
  }
37168
37701
  layer.options.workspace = Object.assign({}, layer.options.workspace, {
37169
- enabled: true,
37170
37702
  srcId: layer.id,
37171
- workspaceId: layer.id
37703
+ workspaceId: layer.id,
37704
+ enabled: true
37172
37705
  });
37173
37706
  const wks = new WfsWorkspace({
37174
37707
  id: layer.id,
@@ -37216,6 +37749,7 @@ class WfsWorkspaceService {
37216
37749
  }
37217
37750
  createTableTemplate(workspace, layer) {
37218
37751
  const fields = layer.dataSource.options.sourceFields || [];
37752
+ const relations = layer.dataSource.options.relations || [];
37219
37753
  if (fields.length === 0) {
37220
37754
  workspace.entityStore.entities$.pipe(skipWhile(val => val.length === 0), take(1)).subscribe(entities => {
37221
37755
  const ol = entities[0].ol;
@@ -37243,9 +37777,28 @@ class WfsWorkspaceService {
37243
37777
  return {
37244
37778
  name: `properties.${field.name}`,
37245
37779
  title: field.alias ? field.alias : field.name,
37246
- renderer: EntityTableColumnRenderer.UnsanitizedHTML
37780
+ renderer: EntityTableColumnRenderer.UnsanitizedHTML,
37781
+ tooltip: field.tooltip
37782
+ };
37783
+ });
37784
+ const relationsColumn = relations.map((relation) => {
37785
+ return {
37786
+ name: `properties.${relation.name}`,
37787
+ title: relation.alias ? relation.alias : relation.name,
37788
+ renderer: EntityTableColumnRenderer.Icon,
37789
+ icon: relation.icon,
37790
+ parent: relation.parent,
37791
+ type: 'relation',
37792
+ tooltip: relation.tooltip,
37793
+ onClick: () => {
37794
+ this.ws$.next(relation.title);
37795
+ },
37796
+ cellClassFunc: () => {
37797
+ return { 'class_icon': true };
37798
+ }
37247
37799
  };
37248
37800
  });
37801
+ columns.push(...relationsColumn);
37249
37802
  workspace.meta.tableTemplate = {
37250
37803
  selection: true,
37251
37804
  sort: true,
@@ -37272,13 +37825,16 @@ class WmsWorkspaceService {
37272
37825
  constructor(layerService, storageService) {
37273
37826
  this.layerService = layerService;
37274
37827
  this.storageService = storageService;
37828
+ this.ws$ = new BehaviorSubject(undefined);
37275
37829
  }
37276
37830
  get zoomAuto() {
37277
37831
  return this.storageService.get('zoomAuto');
37278
37832
  }
37279
37833
  createWorkspace(layer, map) {
37280
- var _a, _b, _c, _d, _e, _f;
37281
- if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
37834
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
37835
+ if (!layer.options.workspace ||
37836
+ map.layers.find(lay => lay.id === layer.id + '.WfsWorkspaceTableDest') ||
37837
+ layer.dataSource.options.edition) {
37282
37838
  return;
37283
37839
  }
37284
37840
  const dataSource = layer.dataSource;
@@ -37296,15 +37852,15 @@ class WmsWorkspaceService {
37296
37852
  LinkedProperties.VISIBLE
37297
37853
  ]
37298
37854
  };
37299
- if (!((_b = layer.options.workspace) === null || _b === void 0 ? void 0 : _b.minResolution)) {
37855
+ if (!((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.minResolution)) {
37300
37856
  linkProperties.properties.push(LinkedProperties.MINRESOLUTION);
37301
37857
  }
37302
37858
  let hasOgcFilters = false;
37303
- if ((_c = dataSource.options.ogcFilters) === null || _c === void 0 ? void 0 : _c.enabled) {
37859
+ if ((_b = dataSource.options.ogcFilters) === null || _b === void 0 ? void 0 : _b.enabled) {
37304
37860
  linkProperties.properties.push(LinkedProperties.OGCFILTERS);
37305
37861
  hasOgcFilters = true;
37306
37862
  }
37307
- if (!((_d = layer.options.workspace) === null || _d === void 0 ? void 0 : _d.maxResolution)) {
37863
+ if (!((_c = layer.options.workspace) === null || _c === void 0 ? void 0 : _c.maxResolution)) {
37308
37864
  linkProperties.properties.push(LinkedProperties.MAXRESOLUTION);
37309
37865
  }
37310
37866
  let clonedLinks = [];
@@ -37315,37 +37871,51 @@ class WmsWorkspaceService {
37315
37871
  layer.options.linkedLayers.linkId = layer.options.linkedLayers.linkId ? layer.options.linkedLayers.linkId : wmsLinkId,
37316
37872
  layer.options.linkedLayers.links = clonedLinks;
37317
37873
  let wks;
37874
+ let wksLayerOption = {
37875
+ srcId: layer.id,
37876
+ workspaceId: undefined,
37877
+ enabled: false,
37878
+ queryOptions: {
37879
+ mapQueryOnOpenTab: (_e = (_d = layer.options.workspace) === null || _d === void 0 ? void 0 : _d.queryOptions) === null || _e === void 0 ? void 0 : _e.mapQueryOnOpenTab,
37880
+ tabQuery: (_g = (_f = layer.options.workspace) === null || _f === void 0 ? void 0 : _f.queryOptions) === null || _g === void 0 ? void 0 : _g.tabQuery
37881
+ },
37882
+ pageSize: (_h = layer.options.workspace) === null || _h === void 0 ? void 0 : _h.pageSize,
37883
+ pageSizeOptions: (_j = layer.options.workspace) === null || _j === void 0 ? void 0 : _j.pageSizeOptions
37884
+ };
37318
37885
  this.layerService
37319
37886
  .createAsyncLayer({
37887
+ isIgoInternalLayer: true,
37320
37888
  id: wfsLinkId,
37321
37889
  linkedLayers: {
37322
37890
  linkId: wfsLinkId
37323
37891
  },
37324
- workspace: {
37325
- srcId: layer.id,
37326
- workspaceId: undefined,
37327
- enabled: false,
37328
- },
37892
+ workspace: wksLayerOption,
37329
37893
  showInLayerList: false,
37330
37894
  opacity: 0,
37331
37895
  title: layer.title,
37332
- minResolution: ((_e = layer.options.workspace) === null || _e === void 0 ? void 0 : _e.minResolution) || layer.minResolution || 0,
37333
- maxResolution: ((_f = layer.options.workspace) === null || _f === void 0 ? void 0 : _f.maxResolution) || layer.maxResolution || Infinity,
37896
+ minResolution: ((_k = layer.options.workspace) === null || _k === void 0 ? void 0 : _k.minResolution) || layer.minResolution || 0,
37897
+ maxResolution: ((_l = layer.options.workspace) === null || _l === void 0 ? void 0 : _l.maxResolution) || layer.maxResolution || Infinity,
37334
37898
  sourceOptions: {
37335
37899
  download: dataSource.options.download,
37336
37900
  type: 'wfs',
37337
37901
  url: dataSource.options.urlWfs || dataSource.options.url,
37338
37902
  queryable: true,
37903
+ relations: dataSource.options.relations,
37339
37904
  queryTitle: dataSource.options.queryTitle,
37905
+ queryFormatAsWms: dataSource.options.queryFormatAsWms,
37340
37906
  params: dataSource.options.paramsWFS,
37341
37907
  ogcFilters: Object.assign({}, dataSource.ogcFilters$.value, { enabled: hasOgcFilters }),
37342
37908
  sourceFields: dataSource.options.sourceFields || undefined
37343
37909
  }
37344
37910
  })
37345
37911
  .subscribe((workspaceLayer) => {
37912
+ var _a, _b, _c, _d, _e, _f, _g;
37346
37913
  map.addLayer(workspaceLayer);
37347
37914
  layer.ol.setProperties({ linkedLayers: { linkId: layer.options.linkedLayers.linkId, links: clonedLinks } }, false);
37348
37915
  workspaceLayer.dataSource.ol.refresh();
37916
+ if (!((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled)) {
37917
+ return;
37918
+ }
37349
37919
  wks = new WfsWorkspace({
37350
37920
  id: layer.id,
37351
37921
  title: layer.title,
@@ -37362,7 +37932,13 @@ class WmsWorkspaceService {
37362
37932
  layer.options.workspace = Object.assign({}, layer.options.workspace, {
37363
37933
  enabled: true,
37364
37934
  srcId: layer.id,
37365
- workspaceId: workspaceLayer.id
37935
+ workspaceId: workspaceLayer.id,
37936
+ queryOptions: {
37937
+ mapQueryOnOpenTab: (_c = (_b = layer.options.workspace) === null || _b === void 0 ? void 0 : _b.queryOptions) === null || _c === void 0 ? void 0 : _c.mapQueryOnOpenTab,
37938
+ tabQuery: (_e = (_d = layer.options.workspace) === null || _d === void 0 ? void 0 : _d.queryOptions) === null || _e === void 0 ? void 0 : _e.tabQuery
37939
+ },
37940
+ pageSize: (_f = layer.options.workspace) === null || _f === void 0 ? void 0 : _f.pageSize,
37941
+ pageSizeOptions: (_g = layer.options.workspace) === null || _g === void 0 ? void 0 : _g.pageSizeOptions
37366
37942
  });
37367
37943
  delete dataSource.options.download;
37368
37944
  return wks;
@@ -37401,6 +37977,7 @@ class WmsWorkspaceService {
37401
37977
  }
37402
37978
  createTableTemplate(workspace, layer) {
37403
37979
  const fields = layer.dataSource.options.sourceFields || [];
37980
+ const relations = layer.dataSource.options.relations || [];
37404
37981
  if (fields.length === 0) {
37405
37982
  workspace.entityStore.entities$.pipe(skipWhile(val => val.length === 0), take(1)).subscribe(entities => {
37406
37983
  const ol = entities[0].ol;
@@ -37428,9 +38005,28 @@ class WmsWorkspaceService {
37428
38005
  return {
37429
38006
  name: `properties.${field.name}`,
37430
38007
  title: field.alias ? field.alias : field.name,
37431
- renderer: EntityTableColumnRenderer.UnsanitizedHTML
38008
+ renderer: EntityTableColumnRenderer.UnsanitizedHTML,
38009
+ tooltip: field.tooltip
37432
38010
  };
37433
38011
  });
38012
+ const relationsColumn = relations.map((relation) => {
38013
+ return {
38014
+ name: `properties.${relation.name}`,
38015
+ title: relation.alias ? relation.alias : relation.name,
38016
+ renderer: EntityTableColumnRenderer.Icon,
38017
+ icon: relation.icon,
38018
+ parent: relation.parent,
38019
+ type: 'relation',
38020
+ tooltip: relation.tooltip,
38021
+ onClick: () => {
38022
+ this.ws$.next(relation.title);
38023
+ },
38024
+ cellClassFunc: () => {
38025
+ return { 'class_icon': true };
38026
+ }
38027
+ };
38028
+ });
38029
+ columns.push(...relationsColumn);
37434
38030
  workspace.meta.tableTemplate = {
37435
38031
  selection: true,
37436
38032
  sort: true,
@@ -37453,6 +38049,918 @@ WmsWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WmsW
37453
38049
  }]
37454
38050
  }], function () { return [{ type: LayerService }, { type: i2$1.StorageService }]; }, null); })();
37455
38051
 
38052
+ class ConfirmationPopupComponent {
38053
+ constructor(dialogRef, languageService, data) {
38054
+ this.dialogRef = dialogRef;
38055
+ this.languageService = languageService;
38056
+ this.data = data;
38057
+ }
38058
+ cancelAction() {
38059
+ this.data.cancel = true;
38060
+ this.dialogRef.close(this.data.cancel);
38061
+ }
38062
+ confirmedAction() {
38063
+ this.data.cancel = false;
38064
+ this.dialogRef.close(this.data.cancel);
38065
+ }
38066
+ }
38067
+ ConfirmationPopupComponent.ɵfac = function ConfirmationPopupComponent_Factory(t) { return new (t || ConfirmationPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
38068
+ ConfirmationPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfirmationPopupComponent, selectors: [["igo-confirmation-popup-component"]], decls: 8, vars: 2, consts: [["mat-dialog-content", ""], [1, "mat-typography"], ["mat-dialog-actions", ""], ["mat-raised-button", "", "color", "primary", 3, "click"], ["mat-raised-button", "", 3, "click"]], template: function ConfirmationPopupComponent_Template(rf, ctx) { if (rf & 1) {
38069
+ i0.ɵɵelementStart(0, "div", 0);
38070
+ i0.ɵɵelementStart(1, "p", 1);
38071
+ i0.ɵɵtext(2);
38072
+ i0.ɵɵelementEnd();
38073
+ i0.ɵɵelementEnd();
38074
+ i0.ɵɵelementStart(3, "div", 2);
38075
+ i0.ɵɵelementStart(4, "button", 3);
38076
+ i0.ɵɵlistener("click", function ConfirmationPopupComponent_Template_button_click_4_listener() { return ctx.confirmedAction(); });
38077
+ i0.ɵɵtext(5, "Ok ");
38078
+ i0.ɵɵelementEnd();
38079
+ i0.ɵɵelementStart(6, "button", 4);
38080
+ i0.ɵɵlistener("click", function ConfirmationPopupComponent_Template_button_click_6_listener() { return ctx.cancelAction(); });
38081
+ i0.ɵɵtext(7);
38082
+ i0.ɵɵelementEnd();
38083
+ i0.ɵɵelementEnd();
38084
+ } if (rf & 2) {
38085
+ i0.ɵɵadvance(2);
38086
+ i0.ɵɵtextInterpolate(ctx.data.type === "add" ? ctx.languageService.translate.instant("igo.geo.workspace.addConfirmation") : ctx.languageService.translate.instant("igo.geo.workspace.deleteConfirmation"));
38087
+ i0.ɵɵadvance(5);
38088
+ i0.ɵɵtextInterpolate1("", ctx.languageService.translate.instant("igo.geo.workspace.cancel"), " ");
38089
+ } }, directives: [i1.MatDialogContent, i1.MatDialogActions, i2.MatButton], styles: ["div.mat-dialog-actions[_ngcontent-%COMP%]{justify-content:center}"] });
38090
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationPopupComponent, [{
38091
+ type: Component,
38092
+ args: [{
38093
+ selector: 'igo-confirmation-popup-component',
38094
+ templateUrl: './confirmation-popup.component.html',
38095
+ styleUrls: ['./confirmation-popup.component.scss']
38096
+ }]
38097
+ }], function () { return [{ type: i1.MatDialogRef }, { type: i2$1.LanguageService }, { type: undefined, decorators: [{
38098
+ type: Inject,
38099
+ args: [MAT_DIALOG_DATA]
38100
+ }] }]; }, null); })();
38101
+
38102
+ class EditionWorkspace extends Workspace {
38103
+ constructor(options, editionWorkspaceService, dialog, configService) {
38104
+ super(options);
38105
+ this.options = options;
38106
+ this.editionWorkspaceService = editionWorkspaceService;
38107
+ this.dialog = dialog;
38108
+ this.configService = configService;
38109
+ this.inResolutionRange$ = new BehaviorSubject(true);
38110
+ this.olDrawingLayerSource = new OlVectorSource();
38111
+ this.geometryType = GeometryType; // Reference to the GeometryType enum
38112
+ this.modifyStyle = new olstyle.Style({
38113
+ stroke: new olstyle.Stroke({
38114
+ color: 'rgba(255,255,255,1)',
38115
+ width: 1
38116
+ }),
38117
+ fill: new olstyle.Fill({
38118
+ color: 'rgba(0,161,222,1)'
38119
+ }),
38120
+ image: new olstyle.Circle({
38121
+ radius: 7,
38122
+ stroke: new olstyle.Stroke({
38123
+ color: 'rgba(255,255,255,1)',
38124
+ width: 1
38125
+ }),
38126
+ fill: new olstyle.Fill({
38127
+ color: 'rgba(0,161,222,1)'
38128
+ })
38129
+ })
38130
+ });
38131
+ this.filterClauseFunc = (record) => {
38132
+ return record.state.newFeature === true;
38133
+ };
38134
+ this.map.viewController.resolution$.subscribe((mapResolution) => {
38135
+ if (mapResolution > this.layer.minResolution && mapResolution < this.layer.maxResolution) {
38136
+ this.inResolutionRange$.next(true);
38137
+ }
38138
+ else {
38139
+ this.inResolutionRange$.next(false);
38140
+ }
38141
+ });
38142
+ this.drawControl = this.createDrawControl();
38143
+ this.drawControl.setGeometryType(this.geometryType.Point);
38144
+ this.map.removeLayer(this.olDrawingLayer);
38145
+ this.olDrawingLayer = new VectorLayer({
38146
+ id: 'igo-draw-layer',
38147
+ title: 'edition',
38148
+ zIndex: 300,
38149
+ source: new FeatureDataSource(),
38150
+ showInLayerList: false,
38151
+ exportable: false,
38152
+ browsable: false,
38153
+ workspace: {
38154
+ enabled: false
38155
+ },
38156
+ });
38157
+ }
38158
+ get layer() { return this.options.layer; }
38159
+ get map() { return this.options.map; }
38160
+ getInResolutionRange() {
38161
+ return this.inResolutionRange$.value;
38162
+ }
38163
+ deleteFeature(feature, workspace) {
38164
+ setTimeout(() => {
38165
+ const dialogRef = this.dialog.open(ConfirmationPopupComponent, {
38166
+ disableClose: false,
38167
+ data: { type: 'delete' }
38168
+ });
38169
+ dialogRef.afterClosed().subscribe(result => {
38170
+ if (result === false) {
38171
+ const baseUrl = workspace.layer.dataSource.options.edition.baseUrl;
38172
+ const deleteUrl = workspace.layer.dataSource.options.edition.deleteUrl;
38173
+ let id;
38174
+ let url;
38175
+ if (baseUrl) {
38176
+ url = this.configService.getConfig('edition.url') + baseUrl + '?' + deleteUrl;
38177
+ }
38178
+ else {
38179
+ url = this.configService.getConfig('edition.url') + deleteUrl;
38180
+ }
38181
+ for (const column of workspace.meta.tableTemplate.columns) {
38182
+ for (const property in feature.properties) {
38183
+ let columnName = column.name;
38184
+ if (columnName.includes('properties.')) {
38185
+ columnName = columnName.split('.')[1];
38186
+ }
38187
+ if (columnName === property && column.primary === true) {
38188
+ id = feature.properties[property];
38189
+ }
38190
+ }
38191
+ }
38192
+ if (url) {
38193
+ url += id;
38194
+ this.editionWorkspaceService.deleteFeature(workspace, url);
38195
+ }
38196
+ }
38197
+ });
38198
+ }, 250);
38199
+ }
38200
+ editFeature(feature, workspace) {
38201
+ feature.edition = true;
38202
+ let id;
38203
+ let find = false;
38204
+ const editionOpt = workspace.layer.dataSource.options.edition;
38205
+ for (const column of workspace.meta.tableTemplate.columns) {
38206
+ // Update domain list
38207
+ if (column.type === 'list' || column.type === 'autocomplete') {
38208
+ this.editionWorkspaceService.getDomainValues(column.relation.table).subscribe(result => {
38209
+ column.domainValues = result;
38210
+ });
38211
+ }
38212
+ if (find === false) {
38213
+ for (const property in feature.properties) {
38214
+ let columnName = column.name;
38215
+ if (columnName.includes('properties.')) {
38216
+ columnName = columnName.split('.')[1];
38217
+ }
38218
+ if (columnName === property && column.primary === true) {
38219
+ id = feature.properties[property];
38220
+ find = true;
38221
+ break;
38222
+ }
38223
+ }
38224
+ }
38225
+ }
38226
+ if (id) {
38227
+ feature.original_properties = JSON.parse(JSON.stringify(feature.properties));
38228
+ feature.original_geometry = feature.geometry;
38229
+ feature.idkey = id;
38230
+ this.addFeatureToStore(feature, workspace);
38231
+ }
38232
+ else {
38233
+ // Only for edition with it's own geometry
38234
+ if (!feature.newFeature && editionOpt.geomType) {
38235
+ feature.newFeature = true;
38236
+ this.editionWorkspaceService.adding$.next(true);
38237
+ workspace.entityStore.state.updateAll({ newFeature: false });
38238
+ workspace.entityStore.stateView.filter(this.filterClauseFunc);
38239
+ if (editionOpt.addWithDraw) {
38240
+ const geometryType = editionOpt.geomType;
38241
+ this.onGeometryTypeChange(geometryType, feature, workspace);
38242
+ }
38243
+ else {
38244
+ workspace.entityStore.insert(feature);
38245
+ workspace.entityStore.state.update(feature, { newFeature: true }, true);
38246
+ }
38247
+ }
38248
+ }
38249
+ }
38250
+ /**
38251
+ * Create a Draw Control
38252
+ * @param fillColor the fill color
38253
+ * @param strokeColor the stroke color
38254
+ * @param strokeWidth the stroke width
38255
+ * @returns a Draw Control
38256
+ */
38257
+ createDrawControl(fillColor, strokeColor, strokeWidth) {
38258
+ const drawControl = new DrawControl({
38259
+ geometryType: undefined,
38260
+ drawingLayerSource: this.olDrawingLayerSource,
38261
+ drawingLayerStyle: new olstyle.Style({}),
38262
+ interactionStyle: createInteractionStyle(fillColor, strokeColor, strokeWidth),
38263
+ });
38264
+ return drawControl;
38265
+ }
38266
+ /**
38267
+ * Called when the user selects a new geometry type
38268
+ * @param geometryType the geometry type selected by the user
38269
+ */
38270
+ onGeometryTypeChange(geometryType, feature, workspace) {
38271
+ this.drawControl.setGeometryType(geometryType);
38272
+ this.toggleDrawControl(feature, workspace);
38273
+ }
38274
+ /**
38275
+ * Activate the correct control
38276
+ */
38277
+ toggleDrawControl(feature, workspace) {
38278
+ this.deactivateDrawControl();
38279
+ this.activateDrawControl(feature, workspace);
38280
+ }
38281
+ /**
38282
+ * Deactivate the active draw control
38283
+ */
38284
+ deactivateDrawControl() {
38285
+ if (!this.drawControl) {
38286
+ return;
38287
+ }
38288
+ if (this.drawEnd$$) {
38289
+ this.drawEnd$$.unsubscribe();
38290
+ }
38291
+ this.drawControl.setOlMap(undefined);
38292
+ }
38293
+ /**
38294
+ * Activate a given control
38295
+ */
38296
+ activateDrawControl(feature, workspace) {
38297
+ this.drawEnd$$ = this.drawControl.end$.subscribe((olGeometry) => {
38298
+ this.addFeatureToStore(feature, workspace, olGeometry);
38299
+ });
38300
+ this.drawControl.setOlMap(this.map.ol, true);
38301
+ }
38302
+ /**
38303
+ * Add a feature to layer. The loading strategy of the layer
38304
+ * will trigger and add the feature to the workspace store.
38305
+ * @internal
38306
+ */
38307
+ addFeatureToStore(feature, workspace, olGeometry) {
38308
+ const projection = this.map.ol.getView().getProjection();
38309
+ let geometry = feature.geometry;
38310
+ // If an olGeometry is passed, it means that it is a new feature
38311
+ if (olGeometry) {
38312
+ workspace.entityStore.insert(feature);
38313
+ workspace.entityStore.state.update(feature, { newFeature: true }, true);
38314
+ geometry = new OlGeoJSON().writeGeometryObject(olGeometry, {
38315
+ featureProjection: projection,
38316
+ dataProjection: 'EPSG:4326'
38317
+ });
38318
+ feature.geometry = geometry;
38319
+ }
38320
+ feature.projection = 'EPSG:4326';
38321
+ const featureOl = featureToOl(feature, projection.getCode());
38322
+ this.olDrawingLayer.dataSource.ol.clear();
38323
+ this.olDrawingLayer.dataSource.ol.addFeature(featureOl);
38324
+ this.map.addLayer(this.olDrawingLayer);
38325
+ this.deactivateDrawControl();
38326
+ this.createModifyInteraction(featureOl, feature, workspace);
38327
+ }
38328
+ /**
38329
+ * Delete drawings layer and source from the map AND feature from the entity store.
38330
+ * Layer refresh will automatically add the new feature into the store.
38331
+ */
38332
+ deleteDrawings() {
38333
+ this.map.removeLayer(this.olDrawingLayer);
38334
+ this.olDrawingLayerSource.clear();
38335
+ this.map.ol.removeInteraction(this.modify);
38336
+ }
38337
+ /**
38338
+ * Create a modify interaction to allow a geometry change one feature at the time (drag and drop)
38339
+ */
38340
+ createModifyInteraction(olFeature, feature, workspace) {
38341
+ this.map.ol.removeInteraction(this.modify);
38342
+ const olCollection = new Collection([olFeature], { unique: true });
38343
+ this.modify = new OlModify({
38344
+ features: olCollection
38345
+ });
38346
+ this.map.ol.addInteraction(this.modify);
38347
+ olCollection.forEach(feature => {
38348
+ feature.setStyle(this.modifyStyle);
38349
+ });
38350
+ this.modify.on('modifyend', (event) => {
38351
+ var _a;
38352
+ const olGeometry = (_a = event.features.getArray()[0]) === null || _a === void 0 ? void 0 : _a.getGeometry();
38353
+ if (olGeometry) {
38354
+ this.addFeatureToStore(feature, workspace, olGeometry);
38355
+ }
38356
+ });
38357
+ }
38358
+ }
38359
+
38360
+ class EditionWorkspaceService {
38361
+ constructor(layerService, storageService, configService, messageService, languageService, http, dialog, authInterceptor) {
38362
+ this.layerService = layerService;
38363
+ this.storageService = storageService;
38364
+ this.configService = configService;
38365
+ this.messageService = messageService;
38366
+ this.languageService = languageService;
38367
+ this.http = http;
38368
+ this.dialog = dialog;
38369
+ this.authInterceptor = authInterceptor;
38370
+ this.ws$ = new BehaviorSubject(undefined);
38371
+ this.adding$ = new BehaviorSubject(false);
38372
+ this.relationLayers$ = new BehaviorSubject(undefined);
38373
+ this.rowsInMapExtentCheckCondition$ = new BehaviorSubject(true);
38374
+ this.loading = false;
38375
+ }
38376
+ get zoomAuto() {
38377
+ return this.storageService.get('zoomAuto');
38378
+ }
38379
+ createWorkspace(layer, map) {
38380
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
38381
+ if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) !== true || layer.dataSource.options.edition.enabled !== true) {
38382
+ return;
38383
+ }
38384
+ let wksConfig;
38385
+ if (layer.options.workspace) {
38386
+ wksConfig = layer.options.workspace;
38387
+ }
38388
+ else {
38389
+ wksConfig = {};
38390
+ }
38391
+ wksConfig.srcId = layer.id;
38392
+ wksConfig.workspaceId = layer.id;
38393
+ wksConfig.enabled = true;
38394
+ wksConfig.pageSize = (_b = layer.options.workspace) === null || _b === void 0 ? void 0 : _b.pageSize;
38395
+ wksConfig.pageSizeOptions = (_c = layer.options.workspace) === null || _c === void 0 ? void 0 : _c.pageSizeOptions;
38396
+ const dataSource = layer.dataSource;
38397
+ const wmsLinkId = layer.id + '.WmsWorkspaceTableSrc';
38398
+ const wfsLinkId = layer.id + '.WfsWorkspaceTableDest';
38399
+ if (!layer.options.linkedLayers) {
38400
+ layer.options.linkedLayers = { linkId: wmsLinkId, links: [] };
38401
+ }
38402
+ const linkProperties = {
38403
+ bidirectionnal: true,
38404
+ syncedDelete: true,
38405
+ linkedIds: [wfsLinkId],
38406
+ properties: [
38407
+ LinkedProperties.ZINDEX,
38408
+ LinkedProperties.VISIBLE
38409
+ ]
38410
+ };
38411
+ if (!((_d = layer.options.workspace) === null || _d === void 0 ? void 0 : _d.minResolution)) {
38412
+ linkProperties.properties.push(LinkedProperties.MINRESOLUTION);
38413
+ }
38414
+ let hasOgcFilters = false;
38415
+ if ((_e = dataSource.options.ogcFilters) === null || _e === void 0 ? void 0 : _e.enabled) {
38416
+ linkProperties.properties.push(LinkedProperties.OGCFILTERS);
38417
+ hasOgcFilters = true;
38418
+ }
38419
+ if (!((_f = layer.options.workspace) === null || _f === void 0 ? void 0 : _f.maxResolution)) {
38420
+ linkProperties.properties.push(LinkedProperties.MAXRESOLUTION);
38421
+ }
38422
+ let clonedLinks = [];
38423
+ if (layer.options.linkedLayers.links) {
38424
+ clonedLinks = JSON.parse(JSON.stringify(layer.options.linkedLayers.links));
38425
+ }
38426
+ clonedLinks.push(linkProperties);
38427
+ layer.options.linkedLayers.linkId = layer.options.linkedLayers.linkId ? layer.options.linkedLayers.linkId : wmsLinkId,
38428
+ layer.options.linkedLayers.links = clonedLinks;
38429
+ let wks;
38430
+ this.layerService
38431
+ .createAsyncLayer({
38432
+ id: wfsLinkId,
38433
+ linkedLayers: {
38434
+ linkId: wfsLinkId
38435
+ },
38436
+ workspace: {
38437
+ srcId: layer.id,
38438
+ workspaceId: undefined,
38439
+ enabled: false,
38440
+ queryOptions: {
38441
+ mapQueryOnOpenTab: (_h = (_g = layer.options.workspace) === null || _g === void 0 ? void 0 : _g.queryOptions) === null || _h === void 0 ? void 0 : _h.mapQueryOnOpenTab,
38442
+ tabQuery: false
38443
+ },
38444
+ pageSize: (_j = layer.options.workspace) === null || _j === void 0 ? void 0 : _j.pageSize,
38445
+ pageSizeOptions: (_k = layer.options.workspace) === null || _k === void 0 ? void 0 : _k.pageSizeOptions
38446
+ },
38447
+ showInLayerList: false,
38448
+ opacity: 0,
38449
+ title: layer.title,
38450
+ minResolution: ((_l = layer.options.workspace) === null || _l === void 0 ? void 0 : _l.minResolution) || layer.minResolution || 0,
38451
+ maxResolution: ((_m = layer.options.workspace) === null || _m === void 0 ? void 0 : _m.maxResolution) || layer.maxResolution || Infinity,
38452
+ sourceOptions: {
38453
+ download: dataSource.options.download,
38454
+ type: 'wfs',
38455
+ url: dataSource.options.urlWfs || dataSource.options.url,
38456
+ queryable: true,
38457
+ relations: dataSource.options.relations,
38458
+ queryTitle: dataSource.options.queryTitle,
38459
+ params: dataSource.options.paramsWFS,
38460
+ ogcFilters: Object.assign({}, dataSource.ogcFilters$.value, { enabled: hasOgcFilters }),
38461
+ sourceFields: dataSource.options.sourceFields || undefined,
38462
+ edition: dataSource.options.edition
38463
+ }
38464
+ })
38465
+ .subscribe((workspaceLayer) => {
38466
+ map.addLayer(workspaceLayer);
38467
+ layer.ol.setProperties({ linkedLayers: { linkId: layer.options.linkedLayers.linkId, links: clonedLinks } }, false);
38468
+ workspaceLayer.dataSource.ol.refresh();
38469
+ wks = new EditionWorkspace({
38470
+ id: layer.id,
38471
+ title: layer.title,
38472
+ layer: workspaceLayer,
38473
+ map,
38474
+ entityStore: this.createFeatureStore(workspaceLayer, map),
38475
+ actionStore: new ActionStore([]),
38476
+ meta: {
38477
+ tableTemplate: undefined
38478
+ }
38479
+ }, this, this.dialog, this.configService);
38480
+ this.createTableTemplate(wks, workspaceLayer);
38481
+ workspaceLayer.options.workspace.workspaceId = workspaceLayer.id;
38482
+ layer.options.workspace = Object.assign({}, layer.options.workspace, {
38483
+ wksConfig
38484
+ });
38485
+ delete dataSource.options.download;
38486
+ return wks;
38487
+ });
38488
+ return wks;
38489
+ }
38490
+ createFeatureStore(layer, map) {
38491
+ const store = new FeatureStore([], { map });
38492
+ store.bindLayer(layer);
38493
+ const loadingStrategy = new FeatureStoreLoadingLayerStrategy({});
38494
+ const inMapExtentStrategy = new FeatureStoreInMapExtentStrategy({});
38495
+ const inMapResolutionStrategy = new FeatureStoreInMapResolutionStrategy({});
38496
+ const selectedRecordStrategy = new EntityStoreFilterSelectionStrategy({});
38497
+ const selectionStrategy = new FeatureStoreSelectionStrategy({
38498
+ layer: new VectorLayer({
38499
+ zIndex: 300,
38500
+ source: new FeatureDataSource(),
38501
+ style: undefined,
38502
+ showInLayerList: false,
38503
+ exportable: false,
38504
+ browsable: false
38505
+ }),
38506
+ map,
38507
+ hitTolerance: 15,
38508
+ motion: this.zoomAuto ? FeatureMotion.Default : FeatureMotion.None,
38509
+ many: true,
38510
+ dragBox: true
38511
+ });
38512
+ store.addStrategy(loadingStrategy, true);
38513
+ store.addStrategy(inMapExtentStrategy, true);
38514
+ store.addStrategy(inMapResolutionStrategy, true);
38515
+ store.addStrategy(selectionStrategy, true);
38516
+ store.addStrategy(selectedRecordStrategy, false);
38517
+ store.addStrategy(this.createFilterInMapExtentOrResolutionStrategy(), true);
38518
+ return store;
38519
+ }
38520
+ createTableTemplate(workspace, layer) {
38521
+ const fields = layer.dataSource.options.sourceFields || [];
38522
+ const relations = layer.dataSource.options.relations || [];
38523
+ let rendererType = EntityTableColumnRenderer.UnsanitizedHTML;
38524
+ let buttons = [];
38525
+ let columns = [];
38526
+ let relationsColumn = [];
38527
+ buttons = [{
38528
+ name: 'edition',
38529
+ title: undefined,
38530
+ renderer: EntityTableColumnRenderer.ButtonGroup,
38531
+ primary: false,
38532
+ valueAccessor: () => {
38533
+ return [{
38534
+ editMode: false,
38535
+ icon: 'pencil',
38536
+ color: 'primary',
38537
+ click: (feature) => { workspace.editFeature(feature, workspace); }
38538
+ },
38539
+ {
38540
+ editMode: false,
38541
+ icon: 'delete',
38542
+ color: 'warn',
38543
+ click: (feature) => { workspace.deleteFeature(feature, workspace); }
38544
+ },
38545
+ {
38546
+ editMode: true,
38547
+ icon: 'check',
38548
+ color: 'primary',
38549
+ disabled: this.loading,
38550
+ click: (feature) => { this.saveFeature(feature, workspace); }
38551
+ },
38552
+ {
38553
+ editMode: true,
38554
+ icon: 'alpha-x',
38555
+ color: 'primary',
38556
+ disabled: this.loading,
38557
+ click: (feature) => { this.cancelEdit(workspace, feature); }
38558
+ }];
38559
+ }
38560
+ }];
38561
+ if (fields.length === 0) {
38562
+ workspace.entityStore.entities$.pipe(skipWhile(val => val.length === 0), take(1)).subscribe(entities => {
38563
+ const ol = entities[0].ol;
38564
+ const columnsFromFeatures = ol.getKeys()
38565
+ .filter(col => !col.startsWith('_') &&
38566
+ col !== 'geometry' &&
38567
+ col !== ol.getGeometryName() &&
38568
+ !col.match(/boundedby/gi))
38569
+ .map(key => {
38570
+ return {
38571
+ name: `properties.${key}`,
38572
+ title: key,
38573
+ renderer: rendererType,
38574
+ };
38575
+ });
38576
+ workspace.meta.tableTemplate = {
38577
+ selection: false,
38578
+ sort: true,
38579
+ columns: columnsFromFeatures
38580
+ };
38581
+ });
38582
+ return;
38583
+ }
38584
+ columns = fields.map((field) => {
38585
+ let column = {
38586
+ name: `properties.${field.name}`,
38587
+ title: field.alias ? field.alias : field.name,
38588
+ renderer: rendererType,
38589
+ valueAccessor: undefined,
38590
+ cellClassFunc: () => {
38591
+ const cellClass = {};
38592
+ if (field.type) {
38593
+ cellClass[`class_${field.type}`] = true;
38594
+ return cellClass;
38595
+ }
38596
+ },
38597
+ primary: field.primary === true ? true : false,
38598
+ visible: field.visible,
38599
+ validation: field.validation,
38600
+ type: field.type,
38601
+ domainValues: undefined,
38602
+ relation: undefined,
38603
+ multiple: field.multiple,
38604
+ step: field.step,
38605
+ tooltip: field.tooltip
38606
+ };
38607
+ if (field.type === 'list' || field.type === 'autocomplete') {
38608
+ this.getDomainValues(field.relation.table).subscribe(result => {
38609
+ column.domainValues = result;
38610
+ column.relation = field.relation;
38611
+ });
38612
+ }
38613
+ return column;
38614
+ });
38615
+ relationsColumn = relations.map((relation) => {
38616
+ return {
38617
+ name: `properties.${relation.name}`,
38618
+ title: relation.alias ? relation.alias : relation.name,
38619
+ renderer: EntityTableColumnRenderer.Icon,
38620
+ icon: relation.icon,
38621
+ parent: relation.parent,
38622
+ type: 'relation',
38623
+ tooltip: relation.tooltip,
38624
+ onClick: () => {
38625
+ if (this.adding$.getValue() === false) {
38626
+ this.ws$.next(relation.title);
38627
+ }
38628
+ },
38629
+ cellClassFunc: () => {
38630
+ return { 'class_icon': true };
38631
+ }
38632
+ };
38633
+ });
38634
+ columns.push(...relationsColumn);
38635
+ columns.push(...buttons);
38636
+ workspace.meta.tableTemplate = {
38637
+ selection: false,
38638
+ sort: true,
38639
+ columns
38640
+ };
38641
+ }
38642
+ createFilterInMapExtentOrResolutionStrategy() {
38643
+ const filterClauseFunc = (record) => {
38644
+ return record.state.inMapExtent === true && record.state.inMapResolution === true;
38645
+ };
38646
+ return new EntityStoreFilterCustomFuncStrategy({ filterClauseFunc });
38647
+ }
38648
+ saveFeature(feature, workspace) {
38649
+ if (!this.validateFeature(feature, workspace)) {
38650
+ return false;
38651
+ }
38652
+ this.sanitizeParameter(feature, workspace);
38653
+ let url = this.configService.getConfig('edition.url');
38654
+ if (workspace.layer.dataSource.options.edition.baseUrl) {
38655
+ url += workspace.layer.dataSource.options.edition.baseUrl;
38656
+ }
38657
+ if (feature.newFeature) {
38658
+ url += workspace.layer.dataSource.options.edition.addUrl;
38659
+ const addHeaders = workspace.layer.dataSource.options.edition.addHeaders;
38660
+ const headers = new HttpHeaders(addHeaders);
38661
+ this.addFeature(feature, workspace, url, headers);
38662
+ }
38663
+ else {
38664
+ if (workspace.layer.dataSource.options.edition.modifyProtocol !== "post") {
38665
+ url += '?' + workspace.layer.dataSource.options.edition.modifyUrl + feature.idkey;
38666
+ }
38667
+ else {
38668
+ url += workspace.layer.dataSource.options.edition.modifyUrl;
38669
+ }
38670
+ const protocole = workspace.layer.dataSource.options.edition.modifyProtocol;
38671
+ const modifyHeaders = workspace.layer.dataSource.options.edition.modifyHeaders;
38672
+ const headers = new HttpHeaders(modifyHeaders);
38673
+ this.modifyFeature(feature, workspace, url, headers, protocole);
38674
+ }
38675
+ }
38676
+ addFeature(feature, workspace, url, headers) {
38677
+ var _a;
38678
+ // TODO: adapt to any kind of geometry
38679
+ if (workspace.layer.dataSource.options.edition.hasGeometry) {
38680
+ //feature.properties[geom] = feature.geometry;
38681
+ feature.properties["longitude"] = feature.geometry.coordinates[0];
38682
+ feature.properties["latitude"] = feature.geometry.coordinates[1];
38683
+ }
38684
+ for (const property in feature.properties) {
38685
+ for (const sf of workspace.layer.dataSource.options.sourceFields) {
38686
+ if (sf.name === property && ((_a = sf.validation) === null || _a === void 0 ? void 0 : _a.readonly)) {
38687
+ delete feature.properties[property];
38688
+ }
38689
+ }
38690
+ }
38691
+ this.loading = true;
38692
+ this.http.post(`${url}`, feature.properties, { headers: headers }).subscribe(() => {
38693
+ this.loading = false;
38694
+ workspace.entityStore.stateView.clear();
38695
+ workspace.deleteDrawings();
38696
+ workspace.entityStore.delete(feature);
38697
+ const message = this.languageService.translate.instant('igo.geo.workspace.addSuccess');
38698
+ this.messageService.success(message);
38699
+ this.refreshMap(workspace.layer, workspace.layer.map);
38700
+ this.adding$.next(false);
38701
+ this.rowsInMapExtentCheckCondition$.next(true);
38702
+ }, error => {
38703
+ this.loading = false;
38704
+ error.error.caught = true;
38705
+ const genericErrorMessage = this.languageService.translate.instant('igo.geo.workspace.addError');
38706
+ const messages = workspace.layer.dataSource.options.edition.messages;
38707
+ if (messages) {
38708
+ let text;
38709
+ messages.forEach(message => {
38710
+ const key = Object.keys(message)[0];
38711
+ if (error.error.message.includes(key)) {
38712
+ text = message[key];
38713
+ this.messageService.error(text);
38714
+ }
38715
+ });
38716
+ if (!text) {
38717
+ this.messageService.error(genericErrorMessage);
38718
+ }
38719
+ }
38720
+ else {
38721
+ this.messageService.error(genericErrorMessage);
38722
+ }
38723
+ });
38724
+ }
38725
+ deleteFeature(workspace, url) {
38726
+ this.loading = true;
38727
+ this.http.delete(`${url}`, {}).subscribe(() => {
38728
+ this.loading = false;
38729
+ const message = this.languageService.translate.instant('igo.geo.workspace.deleteSuccess');
38730
+ this.messageService.success(message);
38731
+ this.refreshMap(workspace.layer, workspace.layer.map);
38732
+ for (const relation of workspace.layer.options.sourceOptions.relations) {
38733
+ workspace.map.layers.forEach((layer) => {
38734
+ if (layer.title === relation.title) {
38735
+ layer.dataSource.ol.refresh();
38736
+ }
38737
+ });
38738
+ }
38739
+ }, error => {
38740
+ this.loading = false;
38741
+ error.error.caught = true;
38742
+ const genericErrorMessage = this.languageService.translate.instant('igo.geo.workspace.addError');
38743
+ const messages = workspace.layer.dataSource.options.edition.messages;
38744
+ if (messages) {
38745
+ let text;
38746
+ messages.forEach(message => {
38747
+ const key = Object.keys(message)[0];
38748
+ if (error.error.message.includes(key)) {
38749
+ text = message[key];
38750
+ this.messageService.error(text);
38751
+ }
38752
+ });
38753
+ if (!text) {
38754
+ this.messageService.error(genericErrorMessage);
38755
+ }
38756
+ }
38757
+ else {
38758
+ this.messageService.error(genericErrorMessage);
38759
+ }
38760
+ });
38761
+ }
38762
+ modifyFeature(feature, workspace, url, headers, protocole = 'patch') {
38763
+ var _a;
38764
+ //TODO: adapt to any kind of geometry
38765
+ if (workspace.layer.dataSource.options.edition.hasGeometry) {
38766
+ //feature.properties[geom] = feature.geometry;
38767
+ feature.properties["longitude"] = feature.geometry.coordinates[0];
38768
+ feature.properties["latitude"] = feature.geometry.coordinates[1];
38769
+ }
38770
+ for (const property in feature.properties) {
38771
+ for (const sf of workspace.layer.dataSource.options.sourceFields) {
38772
+ if ((sf.name === property && ((_a = sf.validation) === null || _a === void 0 ? void 0 : _a.readonly)) || property === 'boundedBy') {
38773
+ delete feature.properties[property];
38774
+ }
38775
+ }
38776
+ }
38777
+ this.loading = true;
38778
+ this.http[protocole](`${url}`, feature.properties, { headers: headers }).subscribe(() => {
38779
+ this.loading = false;
38780
+ this.cancelEdit(workspace, feature, true);
38781
+ const message = this.languageService.translate.instant('igo.geo.workspace.modifySuccess');
38782
+ this.messageService.success(message);
38783
+ this.refreshMap(workspace.layer, workspace.layer.map);
38784
+ let relationLayers = [];
38785
+ for (const relation of workspace.layer.options.sourceOptions.relations) {
38786
+ workspace.map.layers.forEach((layer) => {
38787
+ if (layer.title === relation.title) {
38788
+ relationLayers.push(layer);
38789
+ layer.dataSource.ol.refresh();
38790
+ }
38791
+ });
38792
+ }
38793
+ this.relationLayers$.next(relationLayers);
38794
+ }, error => {
38795
+ this.loading = false;
38796
+ error.error.caught = true;
38797
+ const genericErrorMessage = this.languageService.translate.instant('igo.geo.workspace.addError');
38798
+ const messages = workspace.layer.dataSource.options.edition.messages;
38799
+ if (messages) {
38800
+ let text;
38801
+ messages.forEach(message => {
38802
+ const key = Object.keys(message)[0];
38803
+ if (error.error.message.includes(key)) {
38804
+ text = message[key];
38805
+ this.messageService.error(text);
38806
+ }
38807
+ });
38808
+ if (!text) {
38809
+ this.messageService.error(genericErrorMessage);
38810
+ }
38811
+ }
38812
+ else {
38813
+ this.messageService.error(genericErrorMessage);
38814
+ }
38815
+ });
38816
+ }
38817
+ cancelEdit(workspace, feature, fromSave = false) {
38818
+ feature.edition = false;
38819
+ this.adding$.next(false);
38820
+ workspace.deleteDrawings();
38821
+ if (feature.newFeature) {
38822
+ workspace.entityStore.stateView.clear();
38823
+ workspace.entityStore.delete(feature);
38824
+ workspace.deactivateDrawControl();
38825
+ this.rowsInMapExtentCheckCondition$.next(true);
38826
+ }
38827
+ else {
38828
+ if (!fromSave) {
38829
+ feature.properties = feature.original_properties;
38830
+ feature.geometry = feature.original_geometry;
38831
+ }
38832
+ delete feature.original_properties;
38833
+ delete feature.original_geometry;
38834
+ }
38835
+ }
38836
+ getDomainValues(table) {
38837
+ let url = this.configService.getConfig('edition.url') + table;
38838
+ return this.http.get(url).pipe(map(result => {
38839
+ return result;
38840
+ }), catchError((err) => {
38841
+ return throwError(err);
38842
+ }));
38843
+ }
38844
+ /*
38845
+ * Refresh both wms and wfs layer
38846
+ * A new wfs loader is used to ensure cache is not retrieving old data
38847
+ * WMS params are updated to ensure layer is correctly refreshed
38848
+ */
38849
+ refreshMap(layer, map) {
38850
+ var _a, _b;
38851
+ const wfsOlLayer = layer.dataSource.ol;
38852
+ const loader = (extent, resolution, proj, success, failure) => {
38853
+ layer.customWFSLoader(layer.ol.getSource(), layer.options.sourceOptions, this.authInterceptor, extent, resolution, proj, success, failure, true);
38854
+ };
38855
+ wfsOlLayer.setLoader(loader);
38856
+ wfsOlLayer.refresh();
38857
+ for (const lay of map.layers) {
38858
+ if (lay.id !== layer.id &&
38859
+ ((_a = lay.options.linkedLayers) === null || _a === void 0 ? void 0 : _a.linkId.includes(layer.id.substr(0, layer.id.indexOf('.') - 1))) &&
38860
+ ((_b = lay.options.linkedLayers) === null || _b === void 0 ? void 0 : _b.linkId.includes('WmsWorkspaceTableSrc'))) {
38861
+ const wmsOlLayer = lay.dataSource.ol;
38862
+ let params = wmsOlLayer.getParams();
38863
+ params._t = new Date().getTime();
38864
+ wmsOlLayer.updateParams(params);
38865
+ }
38866
+ }
38867
+ }
38868
+ validateFeature(feature, workspace) {
38869
+ const translate = this.languageService.translate;
38870
+ let message;
38871
+ let key;
38872
+ let valid = true;
38873
+ workspace.meta.tableTemplate.columns.forEach(column => {
38874
+ if (column.hasOwnProperty('validation') && column.validation) {
38875
+ key = getColumnKeyWithoutPropertiesTag(column.name);
38876
+ Object.keys(column.validation).forEach((type) => {
38877
+ switch (type) {
38878
+ case 'mandatory': {
38879
+ if (column.validation[type] && (!feature.properties.hasOwnProperty(key) || !feature.properties[key])) {
38880
+ valid = false;
38881
+ message = translate.instant('igo.geo.formValidation.mandatory', {
38882
+ column: column.title
38883
+ });
38884
+ this.messageService.error(message);
38885
+ }
38886
+ break;
38887
+ }
38888
+ case 'minValue': {
38889
+ if (feature.properties.hasOwnProperty(key) && feature.properties[key] && feature.properties[key] < column.validation[type]) {
38890
+ valid = false;
38891
+ message = translate.instant('igo.geo.formValidation.minValue', {
38892
+ column: column.title,
38893
+ value: column.validation[type]
38894
+ });
38895
+ this.messageService.error(message);
38896
+ }
38897
+ break;
38898
+ }
38899
+ case 'maxValue': {
38900
+ if (feature.properties.hasOwnProperty(key) && feature.properties[key] && feature.properties[key] > column.validation[type]) {
38901
+ valid = false;
38902
+ message = translate.instant('igo.geo.formValidation.maxValue', {
38903
+ column: column.title,
38904
+ value: column.validation[type]
38905
+ });
38906
+ this.messageService.error(message);
38907
+ }
38908
+ break;
38909
+ }
38910
+ case 'minLength': {
38911
+ if (feature.properties.hasOwnProperty(key) && feature.properties[key] &&
38912
+ feature.properties[key].length < column.validation[type]) {
38913
+ valid = false;
38914
+ message = translate.instant('igo.geo.formValidation.minLength', {
38915
+ column: column.title,
38916
+ value: column.validation[type]
38917
+ });
38918
+ this.messageService.error(message);
38919
+ }
38920
+ break;
38921
+ }
38922
+ case 'maxLength': {
38923
+ if (feature.properties.hasOwnProperty(key) && feature.properties[key] &&
38924
+ feature.properties[key].length > column.validation[type]) {
38925
+ valid = false;
38926
+ message = translate.instant('igo.geo.formValidation.maxLength', {
38927
+ column: column.title,
38928
+ value: column.validation[type]
38929
+ });
38930
+ this.messageService.error(message);
38931
+ }
38932
+ break;
38933
+ }
38934
+ }
38935
+ });
38936
+ }
38937
+ });
38938
+ return valid;
38939
+ }
38940
+ sanitizeParameter(feature, workspace) {
38941
+ workspace.meta.tableTemplate.columns.forEach(column => {
38942
+ if (column.type === 'list' && feature.properties[getColumnKeyWithoutPropertiesTag(column.name)]) {
38943
+ feature.properties[getColumnKeyWithoutPropertiesTag(column.name)] =
38944
+ feature.properties[getColumnKeyWithoutPropertiesTag(column.name)].toString();
38945
+ }
38946
+ });
38947
+ }
38948
+ }
38949
+ EditionWorkspaceService.ɵfac = function EditionWorkspaceService_Factory(t) { return new (t || EditionWorkspaceService)(i0.ɵɵinject(LayerService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject(i2$1.ConfigService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i1.MatDialog), i0.ɵɵinject(i5.AuthInterceptor)); };
38950
+ EditionWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EditionWorkspaceService, factory: EditionWorkspaceService.ɵfac, providedIn: 'root' });
38951
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditionWorkspaceService, [{
38952
+ type: Injectable,
38953
+ args: [{
38954
+ providedIn: 'root'
38955
+ }]
38956
+ }], function () { return [{ type: LayerService }, { type: i2$1.StorageService }, { type: i2$1.ConfigService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i1$2.HttpClient }, { type: i1.MatDialog }, { type: i5.AuthInterceptor }]; }, null); })();
38957
+ function getColumnKeyWithoutPropertiesTag(column) {
38958
+ if (column.includes('properties.')) {
38959
+ return column.split('.')[1];
38960
+ }
38961
+ return column;
38962
+ }
38963
+
37456
38964
  class FeatureWorkspace extends Workspace {
37457
38965
  constructor(options) {
37458
38966
  super(options);
@@ -37469,25 +38977,42 @@ class FeatureWorkspace extends Workspace {
37469
38977
  }
37470
38978
  get layer() { return this.options.layer; }
37471
38979
  get map() { return this.options.map; }
38980
+ getLayerWksOptionTabQuery() {
38981
+ var _a;
38982
+ if (((_a = this.layer.options.workspace.queryOptions) === null || _a === void 0 ? void 0 : _a.tabQuery) !== undefined) {
38983
+ return this.layer.options.workspace.queryOptions.tabQuery;
38984
+ }
38985
+ return true;
38986
+ }
38987
+ getLayerWksOptionMapQuery() {
38988
+ var _a;
38989
+ if (((_a = this.layer.options.workspace.queryOptions) === null || _a === void 0 ? void 0 : _a.mapQueryOnOpenTab) !== undefined) {
38990
+ return this.layer.options.workspace.queryOptions.mapQueryOnOpenTab;
38991
+ }
38992
+ return true;
38993
+ }
38994
+ getInResolutionRange() {
38995
+ return this.inResolutionRange$.value;
38996
+ }
37472
38997
  }
37473
38998
 
37474
38999
  class FeatureWorkspaceService {
37475
39000
  constructor(storageService) {
37476
39001
  this.storageService = storageService;
39002
+ this.ws$ = new BehaviorSubject(undefined);
37477
39003
  }
37478
39004
  get zoomAuto() {
37479
39005
  return this.storageService.get('zoomAuto');
37480
39006
  }
37481
39007
  createWorkspace(layer, map) {
37482
39008
  var _a;
37483
- if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
39009
+ if (((_a = layer.options.workspace) === null || _a === void 0 ? void 0 : _a.enabled) === false || layer.dataSource.options.edition) {
37484
39010
  return;
37485
39011
  }
37486
- layer.options.workspace = Object.assign({}, layer.options.workspace, { enabled: true });
37487
39012
  layer.options.workspace = Object.assign({}, layer.options.workspace, {
37488
- enabled: true,
37489
39013
  srcId: layer.id,
37490
- workspaceId: layer.id
39014
+ workspaceId: layer.id,
39015
+ enabled: true
37491
39016
  });
37492
39017
  const wks = new FeatureWorkspace({
37493
39018
  id: layer.id,
@@ -37535,6 +39060,7 @@ class FeatureWorkspaceService {
37535
39060
  }
37536
39061
  createTableTemplate(workspace, layer) {
37537
39062
  const fields = layer.dataSource.options.sourceFields || [];
39063
+ const relations = layer.dataSource.options.relations || [];
37538
39064
  if (fields.length === 0) {
37539
39065
  workspace.entityStore.entities$.pipe(skipWhile(val => val.length === 0), take(1)).subscribe(entities => {
37540
39066
  const ol = entities[0].ol;
@@ -37562,9 +39088,28 @@ class FeatureWorkspaceService {
37562
39088
  return {
37563
39089
  name: `properties.${field.name}`,
37564
39090
  title: field.alias ? field.alias : field.name,
37565
- renderer: EntityTableColumnRenderer.UnsanitizedHTML
39091
+ renderer: EntityTableColumnRenderer.UnsanitizedHTML,
39092
+ tooltip: field.tooltip
37566
39093
  };
37567
39094
  });
39095
+ const relationsColumn = relations.map((relation) => {
39096
+ return {
39097
+ name: `properties.${relation.name}`,
39098
+ title: relation.alias ? relation.alias : relation.name,
39099
+ renderer: EntityTableColumnRenderer.Icon,
39100
+ icon: relation.icon,
39101
+ parent: relation.parent,
39102
+ type: 'relation',
39103
+ tooltip: relation.tooltip,
39104
+ onClick: () => {
39105
+ this.ws$.next(relation.title);
39106
+ },
39107
+ cellClassFunc: () => {
39108
+ return { 'class_icon': true };
39109
+ }
39110
+ };
39111
+ });
39112
+ columns.push(...relationsColumn);
37568
39113
  workspace.meta.tableTemplate = {
37569
39114
  selection: true,
37570
39115
  sort: true,
@@ -37588,12 +39133,17 @@ FeatureWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
37588
39133
  }], function () { return [{ type: i2$1.StorageService }]; }, null); })();
37589
39134
 
37590
39135
  class WorkspaceSelectorDirective {
37591
- constructor(component, wfsWorkspaceService, wmsWorkspaceService, featureWorkspaceService) {
39136
+ constructor(component, wfsWorkspaceService, wmsWorkspaceService, editionWorkspaceService, featureWorkspaceService) {
37592
39137
  this.component = component;
37593
39138
  this.wfsWorkspaceService = wfsWorkspaceService;
37594
39139
  this.wmsWorkspaceService = wmsWorkspaceService;
39140
+ this.editionWorkspaceService = editionWorkspaceService;
37595
39141
  this.featureWorkspaceService = featureWorkspaceService;
37596
39142
  this.entities$$ = [];
39143
+ this.changeWorkspace = new EventEmitter();
39144
+ this.disableSwitch = new EventEmitter();
39145
+ this.relationLayers = new EventEmitter();
39146
+ this.rowsInMapExtentCheckCondition = new EventEmitter();
37597
39147
  }
37598
39148
  get workspaceStore() {
37599
39149
  return this.component.store;
@@ -37602,6 +39152,15 @@ class WorkspaceSelectorDirective {
37602
39152
  this.layers$$ = this.map.layers$
37603
39153
  .pipe(debounceTime(50))
37604
39154
  .subscribe((layers) => this.onLayersChange(layers));
39155
+ this.featureWorkspaceService.ws$.subscribe((ws) => { this.changeWorkspace.emit(ws); });
39156
+ this.wmsWorkspaceService.ws$.subscribe((ws) => { this.changeWorkspace.emit(ws); });
39157
+ this.wfsWorkspaceService.ws$.subscribe((ws) => { this.changeWorkspace.emit(ws); });
39158
+ this.editionWorkspaceService.ws$.subscribe((ws) => { this.changeWorkspace.emit(ws); });
39159
+ this.editionWorkspaceService.adding$.subscribe((adding) => { this.disableSwitch.emit(adding); });
39160
+ this.editionWorkspaceService.relationLayers$.subscribe((layers) => { this.relationLayers.emit(layers); });
39161
+ this.editionWorkspaceService.rowsInMapExtentCheckCondition$.subscribe((condition) => {
39162
+ this.rowsInMapExtentCheckCondition.emit(condition);
39163
+ });
37605
39164
  }
37606
39165
  ngOnDestroy() {
37607
39166
  this.layers$$.unsubscribe();
@@ -37630,15 +39189,16 @@ class WorkspaceSelectorDirective {
37630
39189
  }
37631
39190
  }
37632
39191
  getOrCreateWorkspace(layer) {
39192
+ var _a, _b, _c, _d;
37633
39193
  const workspace = this.workspaceStore.get(layer.id);
37634
39194
  if (workspace !== undefined) {
37635
39195
  return;
37636
39196
  }
37637
- if (layer.dataSource instanceof WFSDataSource) {
39197
+ if (layer.dataSource instanceof WFSDataSource && ((_a = layer.dataSource.options.edition) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
37638
39198
  const wfsWks = this.wfsWorkspaceService.createWorkspace(layer, this.map);
37639
39199
  return wfsWks;
37640
39200
  }
37641
- else if (layer.dataSource instanceof WMSDataSource) {
39201
+ else if (layer.dataSource instanceof WMSDataSource && ((_b = layer.dataSource.options.edition) === null || _b === void 0 ? void 0 : _b.enabled) !== true) {
37642
39202
  if (!layer.dataSource.options.paramsWFS) {
37643
39203
  return;
37644
39204
  }
@@ -37649,10 +39209,16 @@ class WorkspaceSelectorDirective {
37649
39209
  });
37650
39210
  return wmsWks;
37651
39211
  }
37652
- else if (layer.dataSource instanceof FeatureDataSource && layer.exportable === true) {
39212
+ else if (layer.dataSource instanceof FeatureDataSource &&
39213
+ layer.exportable === true &&
39214
+ ((_c = layer.dataSource.options.edition) === null || _c === void 0 ? void 0 : _c.enabled) !== true) {
37653
39215
  const featureWks = this.featureWorkspaceService.createWorkspace(layer, this.map);
37654
39216
  return featureWks;
37655
39217
  }
39218
+ else if (layer.dataSource instanceof WMSDataSource && ((_d = layer.dataSource.options.edition) === null || _d === void 0 ? void 0 : _d.enabled) === true) {
39219
+ const editionWks = this.editionWorkspaceService.createWorkspace(layer, this.map);
39220
+ return editionWks;
39221
+ }
37656
39222
  return;
37657
39223
  }
37658
39224
  layerIsEditable(layer) {
@@ -37672,15 +39238,23 @@ class WorkspaceSelectorDirective {
37672
39238
  return false;
37673
39239
  }
37674
39240
  }
37675
- WorkspaceSelectorDirective.ɵfac = function WorkspaceSelectorDirective_Factory(t) { return new (t || WorkspaceSelectorDirective)(i0.ɵɵdirectiveInject(i6$1.WorkspaceSelectorComponent), i0.ɵɵdirectiveInject(WfsWorkspaceService), i0.ɵɵdirectiveInject(WmsWorkspaceService), i0.ɵɵdirectiveInject(FeatureWorkspaceService)); };
37676
- WorkspaceSelectorDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: WorkspaceSelectorDirective, selectors: [["", "igoWorkspaceSelector", ""]], inputs: { map: "map" } });
39241
+ WorkspaceSelectorDirective.ɵfac = function WorkspaceSelectorDirective_Factory(t) { return new (t || WorkspaceSelectorDirective)(i0.ɵɵdirectiveInject(i6.WorkspaceSelectorComponent), i0.ɵɵdirectiveInject(WfsWorkspaceService), i0.ɵɵdirectiveInject(WmsWorkspaceService), i0.ɵɵdirectiveInject(EditionWorkspaceService), i0.ɵɵdirectiveInject(FeatureWorkspaceService)); };
39242
+ WorkspaceSelectorDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: WorkspaceSelectorDirective, selectors: [["", "igoWorkspaceSelector", ""]], inputs: { map: "map" }, outputs: { changeWorkspace: "changeWorkspace", disableSwitch: "disableSwitch", relationLayers: "relationLayers", rowsInMapExtentCheckCondition: "rowsInMapExtentCheckCondition" } });
37677
39243
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkspaceSelectorDirective, [{
37678
39244
  type: Directive,
37679
39245
  args: [{
37680
39246
  selector: '[igoWorkspaceSelector]'
37681
39247
  }]
37682
- }], function () { return [{ type: i6$1.WorkspaceSelectorComponent }, { type: WfsWorkspaceService }, { type: WmsWorkspaceService }, { type: FeatureWorkspaceService }]; }, { map: [{
39248
+ }], function () { return [{ type: i6.WorkspaceSelectorComponent }, { type: WfsWorkspaceService }, { type: WmsWorkspaceService }, { type: EditionWorkspaceService }, { type: FeatureWorkspaceService }]; }, { map: [{
37683
39249
  type: Input
39250
+ }], changeWorkspace: [{
39251
+ type: Output
39252
+ }], disableSwitch: [{
39253
+ type: Output
39254
+ }], relationLayers: [{
39255
+ type: Output
39256
+ }], rowsInMapExtentCheckCondition: [{
39257
+ type: Output
37684
39258
  }] }); })();
37685
39259
 
37686
39260
  /**
@@ -37710,9 +39284,10 @@ IgoWorkspaceSelectorModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports
37710
39284
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoWorkspaceSelectorModule, { declarations: [WorkspaceSelectorDirective], imports: [CommonModule], exports: [WorkspaceSelectorDirective] }); })();
37711
39285
 
37712
39286
  class WorkspaceUpdatorDirective {
37713
- constructor(wfsWorkspaceService, wmsWorkspaceService, featureWorkspaceService) {
39287
+ constructor(wfsWorkspaceService, wmsWorkspaceService, editionWorkspaceService, featureWorkspaceService) {
37714
39288
  this.wfsWorkspaceService = wfsWorkspaceService;
37715
39289
  this.wmsWorkspaceService = wmsWorkspaceService;
39290
+ this.editionWorkspaceService = editionWorkspaceService;
37716
39291
  this.featureWorkspaceService = featureWorkspaceService;
37717
39292
  this.entities$$ = [];
37718
39293
  }
@@ -37748,29 +39323,41 @@ class WorkspaceUpdatorDirective {
37748
39323
  }
37749
39324
  }
37750
39325
  getOrCreateWorkspace(layer) {
39326
+ var _a, _b, _c, _d;
37751
39327
  const workspace = this.workspaceStore.get(layer.id);
37752
39328
  if (workspace !== undefined) {
37753
39329
  return;
37754
39330
  }
37755
- if (layer.dataSource instanceof WFSDataSource) {
39331
+ if (layer.dataSource instanceof WFSDataSource && ((_a = layer.dataSource.options.edition) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
37756
39332
  const wfsWks = this.wfsWorkspaceService.createWorkspace(layer, this.map);
37757
39333
  return wfsWks;
37758
39334
  }
37759
- else if (layer.dataSource instanceof WMSDataSource) {
39335
+ else if (layer.dataSource instanceof WMSDataSource && ((_b = layer.dataSource.options.edition) === null || _b === void 0 ? void 0 : _b.enabled) !== true) {
37760
39336
  if (!layer.dataSource.options.paramsWFS) {
37761
39337
  return;
37762
39338
  }
37763
39339
  const wmsWks = this.wmsWorkspaceService.createWorkspace(layer, this.map);
37764
39340
  wmsWks === null || wmsWks === void 0 ? void 0 : wmsWks.inResolutionRange$.subscribe((inResolutionRange) => {
39341
+ var _a;
39342
+ if ((_a = layer.dataSource.options) === null || _a === void 0 ? void 0 : _a.queryFormatAsWms) {
39343
+ wmsWks.layer.dataSource.options.queryable = true;
39344
+ return wmsWks;
39345
+ }
37765
39346
  layer.dataSource.options.queryable = !inResolutionRange;
37766
39347
  wmsWks.layer.dataSource.options.queryable = inResolutionRange;
37767
39348
  });
37768
39349
  return wmsWks;
37769
39350
  }
37770
- else if (layer.dataSource instanceof FeatureDataSource && layer.exportable === true) {
39351
+ else if (layer.dataSource instanceof FeatureDataSource &&
39352
+ layer.exportable === true &&
39353
+ ((_c = layer.dataSource.options.edition) === null || _c === void 0 ? void 0 : _c.enabled) !== true) {
37771
39354
  const featureWks = this.featureWorkspaceService.createWorkspace(layer, this.map);
37772
39355
  return featureWks;
37773
39356
  }
39357
+ else if (layer.dataSource instanceof WMSDataSource && ((_d = layer.dataSource.options.edition) === null || _d === void 0 ? void 0 : _d.enabled) === true) {
39358
+ const editionWks = this.editionWorkspaceService.createWorkspace(layer, this.map);
39359
+ return editionWks;
39360
+ }
37774
39361
  return;
37775
39362
  }
37776
39363
  layerIsEditable(layer) {
@@ -37790,14 +39377,14 @@ class WorkspaceUpdatorDirective {
37790
39377
  return false;
37791
39378
  }
37792
39379
  }
37793
- WorkspaceUpdatorDirective.ɵfac = function WorkspaceUpdatorDirective_Factory(t) { return new (t || WorkspaceUpdatorDirective)(i0.ɵɵdirectiveInject(WfsWorkspaceService), i0.ɵɵdirectiveInject(WmsWorkspaceService), i0.ɵɵdirectiveInject(FeatureWorkspaceService)); };
39380
+ WorkspaceUpdatorDirective.ɵfac = function WorkspaceUpdatorDirective_Factory(t) { return new (t || WorkspaceUpdatorDirective)(i0.ɵɵdirectiveInject(WfsWorkspaceService), i0.ɵɵdirectiveInject(WmsWorkspaceService), i0.ɵɵdirectiveInject(EditionWorkspaceService), i0.ɵɵdirectiveInject(FeatureWorkspaceService)); };
37794
39381
  WorkspaceUpdatorDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: WorkspaceUpdatorDirective, selectors: [["", "igoWorkspaceUpdator", ""]], inputs: { map: "map", workspaceStore: "workspaceStore" } });
37795
39382
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkspaceUpdatorDirective, [{
37796
39383
  type: Directive,
37797
39384
  args: [{
37798
39385
  selector: '[igoWorkspaceUpdator]'
37799
39386
  }]
37800
- }], function () { return [{ type: WfsWorkspaceService }, { type: WmsWorkspaceService }, { type: FeatureWorkspaceService }]; }, { map: [{
39387
+ }], function () { return [{ type: WfsWorkspaceService }, { type: WmsWorkspaceService }, { type: EditionWorkspaceService }, { type: FeatureWorkspaceService }]; }, { map: [{
37801
39388
  type: Input
37802
39389
  }], workspaceStore: [{
37803
39390
  type: Input
@@ -37829,6 +39416,37 @@ IgoWorkspaceUpdatorModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports:
37829
39416
  }], null, null); })();
37830
39417
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoWorkspaceUpdatorModule, { declarations: [WorkspaceUpdatorDirective], imports: [CommonModule], exports: [WorkspaceUpdatorDirective] }); })();
37831
39418
 
39419
+ /**
39420
+ * @ignore
39421
+ */
39422
+ class IgoConfirmationPopupModule {
39423
+ }
39424
+ IgoConfirmationPopupModule.ɵfac = function IgoConfirmationPopupModule_Factory(t) { return new (t || IgoConfirmationPopupModule)(); };
39425
+ IgoConfirmationPopupModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoConfirmationPopupModule });
39426
+ IgoConfirmationPopupModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
39427
+ CommonModule,
39428
+ MatButtonModule,
39429
+ MatDialogModule,
39430
+ MatButtonToggleModule
39431
+ ]] });
39432
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoConfirmationPopupModule, [{
39433
+ type: NgModule,
39434
+ args: [{
39435
+ imports: [
39436
+ CommonModule,
39437
+ MatButtonModule,
39438
+ MatDialogModule,
39439
+ MatButtonToggleModule
39440
+ ],
39441
+ exports: [ConfirmationPopupComponent],
39442
+ declarations: [ConfirmationPopupComponent]
39443
+ }]
39444
+ }], null, null); })();
39445
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoConfirmationPopupModule, { declarations: [ConfirmationPopupComponent], imports: [CommonModule,
39446
+ MatButtonModule,
39447
+ MatDialogModule,
39448
+ MatButtonToggleModule], exports: [ConfirmationPopupComponent] }); })();
39449
+
37832
39450
  class IgoGeoWorkspaceModule {
37833
39451
  }
37834
39452
  IgoGeoWorkspaceModule.ɵfac = function IgoGeoWorkspaceModule_Factory(t) { return new (t || IgoGeoWorkspaceModule)(); };
@@ -37837,27 +39455,33 @@ IgoGeoWorkspaceModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
37837
39455
  provideOgcFilterWidget()
37838
39456
  ], imports: [[
37839
39457
  CommonModule,
39458
+ IgoLanguageModule,
37840
39459
  IgoWidgetModule,
37841
39460
  IgoWorkspaceSelectorModule,
37842
39461
  IgoWorkspaceUpdatorModule,
37843
- IgoOgcFilterModule
39462
+ IgoOgcFilterModule,
39463
+ MatDialogModule
37844
39464
  ], IgoWorkspaceSelectorModule,
37845
39465
  IgoWorkspaceUpdatorModule,
37846
- IgoOgcFilterModule] });
39466
+ IgoOgcFilterModule,
39467
+ IgoConfirmationPopupModule] });
37847
39468
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoGeoWorkspaceModule, [{
37848
39469
  type: NgModule,
37849
39470
  args: [{
37850
39471
  imports: [
37851
39472
  CommonModule,
39473
+ IgoLanguageModule,
37852
39474
  IgoWidgetModule,
37853
39475
  IgoWorkspaceSelectorModule,
37854
39476
  IgoWorkspaceUpdatorModule,
37855
- IgoOgcFilterModule
39477
+ IgoOgcFilterModule,
39478
+ MatDialogModule
37856
39479
  ],
37857
39480
  exports: [
37858
39481
  IgoWorkspaceSelectorModule,
37859
39482
  IgoWorkspaceUpdatorModule,
37860
- IgoOgcFilterModule
39483
+ IgoOgcFilterModule,
39484
+ IgoConfirmationPopupModule
37861
39485
  ],
37862
39486
  declarations: [],
37863
39487
  providers: [
@@ -37866,12 +39490,15 @@ IgoGeoWorkspaceModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
37866
39490
  }]
37867
39491
  }], null, null); })();
37868
39492
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoGeoWorkspaceModule, { imports: [CommonModule,
39493
+ IgoLanguageModule,
37869
39494
  IgoWidgetModule,
37870
39495
  IgoWorkspaceSelectorModule,
37871
39496
  IgoWorkspaceUpdatorModule,
37872
- IgoOgcFilterModule], exports: [IgoWorkspaceSelectorModule,
39497
+ IgoOgcFilterModule,
39498
+ MatDialogModule], exports: [IgoWorkspaceSelectorModule,
37873
39499
  IgoWorkspaceUpdatorModule,
37874
- IgoOgcFilterModule] }); })();
39500
+ IgoOgcFilterModule,
39501
+ IgoConfirmationPopupModule] }); })();
37875
39502
 
37876
39503
  class IgoWktModule {
37877
39504
  static forRoot() {
@@ -38265,7 +39892,7 @@ class NominatimSearchSource extends SearchSource {
38265
39892
  },
38266
39893
  {
38267
39894
  title: 'igo.geo.search.nominatim.type.entertainment',
38268
- value: 'arts_centre,brothel,casino,cinema,community_center_fountain,gambling,nightclub,planetarium \
39895
+ value: 'arts_centre,brothel,casino,cinema,community_center_fountain,gambling,nightclub,planetarium \
38269
39896
  ,public_bookcase,social_centre,stripclub,studio,swingerclub,theatre,internet_cafe',
38270
39897
  enabled: false
38271
39898
  },
@@ -38582,7 +40209,7 @@ class StoredQueriesSearchSource extends SearchSource {
38582
40209
  const storedqueriesParams = this.termSplitter(term, this.storedQueriesOptions.fields);
38583
40210
  const params = this.computeRequestParams(options || {}, storedqueriesParams);
38584
40211
  this.options.params = this.options.params ? this.options.params : {};
38585
- this.options.params.page = !options.page ? String(options.page) : '1';
40212
+ this.options.params.page = options.page ? String(options.page) : '1';
38586
40213
  if (new RegExp('.*?gml.*?', 'i').test(this.storedQueriesOptions.outputformat)) {
38587
40214
  return this.http
38588
40215
  .get(this.searchUrl, { params, responseType: 'text' })
@@ -38964,5 +40591,5 @@ function noElementSelected(ws) {
38964
40591
  * Generated bundle index. Do not edit.
38965
40592
  */
38966
40593
 
38967
- export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionType, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EncodingFormat, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, GeolocateButtonComponent, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoDataSourceModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoOverlayModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, LAYER, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LayerSyncWatcher, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, OverlayDirective, OverlayService, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, RotationButtonComponent, RoutesFeatureStore, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchResultsItemComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addDirectionToRoutesFeatureStore, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addStopToStopsFeatureStore, addStopToStore, buildUrl, cadastreSearchSourceFactory, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayMarkerStyle, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, formatDistance, formatDuration, formatInstruction, formatMeasure, formatScale, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getCommonVectorSelectedStyle, getCommonVectorStyle, getFileExtension, getFormatFromOptions, getLayersLegends, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarker, provideCadastreSearchSource, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, removeStopFromStore, renderFeatureFromOl, roundCoordTo, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlLineString, sliceOlPolygon, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, styleListFactory, translateBearing, translateModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, zoneMtm, zoneUtm };
40594
+ export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionType, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EditionWorkspace, EditionWorkspaceService, EncodingFormat, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, GeolocateButtonComponent, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HomeExtentButtonComponent, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoConfirmationPopupModule, IgoDataSourceModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoOverlayModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, InfoSectionComponent, LAYER, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LayerSyncWatcher, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, OverlayDirective, OverlayService, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, RotationButtonComponent, RoutesFeatureStore, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchResultsItemComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addDirectionToRoutesFeatureStore, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addStopToStopsFeatureStore, addStopToStore, buildUrl, cadastreSearchSourceFactory, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayMarkerStyle, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, formatDistance, formatDuration, formatInstruction, formatMeasure, formatScale, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getCommonVectorSelectedStyle, getCommonVectorStyle, getFileExtension, getFormatFromOptions, getLayersLegends, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarker, provideCadastreSearchSource, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, removeStopFromStore, renderFeatureFromOl, roundCoordTo, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlLineString, sliceOlPolygon, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, styleListFactory, translateBearing, translateModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, zoneMtm, zoneUtm };
38968
40595
  //# sourceMappingURL=igo2-geo.js.map