@igo2/geo 19.0.0-next.2 → 19.0.0-next.21

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 (56) hide show
  1. package/fesm2022/igo2-geo.mjs +1951 -1189
  2. package/fesm2022/igo2-geo.mjs.map +1 -1
  3. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +10 -16
  4. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +3 -3
  5. package/lib/catalog/catalog-library/catalog-library.component.d.ts +4 -3
  6. package/lib/catalog/catalog-library/catalog-library.module.d.ts +4 -4
  7. package/lib/catalog/catalog.module.d.ts +2 -2
  8. package/lib/datasource/shared/capabilities.service.d.ts +2 -1
  9. package/lib/datasource/shared/datasource.service.d.ts +5 -2
  10. package/lib/datasource/shared/datasources/datasource.d.ts +19 -1
  11. package/lib/datasource/shared/datasources/datasource.interface.d.ts +5 -0
  12. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +4 -1
  13. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -1
  14. package/lib/datasource/shared/datasources/wms-datasource.d.ts +15 -3
  15. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -0
  16. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +3 -2
  17. package/lib/datasource/shared/options/options-api.service.d.ts +1 -0
  18. package/lib/directions/shared/directions.service.d.ts +0 -1
  19. package/lib/feature/shared/feature.interfaces.d.ts +4 -5
  20. package/lib/feature/shared/feature.utils.d.ts +1 -1
  21. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -0
  22. package/lib/filter/shared/date.utils.d.ts +9 -0
  23. package/lib/filter/shared/filter.utils.d.ts +26 -0
  24. package/lib/filter/shared/ogc-filter.d.ts +0 -7
  25. package/lib/filter/shared/ogc-filter.interface.d.ts +9 -2
  26. package/lib/filter/shared/ogc-filter.service.d.ts +4 -2
  27. package/lib/filter/shared/time-filter.interface.d.ts +2 -2
  28. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +10 -5
  29. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -0
  30. package/lib/geometry/shared/geometry.utils.d.ts +5 -0
  31. package/lib/import-export/shared/export.service.d.ts +1 -1
  32. package/lib/layer/shared/layers/linked/linked-layer.d.ts +1 -0
  33. package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +2 -1
  34. package/lib/layer/shared/layers/vector-layer.d.ts +13 -12
  35. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +2 -4
  36. package/lib/query/shared/query-search-source.d.ts +1 -1
  37. package/lib/search/search-bar/search-bar.component.d.ts +2 -1
  38. package/lib/search/search-settings/search-settings.component.d.ts +8 -2
  39. package/lib/search/shared/sources/cadastre.d.ts +1 -1
  40. package/lib/search/shared/sources/coordinates.d.ts +1 -1
  41. package/lib/search/shared/sources/icherche.d.ts +4 -2
  42. package/lib/search/shared/sources/ilayer.d.ts +1 -1
  43. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  44. package/lib/search/shared/sources/source.d.ts +3 -1
  45. package/lib/search/shared/sources/storedqueries.d.ts +2 -2
  46. package/lib/search/shared/sources/workspace.d.ts +1 -1
  47. package/lib/workspace/shared/edition-workspace.service.d.ts +2 -1
  48. package/lib/workspace/shared/index.d.ts +1 -0
  49. package/lib/workspace/shared/workspace.interface.d.ts +4 -0
  50. package/lib/workspace/widgets/interactive-selection/interactive-selection.component.d.ts +58 -0
  51. package/lib/workspace/widgets/widgets.d.ts +7 -0
  52. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +3 -0
  53. package/locale/en.geo.json +29 -4
  54. package/locale/fr.geo.json +28 -3
  55. package/package.json +21 -18
  56. package/style/style.css +4 -0
@@ -1,6 +1,6 @@
1
1
  import { AuthInterceptor } from '@igo2/auth';
2
2
  import { MessageService } from '@igo2/core/message';
3
- import olFeature from 'ol/Feature';
3
+ import OlFeature from 'ol/Feature';
4
4
  import { Extent } from 'ol/extent';
5
5
  import olLayerVector from 'ol/layer/Vector';
6
6
  import olProjection from 'ol/proj/Projection';
@@ -11,8 +11,7 @@ import { FeatureDataSource } from '../../../datasource/shared/datasources/featur
11
11
  import { WebSocketDataSource } from '../../../datasource/shared/datasources/websocket-datasource';
12
12
  import { WFSDataSource } from '../../../datasource/shared/datasources/wfs-datasource';
13
13
  import { WFSDataSourceOptions } from '../../../datasource/shared/datasources/wfs-datasource.interface';
14
- import type { MapBase } from '../../../map/shared/map.abstract';
15
- import { MapExtent } from '../../../map/shared/map.interface';
14
+ import type { MapBase, MapExtent } from '../../../map/shared';
16
15
  import { GeoDBService } from '../../../offline/geoDB/geoDB.service';
17
16
  import { LayerDBService } from '../../../offline/layerDB/layerDB.service';
18
17
  import { GeoNetworkService } from '../../../offline/shared/geo-network.service';
@@ -26,10 +25,8 @@ export declare class VectorLayer extends Layer {
26
25
  geoDBService?: GeoDBService;
27
26
  layerDBService?: LayerDBService;
28
27
  type: LayerType;
29
- private previousLoadExtent;
30
- private previousLoadResolution;
31
- private previousOgcFilters;
32
- private xhrAccumulator;
28
+ private lastRequest;
29
+ private ongoingRequests;
33
30
  dataSource: FeatureDataSource | WFSDataSource | ArcGISRestDataSource | WebSocketDataSource | ClusterDataSource;
34
31
  options: VectorLayerOptions;
35
32
  ol: olLayerVector<olSourceVector>;
@@ -43,21 +40,22 @@ export declare class VectorLayer extends Layer {
43
40
  private removeLayerFromIDB;
44
41
  private maintainOptionsInIdb;
45
42
  private maintainFeaturesInIdb;
46
- protected flash(feature: any): void;
43
+ protected flash(feature: OlFeature): void;
47
44
  init(map: MapBase | undefined): void;
48
45
  setExtent(extent: MapExtent): void;
49
46
  onUnwatch(): void;
50
47
  stopAnimation(): void;
51
48
  enableTrackFeature(id: string | number): void;
52
49
  centerMapOnFeature(id: string | number): void;
53
- trackFeature(id: any, feat: any): void;
50
+ trackFeature(id: string | number, feat: {
51
+ feature: OlFeature;
52
+ }): void;
54
53
  disableTrackFeature(): void;
55
54
  /**
56
55
  * Custom loader for a WFS datasource
57
56
  * @internal
58
57
  * @param vectorSource the vector source to be created
59
58
  * @param options olOptions from source
60
- * @param interceptor the interceptor of the data
61
59
  * @param extent the extent of the requested data
62
60
  * @param resolution the current resolution
63
61
  * @param proj the projection to retrieve the data
@@ -65,7 +63,10 @@ export declare class VectorLayer extends Layer {
65
63
  * @param failure failure callback
66
64
  * @param randomParam random parameter to ensure cache is not causing problems in retrieving new data
67
65
  */
68
- customWFSLoader(vectorSource: olSourceVector, options: WFSDataSourceOptions, interceptor: AuthInterceptor, extent: Extent, resolution: number, proj: olProjection, success: (features: olFeature[]) => void, failure: () => void, randomParam?: boolean): void;
66
+ customWFSLoader(vectorSource: olSourceVector, options: WFSDataSourceOptions, extent: Extent, resolution: number, proj: olProjection, success: (features: OlFeature[]) => void, failure: () => void, randomParam?: boolean): void;
67
+ private abortRequests;
68
+ private getProjection;
69
+ private batchGetFeatures;
69
70
  /**
70
71
  * Custom loader to get feature from a WFS datasource
71
72
  * @internal
@@ -78,13 +79,13 @@ export declare class VectorLayer extends Layer {
78
79
  * @param failure failure callback
79
80
  */
80
81
  private getFeatures;
82
+ private removeRequest;
81
83
  /**
82
84
  * Custom loader for vector layer.
83
85
  * @internal
84
86
  * @param vectorSource the vector source to be created
85
87
  * @param url the url string or function to retrieve the data
86
88
  * @param extent the extent of the requested data
87
- * @param resolution the current resolution
88
89
  * @param projection the projection to retrieve the data
89
90
  */
90
91
  private customLoader;
@@ -1,9 +1,9 @@
1
- import { AfterViewInit, ApplicationRef, OnDestroy } from '@angular/core';
1
+ import { AfterViewInit, ApplicationRef } from '@angular/core';
2
2
  import { Layer } from '../../layer/shared';
3
3
  import { LayerService } from '../../layer/shared/layer.service';
4
4
  import { IgoMap } from '../shared/map';
5
5
  import * as i0 from "@angular/core";
6
- export declare class MiniBaseMapComponent implements AfterViewInit, OnDestroy {
6
+ export declare class MiniBaseMapComponent implements AfterViewInit {
7
7
  private layerService;
8
8
  private appRef;
9
9
  map: IgoMap;
@@ -18,9 +18,7 @@ export declare class MiniBaseMapComponent implements AfterViewInit, OnDestroy {
18
18
  basemap: IgoMap;
19
19
  constructor(layerService: LayerService, appRef: ApplicationRef);
20
20
  ngAfterViewInit(): void;
21
- ngOnDestroy(): void;
22
21
  changeBaseLayer(baseLayer: Layer): void;
23
- private handleMainMapViewChange;
24
22
  private handleBaseLayerChanged;
25
23
  private handleLinkedBaseLayer;
26
24
  static ɵfac: i0.ɵɵFactoryDeclaration<MiniBaseMapComponent, never>;
@@ -11,7 +11,7 @@ export declare class QuerySearchSource extends SearchSource {
11
11
  constructor(options: SearchSourceOptions);
12
12
  getId(): string;
13
13
  getType(): string;
14
- protected getDefaultOptions(): SearchSourceOptions;
14
+ protected getEffectiveOptions(): SearchSourceOptions;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<QuerySearchSource, never>;
16
16
  static ɵprov: i0.ɵɵInjectableDeclaration<QuerySearchSource>;
17
17
  }
@@ -79,6 +79,7 @@ export declare class SearchBarComponent implements OnInit, OnDestroy {
79
79
  get disabled(): boolean;
80
80
  readonly disabled$: BehaviorSubject<boolean>;
81
81
  pointerSummaryEnabled: boolean;
82
+ allowResetSearchSourcesOptions: boolean;
82
83
  searchResultsGeometryEnabled: boolean;
83
84
  /**
84
85
  * When reverse coordinates status change
@@ -228,5 +229,5 @@ export declare class SearchBarComponent implements OnInit, OnDestroy {
228
229
  */
229
230
  private onResearchCompleted;
230
231
  static ɵfac: i0.ɵɵFactoryDeclaration<SearchBarComponent, never>;
231
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "igo-search-bar", never, { "searchTypes": { "alias": "searchTypes"; "required": false; }; "withDivider": { "alias": "withDivider"; "required": false; }; "searchType": { "alias": "searchType"; "required": false; }; "term": { "alias": "term"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "pointerSummaryEnabled": { "alias": "pointerSummaryEnabled"; "required": false; }; "searchResultsGeometryEnabled": { "alias": "searchResultsGeometryEnabled"; "required": false; }; "reverseSearchCoordsFormatEnabled": { "alias": "reverseSearchCoordsFormatEnabled"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "color": { "alias": "color"; "required": false; }; "termSplitter": { "alias": "termSplitter"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "searchSelector": { "alias": "searchSelector"; "required": false; }; "searchSettings": { "alias": "searchSettings"; "required": false; }; "forceNA": { "alias": "forceNA"; "required": false; }; "store": { "alias": "store"; "required": false; }; }, { "pointerSummaryStatus": "pointerSummaryStatus"; "searchResultsGeometryStatus": "searchResultsGeometryStatus"; "reverseSearchCoordsFormatStatus": "reverseSearchCoordsFormatStatus"; "searchTermChange": "searchTermChange"; "search": "search"; "searchTypeChange": "searchTypeChange"; "clearFeature": "clearFeature"; "searchSettingsChange": "searchSettingsChange"; }, never, never, true, never>;
232
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchBarComponent, "igo-search-bar", never, { "searchTypes": { "alias": "searchTypes"; "required": false; }; "withDivider": { "alias": "withDivider"; "required": false; }; "searchType": { "alias": "searchType"; "required": false; }; "term": { "alias": "term"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "pointerSummaryEnabled": { "alias": "pointerSummaryEnabled"; "required": false; }; "allowResetSearchSourcesOptions": { "alias": "allowResetSearchSourcesOptions"; "required": false; }; "searchResultsGeometryEnabled": { "alias": "searchResultsGeometryEnabled"; "required": false; }; "reverseSearchCoordsFormatEnabled": { "alias": "reverseSearchCoordsFormatEnabled"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "color": { "alias": "color"; "required": false; }; "termSplitter": { "alias": "termSplitter"; "required": false; }; "debounce": { "alias": "debounce"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "searchSelector": { "alias": "searchSelector"; "required": false; }; "searchSettings": { "alias": "searchSettings"; "required": false; }; "forceNA": { "alias": "forceNA"; "required": false; }; "store": { "alias": "store"; "required": false; }; }, { "pointerSummaryStatus": "pointerSummaryStatus"; "searchResultsGeometryStatus": "searchResultsGeometryStatus"; "reverseSearchCoordsFormatStatus": "reverseSearchCoordsFormatStatus"; "searchTermChange": "searchTermChange"; "search": "search"; "searchTypeChange": "searchTypeChange"; "clearFeature": "clearFeature"; "searchSettingsChange": "searchSettingsChange"; }, never, never, true, never>;
232
233
  }
@@ -1,7 +1,9 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
2
  import { MatCheckboxChange } from '@angular/material/checkbox';
3
3
  import { MatRadioChange } from '@angular/material/radio';
4
+ import { FormDialogService } from '@igo2/common/form';
4
5
  import { MediaService } from '@igo2/core/media';
6
+ import { MessageService } from '@igo2/core/message';
5
7
  import { StorageService } from '@igo2/core/storage';
6
8
  import { SearchSourceService } from '../shared/search-source.service';
7
9
  import { SearchSource } from '../shared/sources/source';
@@ -16,6 +18,8 @@ import * as i0 from "@angular/core";
16
18
  * more than one search source enabled.
17
19
  */
18
20
  export declare class SearchSettingsComponent implements OnInit {
21
+ private formDialogService;
22
+ private messageService;
19
23
  private searchSourceService;
20
24
  private mediaService;
21
25
  private storageService;
@@ -28,6 +32,7 @@ export declare class SearchSettingsComponent implements OnInit {
28
32
  pointerSummaryEnabled: boolean;
29
33
  searchResultsGeometryEnabled: boolean;
30
34
  reverseSearchCoordsFormatEnabled: boolean;
35
+ allowResetSearchSourcesOptions: boolean;
31
36
  /**
32
37
  * Event emitted when the enabled search source changes
33
38
  */
@@ -45,7 +50,7 @@ export declare class SearchSettingsComponent implements OnInit {
45
50
  */
46
51
  reverseSearchCoordsFormatStatus: EventEmitter<boolean>;
47
52
  handleKeyboardEvent(event: KeyboardEvent): void;
48
- constructor(searchSourceService: SearchSourceService, mediaService: MediaService, storageService: StorageService);
53
+ constructor(formDialogService: FormDialogService, messageService: MessageService, searchSourceService: SearchSourceService, mediaService: MediaService, storageService: StorageService);
49
54
  ngOnInit(): void;
50
55
  /**
51
56
  * Get all search sources
@@ -76,6 +81,7 @@ export declare class SearchSettingsComponent implements OnInit {
76
81
  * @internal
77
82
  */
78
83
  computeSourcesCheckAllBehavior(sources: SearchSource[]): void;
84
+ resetSourceOptions(event: any): void;
79
85
  /**
80
86
  * Triggered when the check all / uncheck all type is clicked,
81
87
  * @internal
@@ -99,5 +105,5 @@ export declare class SearchSettingsComponent implements OnInit {
99
105
  changeSearchResultsGeometry(event: any): void;
100
106
  reverseSearchCoordsFormat(event: any): void;
101
107
  static ɵfac: i0.ɵɵFactoryDeclaration<SearchSettingsComponent, never>;
102
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchSettingsComponent, "igo-search-settings", never, { "pointerSummaryEnabled": { "alias": "pointerSummaryEnabled"; "required": false; }; "searchResultsGeometryEnabled": { "alias": "searchResultsGeometryEnabled"; "required": false; }; "reverseSearchCoordsFormatEnabled": { "alias": "reverseSearchCoordsFormatEnabled"; "required": false; }; }, { "searchSourceChange": "searchSourceChange"; "pointerSummaryStatus": "pointerSummaryStatus"; "searchResultsGeometryStatus": "searchResultsGeometryStatus"; "reverseSearchCoordsFormatStatus": "reverseSearchCoordsFormatStatus"; }, never, never, true, never>;
108
+ static ɵcmp: i0.ɵɵComponentDeclaration<SearchSettingsComponent, "igo-search-settings", never, { "pointerSummaryEnabled": { "alias": "pointerSummaryEnabled"; "required": false; }; "searchResultsGeometryEnabled": { "alias": "searchResultsGeometryEnabled"; "required": false; }; "reverseSearchCoordsFormatEnabled": { "alias": "reverseSearchCoordsFormatEnabled"; "required": false; }; "allowResetSearchSourcesOptions": { "alias": "allowResetSearchSourcesOptions"; "required": false; }; }, { "searchSourceChange": "searchSourceChange"; "pointerSummaryStatus": "pointerSummaryStatus"; "searchResultsGeometryStatus": "searchResultsGeometryStatus"; "reverseSearchCoordsFormatStatus": "reverseSearchCoordsFormatStatus"; }, never, never, true, never>;
103
109
  }
@@ -18,7 +18,7 @@ export declare class CadastreSearchSource extends SearchSource implements TextSe
18
18
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions);
19
19
  getId(): string;
20
20
  getType(): string;
21
- protected getDefaultOptions(): SearchSourceOptions;
21
+ protected getEffectiveOptions(): SearchSourceOptions;
22
22
  /**
23
23
  * Search a place by name
24
24
  * @param term Place name
@@ -27,7 +27,7 @@ export declare class CoordinatesReverseSearchSource extends SearchSource impleme
27
27
  constructor(options: SearchSourceOptions, languageService: LanguageService, storageService: StorageService, projections: Projection[]);
28
28
  getId(): string;
29
29
  getType(): string;
30
- protected getDefaultOptions(): SearchSourceOptions;
30
+ protected getEffectiveOptions(): SearchSourceOptions;
31
31
  /**
32
32
  * Search a location by coordinates
33
33
  * @param lonLat Location coordinates
@@ -32,12 +32,13 @@ export declare class IChercheSearchSource extends SearchSource implements TextSe
32
32
  static type: string;
33
33
  static propertiesBlacklist: string[];
34
34
  title$: BehaviorSubject<string>;
35
+ static defaultIchercheTypes: string[];
35
36
  private hashtagsLieuxToKeep;
36
37
  get title(): string;
37
38
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions, formatter: IChercheSearchResultFormatter, injector: Injector);
38
39
  getId(): string;
39
40
  getType(): string;
40
- protected getDefaultOptions(): SearchSourceOptions;
41
+ protected getEffectiveOptions(): SearchSourceOptions;
41
42
  /**
42
43
  * Search a location by name or keyword
43
44
  * @param term Location name or keyword
@@ -73,12 +74,13 @@ export declare class IChercheReverseSearchSource extends SearchSource implements
73
74
  static id: string;
74
75
  static type: string;
75
76
  static propertiesBlacklist: string[];
77
+ static defaultIchercheTypes: string[];
76
78
  title$: BehaviorSubject<string>;
77
79
  get title(): string;
78
80
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions, injector: Injector);
79
81
  getId(): string;
80
82
  getType(): string;
81
- protected getDefaultOptions(): SearchSourceOptions;
83
+ protected getEffectiveOptions(): SearchSourceOptions;
82
84
  /**
83
85
  * Search a location by coordinates
84
86
  * @param lonLat Location coordinates
@@ -28,7 +28,7 @@ export declare class ILayerSearchSource extends SearchSource implements TextSear
28
28
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: ILayerSearchSourceOptions, formatter: ILayerSearchResultFormatter);
29
29
  getId(): string;
30
30
  getType(): string;
31
- protected getDefaultOptions(): ILayerSearchSourceOptions;
31
+ protected getEffectiveOptions(): ILayerSearchSourceOptions;
32
32
  /**
33
33
  * Search a layer by name or keyword
34
34
  * @param term Layer name or keyword
@@ -16,7 +16,7 @@ export declare class NominatimSearchSource extends SearchSource implements TextS
16
16
  constructor(http: HttpClient, options: SearchSourceOptions, storageService: StorageService);
17
17
  getId(): string;
18
18
  getType(): string;
19
- protected getDefaultOptions(): SearchSourceOptions;
19
+ protected getEffectiveOptions(): SearchSourceOptions;
20
20
  /**
21
21
  * Search a place by name
22
22
  * @param term Place name
@@ -22,6 +22,7 @@ export declare class SearchSource {
22
22
  * @internal
23
23
  */
24
24
  protected options: SearchSourceOptions;
25
+ protected defaultOptions: SearchSourceOptions;
25
26
  /**
26
27
  * Get search source's id
27
28
  * @returns Search source's id
@@ -36,7 +37,7 @@ export declare class SearchSource {
36
37
  * Get search source's default options
37
38
  * @returns Search source default options
38
39
  */
39
- protected getDefaultOptions(): SearchSourceOptions;
40
+ protected getEffectiveOptions(): SearchSourceOptions;
40
41
  /**
41
42
  * Search source's title
42
43
  */
@@ -67,6 +68,7 @@ export declare class SearchSource {
67
68
  set featureStoresWithIndex(storesWithIndex: FeatureStore[]);
68
69
  get featureStoresWithIndex(): FeatureStore[];
69
70
  private _featureStoresWithIndex;
71
+ resetSourceOptions(): void;
70
72
  setWorkspaces(workspaces: Workspace[]): void;
71
73
  /**
72
74
  * Set params from selected settings
@@ -23,7 +23,7 @@ export declare class StoredQueriesSearchSource extends SearchSource implements T
23
23
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions);
24
24
  getId(): string;
25
25
  getType(): string;
26
- protected getDefaultOptions(): SearchSourceOptions;
26
+ protected getEffectiveOptions(): SearchSourceOptions;
27
27
  /**
28
28
  * Search a location by name or keyword
29
29
  * @param term Location name or keyword
@@ -56,7 +56,7 @@ export declare class StoredQueriesReverseSearchSource extends SearchSource imple
56
56
  constructor(http: HttpClient, languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions);
57
57
  getId(): string;
58
58
  getType(): string;
59
- protected getDefaultOptions(): SearchSourceOptions;
59
+ protected getEffectiveOptions(): SearchSourceOptions;
60
60
  /**
61
61
  * Search a location by coordinates
62
62
  * @param lonLat Location coordinates
@@ -18,7 +18,7 @@ export declare class WorkspaceSearchSource extends SearchSource implements TextS
18
18
  constructor(languageService: LanguageService, storageService: StorageService, options: SearchSourceOptions);
19
19
  getId(): string;
20
20
  getType(): string;
21
- protected getDefaultOptions(): SearchSourceOptions;
21
+ protected getEffectiveOptions(): SearchSourceOptions;
22
22
  /**
23
23
  * Search a location by name or keyword
24
24
  * @param term Location name or keyword
@@ -7,6 +7,7 @@ import { StorageService } from '@igo2/core/storage';
7
7
  import olFeature from 'ol/Feature';
8
8
  import GeoJSON from 'ol/format/GeoJSON';
9
9
  import WKT from 'ol/format/WKT';
10
+ import type { default as OlGeometry } from 'ol/geom/Geometry';
10
11
  import { BehaviorSubject, Observable } from 'rxjs';
11
12
  import { RelationOptions } from '../../datasource/shared/datasources';
12
13
  import { ImageLayer, LayerService, VectorLayer } from '../../layer/shared';
@@ -29,7 +30,7 @@ export declare class EditionWorkspaceService {
29
30
  rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>;
30
31
  loading: boolean;
31
32
  wktFormat: WKT;
32
- geoJsonFormat: GeoJSON<typeof olFeature>;
33
+ geoJsonFormat: GeoJSON<olFeature<OlGeometry>>;
33
34
  get zoomAuto(): boolean;
34
35
  constructor(layerService: LayerService, storageService: StorageService, configService: ConfigService, messageService: MessageService, http: HttpClient, dialog: MatDialog, styleService: StyleService, authInterceptor?: AuthInterceptor);
35
36
  createWorkspace(layer: ImageLayer, map: IgoMap): EditionWorkspace;
@@ -5,3 +5,4 @@ export * from './feature-workspace.service';
5
5
  export * from './edition-workspace';
6
6
  export * from './edition-workspace.service';
7
7
  export * from './workspace.utils';
8
+ export * from './workspace.interface';
@@ -0,0 +1,4 @@
1
+ import { EditionWorkspace } from './edition-workspace';
2
+ import { FeatureWorkspace } from './feature-workspace';
3
+ import { WfsWorkspace } from './wfs-workspace';
4
+ export type AnyWorkspace = WfsWorkspace | FeatureWorkspace | EditionWorkspace;
@@ -0,0 +1,58 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { OnUpdateInputs } from '@igo2/common/dynamic-component';
3
+ import { Form, FormService } from '@igo2/common/form';
4
+ import { WidgetComponent } from '@igo2/common/widget';
5
+ import { LanguageService } from '@igo2/core/language';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import { FeatureGeometry } from '../../../feature/shared/feature.interfaces';
8
+ import { IgoMap } from '../../../map/shared/map';
9
+ import { FeatureWorkspace } from '../../shared/feature-workspace';
10
+ import { WfsWorkspace } from '../../shared/wfs-workspace';
11
+ import * as i0 from "@angular/core";
12
+ interface DataSelectionData {
13
+ geometry?: FeatureGeometry;
14
+ action?: SelectionAction;
15
+ buffer?: string;
16
+ }
17
+ declare enum SelectionAction {
18
+ New = "new",
19
+ Add = "add",
20
+ Remove = "remove"
21
+ }
22
+ export declare class InteractiveSelectionFormComponent implements OnInit, OnDestroy, OnUpdateInputs, WidgetComponent {
23
+ private cdRef;
24
+ private formService;
25
+ private languageService;
26
+ form$: BehaviorSubject<Form>;
27
+ submitButtonText$: BehaviorSubject<string>;
28
+ submitDisabled: boolean;
29
+ private valueChanges$$;
30
+ data$: BehaviorSubject<DataSelectionData>;
31
+ map: IgoMap;
32
+ workspace: FeatureWorkspace | WfsWorkspace;
33
+ /**
34
+ * Event emitted on complete
35
+ */
36
+ complete: EventEmitter<void>;
37
+ /**
38
+ * Event emitted on cancel
39
+ */
40
+ cancel: EventEmitter<void>;
41
+ constructor(cdRef: ChangeDetectorRef, formService: FormService, languageService: LanguageService);
42
+ ngOnInit(): void;
43
+ private setAction;
44
+ ngOnDestroy(): void;
45
+ /**
46
+ * Implemented as part of OnUpdateInputs
47
+ */
48
+ onUpdateInputs(): void;
49
+ /**
50
+ * On close, emit the cancel event
51
+ */
52
+ onClose(): void;
53
+ onSubmit(data: DataSelectionData): void;
54
+ clear(): void;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<InteractiveSelectionFormComponent, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<InteractiveSelectionFormComponent, "igo-interactive-selection", never, { "map": { "alias": "map"; "required": false; }; "workspace": { "alias": "workspace"; "required": false; }; }, { "complete": "complete"; "cancel": "cancel"; }, never, never, true, never>;
57
+ }
58
+ export {};
@@ -1,9 +1,16 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { Widget, WidgetService } from '@igo2/common/widget';
3
3
  export declare const OgcFilterWidget: InjectionToken<Widget>;
4
+ export declare const InteractiveSelectionFormWidget: InjectionToken<Widget>;
4
5
  export declare function ogcFilterWidgetFactory(widgetService: WidgetService): Widget;
5
6
  export declare function provideOgcFilterWidget(): {
6
7
  provide: InjectionToken<Widget>;
7
8
  useFactory: typeof ogcFilterWidgetFactory;
8
9
  deps: (typeof WidgetService)[];
9
10
  };
11
+ export declare function interactiveSelectionFormWidgetFactory(widgetService: WidgetService): Widget;
12
+ export declare function provideInteractiveSelectionFormWidget(): {
13
+ provide: InjectionToken<Widget>;
14
+ useFactory: typeof interactiveSelectionFormWidgetFactory;
15
+ deps: (typeof WidgetService)[];
16
+ };
@@ -27,6 +27,9 @@ export declare class WorkspaceSelectorDirective implements OnInit, OnDestroy {
27
27
  private onLayersChange;
28
28
  private getOrCreateWorkspace;
29
29
  private layerIsEditable;
30
+ private updateActiveWorkspaceRefreshState;
31
+ private enableLayerRefreshForWorkspace;
32
+ private disableAllLayerRefresh;
30
33
  static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceSelectorDirective, never>;
31
34
  static ɵdir: i0.ɵɵDirectiveDeclaration<WorkspaceSelectorDirective, "[igoWorkspaceSelector]", never, { "map": { "alias": "map"; "required": false; }; }, { "changeWorkspace": "changeWorkspace"; "disableSwitch": "disableSwitch"; "relationLayers": "relationLayers"; "rowsInMapExtentCheckCondition": "rowsInMapExtentCheckCondition"; }, never, never, true, never>;
32
35
  }
@@ -19,14 +19,16 @@
19
19
  "layer": "This layer comes from an external organization.",
20
20
  "unavailableWithEmail": "The catalog '{{value}}' is unavailable at the moment. To add an external service to the predefined list, please contact us at {{emailAddress}}. Delays can apply if problems occurs with the provider."
21
21
  },
22
+ "library.predefined.select": "Select a catalog",
23
+ "library.custom.title": "Title",
22
24
  "library.add": "Add this catalog to the list",
23
- "library.cancel": "Cancel",
25
+ "library.predefined": "Predefined list",
26
+ "library.custom": "Advanced configuration",
24
27
  "library.remove": "Remove this catalog from the list",
25
28
  "library.inlist": {
26
29
  "title": "Catalog already contained",
27
30
  "message": "The catalog is already contained in the list."
28
31
  },
29
- "library.addTitle": "Adding a catalog",
30
32
  "library.addBtn": "Add a catalog"
31
33
  },
32
34
  "clickOnMap": {
@@ -576,6 +578,17 @@
576
578
  "selectAll": "Select All",
577
579
  "unselectAll": "Unselect All",
578
580
  "settings": {
581
+ "reset": {
582
+ "button": "Reset search options",
583
+ "dialog": {
584
+ "title": "Choose search services to reset",
585
+ "form.field.title": "Choose search service(s)"
586
+ },
587
+ "notice": {
588
+ "multiple": "The options for the selected search services have been reset.",
589
+ "single": "The options for the selected search service have been reset."
590
+ }
591
+ },
579
592
  "datasets": "Datasets",
580
593
  "results type": "Results type",
581
594
  "ecmax": "Maximum deviation",
@@ -820,8 +833,20 @@
820
833
  "addError": "An error has occured. Entity could not be added.",
821
834
  "modifyError": "An error has occured. Entity could not be modified.",
822
835
  "cancel": "Cancel",
823
- "inMapExtent.active.tooltip": "Ne montrer que les entités contenues dans la carte",
824
- "inMapExtent.inactive.tooltip": "Montrer tous les entités"
836
+ "inMapExtent.active.tooltip": "Show only features contained in the map",
837
+ "inMapExtent.inactive.tooltip": "Show all features",
838
+ "widget": {
839
+ "interactiveSelection": {
840
+ "selection.add": "Add to the current selection",
841
+ "selection.new": "Select",
842
+ "selection.remove": "Remove from the current selection",
843
+ "reset": {
844
+ "button": "Reset"
845
+ },
846
+ "action.title": "How to handle results",
847
+ "buffer.title": "Buffer size (meters)"
848
+ }
849
+ }
825
850
  },
826
851
  "formValidation": {
827
852
  "mandatory": "{{column}} is mandatory",
@@ -19,14 +19,16 @@
19
19
  "layer": "Cette couche provient d'une organisation externe.",
20
20
  "unavailableWithEmail": "Le catalogue '{{value}}' est indisponible pour le moment. Pour ajouter un service externe à la liste prédéfinie, veuillez contacter {{email}}. Des délais peuvent s'appliquer si problème il y a avec le fournisseur externe."
21
21
  },
22
+ "library.predefined.select": "Sélectionner un catalogue",
23
+ "library.custom.title": "Titre",
22
24
  "library.add": "Ajouter ce catalogue",
23
- "library.cancel": "Annuler",
25
+ "library.predefined": "Liste prédéfinie",
26
+ "library.custom": "Configuration avancées",
24
27
  "library.remove": "Retirer ce catalogue de la liste",
25
28
  "library.inlist": {
26
29
  "title": "Catalogue déjà contenu",
27
30
  "message": "Le catalogue à ajouter est déjà dans la liste"
28
31
  },
29
- "library.addTitle": "Ajout d'un catalogue",
30
32
  "library.addBtn": "Ajouter un catalogue"
31
33
  },
32
34
  "clickOnMap": {
@@ -575,6 +577,17 @@
575
577
  "selectAll": "Tout sélectionner",
576
578
  "unselectAll": "Tout désélectionner",
577
579
  "settings": {
580
+ "reset": {
581
+ "button": "Réinitialiser les options de recherche",
582
+ "dialog": {
583
+ "title": "Choisir les services de recherche à réinitialiser",
584
+ "form.field.title": "Choisir le(s) service(s) de recherche"
585
+ },
586
+ "notice": {
587
+ "multiple": "Les options des services de recherche sélectionnés ont été réinitialisés.",
588
+ "single": "Les options du service de recherche sélectionné ont été réinitialisés."
589
+ }
590
+ },
578
591
  "datasets": "Jeu de données",
579
592
  "results type": "Type de résultat",
580
593
  "ecmax": "Écart maximal",
@@ -821,7 +834,19 @@
821
834
  "modifyError": "Un problème est survenu. L'entité n'a pas pu être modifiée.",
822
835
  "cancel": "Annuler",
823
836
  "inMapExtent.active.tooltip": "Ne montrer que les enregistrements contenus dans la carte",
824
- "inMapExtent.inactive.tooltip": "Montrer tous les enregistrements"
837
+ "inMapExtent.inactive.tooltip": "Montrer tous les enregistrements",
838
+ "widget": {
839
+ "interactiveSelection": {
840
+ "selection.add": "Ajouter à la présente sélection",
841
+ "selection.new": "Effectuer la sélection",
842
+ "selection.remove": "Supprimer les résultats de la sélection",
843
+ "reset": {
844
+ "button": "Réinitialiser"
845
+ },
846
+ "action.title": "Action à faire avec le résultat de la présente sélection",
847
+ "buffer.title": "Taille de la zone tampon en mètre"
848
+ }
849
+ }
825
850
  },
826
851
  "formValidation": {
827
852
  "mandatory": "{{column}}est un champ obligatoire",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@igo2/geo",
3
- "version": "19.0.0-next.2",
3
+ "version": "19.0.0-next.21",
4
4
  "description": "IGO Library",
5
5
  "author": "IGO Community",
6
6
  "keywords": [
@@ -32,40 +32,43 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
- "@turf/helpers": "^6.5.0",
36
- "@turf/line-intersect": "^6.5.0",
37
- "@turf/point-on-feature": "^6.5.0",
38
- "nosleep.js": "^0.12.0",
39
- "ts-cacheable": "^1.0.6",
40
- "ts-md5": "^1.3.0",
41
- "tslib": "^2.6.0"
35
+ "tslib": "^2.8.0"
42
36
  },
43
37
  "peerDependencies": {
44
38
  "@angular/animations": "^19.0.0",
45
39
  "@angular/common": "^19.0.0",
46
40
  "@angular/core": "^19.0.0",
47
41
  "@angular/forms": "^19.0.0",
48
- "@angular/material": "^19.0.0",
49
42
  "@angular/material-moment-adapter": "^19.0.0",
43
+ "@angular/material": "^19.0.0",
50
44
  "@angular/platform-browser": "^19.0.0",
51
- "@igo2/auth": "^19.0.0-next.2",
52
- "@igo2/common": "^19.0.0-next.2",
53
- "@igo2/core": "^19.0.0-next.2",
54
- "@igo2/utils": "^19.0.0-next.2",
45
+ "@igo2/auth": "^19.0.0-next.21",
46
+ "@igo2/common": "^19.0.0-next.21",
47
+ "@igo2/core": "^19.0.0-next.21",
48
+ "@igo2/utils": "^19.0.0-next.21",
55
49
  "@mat-datetimepicker/core": "^15.0.1",
50
+ "@turf/boolean-intersects": "^7.2.0",
51
+ "@turf/buffer": "^7.2.0",
52
+ "@turf/helpers": "^7.2.0",
53
+ "@turf/intersect": "^7.2.0",
54
+ "@turf/line-intersect": "^7.2.0",
55
+ "@turf/point-on-feature": "^7.2.0",
56
56
  "file-saver": "^2.0.2",
57
57
  "flexsearch": "0.7.21",
58
58
  "html2canvas": "^1.4.1",
59
+ "jspdf-autotable": "^5.0.0",
59
60
  "jspdf": "^3.0.0",
60
- "jspdf-autotable": "^3.8.4",
61
61
  "jszip": "^3.10.1",
62
62
  "moment": "^2.30.0",
63
63
  "ngx-indexed-db": "^19.0.0",
64
- "ol": "9.1.0",
65
- "ol-mapbox-style": "^12.0.0",
66
- "proj4": "^2.12.0",
64
+ "nosleep.js": "^0.12.0",
65
+ "ol-mapbox-style": "^12.5.0",
66
+ "ol": "10.5.0",
67
+ "proj4": "^2.15.0",
67
68
  "rxjs": "^7.8.0",
68
- "striptags": "^3.2.0"
69
+ "striptags": "^3.2.0",
70
+ "ts-cacheable": "^1.0.6",
71
+ "ts-md5": "^1.3.0"
69
72
  },
70
73
  "engines": {
71
74
  "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
package/style/style.css CHANGED
@@ -347,4 +347,8 @@
347
347
 
348
348
  .ol-overviewmap .ol-overviewmap-box:hover {
349
349
  cursor: move;
350
+ }
351
+
352
+ .ol-overviewmap .ol-viewport:hover {
353
+ cursor: pointer;
350
354
  }