@igo2/geo 1.13.3 → 1.14.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 (58) hide show
  1. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -1
  2. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  3. package/esm2020/lib/draw/draw/draw-popup.component.mjs +562 -32
  4. package/esm2020/lib/draw/draw/draw.component.mjs +358 -130
  5. package/esm2020/lib/draw/draw/draw.module.mjs +12 -4
  6. package/esm2020/lib/draw/shared/draw-style.service.mjs +2 -2
  7. package/esm2020/lib/draw/shared/draw.enum.mjs +14 -1
  8. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  9. package/esm2020/lib/draw/shared/draw.utils.mjs +19 -1
  10. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +21 -8
  11. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +12 -2
  12. package/esm2020/lib/geometry/shared/controls/draw.mjs +53 -10
  13. package/esm2020/lib/import-export/shared/export.service.mjs +2 -2
  14. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  15. package/esm2020/lib/import-export/shared/import.service.mjs +26 -6
  16. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  17. package/esm2020/lib/map/shared/hover-feature.directive.mjs +2 -2
  18. package/esm2020/lib/map/shared/map.utils.mjs +4 -1
  19. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +33 -4
  20. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  21. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +12 -12
  22. package/esm2020/lib/print/shared/geopdf.mjs +58 -0
  23. package/esm2020/lib/print/shared/index.mjs +2 -1
  24. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  25. package/esm2020/lib/print/shared/print.service.mjs +118 -64
  26. package/esm2020/lib/query/shared/query.service.mjs +3 -3
  27. package/esm2020/lib/search/shared/sources/index.mjs +1 -3
  28. package/fesm2015/igo2-geo.mjs +1320 -409
  29. package/fesm2015/igo2-geo.mjs.map +1 -1
  30. package/fesm2020/igo2-geo.mjs +1272 -405
  31. package/fesm2020/igo2-geo.mjs.map +1 -1
  32. package/lib/catalog/shared/catalog.abstract.d.ts +1 -0
  33. package/lib/draw/draw/draw-popup.component.d.ts +52 -5
  34. package/lib/draw/draw/draw.component.d.ts +34 -4
  35. package/lib/draw/draw/draw.module.d.ts +3 -1
  36. package/lib/draw/shared/draw.enum.d.ts +11 -0
  37. package/lib/draw/shared/draw.interface.d.ts +4 -0
  38. package/lib/draw/shared/draw.utils.d.ts +2 -0
  39. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -1
  40. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +7 -1
  41. package/lib/geometry/shared/controls/draw.d.ts +18 -0
  42. package/lib/import-export/shared/import.interface.d.ts +2 -1
  43. package/lib/import-export/shared/import.service.d.ts +7 -0
  44. package/lib/layer/shared/layers/layer.interface.d.ts +4 -0
  45. package/lib/map/shared/map.utils.d.ts +1 -0
  46. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -0
  47. package/lib/offline/geoDB/geoDB.interface.d.ts +1 -0
  48. package/lib/offline/geoDB/geoDB.service.d.ts +3 -3
  49. package/lib/print/shared/geopdf.d.ts +1 -0
  50. package/lib/print/shared/index.d.ts +1 -0
  51. package/lib/print/shared/print.interface.d.ts +5 -0
  52. package/lib/print/shared/print.service.d.ts +17 -8
  53. package/lib/search/shared/sources/index.d.ts +0 -2
  54. package/package.json +4 -4
  55. package/esm2020/lib/search/shared/sources/cadastre.mjs +0 -126
  56. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +0 -23
  57. package/lib/search/shared/sources/cadastre.d.ts +0 -33
  58. package/lib/search/shared/sources/cadastre.providers.d.ts +0 -18
@@ -11,7 +11,7 @@ import { MatListModule } from '@angular/material/list';
11
11
  import * as i4 from '@angular/material/tooltip';
12
12
  import { MatTooltipModule } from '@angular/material/tooltip';
13
13
  import * as i5$1 from '@igo2/common';
14
- import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, DOMService, EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer, IgoEntityModule, IgoDOMModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
14
+ import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, EntityTableColumnRenderer, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, DOMService, EntityStoreFilterSelectionStrategy, IgoEntityModule, IgoDOMModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
15
15
  import * as i3 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
17
17
  import * as i2$1 from '@igo2/core';
@@ -19,7 +19,7 @@ import { IgoLanguageModule, ConfigService, Media, StorageScope, IgoMessageModule
19
19
  import * as i1 from '@angular/material/dialog';
20
20
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
21
21
  import * as i7 from '@ngx-translate/core';
22
- import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, throwError } from 'rxjs';
22
+ import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, Subscription, throwError } from 'rxjs';
23
23
  import { map, concatMap, first, catchError, skipWhile, debounceTime, skip, distinctUntilChanged, switchMap, take, mergeMap, debounce, takeUntil } from 'rxjs/operators';
24
24
  import { Watcher, uuid, SubjectStatus, NumberUtils, ObjectUtils, userAgent, Clipboard, downloadContent, strEnum, ChangeUtils } from '@igo2/utils';
25
25
  import olMap from 'ol/Map';
@@ -54,7 +54,7 @@ import { WMSCapabilities, WMTSCapabilities, EsriJSON } from 'ol/format';
54
54
  import { Md5 } from 'ts-md5';
55
55
  import { MAC } from 'ol/has';
56
56
  import * as olfilter from 'ol/format/filter';
57
- import olWKT from 'ol/format/WKT';
57
+ import olFormatWKT from 'ol/format/WKT';
58
58
  import olFormatWFS from 'ol/format/WFS';
59
59
  import moment from 'moment';
60
60
  import olFormatGML2 from 'ol/format/GML2';
@@ -105,10 +105,10 @@ import { MAT_DATE_LOCALE, MatOptionModule, MatNativeDateModule } from '@angular/
105
105
  import * as i13 from '@angular/material/form-field';
106
106
  import { MatFormFieldModule } from '@angular/material/form-field';
107
107
  import * as i2$2 from '@angular/forms';
108
- import { ReactiveFormsModule, FormsModule, Validators, UntypedFormControl } from '@angular/forms';
108
+ import { UntypedFormControl, ReactiveFormsModule, FormsModule, Validators } from '@angular/forms';
109
109
  import * as i15 from '@angular/material/select';
110
110
  import { MatSelectModule } from '@angular/material/select';
111
- import * as i12$1 from '@angular/material/checkbox';
111
+ import * as i12 from '@angular/material/checkbox';
112
112
  import { MatCheckboxModule } from '@angular/material/checkbox';
113
113
  import * as i11 from '@angular/material/divider';
114
114
  import { MatDividerModule } from '@angular/material/divider';
@@ -120,7 +120,7 @@ import * as i23 from '@angular/material/slide-toggle';
120
120
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
121
121
  import * as i13$1 from '@angular/material/slider';
122
122
  import { MatSliderModule, MatSlider } from '@angular/material/slider';
123
- import * as i12 from 'ngx-color-picker';
123
+ import * as i12$1 from 'ngx-color-picker';
124
124
  import { ColorPickerModule } from 'ngx-color-picker';
125
125
  import scrollIntoView from 'scroll-into-view-if-needed';
126
126
  import OlOverlay from 'ol/Overlay';
@@ -135,13 +135,13 @@ import { doubleClick } from 'ol/events/condition';
135
135
  import lineIntersect from '@turf/line-intersect';
136
136
  import * as i18 from '@angular/material/button-toggle';
137
137
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
138
+ import * as i17 from '@angular/material/radio';
139
+ import { MatRadioModule } from '@angular/material/radio';
138
140
  import * as i11$1 from '@angular/material/autocomplete';
139
141
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
140
142
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
141
143
  import * as i25 from '@angular/material/datepicker';
142
144
  import { MatDatepickerModule } from '@angular/material/datepicker';
143
- import * as i17 from '@angular/material/radio';
144
- import { MatRadioModule } from '@angular/material/radio';
145
145
  import * as i21 from '@angular/material/table';
146
146
  import { MatTableModule } from '@angular/material/table';
147
147
  import * as i20 from '@angular/material/tabs';
@@ -157,7 +157,7 @@ import { SelectionModel } from '@angular/cdk/collections';
157
157
  import { NestedTreeControl } from '@angular/cdk/tree';
158
158
  import { encode } from 'windows-1252';
159
159
  import { saveAs } from 'file-saver';
160
- import jspdf from 'jspdf';
160
+ import jsPDF from 'jspdf';
161
161
  import html2canvas from 'html2canvas';
162
162
  import JSZip from 'jszip';
163
163
  import * as i3$1 from '@angular/cdk/drag-drop';
@@ -1123,6 +1123,9 @@ function roundCoordTo(coord, decimal = 3) {
1123
1123
  NumberUtils.roundToNDecimal(coord[1], decimal)
1124
1124
  ];
1125
1125
  }
1126
+ function roundCoordToString(coord, decimal = 3) {
1127
+ return roundCoordTo(coord, decimal).map(r => r.toString());
1128
+ }
1126
1129
  /**
1127
1130
  * Returns an array of converted coordinates.
1128
1131
  * Conversion is done for every configured projections
@@ -1581,7 +1584,7 @@ class OgcFilterWriter {
1581
1584
  const wfsExpression = filterOptions.expression;
1582
1585
  let geometry;
1583
1586
  if (wfsWktGeometry) {
1584
- const wkt = new olWKT();
1587
+ const wkt = new olFormatWKT();
1585
1588
  geometry = wkt.readGeometry(wfsWktGeometry, {
1586
1589
  dataProjection: wfsSrsName,
1587
1590
  featureProjection: wfsSrsName || 'EPSG:3857'
@@ -8755,7 +8758,7 @@ class HoverFeatureDirective {
8755
8758
  zIndex: 901,
8756
8759
  renderMode: "vector",
8757
8760
  declutter: true,
8758
- source: new olSourceVectorTile({}),
8761
+ source: new olSourceVectorTile({ projection: this.map.projection }),
8759
8762
  style: (feature, resolution) => {
8760
8763
  if (this.mvtStyleOptions && feature.getId() in this.selectionMVT) {
8761
8764
  return this.createHoverStyle(feature, this.mvtStyleOptions, resolution);
@@ -9786,7 +9789,7 @@ class GeoDBService {
9786
9789
  this.compression = compression;
9787
9790
  this.dbName = 'geoData';
9788
9791
  this.collisionsMap = new Map();
9789
- this._newTiles = 0;
9792
+ this._newData = 0;
9790
9793
  }
9791
9794
  /**
9792
9795
  * Only blob can be will be compressed
@@ -9821,7 +9824,7 @@ class GeoDBService {
9821
9824
  return this.ngxIndexedDBService.getByID(this.dbName, url);
9822
9825
  }), concatMap((dbObject) => {
9823
9826
  if (!dbObject) {
9824
- this._newTiles++;
9827
+ this._newData++;
9825
9828
  return this.ngxIndexedDBService.add(this.dbName, geoDBData);
9826
9829
  }
9827
9830
  else {
@@ -9873,11 +9876,11 @@ class GeoDBService {
9873
9876
  deleteByKey(url) {
9874
9877
  return this.ngxIndexedDBService.deleteByKey(this.dbName, url);
9875
9878
  }
9876
- getRegionTileCountByID(id) {
9879
+ getRegionCountByID(id) {
9877
9880
  const subject = new Subject();
9878
9881
  const dbRequest = this.getRegionByID(id)
9879
- .subscribe((tiles) => {
9880
- subject.next(tiles.length);
9882
+ .subscribe((datas) => {
9883
+ subject.next(datas.length);
9881
9884
  subject.complete();
9882
9885
  });
9883
9886
  return subject;
@@ -9896,9 +9899,9 @@ class GeoDBService {
9896
9899
  }
9897
9900
  const IDBKey = IDBKeyRange.only(id);
9898
9901
  const dbRequest = this.ngxIndexedDBService.getAllByIndex(this.dbName, 'regionID', IDBKey);
9899
- dbRequest.subscribe((tiles) => {
9900
- tiles.forEach((tile) => {
9901
- this.ngxIndexedDBService.deleteByKey(this.dbName, tile.url);
9902
+ dbRequest.subscribe((datas) => {
9903
+ datas.forEach((data) => {
9904
+ this.ngxIndexedDBService.deleteByKey(this.dbName, data.url);
9902
9905
  });
9903
9906
  });
9904
9907
  return dbRequest;
@@ -9909,7 +9912,7 @@ class GeoDBService {
9909
9912
  }
9910
9913
  resetCounters() {
9911
9914
  this.resetCollisionsMap();
9912
- this._newTiles = 0;
9915
+ this._newData = 0;
9913
9916
  }
9914
9917
  resetCollisionsMap() {
9915
9918
  this.collisionsMap = new Map();
@@ -9927,8 +9930,8 @@ class GeoDBService {
9927
9930
  }
9928
9931
  }
9929
9932
  }
9930
- get newTiles() {
9931
- return this._newTiles;
9933
+ get newData() {
9934
+ return this._newData;
9932
9935
  }
9933
9936
  }
9934
9937
  GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1$3.NgxIndexedDBService), i0.ɵɵinject(i2$1.CompressionService)); };
@@ -10994,7 +10997,7 @@ class QueryService {
10994
10997
  features = this.extractGML2Data(res, layer, allowedFieldsAndAlias);
10995
10998
  break;
10996
10999
  }
10997
- if (features.length > 0 && features[0].geometry === null) {
11000
+ if (features.length > 0 && (features[0].geometry === null || !features[0].geometry)) {
10998
11001
  const geomToAdd = this.createGeometryFromUrlClick(url);
10999
11002
  for (const feature of features) {
11000
11003
  feature.geometry = geomToAdd;
@@ -11005,7 +11008,7 @@ class QueryService {
11005
11008
  new RegExp('FEATURE_COUNT=' + this.featureCount) :
11006
11009
  new RegExp('FEATURE_COUNT=' + this.defaultFeatureCount);
11007
11010
  if (featureCount.test(url) &&
11008
- ((((_b = wmsDatasource.params) === null || _b === void 0 ? void 0 : _b.FEATURE_COUNT) && features.length === this.featureCount) ||
11011
+ ((((_b = wmsDatasource.params) === null || _b === void 0 ? void 0 : _b.FEATURE_COUNT) && this.featureCount > 1 && features.length === this.featureCount) ||
11009
11012
  (!((_c = wmsDatasource.params) === null || _c === void 0 ? void 0 : _c.FEATURE_COUNT) && features.length === this.defaultFeatureCount))) {
11010
11013
  this.languageService.translate.get('igo.geo.query.featureCountMax', { value: layer.title }).subscribe(message => {
11011
11014
  const messageObj = this.messageService.info(message);
@@ -12716,9 +12719,13 @@ class CatalogBrowserComponent {
12716
12719
  */
12717
12720
  addLayersToMap(layers) {
12718
12721
  const layers$ = layers.map((layer) => {
12722
+ var _a;
12719
12723
  if (!layer.options.sourceOptions.optionsFromApi) {
12720
12724
  layer.options.sourceOptions.optionsFromApi = true;
12721
12725
  }
12726
+ if ((_a = this.catalog.profils) === null || _a === void 0 ? void 0 : _a.length) {
12727
+ layer.options.security = { profils: this.catalog.profils };
12728
+ }
12722
12729
  return this.layerService.createAsyncLayer(layer.options);
12723
12730
  });
12724
12731
  zip(...layers$).subscribe((oLayers) => {
@@ -15858,7 +15865,20 @@ var FontType;
15858
15865
  FontType["LucidaConsole"] = "Lucida Console";
15859
15866
  FontType["BrushScriptMT"] = "Brush Script MT";
15860
15867
  FontType["ComicSansMS"] = "Comic Sans MS";
15861
- })(FontType || (FontType = {}));
15868
+ })(FontType || (FontType = {}));
15869
+ var LabelType;
15870
+ (function (LabelType) {
15871
+ LabelType["Coordinates"] = "Coordinates";
15872
+ LabelType["Length"] = "Length";
15873
+ LabelType["Area"] = "Area";
15874
+ LabelType["Predefined"] = "Predefined";
15875
+ LabelType["Custom"] = "Custom";
15876
+ })(LabelType || (LabelType = {}));
15877
+ var CoordinatesUnit;
15878
+ (function (CoordinatesUnit) {
15879
+ CoordinatesUnit["DecimalDegree"] = "DD";
15880
+ CoordinatesUnit["DegreesMinutesSeconds"] = "DMS";
15881
+ })(CoordinatesUnit || (CoordinatesUnit = {}));
15862
15882
 
15863
15883
  class DrawIconService {
15864
15884
  constructor(config) {
@@ -16500,6 +16520,22 @@ function createOlTooltipDrawAtPoint(olPoint) {
16500
16520
  olTooltip.setPosition(olPoint.getFlatCoordinates());
16501
16521
  olPoint.set('_tooltip', olTooltip);
16502
16522
  return olTooltip;
16523
+ }
16524
+ function DDtoDMS(value, unit) {
16525
+ const conversionMapper = new Map([
16526
+ [CoordinatesUnit.DecimalDegree, (val) => {
16527
+ if (typeof val[0] === 'number') {
16528
+ return roundCoordToString(val, 5);
16529
+ }
16530
+ else {
16531
+ const numVal = [Number(val[0]), Number(val[1])];
16532
+ return roundCoordToString(numVal, 5);
16533
+ }
16534
+ }],
16535
+ [CoordinatesUnit.DegreesMinutesSeconds, (val) => convertDDToDMS(val, 2)]
16536
+ ]);
16537
+ let conversion = conversionMapper.get(unit);
16538
+ return conversion ? conversion(value) : undefined;
16503
16539
  }
16504
16540
 
16505
16541
  class DrawStyleService {
@@ -16509,7 +16545,7 @@ class DrawStyleService {
16509
16545
  this.strokeColor = 'rgba(143,7,7,1)';
16510
16546
  this.strokeWidth = 1;
16511
16547
  this.labelsAreShown = true;
16512
- this.fontSize = '20';
16548
+ this.fontSize = '15';
16513
16549
  this.fontStyle = FontType.Arial.toString();
16514
16550
  this.offsetX = 0;
16515
16551
  this.offsetY = 0;
@@ -17404,8 +17440,24 @@ class DrawControl {
17404
17440
  * Freehand mode observable (defaults to false)
17405
17441
  */
17406
17442
  this.freehand$ = new BehaviorSubject(false);
17443
+ /**
17444
+ * Observables from predefined radius (defaults to false and undefined)
17445
+ */
17446
+ this.ispredefinedRadius$ = new BehaviorSubject(false);
17447
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
17448
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
17407
17449
  this.olDrawingLayer = options.drawingLayer ? options.drawingLayer : this.createOlInnerOverlayLayer();
17408
17450
  this.olGeometryType = this.options.geometryType;
17451
+ this.olInteractionStyle = this.options.interactionStyle;
17452
+ }
17453
+ /**
17454
+ * take the value of radius
17455
+ */
17456
+ get radiusVal() {
17457
+ return this.predefinedRadius$.getValue();
17458
+ }
17459
+ set radiusValData(radiusCercle) {
17460
+ this.predefinedRadius$.next(radiusCercle);
17409
17461
  }
17410
17462
  /**
17411
17463
  * Wheter the control is active
@@ -17442,6 +17494,9 @@ class DrawControl {
17442
17494
  getSource() {
17443
17495
  return this.olDrawingLayerSource;
17444
17496
  }
17497
+ setOlInteractionStyle(style) {
17498
+ this.olInteractionStyle = style;
17499
+ }
17445
17500
  /**
17446
17501
  * Set the current geometry type
17447
17502
  * @param geometryType the geometry type
@@ -17449,6 +17504,12 @@ class DrawControl {
17449
17504
  setGeometryType(geometryType) {
17450
17505
  this.olGeometryType = geometryType;
17451
17506
  }
17507
+ /**
17508
+ * Get the current geometry type
17509
+ */
17510
+ getGeometryType() {
17511
+ return this.olGeometryType;
17512
+ }
17452
17513
  /**
17453
17514
  * Create a drawing source if none is defined in the options
17454
17515
  */
@@ -17490,21 +17551,35 @@ class DrawControl {
17490
17551
  // Create Draw interaction
17491
17552
  let olDrawInteraction;
17492
17553
  if (!this.freehand$.getValue()) {
17493
- olDrawInteraction = new OlDraw({
17494
- type: this.olGeometryType,
17495
- source: this.getSource(),
17496
- stopClick: true,
17497
- style: this.options.interactionStyle,
17498
- maxPoints: this.options.maxPoints,
17499
- freehand: false,
17500
- freehandCondition: () => false
17501
- });
17554
+ if (!this.ispredefinedRadius$.getValue()) {
17555
+ olDrawInteraction = new OlDraw({
17556
+ type: this.olGeometryType,
17557
+ source: this.getSource(),
17558
+ stopClick: true,
17559
+ style: this.olInteractionStyle,
17560
+ maxPoints: this.options.maxPoints,
17561
+ freehand: false,
17562
+ freehandCondition: () => false
17563
+ });
17564
+ }
17565
+ else {
17566
+ olDrawInteraction = new OlDraw({
17567
+ type: 'Point',
17568
+ source: this.getSource(),
17569
+ stopClick: true,
17570
+ style: this.olInteractionStyle,
17571
+ maxPoints: this.options.maxPoints,
17572
+ freehand: false,
17573
+ freehandCondition: () => false
17574
+ });
17575
+ }
17502
17576
  }
17503
17577
  else {
17504
17578
  if (this.olGeometryType === 'Point') {
17505
17579
  olDrawInteraction = new OlDraw({
17506
17580
  type: 'Circle',
17507
17581
  source: this.getSource(),
17582
+ style: typeof this.olInteractionStyle === 'function' ? undefined : this.olInteractionStyle,
17508
17583
  maxPoints: this.options.maxPoints,
17509
17584
  freehand: true
17510
17585
  });
@@ -17513,6 +17588,7 @@ class DrawControl {
17513
17588
  olDrawInteraction = new OlDraw({
17514
17589
  type: this.olGeometryType,
17515
17590
  source: this.getSource(),
17591
+ style: this.olInteractionStyle,
17516
17592
  maxPoints: this.options.maxPoints,
17517
17593
  freehand: true
17518
17594
  });
@@ -17575,6 +17651,9 @@ class DrawControl {
17575
17651
  * @param event Draw event (drawend)
17576
17652
  */
17577
17653
  onDrawEnd(event) {
17654
+ if (event.feature.getGeometry().getType() === 'Point') {
17655
+ this.radiusDrawEnd$.next(this.predefinedRadius$.getValue());
17656
+ }
17578
17657
  this.unsubscribeKeyDown();
17579
17658
  unByKey(this.onDrawKey);
17580
17659
  const olGeometry = event.feature.getGeometry();
@@ -17632,63 +17711,614 @@ class DrawControl {
17632
17711
  }
17633
17712
  }
17634
17713
 
17714
+ function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template(rf, ctx) {
17715
+ if (rf & 1) {
17716
+ const _r10 = i0.ɵɵgetCurrentView();
17717
+ i0.ɵɵelementStart(0, "mat-radio-button", 11);
17718
+ i0.ɵɵlistener("change", function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template_mat_radio_button_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r9.onLabelTypeChange($event.value)); });
17719
+ i0.ɵɵtext(1);
17720
+ i0.ɵɵelementEnd();
17721
+ }
17722
+ if (rf & 2) {
17723
+ const option_r8 = ctx.$implicit;
17724
+ const ctx_r7 = i0.ɵɵnextContext(3);
17725
+ i0.ɵɵproperty("value", option_r8.value)("disabled", ctx_r7.optionAvailable(option_r8.value))("checked", option_r8.checked);
17726
+ i0.ɵɵadvance(1);
17727
+ i0.ɵɵtextInterpolate1(" ", ctx_r7.getProperLengthLabel(option_r8.value), " ");
17728
+ }
17729
+ }
17730
+ function DrawPopupComponent_div_12_mat_radio_group_5_Template(rf, ctx) {
17731
+ if (rf & 1) {
17732
+ i0.ɵɵelementStart(0, "mat-radio-group", 5);
17733
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template, 2, 4, "mat-radio-button", 10);
17734
+ i0.ɵɵelementEnd();
17735
+ }
17736
+ if (rf & 2) {
17737
+ const ctx_r2 = i0.ɵɵnextContext(2);
17738
+ i0.ɵɵadvance(1);
17739
+ i0.ɵɵproperty("ngForOf", ctx_r2.arrayBuiltInType);
17740
+ }
17741
+ }
17742
+ function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template(rf, ctx) {
17743
+ if (rf & 1) {
17744
+ const _r14 = i0.ɵɵgetCurrentView();
17745
+ i0.ɵɵelementStart(0, "mat-checkbox", 13);
17746
+ i0.ɵɵlistener("change", function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template_mat_checkbox_change_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.onLabelTypeChange($event.source.value, $event.checked)); });
17747
+ i0.ɵɵtext(1);
17748
+ i0.ɵɵelementEnd();
17749
+ }
17750
+ if (rf & 2) {
17751
+ const option_r12 = ctx.$implicit;
17752
+ const ctx_r11 = i0.ɵɵnextContext(3);
17753
+ i0.ɵɵproperty("value", option_r12.value)("disabled", ctx_r11.optionAvailable(option_r12.value))("checked", option_r12.checked);
17754
+ i0.ɵɵadvance(1);
17755
+ i0.ɵɵtextInterpolate1(" ", ctx_r11.getProperLengthLabel(option_r12.value), " ");
17756
+ }
17757
+ }
17758
+ function DrawPopupComponent_div_12_ng_container_6_Template(rf, ctx) {
17759
+ if (rf & 1) {
17760
+ i0.ɵɵelementContainerStart(0, 5);
17761
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template, 2, 4, "mat-checkbox", 12);
17762
+ i0.ɵɵelementContainerEnd();
17763
+ }
17764
+ if (rf & 2) {
17765
+ const ctx_r3 = i0.ɵɵnextContext(2);
17766
+ i0.ɵɵadvance(1);
17767
+ i0.ɵɵproperty("ngForOf", ctx_r3.arrayBuiltInType);
17768
+ }
17769
+ }
17770
+ function DrawPopupComponent_div_12_div_7_mat_option_6_Template(rf, ctx) {
17771
+ if (rf & 1) {
17772
+ i0.ɵɵelementStart(0, "mat-option", 3);
17773
+ i0.ɵɵtext(1);
17774
+ i0.ɵɵelementEnd();
17775
+ }
17776
+ if (rf & 2) {
17777
+ const unit_r17 = ctx.$implicit;
17778
+ i0.ɵɵproperty("value", unit_r17);
17779
+ i0.ɵɵadvance(1);
17780
+ i0.ɵɵtextInterpolate1(" ", unit_r17, " ");
17781
+ }
17782
+ }
17783
+ function DrawPopupComponent_div_12_div_7_Template(rf, ctx) {
17784
+ if (rf & 1) {
17785
+ const _r19 = i0.ɵɵgetCurrentView();
17786
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17787
+ i0.ɵɵelement(2, "input", 15, 16);
17788
+ i0.ɵɵelementEnd();
17789
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17790
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_7_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.onChangeCoordinateUnit($event.value)); });
17791
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_7_mat_option_6_Template, 2, 2, "mat-option", 19);
17792
+ i0.ɵɵelementEnd()()();
17793
+ }
17794
+ if (rf & 2) {
17795
+ const ctx_r4 = i0.ɵɵnextContext(2);
17796
+ i0.ɵɵadvance(2);
17797
+ i0.ɵɵpropertyInterpolate("value", ctx_r4.currentCoordinates);
17798
+ i0.ɵɵadvance(3);
17799
+ i0.ɵɵproperty("value", ctx_r4.coordinatesMeasureUnit);
17800
+ i0.ɵɵadvance(1);
17801
+ i0.ɵɵproperty("ngForOf", ctx_r4.allCoordinatesUnits);
17802
+ }
17803
+ }
17804
+ function DrawPopupComponent_div_12_div_8_mat_option_6_Template(rf, ctx) {
17805
+ if (rf & 1) {
17806
+ i0.ɵɵelementStart(0, "mat-option", 3);
17807
+ i0.ɵɵtext(1);
17808
+ i0.ɵɵelementEnd();
17809
+ }
17810
+ if (rf & 2) {
17811
+ const unit_r22 = ctx.$implicit;
17812
+ const ctx_r21 = i0.ɵɵnextContext(3);
17813
+ i0.ɵɵproperty("value", unit_r22);
17814
+ i0.ɵɵadvance(1);
17815
+ i0.ɵɵtextInterpolate1(" ", ctx_r21.getLengthUnitEnum(unit_r22), " ");
17816
+ }
17817
+ }
17818
+ function DrawPopupComponent_div_12_div_8_Template(rf, ctx) {
17819
+ if (rf & 1) {
17820
+ const _r24 = i0.ɵɵgetCurrentView();
17821
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17822
+ i0.ɵɵelement(2, "input", 20, 16);
17823
+ i0.ɵɵelementEnd();
17824
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17825
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_8_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onChangeLengthUnit($event.value)); });
17826
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_8_mat_option_6_Template, 2, 2, "mat-option", 19);
17827
+ i0.ɵɵelementEnd()()();
17828
+ }
17829
+ if (rf & 2) {
17830
+ const ctx_r5 = i0.ɵɵnextContext(2);
17831
+ i0.ɵɵadvance(2);
17832
+ i0.ɵɵpropertyInterpolate("placeholder", ctx_r5.lengthLabelT);
17833
+ i0.ɵɵpropertyInterpolate("value", ctx_r5.currentLength);
17834
+ i0.ɵɵadvance(3);
17835
+ i0.ɵɵproperty("value", ctx_r5.lengthMeasureUnit);
17836
+ i0.ɵɵadvance(1);
17837
+ i0.ɵɵproperty("ngForOf", ctx_r5.allLengthUnits);
17838
+ }
17839
+ }
17840
+ function DrawPopupComponent_div_12_div_9_mat_option_7_Template(rf, ctx) {
17841
+ if (rf & 1) {
17842
+ i0.ɵɵelementStart(0, "mat-option", 3);
17843
+ i0.ɵɵtext(1);
17844
+ i0.ɵɵelementEnd();
17845
+ }
17846
+ if (rf & 2) {
17847
+ const unit_r27 = ctx.$implicit;
17848
+ const ctx_r26 = i0.ɵɵnextContext(3);
17849
+ i0.ɵɵproperty("value", unit_r27);
17850
+ i0.ɵɵadvance(1);
17851
+ i0.ɵɵtextInterpolate1(" ", ctx_r26.getAreaUnitEnum(unit_r27), " ");
17852
+ }
17853
+ }
17854
+ function DrawPopupComponent_div_12_div_9_Template(rf, ctx) {
17855
+ if (rf & 1) {
17856
+ const _r29 = i0.ɵɵgetCurrentView();
17857
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17858
+ i0.ɵɵelement(2, "input", 20, 16);
17859
+ i0.ɵɵpipe(4, "translate");
17860
+ i0.ɵɵelementEnd();
17861
+ i0.ɵɵelementStart(5, "mat-form-field", 17)(6, "mat-select", 18);
17862
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_9_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onChangeAreaUnit($event.value)); });
17863
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_9_mat_option_7_Template, 2, 2, "mat-option", 19);
17864
+ i0.ɵɵelementEnd()()();
17865
+ }
17866
+ if (rf & 2) {
17867
+ const ctx_r6 = i0.ɵɵnextContext(2);
17868
+ i0.ɵɵadvance(2);
17869
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 4, "igo.geo.draw.labelType.Area"));
17870
+ i0.ɵɵpropertyInterpolate("value", ctx_r6.currentArea);
17871
+ i0.ɵɵadvance(4);
17872
+ i0.ɵɵproperty("value", ctx_r6.areaMeasureUnit);
17873
+ i0.ɵɵadvance(1);
17874
+ i0.ɵɵproperty("ngForOf", ctx_r6.allAreaUnits);
17875
+ }
17876
+ }
17877
+ function DrawPopupComponent_div_12_Template(rf, ctx) {
17878
+ if (rf & 1) {
17879
+ const _r31 = i0.ɵɵgetCurrentView();
17880
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17881
+ i0.ɵɵtext(3);
17882
+ i0.ɵɵpipe(4, "translate");
17883
+ i0.ɵɵelementEnd();
17884
+ i0.ɵɵtemplate(5, DrawPopupComponent_div_12_mat_radio_group_5_Template, 2, 1, "mat-radio-group", 6);
17885
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_ng_container_6_Template, 2, 1, "ng-container", 6);
17886
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_7_Template, 7, 3, "div", 4);
17887
+ i0.ɵɵtemplate(8, DrawPopupComponent_div_12_div_8_Template, 7, 4, "div", 4);
17888
+ i0.ɵɵtemplate(9, DrawPopupComponent_div_12_div_9_Template, 8, 6, "div", 4);
17889
+ i0.ɵɵelementEnd();
17890
+ i0.ɵɵelementStart(10, "div", 7)(11, "button", 8);
17891
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.cancelDrawing()); });
17892
+ i0.ɵɵtext(12);
17893
+ i0.ɵɵpipe(13, "translate");
17894
+ i0.ɵɵelementEnd();
17895
+ i0.ɵɵelementStart(14, "button", 9);
17896
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r31); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.confirm()); });
17897
+ i0.ɵɵtext(15);
17898
+ i0.ɵɵelementEnd()()();
17899
+ }
17900
+ if (rf & 2) {
17901
+ const ctx_r0 = i0.ɵɵnextContext();
17902
+ i0.ɵɵadvance(3);
17903
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 8, "igo.geo.draw.builtInInstructions"));
17904
+ i0.ɵɵadvance(2);
17905
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType !== "Polygon");
17906
+ i0.ɵɵadvance(1);
17907
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType === "Polygon");
17908
+ i0.ɵɵadvance(1);
17909
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Coordinates);
17910
+ i0.ɵɵadvance(1);
17911
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Length || ctx_r0.polygonCheck === 2);
17912
+ i0.ɵɵadvance(1);
17913
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Area || ctx_r0.polygonCheck === 2);
17914
+ i0.ɵɵadvance(3);
17915
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "igo.geo.draw.cancel"), " ");
17916
+ i0.ɵɵadvance(3);
17917
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.noLabelButton(), " ");
17918
+ }
17919
+ }
17920
+ function DrawPopupComponent_div_13_Template(rf, ctx) {
17921
+ if (rf & 1) {
17922
+ const _r36 = i0.ɵɵgetCurrentView();
17923
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17924
+ i0.ɵɵtext(3);
17925
+ i0.ɵɵpipe(4, "translate");
17926
+ i0.ɵɵelementEnd();
17927
+ i0.ɵɵelementStart(5, "mat-form-field", 21)(6, "input", 22, 16);
17928
+ i0.ɵɵlistener("select", function DrawPopupComponent_div_13_Template_input_select_6_listener() { return true; })("input", function DrawPopupComponent_div_13_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r35.getLabelLength($event.target.value)); });
17929
+ i0.ɵɵpipe(8, "translate");
17930
+ i0.ɵɵelementEnd()()();
17931
+ i0.ɵɵelementStart(9, "div", 7)(10, "button", 8);
17932
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r37.cancelDrawing()); });
17933
+ i0.ɵɵtext(11);
17934
+ i0.ɵɵpipe(12, "translate");
17935
+ i0.ɵɵelementEnd();
17936
+ i0.ɵɵelementStart(13, "button", 9);
17937
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r36); const _r33 = i0.ɵɵreference(7); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.confirm(_r33.value)); });
17938
+ i0.ɵɵtext(14);
17939
+ i0.ɵɵelementEnd()()();
17940
+ }
17941
+ if (rf & 2) {
17942
+ const ctx_r1 = i0.ɵɵnextContext();
17943
+ i0.ɵɵadvance(3);
17944
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "igo.geo.draw.dialogInstruction"));
17945
+ i0.ɵɵadvance(3);
17946
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 7, "igo.geo.draw.dialogTitle"));
17947
+ i0.ɵɵpropertyInterpolate("value", ctx_r1.currentLabel);
17948
+ i0.ɵɵadvance(5);
17949
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 9, "igo.geo.draw.cancel"), " ");
17950
+ i0.ɵɵadvance(3);
17951
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.noLabelButton(), " ");
17952
+ }
17953
+ }
17635
17954
  class DrawPopupComponent {
17636
- constructor(dialogRef, data) {
17955
+ constructor(languageService, dialogRef, data) {
17956
+ var _a;
17957
+ this.languageService = languageService;
17637
17958
  this.dialogRef = dialogRef;
17638
17959
  this.data = data;
17639
17960
  this.confirmFlag = false;
17640
- }
17961
+ this.labelFlag = LabelType.Custom;
17962
+ this.geometryType = GeometryType;
17963
+ this.labelType = LabelType;
17964
+ this.arrayBuiltInType = [];
17965
+ this.olGeometryType = undefined;
17966
+ this.polygonCheck = 0; // Count for polygon label types checkboxes
17967
+ this.currentLabel = this.data.olGeometry.get('draw');
17968
+ this.labelLength = this.currentLabel ? this.currentLabel.length : 0;
17969
+ let olGeometry;
17970
+ const projection = this.data.map.ol.getView().getProjection();
17971
+ if (this.data.olGeometry instanceof OlFeature) {
17972
+ if (this.data.olGeometry.get('rad')) {
17973
+ const longitudeLatitude = [this.data.olGeometry.get('longitude'), this.data.olGeometry.get('latitude')];
17974
+ this.olGeometryType = GeometryType.Circle;
17975
+ olGeometry = new OlCircle(longitudeLatitude, this.data.olGeometry.get('rad'));
17976
+ }
17977
+ else {
17978
+ this.olGeometryType = this.data.olGeometry.getGeometry().getType();
17979
+ olGeometry = this.data.olGeometry.get('geometry');
17980
+ }
17981
+ }
17982
+ else {
17983
+ this.olGeometryType = this.data.olGeometry.getType();
17984
+ olGeometry = this.data.olGeometry;
17985
+ }
17986
+ if (this.olGeometryType === GeometryType.Point || this.olGeometryType === GeometryType.Circle) {
17987
+ if (this.data.olGeometry instanceof OlFeature) {
17988
+ let longitude = this.data.olGeometry.get('longitude');
17989
+ let latitude = this.data.olGeometry.get('latitude');
17990
+ this.longlatDD = roundCoordTo([longitude, latitude], 5);
17991
+ this.coordinatesInDD = '(' + latitude + ', '
17992
+ + longitude + ')';
17993
+ }
17994
+ else {
17995
+ let point4326 = transform(this.data.olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
17996
+ this.longlatDD = roundCoordTo([point4326[0], point4326[1]], 5);
17997
+ this.coordinatesInDD =
17998
+ '(' + this.longlatDD[1] + ', ' + this.longlatDD[0] + ')';
17999
+ }
18000
+ this.currentCoordinates = this.coordinatesInDD;
18001
+ }
18002
+ if (this.olGeometryType === GeometryType.LineString) {
18003
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
18004
+ this.currentLength = this.lengthInMeters;
18005
+ }
18006
+ else if (this.olGeometryType === GeometryType.Polygon) {
18007
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
18008
+ this.currentLength = this.lengthInMeters;
18009
+ this.areaInMetersSquare = measureOlGeometryArea(olGeometry, projection.getCode()).toFixed(2);
18010
+ this.currentArea = this.areaInMetersSquare;
18011
+ }
18012
+ else if (this.olGeometryType === GeometryType.Circle) {
18013
+ let circularPolygon = fromCircle(olGeometry, 10000);
18014
+ const radius = this.getRadius(circularPolygon);
18015
+ this.lengthInMeters = radius.toFixed(2);
18016
+ this.currentLength = this.lengthInMeters;
18017
+ this.areaInMetersSquare = measureOlGeometryArea(circularPolygon, projection.getCode()).toFixed(2);
18018
+ this.currentArea = this.areaInMetersSquare;
18019
+ }
18020
+ if (data.olGeometry.get('labelType') === LabelType.Coordinates) {
18021
+ this.onLabelTypeChange(LabelType.Predefined);
18022
+ this.onLabelTypeChange(LabelType.Coordinates, true);
18023
+ this.coordinatesMeasureUnit = data.olGeometry.get('measureUnit');
18024
+ }
18025
+ else if (data.olGeometry.get('labelType') === LabelType.Length) {
18026
+ this.onLabelTypeChange(LabelType.Predefined);
18027
+ this.onLabelTypeChange(LabelType.Length, true);
18028
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit');
18029
+ }
18030
+ else if (data.olGeometry.get('labelType') === LabelType.Area) {
18031
+ this.onLabelTypeChange(LabelType.Predefined);
18032
+ this.onLabelTypeChange(LabelType.Area, true);
18033
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit');
18034
+ }
18035
+ else if (((_a = data.olGeometry.get('labelType')) === null || _a === void 0 ? void 0 : _a.length) === 2) {
18036
+ this.onLabelTypeChange(LabelType.Predefined);
18037
+ this.onLabelTypeChange(LabelType.Length, true);
18038
+ this.onLabelTypeChange(LabelType.Area, true);
18039
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit')[0];
18040
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit')[1];
18041
+ }
18042
+ this.buildArrayType();
18043
+ }
18044
+ /**
18045
+ * HTML Interactions
18046
+ */
17641
18047
  cancelDrawing() {
17642
18048
  this.dialogRef.close();
17643
18049
  }
17644
- confirm(labelString) {
18050
+ confirm(input) {
17645
18051
  this.confirmFlag = true;
17646
- this.dialogRef.close(labelString);
18052
+ if (this.labelFlag === LabelType.Predefined) {
18053
+ this.dialogRef.close();
18054
+ }
18055
+ else if (this.labelFlag === LabelType.Custom) {
18056
+ this.dialogRef.close({
18057
+ label: input
18058
+ });
18059
+ }
18060
+ else if (this.labelFlag === LabelType.Coordinates) {
18061
+ this.dialogRef.close({
18062
+ label: this.currentCoordinates,
18063
+ measureUnit: this.coordinatesMeasureUnit
18064
+ });
18065
+ }
18066
+ else if (this.olGeometryType === GeometryType.Polygon) {
18067
+ if (this.polygonCheck === 2) {
18068
+ this.labelFlag = [LabelType.Length, LabelType.Area];
18069
+ this.dialogRef.close({
18070
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[MeasureLengthUnit.Meters] + '\n'
18071
+ + this.languageService.translate.instant('igo.geo.draw.labelType.A') + this.currentArea + ' ' +
18072
+ MeasureAreaUnitAbbreviation[MeasureAreaUnit.SquareMeters], measureUnit: [this.lengthMeasureUnit, this.areaMeasureUnit]
18073
+ });
18074
+ }
18075
+ else {
18076
+ this.labelFlag === LabelType.Length ?
18077
+ this.dialogRef.close({
18078
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
18079
+ measureUnit: this.lengthMeasureUnit
18080
+ }) :
18081
+ this.dialogRef.close({
18082
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
18083
+ measureUnit: this.areaMeasureUnit
18084
+ });
18085
+ }
18086
+ }
18087
+ else if (this.labelFlag === LabelType.Length) {
18088
+ if (this.olGeometryType === GeometryType.Circle) {
18089
+ this.dialogRef.close({
18090
+ label: 'R: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
18091
+ measureUnit: this.lengthMeasureUnit
18092
+ });
18093
+ }
18094
+ else if (this.olGeometryType === GeometryType.LineString) {
18095
+ this.dialogRef.close({
18096
+ label: this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
18097
+ measureUnit: this.lengthMeasureUnit
18098
+ });
18099
+ }
18100
+ }
18101
+ else if (this.labelFlag === LabelType.Area) {
18102
+ this.dialogRef.close({
18103
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
18104
+ measureUnit: this.areaMeasureUnit
18105
+ });
18106
+ }
18107
+ }
18108
+ onLabelTypeChange(labelType, checked) {
18109
+ var _a;
18110
+ if (labelType !== LabelType.Predefined &&
18111
+ labelType !== LabelType.Custom &&
18112
+ this.olGeometryType === GeometryType.Polygon) {
18113
+ this.arrayBuiltInType.find(type => type.value === labelType) ?
18114
+ this.arrayBuiltInType.find(type => type.value === labelType).checked = checked : this.labelFlag = undefined;
18115
+ checked ? this.labelFlag = labelType : this.labelFlag = (_a = this.arrayBuiltInType.find(type => type.checked)) === null || _a === void 0 ? void 0 : _a.value;
18116
+ }
18117
+ else {
18118
+ this.labelFlag = labelType;
18119
+ }
18120
+ if (labelType === LabelType.Predefined) {
18121
+ if (this.olGeometryType === GeometryType.Point) {
18122
+ this.labelFlag = LabelType.Coordinates;
18123
+ this.currentCoordinates = this.coordinatesInDD;
18124
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
18125
+ }
18126
+ else if (this.olGeometryType === GeometryType.LineString) {
18127
+ this.labelFlag = LabelType.Length;
18128
+ this.currentLength = this.lengthInMeters;
18129
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
18130
+ }
18131
+ }
18132
+ else if (labelType === LabelType.Area) {
18133
+ this.currentArea = this.areaInMetersSquare;
18134
+ this.areaMeasureUnit = MeasureAreaUnit.SquareMeters;
18135
+ }
18136
+ else if (labelType === LabelType.Length) {
18137
+ this.currentLength = this.lengthInMeters;
18138
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
18139
+ }
18140
+ else if (this.labelFlag === LabelType.Coordinates) {
18141
+ this.currentCoordinates = this.coordinatesInDD;
18142
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
18143
+ }
18144
+ const labeltypes = [this.labelType.Length, this.labelType.Area];
18145
+ if (this.olGeometryType === GeometryType.Polygon &&
18146
+ labeltypes.includes(labelType)) {
18147
+ checked ? this.polygonCheck += 1 : this.polygonCheck -= 1;
18148
+ ;
18149
+ }
18150
+ else {
18151
+ this.polygonCheck = 0;
18152
+ }
18153
+ }
18154
+ onChangeLengthUnit(lengthUnit) {
18155
+ this.lengthMeasureUnit = lengthUnit;
18156
+ this.currentLength = metersToUnit(Number(this.lengthInMeters), lengthUnit).toFixed(2);
18157
+ }
18158
+ onChangeAreaUnit(areaUnit) {
18159
+ this.areaMeasureUnit = areaUnit;
18160
+ this.currentArea = squareMetersToUnit(Number(this.areaInMetersSquare), areaUnit).toFixed(2);
18161
+ }
18162
+ onChangeCoordinateUnit(coordinatesUnit) {
18163
+ this.coordinatesMeasureUnit = coordinatesUnit;
18164
+ let coordinates = DDtoDMS(this.longlatDD, coordinatesUnit);
18165
+ this.currentCoordinates = '(' + coordinates[1] + ', ' + coordinates[0] + ')';
18166
+ }
18167
+ buildArrayType() {
18168
+ for (const labelType of Object.values(LabelType)) {
18169
+ if (labelType !== LabelType.Custom && labelType !== LabelType.Predefined) {
18170
+ this.arrayBuiltInType.push({
18171
+ value: labelType,
18172
+ checked: this.selectOptions(labelType) ||
18173
+ this.labelFlag === labelType ||
18174
+ (this.polygonCheck === 2 && labelType !== LabelType.Coordinates)
18175
+ });
18176
+ }
18177
+ }
18178
+ }
18179
+ noLabelButton() {
18180
+ if (this.labelFlag === LabelType.Predefined || (this.labelFlag === LabelType.Custom && this.labelLength === 0)) {
18181
+ return this.languageService.translate.instant('igo.geo.draw.noLabel');
18182
+ }
18183
+ return 'OK';
18184
+ }
18185
+ get customOrPredefined() {
18186
+ if (this.labelFlag === LabelType.Custom) {
18187
+ return LabelType.Custom;
18188
+ }
18189
+ return LabelType.Predefined;
18190
+ }
18191
+ optionAvailable(currentOption) {
18192
+ switch (this.olGeometryType) {
18193
+ case GeometryType.Point:
18194
+ if (currentOption === LabelType.Coordinates) {
18195
+ return false;
18196
+ }
18197
+ return true;
18198
+ case GeometryType.LineString:
18199
+ if (currentOption === LabelType.Length) {
18200
+ return false;
18201
+ }
18202
+ return true;
18203
+ case GeometryType.Polygon:
18204
+ if (currentOption === LabelType.Coordinates) {
18205
+ return true;
18206
+ }
18207
+ return false;
18208
+ default:
18209
+ return false;
18210
+ }
18211
+ }
18212
+ get allLengthUnits() {
18213
+ return Object.values(MeasureLengthUnit);
18214
+ }
18215
+ getLengthUnitEnum(lengthUnit) {
18216
+ return MeasureLengthUnitAbbreviation[lengthUnit];
18217
+ }
18218
+ get allAreaUnits() {
18219
+ return Object.values(MeasureAreaUnit);
18220
+ }
18221
+ get allCoordinatesUnits() {
18222
+ return Object.values(CoordinatesUnit);
18223
+ }
18224
+ getAreaUnitEnum(areaUnit) {
18225
+ return MeasureAreaUnitAbbreviation[areaUnit];
18226
+ }
18227
+ getRadius(olGeometry) {
18228
+ const length = getLength(olGeometry);
18229
+ return Number(length / (2 * Math.PI));
18230
+ }
18231
+ get lengthLabelT() {
18232
+ if (this.olGeometryType === GeometryType.Polygon) {
18233
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
18234
+ }
18235
+ if (this.olGeometryType === GeometryType.Circle) {
18236
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
18237
+ }
18238
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
18239
+ }
18240
+ getLabelLength(event) {
18241
+ this.labelLength = event.length;
18242
+ }
18243
+ selectOptions(option) {
18244
+ if (this.olGeometryType === GeometryType.Point) {
18245
+ return option === LabelType.Coordinates;
18246
+ }
18247
+ else if (this.olGeometryType === GeometryType.LineString) {
18248
+ return option === LabelType.Length;
18249
+ }
18250
+ }
18251
+ getProperLengthLabel(option) {
18252
+ if (option === LabelType.Length) {
18253
+ if (this.olGeometryType === GeometryType.Polygon) {
18254
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
18255
+ }
18256
+ if (this.olGeometryType === GeometryType.Circle) {
18257
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
18258
+ }
18259
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
18260
+ }
18261
+ return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
17647
18262
  }
17648
18263
  }
17649
- DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17650
- DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag" }, decls: 14, vars: 10, consts: [["mat-dialog-content", ""], [1, "mat-typography"], [1, "example-full-width"], ["matInput", "", 3, "placeholder", "value"], ["input", ""], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"]], template: function DrawPopupComponent_Template(rf, ctx) {
18264
+ DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
18265
+ DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, decls: 14, vars: 14, consts: [["mat-dialog-title", ""], [1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], [1, "mat-typography"], ["class", "mat-typography", 4, "ngIf"], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"], [3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [3, "value", "disabled", "checked", "change"], ["class", "mat-typography", 3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "disabled", "checked", "change"], [1, "readOnly-Input"], ["matInput", "", "placeholder", "(Latitude, Longitude)", "readonly", "", 3, "value"], ["input", ""], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "readonly", "", 3, "placeholder", "value"], [1, "input"], ["matInput", "", "cdkFocusInitial", "", 3, "placeholder", "value", "select", "input"]], template: function DrawPopupComponent_Template(rf, ctx) {
17651
18266
  if (rf & 1) {
17652
- const _r1 = i0.ɵɵgetCurrentView();
17653
- i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
18267
+ i0.ɵɵelementStart(0, "div")(1, "h2", 0);
17654
18268
  i0.ɵɵtext(2);
17655
18269
  i0.ɵɵpipe(3, "translate");
17656
- i0.ɵɵelementEnd();
17657
- i0.ɵɵelementStart(4, "mat-form-field", 2);
17658
- i0.ɵɵelement(5, "input", 3, 4);
17659
- i0.ɵɵpipe(7, "translate");
17660
18270
  i0.ɵɵelementEnd()();
17661
- i0.ɵɵelementStart(8, "div", 5)(9, "button", 6);
17662
- i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_9_listener() { return ctx.cancelDrawing(); });
18271
+ i0.ɵɵelementStart(4, "div", 1)(5, "mat-button-toggle-group", 2);
18272
+ i0.ɵɵlistener("change", function DrawPopupComponent_Template_mat_button_toggle_group_change_5_listener($event) { return ctx.onLabelTypeChange($event.value); });
18273
+ i0.ɵɵelementStart(6, "mat-button-toggle", 3);
18274
+ i0.ɵɵtext(7);
18275
+ i0.ɵɵpipe(8, "translate");
18276
+ i0.ɵɵelementEnd();
18277
+ i0.ɵɵelementStart(9, "mat-button-toggle", 3);
17663
18278
  i0.ɵɵtext(10);
17664
18279
  i0.ɵɵpipe(11, "translate");
17665
- i0.ɵɵelementEnd();
17666
- i0.ɵɵelementStart(12, "button", 7);
17667
- i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const _r0 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.confirm(_r0.value)); });
17668
- i0.ɵɵtext(13, "OK ");
17669
- i0.ɵɵelementEnd()();
18280
+ i0.ɵɵelementEnd()()();
18281
+ i0.ɵɵtemplate(12, DrawPopupComponent_div_12_Template, 16, 12, "div", 4);
18282
+ i0.ɵɵtemplate(13, DrawPopupComponent_div_13_Template, 15, 11, "div", 4);
17670
18283
  }
17671
18284
  if (rf & 2) {
17672
18285
  i0.ɵɵadvance(2);
17673
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.dialogInstruction"));
18286
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 8, "igo.geo.draw.popupTitle"), " ");
17674
18287
  i0.ɵɵadvance(3);
17675
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(7, 6, "igo.geo.draw.dialogTitle"));
17676
- i0.ɵɵpropertyInterpolate("value", ctx.data.currentLabel);
17677
- i0.ɵɵadvance(5);
17678
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 8, "igo.geo.draw.cancel"), " ");
18288
+ i0.ɵɵproperty("value", ctx.customOrPredefined);
18289
+ i0.ɵɵadvance(1);
18290
+ i0.ɵɵproperty("value", ctx.labelType.Custom);
18291
+ i0.ɵɵadvance(1);
18292
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 10, "igo.geo.draw.labelType.custom"), " ");
18293
+ i0.ɵɵadvance(2);
18294
+ i0.ɵɵproperty("value", ctx.labelType.Predefined);
18295
+ i0.ɵɵadvance(1);
18296
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 12, "igo.geo.draw.labelType.predefined"), " ");
18297
+ i0.ɵɵadvance(2);
18298
+ i0.ɵɵproperty("ngIf", ctx.labelFlag !== ctx.labelType.Custom);
18299
+ i0.ɵɵadvance(1);
18300
+ i0.ɵɵproperty("ngIf", ctx.labelFlag === ctx.labelType.Custom);
17679
18301
  }
17680
- }, dependencies: [i3.MatButton, i13.MatFormField, i14.MatInput, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe] });
18302
+ }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i14.MatInput, i15.MatSelect, i9.MatOption, i1.MatDialogTitle, i1.MatDialogActions, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i7.TranslatePipe], styles: [".mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.readOnly-Input[_ngcontent-%COMP%]{width:200px!important}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView[_ngcontent-%COMP%]{top:5em!important} .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle[_ngcontent-%COMP%], .mat-dialog-actions[_ngcontent-%COMP%]{display:flex!important;justify-content:center}.input[_ngcontent-%COMP%]{width:auto!important}.mat-button-toggle-group[_ngcontent-%COMP%], .mat-button-toggle[_ngcontent-%COMP%]{width:100%}mat-checkbox[_ngcontent-%COMP%]{margin-right:10px}"] });
17681
18303
  (function () {
17682
18304
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
17683
18305
  type: Component,
17684
- args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\r\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\r\n <mat-form-field class=\"example-full-width\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\r\n value=\"{{data.currentLabel}}\"/>\r\n </mat-form-field>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button \r\n mat-raised-button \r\n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm(input.value)\">OK\r\n </button>\r\n</div>\r\n" }]
18306
+ args: [{ selector: 'igo-draw-popup-component', template: "<div>\r\n <h2 mat-dialog-title>\r\n {{ 'igo.geo.draw.popupTitle' | translate }}\r\n </h2>\r\n</div>\r\n\r\n\r\n<div class=\"geometry-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n (change)=\"onLabelTypeChange($event.value)\" [value]=\"customOrPredefined\">\r\n <mat-button-toggle [value]=\"labelType.Custom\" >\r\n {{ 'igo.geo.draw.labelType.custom' | translate }}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"labelType.Predefined\">\r\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div *ngIf=\"labelFlag !== labelType.Custom\">\r\n <div>\r\n <p class=\"mat-typography\">{{ 'igo.geo.draw.builtInInstructions' | translate }}</p>\r\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\" class=\"mat-typography\">\r\n <mat-radio-button *ngFor=\"let option of arrayBuiltInType\" [value]=\"option.value\" [disabled]=\"optionAvailable(option.value)\" \r\n (change)=\"onLabelTypeChange($event.value)\" [checked]=\"option.checked\">\r\n {{getProperLengthLabel(option.value)}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <ng-container class=\"mat-typography\" *ngIf=\"olGeometryType === 'Polygon'\">\r\n <mat-checkbox\r\n *ngFor=\"let option of arrayBuiltInType\"\r\n class=\"mat-typography\"\r\n [value]=\"option.value\"\r\n [disabled]=\"optionAvailable(option.value)\"\r\n (change)=\"onLabelTypeChange($event.source.value, $event.checked)\"\r\n [checked]=\"option.checked\">\r\n {{getProperLengthLabel(option.value)}}\r\n </mat-checkbox>\r\n </ng-container>\r\n <div *ngIf=\"labelFlag === labelType.Coordinates\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"(Latitude, Longitude)\"\r\n value=\"{{currentCoordinates}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"coordinatesMeasureUnit\" (selectionChange)=\"onChangeCoordinateUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\r\n {{unit}}\r\n </mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder={{lengthLabelT}}\r\n value=\"{{currentLength}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"lengthMeasureUnit\" (selectionChange)=\"onChangeLengthUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\r\n {{getLengthUnitEnum(unit)}}\r\n </mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\r\n value=\"{{currentArea}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"areaMeasureUnit\" (selectionChange)=\"onChangeAreaUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\r\n {{getAreaUnitEnum(unit)}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n\r\n <div mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancelDrawing()\" >\r\n {{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm()\"> \r\n {{noLabelButton()}} \r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"labelFlag === labelType.Custom\">\r\n <div>\r\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\r\n <mat-form-field class=\"input\">\r\n <input\r\n #input\r\n matInput\r\n (select)=\"true\"\r\n (input)=\"getLabelLength($event.target.value)\"\r\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\r\n value=\"{{ currentLabel }}\"\r\n cdkFocusInitial/>\r\n </mat-form-field>\r\n </div>\r\n \r\n <div mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancelDrawing()\" >\r\n {{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm(input.value)\">\r\n {{noLabelButton()}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".mat-radio-button~.mat-radio-button{margin-left:16px}.readOnly-Input{width:200px!important}.unit-field{width:50px;margin-left:10px;margin-top:10px}.mat-form-field{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView{top:5em!important}::ng-deep .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle,.mat-dialog-actions{display:flex!important;justify-content:center}.input{width:auto!important}.mat-button-toggle-group,.mat-button-toggle{width:100%}mat-checkbox{margin-right:10px}\n"] }]
17685
18307
  }], function () {
17686
- return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
18308
+ return [{ type: i2$1.LanguageService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
17687
18309
  type: Inject,
17688
18310
  args: [MAT_DIALOG_DATA]
17689
18311
  }] }];
17690
18312
  }, { confirmFlag: [{
17691
18313
  type: Input
18314
+ }], labelFlag: [{
18315
+ type: Input
18316
+ }], coordinatesMeasureUnit: [{
18317
+ type: Input
18318
+ }], lengthMeasureUnit: [{
18319
+ type: Input
18320
+ }], areaMeasureUnit: [{
18321
+ type: Input
17692
18322
  }] });
17693
18323
  })();
17694
18324
 
@@ -17793,127 +18423,180 @@ DrawLayerPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dra
17793
18423
  })();
17794
18424
 
17795
18425
  const _c0$c = ["selectedLayer"];
17796
- function DrawComponent_mat_option_30_Template(rf, ctx) {
18426
+ function DrawComponent_mat_slide_toggle_22_Template(rf, ctx) {
18427
+ if (rf & 1) {
18428
+ const _r10 = i0.ɵɵgetCurrentView();
18429
+ i0.ɵɵelementStart(0, "mat-slide-toggle", 5);
18430
+ i0.ɵɵlistener("change", function DrawComponent_mat_slide_toggle_22_Template_mat_slide_toggle_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onToggleFreehandMode($event)); });
18431
+ i0.ɵɵtext(1);
18432
+ i0.ɵɵpipe(2, "translate");
18433
+ i0.ɵɵelementEnd();
18434
+ }
18435
+ if (rf & 2) {
18436
+ const ctx_r0 = i0.ɵɵnextContext();
18437
+ i0.ɵɵproperty("checked", ctx_r0.freehandMode)("labelPosition", "before");
18438
+ i0.ɵɵadvance(1);
18439
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.draw.freehandMode"), " ");
18440
+ }
18441
+ }
18442
+ function DrawComponent_div_23_mat_option_7_Template(rf, ctx) {
17797
18443
  if (rf & 1) {
17798
18444
  i0.ɵɵelementStart(0, "mat-option", 2);
17799
18445
  i0.ɵɵtext(1);
18446
+ i0.ɵɵpipe(2, "translate");
17800
18447
  i0.ɵɵelementEnd();
17801
18448
  }
17802
18449
  if (rf & 2) {
17803
- const layer_r7 = ctx.$implicit;
17804
- i0.ɵɵproperty("value", layer_r7);
18450
+ const measureUnit_r12 = ctx.$implicit;
18451
+ i0.ɵɵproperty("value", measureUnit_r12);
17805
18452
  i0.ɵɵadvance(1);
17806
- i0.ɵɵtextInterpolate1(" ", layer_r7.title, " ");
18453
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r12), " ");
17807
18454
  }
17808
18455
  }
17809
- function DrawComponent_button_34_Template(rf, ctx) {
18456
+ function DrawComponent_div_23_Template(rf, ctx) {
17810
18457
  if (rf & 1) {
17811
- const _r9 = i0.ɵɵgetCurrentView();
17812
- i0.ɵɵelementStart(0, "button", 20);
17813
- i0.ɵɵlistener("click", function DrawComponent_button_34_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.activeDrawingLayer.visible = !ctx_r8.activeDrawingLayer.visible); });
18458
+ const _r14 = i0.ɵɵgetCurrentView();
18459
+ i0.ɵɵelementStart(0, "div", 22)(1, "form", 23)(2, "mat-form-field", 24);
18460
+ i0.ɵɵelement(3, "input", 25);
18461
+ i0.ɵɵpipe(4, "translate");
18462
+ i0.ɵɵelementEnd()();
18463
+ i0.ɵɵelementStart(5, "mat-form-field", 26)(6, "mat-select", 9);
18464
+ i0.ɵɵlistener("selectionChange", function DrawComponent_div_23_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onMeasureUnitChange($event.value)); });
18465
+ i0.ɵɵtemplate(7, DrawComponent_div_23_mat_option_7_Template, 3, 4, "mat-option", 11);
18466
+ i0.ɵɵelementEnd()()();
18467
+ }
18468
+ if (rf & 2) {
18469
+ const ctx_r1 = i0.ɵɵnextContext();
18470
+ i0.ɵɵadvance(3);
18471
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 5, "igo.geo.spatialFilter.radius"));
18472
+ i0.ɵɵproperty("formControl", ctx_r1.radiusFormControl)("readonly", ctx_r1.freehandMode);
18473
+ i0.ɵɵadvance(3);
18474
+ i0.ɵɵproperty("value", ctx_r1.measureUnit);
18475
+ i0.ɵɵadvance(1);
18476
+ i0.ɵɵproperty("ngForOf", ctx_r1.measureUnits);
18477
+ }
18478
+ }
18479
+ function DrawComponent_mat_option_32_Template(rf, ctx) {
18480
+ if (rf & 1) {
18481
+ i0.ɵɵelementStart(0, "mat-option", 2);
18482
+ i0.ɵɵtext(1);
18483
+ i0.ɵɵelementEnd();
18484
+ }
18485
+ if (rf & 2) {
18486
+ const layer_r15 = ctx.$implicit;
18487
+ i0.ɵɵproperty("value", layer_r15);
18488
+ i0.ɵɵadvance(1);
18489
+ i0.ɵɵtextInterpolate1(" ", layer_r15.title, " ");
18490
+ }
18491
+ }
18492
+ function DrawComponent_button_36_Template(rf, ctx) {
18493
+ if (rf & 1) {
18494
+ const _r17 = i0.ɵɵgetCurrentView();
18495
+ i0.ɵɵelementStart(0, "button", 27);
18496
+ i0.ɵɵlistener("click", function DrawComponent_button_36_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.activeDrawingLayer.visible = !ctx_r16.activeDrawingLayer.visible); });
17814
18497
  i0.ɵɵpipe(1, "translate");
17815
18498
  i0.ɵɵpipe(2, "translate");
17816
- i0.ɵɵelement(3, "mat-icon", 21);
18499
+ i0.ɵɵelement(3, "mat-icon", 28);
17817
18500
  i0.ɵɵelementEnd();
17818
18501
  }
17819
18502
  if (rf & 2) {
17820
- const ctx_r2 = i0.ɵɵnextContext();
17821
- i0.ɵɵproperty("color", ctx_r2.activeDrawingLayer.visible ? "primary" : "default")("matTooltip", ctx_r2.activeDrawingLayer.visible ? i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 5, "igo.geo.layer.showLayer"));
18503
+ const ctx_r4 = i0.ɵɵnextContext();
18504
+ i0.ɵɵproperty("color", ctx_r4.activeDrawingLayer.visible ? "primary" : "default")("matTooltip", ctx_r4.activeDrawingLayer.visible ? i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 5, "igo.geo.layer.showLayer"));
17822
18505
  i0.ɵɵadvance(3);
17823
- i0.ɵɵproperty("svgIcon", ctx_r2.activeDrawingLayer.visible ? "eye" : "eye-off");
18506
+ i0.ɵɵproperty("svgIcon", ctx_r4.activeDrawingLayer.visible ? "eye" : "eye-off");
17824
18507
  }
17825
18508
  }
17826
- function DrawComponent_button_37_Template(rf, ctx) {
18509
+ function DrawComponent_button_39_Template(rf, ctx) {
17827
18510
  if (rf & 1) {
17828
- const _r11 = i0.ɵɵgetCurrentView();
17829
- i0.ɵɵelementStart(0, "button", 22);
17830
- i0.ɵɵlistener("click", function DrawComponent_button_37_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.deleteDrawings()); });
18511
+ const _r19 = i0.ɵɵgetCurrentView();
18512
+ i0.ɵɵelementStart(0, "button", 29);
18513
+ i0.ɵɵlistener("click", function DrawComponent_button_39_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.deleteDrawings()); });
17831
18514
  i0.ɵɵpipe(1, "translate");
17832
18515
  i0.ɵɵpipe(2, "async");
17833
- i0.ɵɵelement(3, "mat-icon", 23);
18516
+ i0.ɵɵelement(3, "mat-icon", 30);
17834
18517
  i0.ɵɵelementEnd();
17835
18518
  }
17836
18519
  if (rf & 2) {
17837
- const ctx_r3 = i0.ɵɵnextContext();
17838
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r3.selectedFeatures$).length === 0);
18520
+ const ctx_r5 = i0.ɵɵnextContext();
18521
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r5.selectedFeatures$).length === 0);
17839
18522
  }
17840
18523
  }
17841
- function DrawComponent_mat_form_field_42_div_6_Template(rf, ctx) {
18524
+ function DrawComponent_mat_form_field_44_div_6_Template(rf, ctx) {
17842
18525
  if (rf & 1) {
17843
- i0.ɵɵelementStart(0, "div", 27);
17844
- i0.ɵɵelement(1, "img", 28);
18526
+ i0.ɵɵelementStart(0, "div", 34);
18527
+ i0.ɵɵelement(1, "img", 35);
17845
18528
  i0.ɵɵelementEnd();
17846
18529
  }
17847
18530
  if (rf & 2) {
17848
- const ctx_r12 = i0.ɵɵnextContext(2);
18531
+ const ctx_r20 = i0.ɵɵnextContext(2);
17849
18532
  i0.ɵɵadvance(1);
17850
- i0.ɵɵpropertyInterpolate("src", ctx_r12.icon, i0.ɵɵsanitizeUrl);
18533
+ i0.ɵɵpropertyInterpolate("src", ctx_r20.icon, i0.ɵɵsanitizeUrl);
17851
18534
  }
17852
18535
  }
17853
- function DrawComponent_mat_form_field_42_mat_option_10_Template(rf, ctx) {
18536
+ function DrawComponent_mat_form_field_44_mat_option_10_Template(rf, ctx) {
17854
18537
  if (rf & 1) {
17855
- const _r16 = i0.ɵɵgetCurrentView();
17856
- i0.ɵɵelementStart(0, "mat-option", 29);
17857
- i0.ɵɵlistener("click", function DrawComponent_mat_form_field_42_mat_option_10_Template_mat_option_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r16); const icon_html_r14 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r15.onIconChange(icon_html_r14)); });
17858
- i0.ɵɵelementStart(1, "div", 27);
17859
- i0.ɵɵelement(2, "img", 28);
18538
+ const _r24 = i0.ɵɵgetCurrentView();
18539
+ i0.ɵɵelementStart(0, "mat-option", 36);
18540
+ i0.ɵɵlistener("click", function DrawComponent_mat_form_field_44_mat_option_10_Template_mat_option_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r24); const icon_html_r22 = restoredCtx.$implicit; const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onIconChange(icon_html_r22)); });
18541
+ i0.ɵɵelementStart(1, "div", 34);
18542
+ i0.ɵɵelement(2, "img", 35);
17860
18543
  i0.ɵɵelementEnd()();
17861
18544
  }
17862
18545
  if (rf & 2) {
17863
- const icon_html_r14 = ctx.$implicit;
17864
- i0.ɵɵproperty("value", icon_html_r14);
18546
+ const icon_html_r22 = ctx.$implicit;
18547
+ i0.ɵɵproperty("value", icon_html_r22);
17865
18548
  i0.ɵɵadvance(2);
17866
- i0.ɵɵpropertyInterpolate("src", icon_html_r14, i0.ɵɵsanitizeUrl);
18549
+ i0.ɵɵpropertyInterpolate("src", icon_html_r22, i0.ɵɵsanitizeUrl);
17867
18550
  }
17868
18551
  }
17869
- function DrawComponent_mat_form_field_42_Template(rf, ctx) {
18552
+ function DrawComponent_mat_form_field_44_Template(rf, ctx) {
17870
18553
  if (rf & 1) {
17871
- const _r18 = i0.ɵɵgetCurrentView();
18554
+ const _r26 = i0.ɵɵgetCurrentView();
17872
18555
  i0.ɵɵelementStart(0, "mat-form-field")(1, "mat-label");
17873
18556
  i0.ɵɵtext(2);
17874
18557
  i0.ɵɵpipe(3, "translate");
17875
18558
  i0.ɵɵelementEnd();
17876
18559
  i0.ɵɵelementStart(4, "mat-select")(5, "mat-select-trigger");
17877
- i0.ɵɵtemplate(6, DrawComponent_mat_form_field_42_div_6_Template, 2, 1, "div", 24);
18560
+ i0.ɵɵtemplate(6, DrawComponent_mat_form_field_44_div_6_Template, 2, 1, "div", 31);
17878
18561
  i0.ɵɵelementEnd();
17879
- i0.ɵɵelementStart(7, "mat-option", 25);
17880
- i0.ɵɵlistener("click", function DrawComponent_mat_form_field_42_Template_mat_option_click_7_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onIconChange()); });
18562
+ i0.ɵɵelementStart(7, "mat-option", 32);
18563
+ i0.ɵɵlistener("click", function DrawComponent_mat_form_field_44_Template_mat_option_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onIconChange()); });
17881
18564
  i0.ɵɵtext(8);
17882
18565
  i0.ɵɵpipe(9, "translate");
17883
18566
  i0.ɵɵelementEnd();
17884
- i0.ɵɵtemplate(10, DrawComponent_mat_form_field_42_mat_option_10_Template, 3, 2, "mat-option", 26);
18567
+ i0.ɵɵtemplate(10, DrawComponent_mat_form_field_44_mat_option_10_Template, 3, 2, "mat-option", 33);
17885
18568
  i0.ɵɵelementEnd()();
17886
18569
  }
17887
18570
  if (rf & 2) {
17888
- const ctx_r5 = i0.ɵɵnextContext();
18571
+ const ctx_r7 = i0.ɵɵnextContext();
17889
18572
  i0.ɵɵadvance(2);
17890
18573
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.icon"));
17891
18574
  i0.ɵɵadvance(4);
17892
- i0.ɵɵproperty("ngIf", ctx_r5.icon);
18575
+ i0.ɵɵproperty("ngIf", ctx_r7.icon);
17893
18576
  i0.ɵɵadvance(2);
17894
18577
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 6, "igo.geo.draw.noIcon"));
17895
18578
  i0.ɵɵadvance(2);
17896
- i0.ɵɵproperty("ngForOf", ctx_r5.icons);
18579
+ i0.ɵɵproperty("ngForOf", ctx_r7.icons);
17897
18580
  }
17898
18581
  }
17899
- function DrawComponent_button_46_Template(rf, ctx) {
18582
+ function DrawComponent_button_48_Template(rf, ctx) {
17900
18583
  if (rf & 1) {
17901
- const _r20 = i0.ɵɵgetCurrentView();
17902
- i0.ɵɵelementStart(0, "button", 30);
17903
- i0.ɵɵlistener("click", function DrawComponent_button_46_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.openStyleModalDialog()); });
18584
+ const _r28 = i0.ɵɵgetCurrentView();
18585
+ i0.ɵɵelementStart(0, "button", 37);
18586
+ i0.ɵɵlistener("click", function DrawComponent_button_48_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.openStyleModalDialog()); });
17904
18587
  i0.ɵɵpipe(1, "translate");
17905
18588
  i0.ɵɵtext(2);
17906
18589
  i0.ɵɵpipe(3, "translate");
17907
- i0.ɵɵelement(4, "mat-icon", 31);
18590
+ i0.ɵɵelement(4, "mat-icon", 38);
17908
18591
  i0.ɵɵelementEnd();
17909
18592
  }
17910
18593
  if (rf & 2) {
17911
- const ctx_r6 = i0.ɵɵnextContext();
18594
+ const ctx_r8 = i0.ɵɵnextContext();
17912
18595
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.style.styleModalTooltip"));
17913
18596
  i0.ɵɵadvance(2);
17914
18597
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.geo.layer.style.styleModal"), " ");
17915
18598
  i0.ɵɵadvance(2);
17916
- i0.ɵɵproperty("matBadge", ctx_r6.selectedFeatures$.value.length);
18599
+ i0.ɵɵproperty("matBadge", ctx_r8.selectedFeatures$.value.length);
17917
18600
  }
17918
18601
  }
17919
18602
  class DrawComponent {
@@ -17938,10 +18621,24 @@ class DrawComponent {
17938
18621
  {
17939
18622
  name: 'Drawing',
17940
18623
  title: this.languageService.translate.instant('igo.geo.draw.labels'),
17941
- tooltip: this.languageService.translate.instant('igo.geo.draw.changeLabel'),
17942
18624
  valueAccessor: (feature) => {
17943
18625
  return feature.properties.draw;
17944
18626
  }
18627
+ },
18628
+ {
18629
+ name: 'Edition',
18630
+ title: '',
18631
+ sort: false,
18632
+ valueAccessor: (feature) => {
18633
+ return [{
18634
+ editMode: false,
18635
+ icon: 'pencil',
18636
+ color: 'primary',
18637
+ click: () => { this.editLabelDrawing(feature); },
18638
+ style: 'mat-icon-button'
18639
+ }];
18640
+ },
18641
+ renderer: EntityTableColumnRenderer.ButtonGroup,
17945
18642
  }
17946
18643
  ]
17947
18644
  };
@@ -17957,8 +18654,14 @@ class DrawComponent {
17957
18654
  this.selectedFeatures$ = new BehaviorSubject([]);
17958
18655
  this.drawControlIsDisabled = true;
17959
18656
  this.drawControlIsActive = false;
18657
+ this.freehandMode = false;
17960
18658
  this.subscriptions$$ = [];
17961
18659
  this.position = 'bottom';
18660
+ this.radiusFormControl = new UntypedFormControl(1000);
18661
+ this.measureUnit = MeasureLengthUnit.Meters;
18662
+ this.radiusFormControlChange$$ = new Subscription();
18663
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
18664
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
17962
18665
  this.isCreatingNewLayer = false;
17963
18666
  this.currGeometryType = this.geometryType.Point;
17964
18667
  this.buildForm();
@@ -17989,6 +18692,13 @@ class DrawComponent {
17989
18692
  set activeDrawingLayer(value) {
17990
18693
  this._activeDrawingLayer = value;
17991
18694
  }
18695
+ /**
18696
+ * Available measure units for the measure type given
18697
+ * @internal
18698
+ */
18699
+ get measureUnits() {
18700
+ return [MeasureLengthUnit.Meters, MeasureLengthUnit.Kilometers];
18701
+ }
17992
18702
  // Initialize the store that will contain the entities and create the Draw control
17993
18703
  ngOnInit() {
17994
18704
  if (!this.stores.length) {
@@ -18041,6 +18751,11 @@ class DrawComponent {
18041
18751
  });
18042
18752
  this.onLayerChange(this.activeDrawingLayer);
18043
18753
  }
18754
+ this.radiusFormControlChange$$ = this.radiusFormControl.valueChanges.subscribe(value => {
18755
+ if (this.activeDrawControl.ispredefinedRadius$.getValue()) {
18756
+ this.changeRadius(value);
18757
+ }
18758
+ });
18044
18759
  }
18045
18760
  /**
18046
18761
  * Remove the drawing layer and the interactions
@@ -18051,6 +18766,7 @@ class DrawComponent {
18051
18766
  this.activeStore.state.updateAll({ selected: false });
18052
18767
  this.deactivateDrawControl();
18053
18768
  this.subscriptions$$.map((s) => s.unsubscribe());
18769
+ this.radiusFormControlChange$$.unsubscribe();
18054
18770
  }
18055
18771
  /**
18056
18772
  * Create a Draw Control
@@ -18124,30 +18840,21 @@ class DrawComponent {
18124
18840
  // open the dialog box used to enter label
18125
18841
  const dialogRef = this.dialog.open(DrawPopupComponent, {
18126
18842
  disableClose: false,
18127
- data: { currentLabel: olGeometry.get('draw') }
18843
+ data: { olGeometry: olGeometry, map: this.map }
18128
18844
  });
18129
18845
  // when dialog box is closed, get label and set it to geometry
18130
- dialogRef.afterClosed().subscribe((label) => {
18846
+ dialogRef.afterClosed().subscribe((result) => {
18131
18847
  // checks if the user clicked ok
18132
18848
  if (dialogRef.componentInstance.confirmFlag) {
18133
- this.updateLabelOfOlGeometry(olGeometry, label);
18134
- if (!olGeometry.values_.fontStyle) {
18135
- this.updateFontSizeAndStyle(olGeometry, '20', FontType.Arial);
18136
- }
18137
- if (!olGeometry.values_.drawingStyle) {
18849
+ this.updateLabelOfOlGeometry(olGeometry, result.label);
18850
+ this.updateLabelType(olGeometry, dialogRef.componentInstance.labelFlag);
18851
+ this.updateMeasureUnit(olGeometry, result.measureUnit);
18852
+ if (!(olGeometry instanceof OlFeature)) {
18853
+ this.updateFontSizeAndStyle(olGeometry, '15', FontType.Arial);
18138
18854
  this.updateFillAndStrokeColor(olGeometry, 'rgba(255,255,255,0.4)', 'rgba(143,7,7,1)');
18855
+ this.updateOffset(olGeometry, 0, (olGeometry instanceof OlPoint) ? -15 : 0);
18139
18856
  }
18140
- if (!(olGeometry.values_.offsetX || olGeometry.values_.offsetY)) {
18141
- this.updateOffset(olGeometry, 0, olGeometry instanceof OlPoint ? -15 : 0);
18142
- }
18143
- // if event was fired at draw end
18144
- if (isDrawEnd) {
18145
- this.onDrawEnd(olGeometry);
18146
- // if event was fired at select
18147
- }
18148
- else {
18149
- this.onSelectDraw(olGeometry, label);
18150
- }
18857
+ isDrawEnd ? this.onDrawEnd(olGeometry) : this.onSelectDraw(olGeometry, result.label, [dialogRef.componentInstance.labelFlag, result.measureUnit]);
18151
18858
  this.updateHeightTable();
18152
18859
  }
18153
18860
  // deletes the feature
@@ -18179,7 +18886,55 @@ class DrawComponent {
18179
18886
  const entityId = entity.properties.id;
18180
18887
  const olGeometryId = olGeometry.ol_uid;
18181
18888
  if (entityId === olGeometryId) {
18182
- this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18889
+ if (entity.properties.labelType === LabelType.Coordinates) {
18890
+ let longLat = DDtoDMS([entity.properties.longitude, entity.properties.latitude], entity.properties.measureUnit);
18891
+ this.updateLabelOfOlGeometry(olGeometry, '(' + longLat[1] + ', ' + longLat[0] + ')');
18892
+ }
18893
+ else if (entity.properties.labelType === LabelType.Length) {
18894
+ if (olGeometry instanceof OlCircle) {
18895
+ let circularPolygon = fromCircle(olGeometry, 10000);
18896
+ const radius = metersToUnit(this.getRadius(circularPolygon), entity.properties.measureUnit);
18897
+ const unit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18898
+ const radiusLabel = 'R: ' + radius.toFixed(2).toString() + ' ' + unit;
18899
+ this.updateLabelOfOlGeometry(olGeometry, radiusLabel);
18900
+ }
18901
+ else {
18902
+ let olGeometryLength = measureOlGeometryLength(olGeometry, this.map.ol.getView().getProjection().getCode());
18903
+ let measureUnit;
18904
+ const temp = entity.properties.measureUnit;
18905
+ measureUnit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18906
+ olGeometryLength = metersToUnit(olGeometryLength, temp);
18907
+ let lengthLabel = olGeometry instanceof OlPolygon ?
18908
+ 'P: ' + olGeometryLength.toFixed(2).toString() + ' ' + measureUnit
18909
+ : olGeometryLength.toFixed(2).toString() + ' ' + measureUnit;
18910
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18911
+ }
18912
+ }
18913
+ else if (entity.properties.labelType === LabelType.Area) {
18914
+ if (olGeometry instanceof OlCircle) {
18915
+ let circularPolygon = fromCircle(olGeometry, 10000);
18916
+ let circleArea = measureOlGeometryArea(circularPolygon, this.map.ol.getView().getProjection().getCode());
18917
+ const unit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18918
+ const temp = entity.properties.measureUnit;
18919
+ circleArea = squareMetersToUnit(circleArea, temp);
18920
+ const areaLabel = circleArea.toFixed(2).toString() + ' ' + unit;
18921
+ this.updateLabelOfOlGeometry(olGeometry, areaLabel);
18922
+ }
18923
+ else {
18924
+ let olGeometryArea = measureOlGeometryArea(olGeometry, this.map.ol.getView().getProjection().getCode());
18925
+ let measureUnit;
18926
+ const temp = entity.properties.measureUnit;
18927
+ measureUnit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18928
+ olGeometryArea = squareMetersToUnit(olGeometryArea, temp);
18929
+ const lengthLabel = olGeometryArea.toFixed(2).toString() + ' ' + measureUnit;
18930
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18931
+ }
18932
+ }
18933
+ else {
18934
+ this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18935
+ }
18936
+ this.updateLabelType(olGeometry, entity.properties.labelType);
18937
+ this.updateMeasureUnit(olGeometry, entity.properties.measureUnit);
18183
18938
  this.updateFontSizeAndStyle(olGeometry, entity.properties.fontStyle.split(' ')[0].replace('px', ''), entity.properties.fontStyle.substring(entity.properties.fontStyle.indexOf(' ') + 1));
18184
18939
  this.updateFillAndStrokeColor(olGeometry, entity.properties.drawingStyle.fill, entity.properties.drawingStyle.stroke);
18185
18940
  this.updateOffset(olGeometry, entity.properties.offsetX, entity.properties.offsetY);
@@ -18187,7 +18942,7 @@ class DrawComponent {
18187
18942
  }
18188
18943
  });
18189
18944
  }
18190
- onSelectDraw(olFeature, label) {
18945
+ onSelectDraw(olFeature, label, labelTypeAndUnit) {
18191
18946
  const entities = this.activeStore.all();
18192
18947
  const olGeometry = olFeature.getGeometry();
18193
18948
  olGeometry.ol_uid = olFeature.get('id');
@@ -18213,6 +18968,8 @@ class DrawComponent {
18213
18968
  this.updateFontSizeAndStyle(olGeometry, fontSize, fontStyle);
18214
18969
  this.updateFillAndStrokeColor(olGeometry, fillColor, strokeColor);
18215
18970
  this.updateOffset(olGeometry, offsetX, offsetY);
18971
+ this.updateLabelType(olGeometry, labelTypeAndUnit[0]);
18972
+ this.updateMeasureUnit(olGeometry, labelTypeAndUnit[1]);
18216
18973
  this.replaceFeatureInStore(entity, olGeometry, rad);
18217
18974
  }
18218
18975
  });
@@ -18252,8 +19009,12 @@ class DrawComponent {
18252
19009
  lon4326 = center4326[0];
18253
19010
  lat4326 = center4326[1];
18254
19011
  rad = getDistance(center4326, extent4326);
19012
+ this.radiusFormControl.setValue(Math.round(rad));
18255
19013
  }
18256
19014
  }
19015
+ if (this.activeDrawControl.radiusDrawEnd$.getValue()) {
19016
+ rad = this.activeDrawControl.radiusDrawEnd$.getValue();
19017
+ }
18257
19018
  if (olGeometry instanceof OlPoint) {
18258
19019
  point4326 = transform(olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
18259
19020
  lon4326 = point4326[0];
@@ -18275,12 +19036,16 @@ class DrawComponent {
18275
19036
  stroke: olGeometry.get('strokeColor_')
18276
19037
  },
18277
19038
  offsetX: olGeometry.get('offsetX_'),
18278
- offsetY: olGeometry.get('offsetY_')
19039
+ offsetY: olGeometry.get('offsetY_'),
19040
+ labelType: olGeometry.get('labelType_'),
19041
+ measureUnit: olGeometry.get('measureUnit_')
18279
19042
  },
18280
19043
  meta: {
18281
19044
  id: featureId
18282
19045
  }
18283
19046
  });
19047
+ this.activeDrawControl.predefinedRadius$.next(undefined);
19048
+ this.activeDrawControl.radiusDrawEnd$.next(undefined);
18284
19049
  }
18285
19050
  buildForm() {
18286
19051
  this.form = this.formBuilder.group({
@@ -18325,11 +19090,9 @@ class DrawComponent {
18325
19090
  /**
18326
19091
  * Called when the user double-clicks the selected drawing
18327
19092
  */
18328
- editLabelDrawing() {
18329
- if (this.selectedFeatures$.value.length) {
18330
- const olGeometry = featureToOl(this.selectedFeatures$.value[0], this.map.ol.getView().getProjection().getCode());
18331
- this.openDrawDialog(olGeometry, false);
18332
- }
19093
+ editLabelDrawing(feature) {
19094
+ const olGeometryFeature = featureToOl(feature, this.map.ol.getView().getProjection().getCode());
19095
+ this.openDrawDialog(olGeometryFeature, false);
18333
19096
  }
18334
19097
  openShorcutsDialog() {
18335
19098
  this.dialog.open(DrawShorcutsComponent);
@@ -18366,6 +19129,19 @@ class DrawComponent {
18366
19129
  onToggleDrawControl(toggleIsChecked) {
18367
19130
  toggleIsChecked ? this.toggleDrawControl() : this.deactivateDrawControl();
18368
19131
  }
19132
+ onToggleFreehandMode(event) {
19133
+ if (this.isCircle() && !event.checked) {
19134
+ this.activeDrawControl.ispredefinedRadius$.next(true);
19135
+ this.changeRadius(this.radiusFormControl.value);
19136
+ }
19137
+ else {
19138
+ this.activeDrawControl.setOlInteractionStyle(createInteractionStyle(this.fillColor, this.strokeColor, this.strokeWidth));
19139
+ this.activeDrawControl.ispredefinedRadius$.next(false);
19140
+ }
19141
+ this.freehandMode = event.checked;
19142
+ this.activeDrawControl.freehand$.next(event.checked);
19143
+ this.toggleDrawControl();
19144
+ }
18369
19145
  // User changes properties of a drawing element
18370
19146
  /**
18371
19147
  * Display the current layer with the current store and the current layerSource
@@ -18516,16 +19292,19 @@ class DrawComponent {
18516
19292
  onGeometryTypeChange(geometryType) {
18517
19293
  this.currGeometryType = geometryType;
18518
19294
  this.activeDrawControl.setGeometryType(geometryType);
19295
+ this.freehandMode ?
19296
+ this.onToggleFreehandMode({ checked: true }) :
19297
+ this.onToggleFreehandMode({ checked: false });
18519
19298
  this.toggleDrawControl();
18520
19299
  }
18521
19300
  // Updates the properties of olFeature inputted
18522
19301
  /**
18523
19302
  * Update the label of a geometry when a label is entered in a dialog box
18524
- * @param olGeometry the geometry
19303
+ * @param OlFeature the feature
18525
19304
  * @param label the label
18526
19305
  */
18527
- updateLabelOfOlGeometry(olGeometry, label) {
18528
- olGeometry.setProperties({
19306
+ updateLabelOfOlGeometry(OlFeature, label) {
19307
+ OlFeature.setProperties({
18529
19308
  _label: label
18530
19309
  }, true);
18531
19310
  }
@@ -18546,13 +19325,23 @@ class DrawComponent {
18546
19325
  offsetY_: offsetY
18547
19326
  }, true);
18548
19327
  }
19328
+ updateLabelType(olFeature, typeOfLabel) {
19329
+ olFeature.setProperties({
19330
+ labelType_: typeOfLabel
19331
+ }, true);
19332
+ }
19333
+ updateMeasureUnit(olFeature, measureUnit) {
19334
+ olFeature.setProperties({
19335
+ measureUnit_: measureUnit
19336
+ }, true);
19337
+ }
18549
19338
  // Updates values of the selected element on the HTML view
18550
19339
  getFeatureFontSize() {
18551
19340
  return this.selectedFeatures$.value.length > 0
18552
19341
  ? this.selectedFeatures$.value[0].properties.fontStyle
18553
19342
  .split(' ')[0]
18554
19343
  .replace('px', '')
18555
- : '20';
19344
+ : '15';
18556
19345
  }
18557
19346
  getFeatureFontStyle() {
18558
19347
  return this.selectedFeatures$.value.length > 0
@@ -18656,6 +19445,66 @@ class DrawComponent {
18656
19445
  }
18657
19446
  this.activeDrawControl.setOlMap(this.map.ol, true);
18658
19447
  }
19448
+ /**
19449
+ * get the geometry of design
19450
+ *
19451
+ */
19452
+ isPoint() {
19453
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Point;
19454
+ }
19455
+ isLineString() {
19456
+ return this.activeDrawControl.getGeometryType() === this.geometryType.LineString;
19457
+ }
19458
+ isPolygon() {
19459
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Polygon;
19460
+ }
19461
+ isCircle() {
19462
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Circle;
19463
+ }
19464
+ /**
19465
+ * The fonction to predefine the radius of the user
19466
+ *
19467
+ */
19468
+ changeRadius(radius) {
19469
+ let radiusMeters;
19470
+ if (radius) {
19471
+ this.measureUnit === MeasureLengthUnit.Meters ? radiusMeters = radius :
19472
+ radiusMeters = radius * 1000;
19473
+ }
19474
+ else {
19475
+ radiusMeters = undefined;
19476
+ }
19477
+ const pointStyle = (feature, resolution) => {
19478
+ const geom = feature.getGeometry();
19479
+ const coordinates = olproj.transform(geom.getCoordinates(), this.map.projection, 'EPSG:4326');
19480
+ const radius = radiusMeters / (Math.cos((Math.PI / 180) * coordinates[1])) / resolution;
19481
+ this.activeDrawControl.predefinedRadius$.next(radiusMeters);
19482
+ return new olstyle.Style({
19483
+ image: new olstyle.Circle({
19484
+ radius: radius,
19485
+ stroke: new olstyle.Stroke({
19486
+ width: 1,
19487
+ color: 'rgba(143,7,7,1)'
19488
+ }),
19489
+ fill: new olstyle.Fill({
19490
+ color: 'rgba(255,255,255,0.4)'
19491
+ })
19492
+ })
19493
+ });
19494
+ };
19495
+ this.activeDrawControl.setOlInteractionStyle(pointStyle);
19496
+ this.toggleDrawControl();
19497
+ }
19498
+ onMeasureUnitChange(selectedMeasureUnit) {
19499
+ if (selectedMeasureUnit === this.measureUnit) {
19500
+ return;
19501
+ }
19502
+ else {
19503
+ this.measureUnit = selectedMeasureUnit;
19504
+ this.measureUnit === MeasureLengthUnit.Meters ? this.radiusFormControl.setValue(this.radiusFormControl.value * 1000) :
19505
+ this.radiusFormControl.setValue(this.radiusFormControl.value / 1000);
19506
+ }
19507
+ }
18659
19508
  /**
18660
19509
  * Recreates the style of the feature stored
18661
19510
  */
@@ -18671,6 +19520,10 @@ class DrawComponent {
18671
19520
  });
18672
19521
  }
18673
19522
  }
19523
+ getRadius(olGeometry) {
19524
+ const length = getLength(olGeometry);
19525
+ return Number(length / (2 * Math.PI));
19526
+ }
18674
19527
  }
18675
19528
  DrawComponent.ɵfac = function DrawComponent_Factory(t) { return new (t || DrawComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(DrawIconService)); };
18676
19529
  DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent, selectors: [["igo-draw"]], viewQuery: function DrawComponent_Query(rf, ctx) {
@@ -18681,9 +19534,9 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18681
19534
  let _t;
18682
19535
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.select = _t.first);
18683
19536
  }
18684
- }, inputs: { map: "map", stores: "stores", drawControls: "drawControls", activeDrawingLayer: "activeDrawingLayer" }, outputs: { activeLayerChange: "activeLayerChange", drawControlsEvent: "drawControlsEvent", layersIDEvent: "layersIDEvent", fillColor: "fillColor", strokeColor: "strokeColor", strokeWidth: "strokeWidth", fontSize: "fontSize", fontStyle: "fontStyle" }, decls: 47, vars: 45, consts: [[1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [1, "draw-options", "mat-typography"], [3, "disabled", "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change"], ["appearance", "outline", 1, "layer-select"], [3, "value", "selectionChange"], ["selectedLayer", ""], [3, "value", 4, "ngFor", "ngForOf"], ["id", "createNewLayer"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click", 4, "ngIf"], ["class", "deleteBtn", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click", 4, "ngIf"], [1, "table-compact", 3, "store", "template", "dblclick"], ["table", ""], [1, "icon-options"], [4, "ngIf"], ["mat-icon-button", "", "color", "accent", "disableRipple", "true", 3, "click"], ["svgIcon", "keyboard-outline", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "shortcuts-icon", 3, "matTooltip"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click"], [3, "svgIcon"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "deleteBtn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["class", "box", 4, "ngIf"], ["value", "", 3, "click"], [3, "value", "click", 4, "ngFor", "ngForOf"], [1, "box"], [3, "src"], [3, "value", "click"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "palette", "matBadgeColor", "warn", "matBadgeSize", "medium", 1, "style-icon", 3, "matBadge"]], template: function DrawComponent_Template(rf, ctx) {
19537
+ }, inputs: { map: "map", stores: "stores", drawControls: "drawControls", activeDrawingLayer: "activeDrawingLayer" }, outputs: { activeLayerChange: "activeLayerChange", drawControlsEvent: "drawControlsEvent", layersIDEvent: "layersIDEvent", fillColor: "fillColor", strokeColor: "strokeColor", strokeWidth: "strokeWidth", fontSize: "fontSize", fontStyle: "fontStyle" }, decls: 49, vars: 47, consts: [[1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [1, "draw-options", "mat-typography"], [3, "disabled", "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], ["appearance", "outline", 1, "layer-select"], [3, "value", "selectionChange"], ["selectedLayer", ""], [3, "value", 4, "ngFor", "ngForOf"], ["id", "createNewLayer"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click", 4, "ngIf"], ["class", "deleteBtn", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click", 4, "ngIf"], [1, "table-compact", 3, "store", "template"], ["table", ""], [1, "icon-options"], [4, "ngIf"], ["mat-icon-button", "", "color", "accent", "disableRipple", "true", 3, "click"], ["svgIcon", "keyboard-outline", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "shortcuts-icon", 3, "matTooltip"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["matInput", "", "type", "number", "min", "0", 3, "placeholder", "formControl", "readonly"], [1, "unit-field"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click"], [3, "svgIcon"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "deleteBtn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["class", "box", 4, "ngIf"], ["value", "", 3, "click"], [3, "value", "click", 4, "ngFor", "ngForOf"], [1, "box"], [3, "src"], [3, "value", "click"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "palette", "matBadgeColor", "warn", "matBadgeSize", "medium", 1, "style-icon", 3, "matBadge"]], template: function DrawComponent_Template(rf, ctx) {
18685
19538
  if (rf & 1) {
18686
- const _r21 = i0.ɵɵgetCurrentView();
19539
+ const _r29 = i0.ɵɵgetCurrentView();
18687
19540
  i0.ɵɵelementStart(0, "div")(1, "div", 0)(2, "mat-button-toggle-group", 1);
18688
19541
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_button_toggle_group_change_2_listener($event) { return ctx.onGeometryTypeChange($event.value); });
18689
19542
  i0.ɵɵelementStart(3, "mat-button-toggle", 2);
@@ -18711,36 +19564,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18711
19564
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_slide_toggle_change_19_listener() { return ctx.onToggleLabels(); });
18712
19565
  i0.ɵɵtext(20);
18713
19566
  i0.ɵɵpipe(21, "translate");
18714
- i0.ɵɵelementEnd()();
18715
- i0.ɵɵelement(22, "mat-divider");
18716
- i0.ɵɵelementStart(23, "div")(24, "mat-form-field", 6)(25, "mat-label");
18717
- i0.ɵɵtext(26);
18718
- i0.ɵɵpipe(27, "translate");
18719
19567
  i0.ɵɵelementEnd();
18720
- i0.ɵɵelementStart(28, "mat-select", 7, 8);
18721
- i0.ɵɵlistener("selectionChange", function DrawComponent_Template_mat_select_selectionChange_28_listener() { i0.ɵɵrestoreView(_r21); const _r0 = i0.ɵɵreference(29); return i0.ɵɵresetView(ctx.onLayerChange(_r0.value)); });
18722
- i0.ɵɵtemplate(30, DrawComponent_mat_option_30_Template, 2, 2, "mat-option", 9);
18723
- i0.ɵɵelementStart(31, "mat-option", 10);
18724
- i0.ɵɵtext(32);
18725
- i0.ɵɵpipe(33, "translate");
18726
- i0.ɵɵelementEnd()()();
18727
- i0.ɵɵtemplate(34, DrawComponent_button_34_Template, 4, 7, "button", 11);
19568
+ i0.ɵɵtemplate(22, DrawComponent_mat_slide_toggle_22_Template, 3, 5, "mat-slide-toggle", 6);
19569
+ i0.ɵɵtemplate(23, DrawComponent_div_23_Template, 8, 7, "div", 7);
18728
19570
  i0.ɵɵelementEnd();
18729
- i0.ɵɵelement(35, "mat-divider");
18730
- i0.ɵɵelementStart(36, "div");
18731
- i0.ɵɵtemplate(37, DrawComponent_button_37_Template, 4, 6, "button", 12);
18732
- i0.ɵɵelementStart(38, "div")(39, "igo-entity-table", 13, 14);
18733
- i0.ɵɵlistener("dblclick", function DrawComponent_Template_igo_entity_table_dblclick_39_listener() { return ctx.editLabelDrawing(); });
19571
+ i0.ɵɵelement(24, "mat-divider");
19572
+ i0.ɵɵelementStart(25, "div")(26, "mat-form-field", 8)(27, "mat-label");
19573
+ i0.ɵɵtext(28);
19574
+ i0.ɵɵpipe(29, "translate");
19575
+ i0.ɵɵelementEnd();
19576
+ i0.ɵɵelementStart(30, "mat-select", 9, 10);
19577
+ i0.ɵɵlistener("selectionChange", function DrawComponent_Template_mat_select_selectionChange_30_listener() { i0.ɵɵrestoreView(_r29); const _r2 = i0.ɵɵreference(31); return i0.ɵɵresetView(ctx.onLayerChange(_r2.value)); });
19578
+ i0.ɵɵtemplate(32, DrawComponent_mat_option_32_Template, 2, 2, "mat-option", 11);
19579
+ i0.ɵɵelementStart(33, "mat-option", 12);
19580
+ i0.ɵɵtext(34);
19581
+ i0.ɵɵpipe(35, "translate");
18734
19582
  i0.ɵɵelementEnd()()();
18735
- i0.ɵɵelementStart(41, "div", 15);
18736
- i0.ɵɵtemplate(42, DrawComponent_mat_form_field_42_Template, 11, 8, "mat-form-field", 16);
19583
+ i0.ɵɵtemplate(36, DrawComponent_button_36_Template, 4, 7, "button", 13);
18737
19584
  i0.ɵɵelementEnd();
18738
- i0.ɵɵelementStart(43, "button", 17);
18739
- i0.ɵɵlistener("click", function DrawComponent_Template_button_click_43_listener() { return ctx.openShorcutsDialog(); });
18740
- i0.ɵɵelement(44, "mat-icon", 18);
18741
- i0.ɵɵpipe(45, "translate");
19585
+ i0.ɵɵelement(37, "mat-divider");
19586
+ i0.ɵɵelementStart(38, "div");
19587
+ i0.ɵɵtemplate(39, DrawComponent_button_39_Template, 4, 6, "button", 14);
19588
+ i0.ɵɵelementStart(40, "div");
19589
+ i0.ɵɵelement(41, "igo-entity-table", 15, 16);
19590
+ i0.ɵɵelementEnd()();
19591
+ i0.ɵɵelementStart(43, "div", 17);
19592
+ i0.ɵɵtemplate(44, DrawComponent_mat_form_field_44_Template, 11, 8, "mat-form-field", 18);
18742
19593
  i0.ɵɵelementEnd();
18743
- i0.ɵɵtemplate(46, DrawComponent_button_46_Template, 5, 7, "button", 19);
19594
+ i0.ɵɵelementStart(45, "button", 19);
19595
+ i0.ɵɵlistener("click", function DrawComponent_Template_button_click_45_listener() { return ctx.openShorcutsDialog(); });
19596
+ i0.ɵɵelement(46, "mat-icon", 20);
19597
+ i0.ɵɵpipe(47, "translate");
19598
+ i0.ɵɵelementEnd();
19599
+ i0.ɵɵtemplate(48, DrawComponent_button_48_Template, 5, 7, "button", 21);
18744
19600
  i0.ɵɵelementEnd();
18745
19601
  }
18746
19602
  if (rf & 2) {
@@ -18749,35 +19605,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18749
19605
  i0.ɵɵadvance(1);
18750
19606
  i0.ɵɵproperty("value", ctx.geometryType.Point);
18751
19607
  i0.ɵɵadvance(1);
18752
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 27, "igo.geo.draw." + ctx.geometryType.Point), " ");
19608
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 29, "igo.geo.draw." + ctx.geometryType.Point), " ");
18753
19609
  i0.ɵɵadvance(2);
18754
19610
  i0.ɵɵproperty("value", ctx.geometryType.LineString);
18755
19611
  i0.ɵɵadvance(1);
18756
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 29, "igo.geo.draw." + ctx.geometryType.LineString), " ");
19612
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 31, "igo.geo.draw." + ctx.geometryType.LineString), " ");
18757
19613
  i0.ɵɵadvance(2);
18758
19614
  i0.ɵɵproperty("value", ctx.geometryType.Polygon);
18759
19615
  i0.ɵɵadvance(1);
18760
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 31, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
19616
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 33, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
18761
19617
  i0.ɵɵadvance(2);
18762
19618
  i0.ɵɵproperty("value", ctx.geometryType.Circle);
18763
19619
  i0.ɵɵadvance(1);
18764
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 33, "igo.geo.draw." + ctx.geometryType.Circle), " ");
19620
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 35, "igo.geo.draw." + ctx.geometryType.Circle), " ");
18765
19621
  i0.ɵɵadvance(3);
18766
19622
  i0.ɵɵproperty("disabled", ctx.drawControlIsDisabled)("checked", ctx.drawControlIsActive)("labelPosition", "before");
18767
19623
  i0.ɵɵadvance(1);
18768
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 35, "igo.geo.spatialFilter.drawControl"), " ");
19624
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 37, "igo.geo.spatialFilter.drawControl"), " ");
18769
19625
  i0.ɵɵadvance(2);
18770
19626
  i0.ɵɵproperty("checked", ctx.labelsAreShown)("labelPosition", "before");
18771
19627
  i0.ɵɵadvance(1);
18772
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 37, "igo.geo.draw.toggleMapTooltips"), " ");
18773
- i0.ɵɵadvance(6);
18774
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(27, 39, "igo.geo.draw.layer.title"));
19628
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 39, "igo.geo.draw.toggleMapTooltips"), " ");
19629
+ i0.ɵɵadvance(2);
19630
+ i0.ɵɵproperty("ngIf", !ctx.isPoint());
19631
+ i0.ɵɵadvance(1);
19632
+ i0.ɵɵproperty("ngIf", ctx.isCircle());
19633
+ i0.ɵɵadvance(5);
19634
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(29, 41, "igo.geo.draw.layer.title"));
18775
19635
  i0.ɵɵadvance(2);
18776
19636
  i0.ɵɵproperty("value", ctx.updateActiveLayer());
18777
19637
  i0.ɵɵadvance(2);
18778
19638
  i0.ɵɵproperty("ngForOf", ctx.allLayers);
18779
19639
  i0.ɵɵadvance(2);
18780
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 41, "igo.geo.draw.layer.createNewLayer"), " ");
19640
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(35, 43, "igo.geo.draw.layer.createNewLayer"), " ");
18781
19641
  i0.ɵɵadvance(2);
18782
19642
  i0.ɵɵproperty("ngIf", ctx.activeDrawingLayer);
18783
19643
  i0.ɵɵadvance(3);
@@ -18787,11 +19647,11 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18787
19647
  i0.ɵɵadvance(3);
18788
19648
  i0.ɵɵproperty("ngIf", ctx.icons.length >= 1);
18789
19649
  i0.ɵɵadvance(2);
18790
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(45, 43, "igo.geo.draw.shortcuts"));
19650
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(47, 45, "igo.geo.draw.shortcuts"));
18791
19651
  i0.ɵɵadvance(2);
18792
19652
  i0.ɵɵproperty("ngIf", ctx.selectedFeatures$.value.length);
18793
19653
  }
18794
- }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1$1.AsyncPipe, i7.TranslatePipe], 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)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}"], data: { animation: [
19654
+ }, dependencies: [i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.MinValidator, i2$2.NgForm, i2$2.FormControlDirective, i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i14.MatInput, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1$1.AsyncPipe, i7.TranslatePipe], 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)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}.radius[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px} igo-entity-table td:last-child{text-align:right!important} igo-entity-table td:last-child button{margin:0%!important}"], data: { animation: [
18795
19655
  trigger('openClose', [
18796
19656
  state('open', style({
18797
19657
  opacity: 1
@@ -18817,7 +19677,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18817
19677
  transition('open => closed', [animate('600ms ease')]),
18818
19678
  transition('closed => open', [animate('800ms ease')])
18819
19679
  ])
18820
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <div class=\"geometry-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\r\n <mat-button-toggle [value]=\"geometryType.Point\">\r\n {{'igo.geo.draw.' + geometryType.Point | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.LineString\">\r\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Polygon\">\r\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Circle\">\r\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n\r\n <div class=\"draw-options mat-typography\">\r\n <mat-slide-toggle\r\n [disabled]=\"drawControlIsDisabled\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDrawControl($event.checked)\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle\r\n [checked]=\"labelsAreShown\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleLabels()\"\r\n >\r\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div>\r\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\r\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\r\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\r\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\r\n {{ layer.title }}\r\n </mat-option>\r\n <mat-option id=\"createNewLayer\" >\r\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n *ngIf=\"activeDrawingLayer\"\r\n mat-icon-button\r\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"activeDrawingLayer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\r\n <mat-icon\r\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div>\r\n <button\r\n *ngIf=\"activeStore.count$.getValue() > 0\"\r\n class=\"deleteBtn\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n (click)=\"deleteDrawings()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <div>\r\n <igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"activeStore\"\r\n [template]=\"tableTemplate\"\r\n (dblclick)=\"editLabelDrawing()\">\r\n </igo-entity-table>\r\n </div>\r\n </div>\r\n\r\n <div class=\"icon-options\">\r\n <mat-form-field *ngIf=\"icons.length >= 1\">\r\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\r\n <mat-select>\r\n <mat-select-trigger>\r\n <div *ngIf=\"icon\" class=\"box\">\r\n <img src=\"{{ icon }}\">\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\r\n <mat-option\r\n *ngFor=\"let icon_html of icons\"\r\n [value]=\"icon_html\"\r\n (click)=\"onIconChange(icon_html)\">\r\n <div class=\"box\">\r\n <img src=\"{{ icon_html }}\">\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <button\r\n mat-icon-button\r\n color=\"accent\"\r\n disableRipple=\"true\"\r\n (click)=\"openShorcutsDialog()\"\r\n >\r\n <mat-icon\r\n class=\"shortcuts-icon\"\r\n svgIcon=\"keyboard-outline\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\r\n >\r\n </mat-icon>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"selectedFeatures$.value.length\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"openStyleModalDialog()\"\r\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\r\n {{'igo.geo.layer.style.styleModal' | translate}}\r\n <mat-icon\r\n class=\"style-icon\"\r\n svgIcon=\"palette\"\r\n [matBadge]=\"selectedFeatures$.value.length\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}\n"] }]
19680
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <div class=\"geometry-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\r\n <mat-button-toggle [value]=\"geometryType.Point\">\r\n {{'igo.geo.draw.' + geometryType.Point | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.LineString\">\r\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Polygon\">\r\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Circle\">\r\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n\r\n <div class=\"draw-options mat-typography\">\r\n <mat-slide-toggle\r\n [disabled]=\"drawControlIsDisabled\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDrawControl($event.checked)\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle\r\n [checked]=\"labelsAreShown\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleLabels()\">\r\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle\r\n *ngIf=\"!isPoint()\"\r\n [checked]=\"freehandMode\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleFreehandMode($event)\">\r\n {{ 'igo.geo.draw.freehandMode' | translate }}\r\n </mat-slide-toggle>\r\n\r\n <div class=\"radius-unit\" *ngIf=\"isCircle()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input\r\n matInput type=\"number\"\r\n min=\"0\"\r\n placeholder=\"{{ 'igo.geo.spatialFilter.radius' | translate }}\"\r\n [formControl]=\"radiusFormControl\"\r\n [readonly]=\"this.freehandMode\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let measureUnit of measureUnits\"\r\n [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div>\r\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\r\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\r\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\r\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\r\n {{ layer.title }}\r\n </mat-option>\r\n <mat-option id=\"createNewLayer\" >\r\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n *ngIf=\"activeDrawingLayer\"\r\n mat-icon-button\r\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"activeDrawingLayer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\r\n <mat-icon\r\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div>\r\n <button\r\n *ngIf=\"activeStore.count$.getValue() > 0\"\r\n class=\"deleteBtn\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n (click)=\"deleteDrawings()\"\r\n >\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <div>\r\n <igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"activeStore\"\r\n [template]=\"tableTemplate\">\r\n </igo-entity-table>\r\n </div>\r\n </div>\r\n\r\n <div class=\"icon-options\">\r\n <mat-form-field *ngIf=\"icons.length >= 1\">\r\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\r\n <mat-select>\r\n <mat-select-trigger>\r\n <div *ngIf=\"icon\" class=\"box\">\r\n <img src=\"{{ icon }}\">\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\r\n <mat-option\r\n *ngFor=\"let icon_html of icons\"\r\n [value]=\"icon_html\"\r\n (click)=\"onIconChange(icon_html)\">\r\n <div class=\"box\">\r\n <img src=\"{{ icon_html }}\">\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <button\r\n mat-icon-button\r\n color=\"accent\"\r\n disableRipple=\"true\"\r\n (click)=\"openShorcutsDialog()\"\r\n >\r\n <mat-icon\r\n class=\"shortcuts-icon\"\r\n svgIcon=\"keyboard-outline\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\r\n >\r\n </mat-icon>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"selectedFeatures$.value.length\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"openStyleModalDialog()\"\r\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\r\n {{'igo.geo.layer.style.styleModal' | translate}}\r\n <mat-icon\r\n class=\"style-icon\"\r\n svgIcon=\"palette\"\r\n [matBadge]=\"selectedFeatures$.value.length\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}.radius{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}::ng-deep igo-entity-table td:last-child{text-align:right!important}::ng-deep igo-entity-table td:last-child button{margin:0%!important}\n"] }]
18821
19681
  }], function () { return [{ type: i2$1.LanguageService }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: i1.MatDialog }, { type: DrawIconService }]; }, { map: [{
18822
19682
  type: Input
18823
19683
  }], stores: [{
@@ -19117,7 +19977,7 @@ StyleModalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StyleMo
19117
19977
  i0.ɵɵadvance(4);
19118
19978
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(51, 44, "igo.geo.draw.cancel"), " ");
19119
19979
  }
19120
- }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.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}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
19980
+ }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12$1.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.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}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
19121
19981
  (function () {
19122
19982
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleModalComponent, [{
19123
19983
  type: Component,
@@ -19267,9 +20127,9 @@ IgoLayerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MatInputM
19267
20127
  TrackFeatureButtonComponent,
19268
20128
  StyleModalComponent] });
19269
20129
  })();
19270
- i0.ɵɵsetComponentScope(LayerItemComponent, [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12$1.MatCheckbox, LayerLegendComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
20130
+ i0.ɵɵsetComponentScope(LayerItemComponent, [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12.MatCheckbox, LayerLegendComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19271
20131
  i0.ɵɵsetComponentScope(LayerLegendItemComponent, [i4.MatTooltip, i5.MatListItem, i9.MatLine, LayerLegendComponent], []);
19272
- i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12$1.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
20132
+ i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
19273
20133
  LayerListToolComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19274
20134
  i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1$1.NgForOf, i1$1.NgIf, i11.MatDivider, i23.MatSlideToggle, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, LayerLegendItemComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19275
20135
 
@@ -20675,7 +21535,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20675
21535
  IgoEntityTableModule,
20676
21536
  ColorPickerModule,
20677
21537
  BrowserModule,
20678
- BrowserAnimationsModule] });
21538
+ BrowserAnimationsModule,
21539
+ MatRadioModule,
21540
+ MatCheckboxModule] });
20679
21541
  (function () {
20680
21542
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoDrawModule, [{
20681
21543
  type: NgModule,
@@ -20701,7 +21563,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20701
21563
  IgoEntityTableModule,
20702
21564
  ColorPickerModule,
20703
21565
  BrowserModule,
20704
- BrowserAnimationsModule
21566
+ BrowserAnimationsModule,
21567
+ MatRadioModule,
21568
+ MatCheckboxModule
20705
21569
  ],
20706
21570
  declarations: [DrawComponent, DrawPopupComponent, DrawLayerPopupComponent, DrawShorcutsComponent],
20707
21571
  exports: [DrawComponent]
@@ -20729,7 +21593,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20729
21593
  IgoEntityTableModule,
20730
21594
  ColorPickerModule,
20731
21595
  BrowserModule,
20732
- BrowserAnimationsModule], exports: [DrawComponent] });
21596
+ BrowserAnimationsModule,
21597
+ MatRadioModule,
21598
+ MatCheckboxModule], exports: [DrawComponent] });
20733
21599
  })();
20734
21600
 
20735
21601
  class IgoDrawingToolModule {
@@ -22969,6 +23835,14 @@ class GeometryFormFieldInputComponent {
22969
23835
  }
22970
23836
  this.toggleControl();
22971
23837
  }
23838
+ /**
23839
+ * Whether freehand draw control should be active or not
23840
+ */
23841
+ get predefinedRadius() { return this._predefinedRadius; }
23842
+ set predefinedRadius(value) {
23843
+ this._predefinedRadius = value;
23844
+ this.drawControl.ispredefinedRadius$.next(value);
23845
+ }
22972
23846
  /**
22973
23847
  * Style for the draw control (applies while the geometry is being drawn)
22974
23848
  */
@@ -23349,7 +24223,7 @@ class GeometryFormFieldInputComponent {
23349
24223
  }
23350
24224
  }
23351
24225
  GeometryFormFieldInputComponent.ɵfac = function GeometryFormFieldInputComponent_Factory(t) { return new (t || GeometryFormFieldInputComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$2.NgControl, 10)); };
23352
- GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GeometryFormFieldInputComponent, selectors: [["igo-geometry-form-field-input"]], inputs: { map: "map", geometryType: "geometryType", drawGuide: "drawGuide", measure: "measure", drawControlIsActive: "drawControlIsActive", freehandDrawIsActive: "freehandDrawIsActive", controlOptions: "controlOptions", drawStyle: "drawStyle", overlayStyle: "overlayStyle", value: "value", radius: "radius" }, decls: 1, vars: 0, template: function GeometryFormFieldInputComponent_Template(rf, ctx) {
24226
+ GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GeometryFormFieldInputComponent, selectors: [["igo-geometry-form-field-input"]], inputs: { map: "map", geometryType: "geometryType", drawGuide: "drawGuide", measure: "measure", drawControlIsActive: "drawControlIsActive", freehandDrawIsActive: "freehandDrawIsActive", predefinedRadius: "predefinedRadius", controlOptions: "controlOptions", drawStyle: "drawStyle", overlayStyle: "overlayStyle", value: "value", radius: "radius" }, decls: 1, vars: 0, template: function GeometryFormFieldInputComponent_Template(rf, ctx) {
23353
24227
  if (rf & 1) {
23354
24228
  i0.ɵɵtemplate(0, GeometryFormFieldInputComponent_ng_template_0_Template, 0, 0, "ng-template");
23355
24229
  }
@@ -23376,6 +24250,8 @@ GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ t
23376
24250
  type: Input
23377
24251
  }], freehandDrawIsActive: [{
23378
24252
  type: Input
24253
+ }], predefinedRadius: [{
24254
+ type: Input
23379
24255
  }], controlOptions: [{
23380
24256
  type: Input
23381
24257
  }], drawStyle: [{
@@ -24716,7 +25592,7 @@ TimeFilterListBindingDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ ty
24716
25592
  class WktService {
24717
25593
  constructor() { }
24718
25594
  wktToFeature(wkt, wktProj, featureProj) {
24719
- return new olWKT().readFeature(wkt, {
25595
+ return new olFormatWKT().readFeature(wkt, {
24720
25596
  dataProjection: wktProj,
24721
25597
  featureProjection: featureProj
24722
25598
  });
@@ -28487,6 +29363,7 @@ class SpatialFilterItemComponent {
28487
29363
  this.measureUnitChange = new EventEmitter();
28488
29364
  this.radiusEvent = new EventEmitter();
28489
29365
  this.freehandControl = new EventEmitter();
29366
+ this.predefinedRadius = new EventEmitter();
28490
29367
  this.clearButtonEvent = new EventEmitter();
28491
29368
  this.clearSearchEvent = new EventEmitter();
28492
29369
  this.export = new EventEmitter();
@@ -28954,6 +29831,16 @@ class SpatialFilterItemComponent {
28954
29831
  onfreehandControlChange() {
28955
29832
  this.freehandDrawIsActive = !this.freehandDrawIsActive;
28956
29833
  this.freehandControl.emit(this.freehandDrawIsActive);
29834
+ if (this.isPoint()) {
29835
+ this.predefinedRadius.emit(!this.freehandDrawIsActive);
29836
+ if (this.freehandDrawIsActive) {
29837
+ this.overlayStyle$.next(undefined);
29838
+ this.drawStyle$.next(undefined);
29839
+ }
29840
+ }
29841
+ else {
29842
+ this.predefinedRadius.emit(false);
29843
+ }
28957
29844
  }
28958
29845
  /**
28959
29846
  * Launch search button
@@ -29142,7 +30029,7 @@ class SpatialFilterItemComponent {
29142
30029
  }
29143
30030
  }
29144
30031
  SpatialFilterItemComponent.ɵfac = function SpatialFilterItemComponent_Factory(t) { return new (t || SpatialFilterItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(SpatialFilterService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.LanguageService)); };
29145
- SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 42, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) {
30032
+ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", predefinedRadius: "predefinedRadius", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 43, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius", "predefinedRadius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) {
29146
30033
  if (rf & 1) {
29147
30034
  i0.ɵɵelement(0, "igo-geometry-form-field-input", 0);
29148
30035
  i0.ɵɵpipe(1, "async");
@@ -29184,7 +30071,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
29184
30071
  i0.ɵɵtemplate(28, SpatialFilterItemComponent_div_28_Template, 3, 3, "div", 16);
29185
30072
  }
29186
30073
  if (rf & 2) {
29187
- i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 28, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 30, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 32, ctx.overlayStyle$))("radius", ctx.radius);
30074
+ i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 29, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 31, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 33, ctx.overlayStyle$))("radius", ctx.radius)("predefinedRadius", ctx.predefinedRadius);
29188
30075
  i0.ɵɵadvance(5);
29189
30076
  i0.ɵɵproperty("ngIf", !ctx.isPredefined());
29190
30077
  i0.ɵɵadvance(1);
@@ -29194,7 +30081,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
29194
30081
  i0.ɵɵadvance(1);
29195
30082
  i0.ɵɵproperty("ngIf", ctx.isPoint());
29196
30083
  i0.ɵɵadvance(2);
29197
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 34, "igo.geo.spatialFilter.search"), " : ");
30084
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 35, "igo.geo.spatialFilter.search"), " : ");
29198
30085
  i0.ɵɵadvance(2);
29199
30086
  i0.ɵɵproperty("value", ctx.selectedItemType);
29200
30087
  i0.ɵɵadvance(1);
@@ -29208,15 +30095,15 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
29208
30095
  i0.ɵɵadvance(1);
29209
30096
  i0.ɵɵproperty("disabled", ctx.disableSearchButton());
29210
30097
  i0.ɵɵadvance(1);
29211
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 36, "igo.geo.spatialFilter.goSearch"), " ");
30098
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 37, "igo.geo.spatialFilter.goSearch"), " ");
29212
30099
  i0.ɵɵadvance(2);
29213
30100
  i0.ɵɵproperty("disabled", ctx.allLayers.length === 0);
29214
30101
  i0.ɵɵadvance(1);
29215
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 38, "igo.geo.spatialFilter.removeLayer"), " ");
30102
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 39, "igo.geo.spatialFilter.removeLayer"), " ");
29216
30103
  i0.ɵɵadvance(2);
29217
30104
  i0.ɵɵproperty("disabled", !ctx.store.entities$.getValue().length);
29218
30105
  i0.ɵɵadvance(1);
29219
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 40, "igo.geo.spatialFilter.exportLayer"), " ");
30106
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 41, "igo.geo.spatialFilter.exportLayer"), " ");
29220
30107
  i0.ɵɵadvance(2);
29221
30108
  i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && !ctx.listIsVisible);
29222
30109
  i0.ɵɵadvance(1);
@@ -29226,7 +30113,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
29226
30113
  (function () {
29227
30114
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
29228
30115
  type: Component,
29229
- args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\r\n [formControl]=\"formControl\"\r\n [map]=\"map\"\r\n [geometryType]=\"geometryType\"\r\n [drawGuide]=\"drawGuide$ | async\"\r\n [measure]=\"measure\"\r\n [drawControlIsActive]=\"drawControlIsActive\"\r\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\r\n [drawStyle]=\"drawStyle$ | async\"\r\n [overlayStyle]=\"overlayStyle$ | async\"\r\n [radius]=\"radius\">\r\n</igo-geometry-form-field-input>\r\n\r\n<div class=\"header\">\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onDrawControlChange()\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"freehandDrawIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onfreehandControlChange()\">\r\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\r\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\r\n<mat-radio-group [value]=\"selectedItemType\">\r\n <mat-radio-button *ngFor=\"let item of itemType\"\r\n [value]=\"item\"\r\n (change)=\"onItemTypeChange($event)\">\r\n {{'igo.geo.spatialFilter.' + item | translate}}\r\n </mat-radio-button>\r\n</mat-radio-group>\r\n\r\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\r\n <mat-table>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"name\">\r\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\r\n </ng-container>\r\n\r\n <!-- Select Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\r\n\r\n </mat-table>\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li class=\"mat-tree-node\">\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled></button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onToggleChange(node) : null\"\r\n [checked]=\"selectedThematics.isSelected(node)\">\r\n </mat-checkbox>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <div class=\"mat-tree-node\">\r\n <button mat-icon-button\r\n (click)=\"onToggleClick(node)\">\r\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\r\n </button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\r\n [checked]=\"isAllSelected(node)\"\r\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\r\n </mat-checkbox>\r\n </div>\r\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n </mat-tree>\r\n</div>\r\n\r\n<div class=\"buttons\">\r\n\r\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\r\n (click)=\"clearSearch()\">\r\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\r\n </button>\r\n\r\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\r\n (click)=\"clearDrawZone()\">\r\n {{'igo.geo.spatialFilter.clearForm' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\r\n (click)=\"toggleSearchButton()\">\r\n {{'igo.geo.spatialFilter.goSearch' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\r\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\r\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\r\n </button>\r\n\r\n</div>\r\n\r\n<button\r\n class=\"chevron-down\"\r\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n</button>\r\n\r\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\r\n <button\r\n *ngIf=\"listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n <igo-entity-table\r\n class=\"results-list\"\r\n [template]=\"tableTemplate\"\r\n [store]=\"store\"\r\n (entitySelectChange)=\"entityChange.emit($event)\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
30116
+ args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\r\n [formControl]=\"formControl\"\r\n [map]=\"map\"\r\n [geometryType]=\"geometryType\"\r\n [drawGuide]=\"drawGuide$ | async\"\r\n [measure]=\"measure\"\r\n [drawControlIsActive]=\"drawControlIsActive\"\r\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\r\n [drawStyle]=\"drawStyle$ | async\"\r\n [overlayStyle]=\"overlayStyle$ | async\"\r\n [radius]=\"radius\"\r\n [predefinedRadius]=\"predefinedRadius\">\r\n</igo-geometry-form-field-input>\r\n\r\n<div class=\"header\">\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onDrawControlChange()\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"freehandDrawIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onfreehandControlChange()\">\r\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\r\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\r\n<mat-radio-group [value]=\"selectedItemType\">\r\n <mat-radio-button *ngFor=\"let item of itemType\"\r\n [value]=\"item\"\r\n (change)=\"onItemTypeChange($event)\">\r\n {{'igo.geo.spatialFilter.' + item | translate}}\r\n </mat-radio-button>\r\n</mat-radio-group>\r\n\r\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\r\n <mat-table>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"name\">\r\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\r\n </ng-container>\r\n\r\n <!-- Select Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\r\n\r\n </mat-table>\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li class=\"mat-tree-node\">\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled></button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onToggleChange(node) : null\"\r\n [checked]=\"selectedThematics.isSelected(node)\">\r\n </mat-checkbox>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <div class=\"mat-tree-node\">\r\n <button mat-icon-button\r\n (click)=\"onToggleClick(node)\">\r\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\r\n </button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\r\n [checked]=\"isAllSelected(node)\"\r\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\r\n </mat-checkbox>\r\n </div>\r\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n </mat-tree>\r\n</div>\r\n\r\n<div class=\"buttons\">\r\n\r\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\r\n (click)=\"clearSearch()\">\r\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\r\n </button>\r\n\r\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\r\n (click)=\"clearDrawZone()\">\r\n {{'igo.geo.spatialFilter.clearForm' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\r\n (click)=\"toggleSearchButton()\">\r\n {{'igo.geo.spatialFilter.goSearch' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\r\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\r\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\r\n </button>\r\n\r\n</div>\r\n\r\n<button\r\n class=\"chevron-down\"\r\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n</button>\r\n\r\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\r\n <button\r\n *ngIf=\"listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n <igo-entity-table\r\n class=\"results-list\"\r\n [template]=\"tableTemplate\"\r\n [store]=\"store\"\r\n (entitySelectChange)=\"entityChange.emit($event)\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
29230
30117
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: SpatialFilterService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, { map: [{
29231
30118
  type: Input
29232
30119
  }], type: [{
@@ -29263,6 +30150,8 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
29263
30150
  type: Output
29264
30151
  }], freehandControl: [{
29265
30152
  type: Output
30153
+ }], predefinedRadius: [{
30154
+ type: Output
29266
30155
  }], clearButtonEvent: [{
29267
30156
  type: Output
29268
30157
  }], clearSearchEvent: [{
@@ -30574,15 +31463,15 @@ IgoFilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [TimeFi
30574
31463
  i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, TimeFilterItemComponent], [i7.TranslatePipe]);
30575
31464
  i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i3.MatButton, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, TimeFilterFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30576
31465
  i0.ɵɵsetComponentScope(TimeFilterListComponent, [i1$1.NgForOf, i5$1.ListItemDirective, i5$1.ListComponent, TimeFilterItemComponent], [FilterableDataSourcePipe]);
30577
- i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3.MatButton, i12$1.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
31466
+ i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
30578
31467
  i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, OgcFilterableItemComponent], [i7.TranslatePipe]);
30579
- i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12$1.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
31468
+ i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30580
31469
  i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, OgcFilterFormComponent,
30581
31470
  OgcFilterSelectionComponent], []);
30582
- i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i12$1.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
31471
+ i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30583
31472
  i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, OgcFilterableItemComponent], [i7.TranslatePipe, FilterableDataSourcePipe]);
30584
31473
  i0.ɵɵsetComponentScope(SpatialFilterTypeComponent, [i1$1.NgForOf, i9.MatOption, i2.MatIcon, i20.MatTabGroup, i20.MatTab, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i4.MatTooltip, SpatialFilterListComponent], [i7.TranslatePipe]);
30585
- i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12$1.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
31474
+ i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30586
31475
  i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i25.MatDatepicker, i25.MatDatepickerInput, i25.MatDatepickerToggle, OgcFilterTimeSliderComponent], [i7.TranslatePipe]);
30587
31476
 
30588
31477
  function ExportButtonComponent_button_0_Template(rf, ctx) {
@@ -30856,7 +31745,7 @@ class ExportService {
30856
31745
  outputName = `${title}.csv`;
30857
31746
  }
30858
31747
  outputName = outputName.replace(' ', '_');
30859
- outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
31748
+ outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/’/g, "'");
30860
31749
  outputNameField.setAttribute('type', 'hidden');
30861
31750
  outputNameField.setAttribute('name', 'outputName');
30862
31751
  outputNameField.setAttribute('value', outputName);
@@ -31178,21 +32067,34 @@ class ImportService {
31178
32067
  constructor(http, config) {
31179
32068
  this.http = http;
31180
32069
  this.config = config;
31181
- this.ogreUrl = this.config.getConfig('importExport.url');
31182
- const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
32070
+ const importConfig = this.config.getConfig('importExport');
32071
+ this.ogreUrl = importConfig.url;
32072
+ const configFileSizeMb = importConfig.clientSideFileSizeMaxMb;
31183
32073
  this.clientSideFileSizeMax = (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
32074
+ if (importConfig.formats) {
32075
+ ImportService.allowedExtensions = importConfig.formats
32076
+ .map(format => ImportService.formatExtensionAssociation[format])
32077
+ .filter(e => e);
32078
+ if (ImportService.allowedExtensions.includes('geojson')) {
32079
+ ImportService.allowedExtensions.push('json');
32080
+ }
32081
+ }
31184
32082
  }
31185
32083
  import(file, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
31186
32084
  return this.importAsync(file, projectionIn, projectionOut);
31187
32085
  }
31188
32086
  getFileImporter(file) {
31189
32087
  const extension = getFileExtension(file);
32088
+ const allowedExtensions = ImportService.allowedExtensions;
32089
+ let zipMimeTypes = [];
32090
+ if (allowedExtensions.includes('zip')) {
32091
+ zipMimeTypes = ImportService.allowedZipMimeTypes;
32092
+ }
31190
32093
  const mimeType = file.type;
31191
32094
  const allowedMimeTypes = [
31192
32095
  ...ImportService.allowedMimeTypes,
31193
- ...ImportService.allowedZipMimeTypes
32096
+ ...zipMimeTypes
31194
32097
  ];
31195
- const allowedExtensions = ImportService.allowedExtensions;
31196
32098
  if (allowedMimeTypes.indexOf(mimeType) < 0 &&
31197
32099
  allowedExtensions.indexOf(extension) < 0) {
31198
32100
  return undefined;
@@ -31338,6 +32240,13 @@ class ImportService {
31338
32240
  return features;
31339
32241
  }
31340
32242
  }
32243
+ ImportService.formatExtensionAssociation = {
32244
+ GeoJSON: 'geojson',
32245
+ GML: 'gml',
32246
+ GPX: 'gpx',
32247
+ KML: 'kml',
32248
+ Shapefile: 'zip'
32249
+ };
31341
32250
  ImportService.allowedMimeTypes = [
31342
32251
  'application/gml+xml',
31343
32252
  'application/vnd.google-earth.kml+xml',
@@ -31349,7 +32258,7 @@ ImportService.allowedZipMimeTypes = [
31349
32258
  'application/x-zip-compressed',
31350
32259
  'application/x-zip'
31351
32260
  ];
31352
- ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml'];
32261
+ ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml', 'zip'];
31353
32262
  ImportService.ɵfac = function ImportService_Factory(t) { return new (t || ImportService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
31354
32263
  ImportService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ImportService, factory: ImportService.ɵfac, providedIn: 'root' });
31355
32264
  (function () {
@@ -33336,6 +34245,64 @@ IgoOverlayModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
33336
34245
  })();
33337
34246
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoOverlayModule, { declarations: [OverlayDirective], exports: [OverlayDirective] }); })();
33338
34247
 
34248
+ /*
34249
+ * The MIT License (MIT)
34250
+ *
34251
+ * Copyright (c) 2016-2017 Dan "Ducky" Little
34252
+ *
34253
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
34254
+ * of this software and associated documentation files (the "Software"), to deal
34255
+ * in the Software without restriction, including without limitation the rights
34256
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
34257
+ * copies of the Software, and to permit persons to whom the Software is
34258
+ * furnished to do so, subject to the following conditions:
34259
+ *
34260
+ * The above copyright notice and this permission notice shall be included in all
34261
+ * copies or substantial portions of the Software.
34262
+ *
34263
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34264
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34265
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34266
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34267
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34268
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34269
+ * SOFTWARE.
34270
+ */
34271
+ function jsGeoPdfPlugin(jsPDFAPI) {
34272
+ const setGeoArea = function (pdfExt, geoExt) {
34273
+ const bbox = pdfExt.join(' ');
34274
+ // the ordering may seem odd here but PDF
34275
+ // flips the Y axis upside down and this accounts for that
34276
+ // change.
34277
+ const minx = geoExt[0];
34278
+ const maxx = geoExt[2];
34279
+ const maxy = geoExt[1];
34280
+ const miny = geoExt[3];
34281
+ const bounds = [miny, minx, maxy, minx, maxy, maxx, miny, maxx].join(' ');
34282
+ const bbox_obj = this.internal.newAdditionalObject();
34283
+ const bounds_obj = this.internal.newAdditionalObject();
34284
+ const proj_obj = this.internal.newAdditionalObject();
34285
+ proj_obj.content = '<< /EPSG 3857 /Type /PROJCS /WKT (PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere"' +
34286
+ ',+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0]' +
34287
+ ',UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0]' +
34288
+ ',PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0]' +
34289
+ ',PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]) >>';
34290
+ bounds_obj.content = '<< /Bounds [ 0 1 0 0 1 0 1 1 ] /GCS ' +
34291
+ proj_obj.objId + ' 0 R /GPTS [ ' + bounds + ' ] /LPTS [ 0 1 0 0 1 0 1 1 ] /Subtype /GEO /Type /Measure >>';
34292
+ bbox_obj.content = '<< /BBox [ ' + bbox + ' ] /Measure ' + bounds_obj.objId + ' 0 R /Name (Layer) /Type /Viewport >>';
34293
+ const title_obj = this.internal.newAdditionalObject();
34294
+ const date = new Date().toLocaleDateString('en-CA');
34295
+ title_obj.content = '<< /Name IGO2 /Type OCG /Date ' + date + ' >>';
34296
+ return bbox_obj.objId;
34297
+ };
34298
+ jsPDFAPI.setGeoArea = function (pdfExt, geoExt) {
34299
+ this.internal.events.subscribe('putPage', function () {
34300
+ const bbox_id = setGeoArea.call(this, pdfExt, geoExt);
34301
+ this.internal.write('/VP [ ' + bbox_id + ' 0 R ]');
34302
+ });
34303
+ };
34304
+ }
34305
+
33339
34306
  class PrintService {
33340
34307
  constructor(http, messageService, activityService, languageService, configService) {
33341
34308
  this.http = http;
@@ -33343,6 +34310,15 @@ class PrintService {
33343
34310
  this.activityService = activityService;
33344
34311
  this.languageService = languageService;
33345
34312
  this.configService = configService;
34313
+ this.TEXTPDFFONT = {
34314
+ titleFont: 'Times',
34315
+ titleFontStyle: 'bold',
34316
+ subtitleFont: 'Times',
34317
+ subtitleFontStyle: 'bold',
34318
+ commentFont: 'courier',
34319
+ commentFontStyle: 'normal',
34320
+ commentFontSize: 16
34321
+ };
33346
34322
  }
33347
34323
  print(map, options) {
33348
34324
  const status$ = new Subject();
@@ -33351,9 +34327,11 @@ class PrintService {
33351
34327
  const orientation = options.orientation;
33352
34328
  const legendPostion = options.legendPosition;
33353
34329
  this.activityId = this.activityService.register();
33354
- const doc = new jspdf({
34330
+ jsGeoPdfPlugin(jsPDF.API);
34331
+ const doc = new jsPDF({
33355
34332
  orientation,
33356
- format: paperFormat.toLowerCase()
34333
+ format: paperFormat.toLowerCase(),
34334
+ unit: 'mm' // default
33357
34335
  });
33358
34336
  const dimensions = [
33359
34337
  doc.internal.pageSize.width,
@@ -33363,17 +34341,21 @@ class PrintService {
33363
34341
  const width = dimensions[0] - margins[3] - margins[1];
33364
34342
  const height = dimensions[1] - margins[0] - margins[2];
33365
34343
  const size = [width, height];
33366
- let titleSizeResults = [0, 0];
34344
+ let titleSizes;
34345
+ let subtitleSizes;
34346
+ // PDF title
33367
34347
  if (options.title !== undefined) {
33368
- titleSizeResults = this.getTitleSize(options.title, width, height, doc); // return : size(pt) and left margin (mm)
33369
- this.addTitle(doc, options.title, titleSizeResults[0], margins[3] + titleSizeResults[1], titleSizeResults[0] * (25.4 / 72));
34348
+ const fontSizeInPt = Math.round(2 * (height + 145) * 0.05) / 2; //calculate the fontSize title from the page height.
34349
+ titleSizes = this.getTextPdfObjectSizeAndMarg(options.title, margins, this.TEXTPDFFONT.titleFont, fontSizeInPt, this.TEXTPDFFONT.titleFontStyle, doc);
34350
+ this.addTextInPdfDoc(doc, options.title, this.TEXTPDFFONT.titleFont, this.TEXTPDFFONT.titleFontStyle, titleSizes.fontSize, titleSizes.marginLeft + margins[3], margins[0]);
34351
+ margins[0] = titleSizes.height + margins[0]; // cumulative margin top for next elem to place in pdf doc
33370
34352
  }
34353
+ // PDF subtitle
33371
34354
  if (options.subtitle !== undefined) {
33372
- let subtitleSizeResult = 0;
33373
- const titleH = titleSizeResults[0];
33374
- subtitleSizeResult = this.getSubTitleSize(options.subtitle, width, height, doc); // return : size(pt) and left margin (mm)
33375
- this.addSubTitle(doc, options.subtitle, titleH * 0.7, margins[3] + subtitleSizeResult, titleH * 1.7 * (25.4 / 72));
33376
- margins[0] = margins[0] + titleSizeResults[0] * 0.7 * (25.4 / 72);
34355
+ subtitleSizes = this.getTextPdfObjectSizeAndMarg(options.subtitle, margins, this.TEXTPDFFONT.subtitleFont, titleSizes.fontSize * 0.7, // 70% size of title
34356
+ this.TEXTPDFFONT.subtitleFontStyle, doc);
34357
+ this.addTextInPdfDoc(doc, options.subtitle, this.TEXTPDFFONT.subtitleFont, this.TEXTPDFFONT.subtitleFontStyle, subtitleSizes.fontSize, subtitleSizes.marginLeft + margins[3], margins[0]);
34358
+ margins[0] += 5; // cumulative marg top for next elem to place in pdf doc. 5 is a fix it could be adjust
33377
34359
  }
33378
34360
  if (options.showProjection === true || options.showScale === true) {
33379
34361
  this.addProjScale(doc, map, resolution, options.showProjection, options.showScale);
@@ -33385,6 +34367,10 @@ class PrintService {
33385
34367
  if (status === SubjectStatus.Done) {
33386
34368
  yield this.addScale(doc, map, margins);
33387
34369
  yield this.handleMeasureLayer(doc, map, margins);
34370
+ const width = this.imgSizeAdded[0];
34371
+ const height = this.imgSizeAdded[1];
34372
+ const res = 1;
34373
+ this.addGeoRef(doc, map, width, height, res, margins);
33388
34374
  if (options.legendPosition !== 'none') {
33389
34375
  if (['topleft', 'topright', 'bottomleft', 'bottomright'].indexOf(options.legendPosition) > -1) {
33390
34376
  yield this.addLegendSamePage(doc, map, margins, resolution, options.legendPosition);
@@ -33404,6 +34390,20 @@ class PrintService {
33404
34390
  }));
33405
34391
  return status$;
33406
34392
  }
34393
+ // ref GeoMoose https://github.com/geomoose/gm3/tree/main/src/gm3/components/print
34394
+ addGeoRef(doc, map, width, height, resolution, margins) {
34395
+ const unit = 'mm';
34396
+ const docHeight = doc.internal.pageSize.getHeight();
34397
+ // x,y = margin left-bottom corner for img in pdf doc
34398
+ const x = margins[3];
34399
+ const y = docHeight - margins[0] - height;
34400
+ let pdf_extents = [x, y, x + width, y + height];
34401
+ for (let i = 0; i < pdf_extents.length; i++) {
34402
+ pdf_extents[i] = this.pdf_units2points(pdf_extents[i], unit);
34403
+ }
34404
+ const mapExtent = map.viewController.getExtent('EPSG:3857');
34405
+ doc.setGeoArea(pdf_extents, mapExtent);
34406
+ }
33407
34407
  /**
33408
34408
  * Add measure overlay on the map on the document when the measure layer is present
33409
34409
  * @param doc - Pdf document where measure tooltip will be added
@@ -33527,66 +34527,46 @@ class PrintService {
33527
34527
  return status$;
33528
34528
  });
33529
34529
  }
33530
- getTitleSize(title, pageWidth, pageHeight, doc) {
34530
+ getTextPdfObjectSizeAndMarg(text, margins, font, fontSizeInPt, fontStyle, doc) {
33531
34531
  const pdfResolution = 96;
33532
- const titleSize = Math.round(2 * (pageHeight + 145) * 0.05) / 2;
33533
- doc.setFont('Times', 'bold');
33534
- const width = doc.getTextWidth(title);
33535
- const titleWidth = doc.getStringUnitWidth(title) * titleSize / doc.internal.scaleFactor;
33536
- const titleTailleMinimale = Math.round(2 * (pageHeight + 150) * 0.037) / 2;
33537
- let titleFontSize = 0;
33538
- let titleMarginLeft;
33539
- if (titleWidth >= (pageWidth)) {
33540
- titleMarginLeft = 0;
33541
- titleFontSize = Math.round(((pageWidth / title.length) * pdfResolution) / 25.4);
33542
- // If the formula to find the font size gives below the defined minimum size
33543
- if (titleFontSize < titleTailleMinimale) {
33544
- titleFontSize = titleTailleMinimale;
33545
- }
33546
- }
33547
- else {
33548
- titleMarginLeft = (pageWidth - titleWidth) / 2;
33549
- titleFontSize = titleSize;
33550
- }
33551
- return [titleFontSize, titleMarginLeft];
33552
- }
33553
- getSubTitleSize(subtitle, pageWidth, pageHeight, doc) {
33554
- const subtitleSize = 0.7 * Math.round(2 * (pageHeight + 145) * 0.05) / 2; // 70% of the title's font size
33555
- doc.setFont('Times', 'bold');
33556
- const subtitleWidth = doc.getStringUnitWidth(subtitle) * subtitleSize / doc.internal.scaleFactor;
33557
- let subtitleMarginLeft;
33558
- if (subtitleWidth >= (pageWidth)) {
33559
- subtitleMarginLeft = 0;
34532
+ const docWidth = doc.internal.pageSize.getWidth();
34533
+ const pageWidth = docWidth - margins[1] - margins[3];
34534
+ // important to set it first, the textDimension change when font change!
34535
+ doc.setFont(font, fontStyle);
34536
+ doc.setFontSize(fontSizeInPt);
34537
+ let textDimensions = doc.getTextDimensions(text);
34538
+ let textMarginLeft;
34539
+ if (textDimensions.w > pageWidth) {
34540
+ // if the text is to long, reduce fontSize 70% and the overflow with be cut in print...
34541
+ textMarginLeft = 0;
34542
+ fontSizeInPt = fontSizeInPt * 0.7;
34543
+ doc.setFontSize(fontSizeInPt);
34544
+ textDimensions = doc.getTextDimensions(text);
33560
34545
  }
33561
34546
  else {
33562
- subtitleMarginLeft = (pageWidth - subtitleWidth) / 2;
34547
+ textMarginLeft = (pageWidth - textDimensions.w) / 2;
33563
34548
  }
33564
- return subtitleMarginLeft;
33565
- }
33566
- addTitle(doc, title, titleFontSize, titleMarginLeft, titleMarginTop) {
33567
- doc.setFont('Times', 'bold');
33568
- doc.setFontSize(titleFontSize);
33569
- doc.text(title, titleMarginLeft, titleMarginTop);
33570
- }
33571
- addSubTitle(doc, subtitle, subtitleFontSize, subtitleMarginLeft, subtitleMarginTop) {
33572
- doc.setFont('Times', 'bold');
33573
- doc.setFontSize(subtitleFontSize);
33574
- doc.text(subtitle, subtitleMarginLeft, subtitleMarginTop);
34549
+ return {
34550
+ 'fontSize': fontSizeInPt,
34551
+ 'marginLeft': textMarginLeft,
34552
+ 'height': textDimensions.h
34553
+ };
33575
34554
  }
33576
34555
  /**
33577
34556
  * Add comment to the document
33578
34557
  * * @param doc - pdf document
33579
34558
  * * @param comment - Comment to add in the document
33580
- * * @param size - Size of the document
33581
34559
  */
33582
34560
  addComment(doc, comment) {
33583
- const commentSize = 16;
33584
- const commentMarginLeft = 20;
33585
- const marginBottom = 5;
33586
- const heightPixels = doc.internal.pageSize.height - marginBottom;
33587
- doc.setFont('courier');
33588
- doc.setFontSize(commentSize);
33589
- doc.text(comment, commentMarginLeft, heightPixels);
34561
+ const commentMarginLeft = 20; //margin left and bottom is fix
34562
+ const commentMarginBottom = 5;
34563
+ const marginTop = doc.internal.pageSize.height - commentMarginBottom;
34564
+ this.addTextInPdfDoc(doc, comment, this.TEXTPDFFONT.commentFont, this.TEXTPDFFONT.commentFontStyle, this.TEXTPDFFONT.commentFontSize, commentMarginLeft, marginTop);
34565
+ }
34566
+ addTextInPdfDoc(doc, textToAdd, textFont, textFontStyle, textFontSize, textMarginLeft, textMarginTop) {
34567
+ doc.setFont(textFont, textFontStyle);
34568
+ doc.setFontSize(textFontSize);
34569
+ doc.text(textToAdd, textMarginLeft, textMarginTop);
33590
34570
  }
33591
34571
  /**
33592
34572
  * Add projection and/or scale to the document
@@ -33764,9 +34744,14 @@ class PrintService {
33764
34744
  image = canvas.toDataURL('image/png');
33765
34745
  }
33766
34746
  if (image !== undefined) {
34747
+ if (image.length < 20) { // img is corrupt todo: fix addScale in mobile make a corrupt img
34748
+ console.log('Warning: An image cannot be print in pdf file');
34749
+ return;
34750
+ }
33767
34751
  const imageSize = this.getImageSizeToFitPdf(doc, canvas, margins);
33768
34752
  doc.addImage(image, 'PNG', margins[3], margins[0], imageSize[0], imageSize[1]);
33769
34753
  doc.rect(margins[3], margins[0], imageSize[0], imageSize[1]);
34754
+ this.imgSizeAdded = imageSize; // keep img size for georef later
33770
34755
  }
33771
34756
  }
33772
34757
  // TODO fix printing with image resolution
@@ -34001,7 +34986,7 @@ class PrintService {
34001
34986
  */
34002
34987
  saveDoc(doc) {
34003
34988
  return __awaiter(this, void 0, void 0, function* () {
34004
- yield doc.save('map.pdf', { returnPromise: true });
34989
+ yield doc.save('map_georef.pdf', { returnPromise: true });
34005
34990
  });
34006
34991
  }
34007
34992
  /**
@@ -34014,8 +34999,8 @@ class PrintService {
34014
34999
  // Define variable to calculate best size to fit in one page
34015
35000
  const pageHeight = doc.internal.pageSize.getHeight() - (margins[0] + margins[2]);
34016
35001
  const pageWidth = doc.internal.pageSize.getWidth() - (margins[1] + margins[3]);
34017
- const canHeight = canvas.height;
34018
- const canWidth = canvas.width;
35002
+ const canHeight = this.pdf_units2points(canvas.height, 'mm');
35003
+ const canWidth = this.pdf_units2points(canvas.width, 'mm');
34019
35004
  const heightRatio = canHeight / pageHeight;
34020
35005
  const widthRatio = canWidth / pageWidth;
34021
35006
  const maxRatio = heightRatio > widthRatio ? heightRatio : widthRatio;
@@ -34131,6 +35116,41 @@ class PrintService {
34131
35116
  delete that.zipFile;
34132
35117
  });
34133
35118
  }
35119
+ pdf_units2points(n, unit) {
35120
+ let k = 1;
35121
+ // this code is borrowed from jsPDF
35122
+ // as it does not expose a public API
35123
+ // for converting units to points.
35124
+ switch (unit) {
35125
+ case 'pt':
35126
+ k = 1;
35127
+ break;
35128
+ case 'mm':
35129
+ k = 72 / 25.4;
35130
+ break;
35131
+ case 'cm':
35132
+ k = 72 / 2.54;
35133
+ break;
35134
+ case 'in':
35135
+ k = 72;
35136
+ break;
35137
+ case 'px':
35138
+ k = 96 / 72;
35139
+ break;
35140
+ case 'pc':
35141
+ k = 12;
35142
+ break;
35143
+ case 'em':
35144
+ k = 12;
35145
+ break;
35146
+ case 'ex':
35147
+ k = 6;
35148
+ break;
35149
+ default:
35150
+ throw new Error('Invalid unit: ' + unit);
35151
+ }
35152
+ return n * k;
35153
+ }
34134
35154
  }
34135
35155
  PrintService.ɵfac = function PrintService_Factory(t) { return new (t || PrintService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.ActivityService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
34136
35156
  PrintService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrintService, factory: PrintService.ɵfac, providedIn: 'root' });
@@ -38669,7 +39689,7 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
38669
39689
  i0.ɵɵadvance(1);
38670
39690
  i0.ɵɵproperty("ngIf", ctx.hasPointerReverseSearchSource && !ctx.isTouchScreen);
38671
39691
  }
38672
- }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgSwitch, i1$1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12$1.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, 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 });
39692
+ }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgSwitch, i1$1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, 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 });
38673
39693
  (function () {
38674
39694
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSettingsComponent, [{
38675
39695
  type: Component,
@@ -42842,142 +43862,6 @@ function provideOsrmDirectionsSource() {
42842
43862
  };
42843
43863
  }
42844
43864
 
42845
- /**
42846
- * Cadastre search source
42847
- */
42848
- class CadastreSearchSource extends SearchSource {
42849
- constructor(http, languageService, storageService, options) {
42850
- super(options, storageService);
42851
- this.http = http;
42852
- this.languageService = languageService;
42853
- }
42854
- getId() {
42855
- return CadastreSearchSource.id;
42856
- }
42857
- getType() {
42858
- return CadastreSearchSource.type;
42859
- }
42860
- /*
42861
- * Source : https://wiki.openstreetmap.org/wiki/Key:amenity
42862
- */
42863
- getDefaultOptions() {
42864
- return {
42865
- title: 'Cadastre (Québec)',
42866
- searchUrl: 'https://carto.cptaq.gouv.qc.ca/php/find_lot_v1.php?'
42867
- };
42868
- }
42869
- /**
42870
- * Search a place by name
42871
- * @param term Place name
42872
- * @returns Observable of <SearchResult<Feature>[]
42873
- */
42874
- search(term, options) {
42875
- term = term.endsWith(',') ? term.slice(0, -1) : term;
42876
- term = term.startsWith(',') ? term.substr(1) : term;
42877
- term = term.replace(/ /g, '');
42878
- const params = this.computeSearchRequestParams(term, options || {});
42879
- if (!params.get('numero') || !params.get('numero').match(/^[0-9,]+$/g)) {
42880
- return of([]);
42881
- }
42882
- return this.http
42883
- .get(this.searchUrl, { params, responseType: 'text' })
42884
- .pipe(map((response) => this.extractResults(response, term)));
42885
- }
42886
- computeSearchRequestParams(term, options) {
42887
- return new HttpParams({
42888
- fromObject: Object.assign({
42889
- numero: term,
42890
- epsg: '4326'
42891
- }, this.params, options.params || {})
42892
- });
42893
- }
42894
- extractResults(response, term) {
42895
- return response
42896
- .split('<br />')
42897
- .filter((lot) => lot.length > 0)
42898
- .map((lot) => this.dataToResult(lot, term));
42899
- }
42900
- dataToResult(data, term) {
42901
- const lot = data.split(';');
42902
- const numero = lot[0];
42903
- const wkt = lot[7];
42904
- const geometry = this.computeGeometry(wkt);
42905
- const properties = {
42906
- NoLot: numero,
42907
- Route: '<span class="routing"> <u>' + this.languageService.translate.instant('igo.geo.seeRouting') + '</u> </span>'
42908
- };
42909
- const id = [this.getId(), 'cadastre', numero].join('.');
42910
- return {
42911
- source: this,
42912
- meta: {
42913
- dataType: FEATURE,
42914
- id,
42915
- title: numero,
42916
- score: computeTermSimilarity(term.trim(), numero),
42917
- icon: 'map-marker'
42918
- },
42919
- data: {
42920
- type: FEATURE,
42921
- projection: 'EPSG:4326',
42922
- geometry,
42923
- properties,
42924
- meta: {
42925
- id,
42926
- title: numero
42927
- }
42928
- }
42929
- };
42930
- }
42931
- computeGeometry(wkt) {
42932
- const feature = new olWKT().readFeature(wkt, {
42933
- dataProjection: 'EPSG:4326',
42934
- featureProjection: 'EPSG:4326'
42935
- });
42936
- return {
42937
- type: feature.getGeometry().getType(),
42938
- coordinates: feature.getGeometry().getCoordinates()
42939
- };
42940
- }
42941
- }
42942
- CadastreSearchSource.id = 'cadastre';
42943
- CadastreSearchSource.type = FEATURE;
42944
- CadastreSearchSource.ɵfac = function CadastreSearchSource_Factory(t) { return new (t || CadastreSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
42945
- CadastreSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CadastreSearchSource, factory: CadastreSearchSource.ɵfac });
42946
- __decorate([
42947
- Cacheable({
42948
- maxCacheCount: 20
42949
- })
42950
- ], CadastreSearchSource.prototype, "search", null);
42951
- (function () {
42952
- (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CadastreSearchSource, [{
42953
- type: Injectable
42954
- }], function () {
42955
- return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
42956
- type: Inject,
42957
- args: ['options']
42958
- }] }];
42959
- }, { search: [] });
42960
- })();
42961
-
42962
- /**
42963
- * Cadastre search source factory
42964
- * @ignore
42965
- */
42966
- function cadastreSearchSourceFactory(http, languageService, storageService, config) {
42967
- return new CadastreSearchSource(http, languageService, storageService, config.getConfig(`searchSources.${CadastreSearchSource.id}`));
42968
- }
42969
- /**
42970
- * Function that returns a provider for the Cadastre search source
42971
- */
42972
- function provideCadastreSearchSource() {
42973
- return {
42974
- provide: SearchSource,
42975
- useFactory: cadastreSearchSourceFactory,
42976
- multi: true,
42977
- deps: [HttpClient, LanguageService, StorageService, ConfigService]
42978
- };
42979
- }
42980
-
42981
43865
  /**
42982
43866
  * Nominatim search source
42983
43867
  */
@@ -43749,7 +44633,7 @@ class ConfigFileToGeoDBService {
43749
44633
  }
43750
44634
  if (currentDate >= geoData.triggerDate) {
43751
44635
  if (geoData.action === 'update') {
43752
- const insertEvent = `${geoData.source || 'automatedDataUpdate'} (${geoData.triggerDate})`;
44636
+ const insertEvent = `${geoData.source || InsertSourceInsertDBEnum.System} (${geoData.triggerDate})`;
43753
44637
  geoData.urls.map((url) => {
43754
44638
  datas$.push(this.geoDBService.getByID(url).pipe(concatMap((res) => {
43755
44639
  if ((res === null || res === void 0 ? void 0 : res.insertEvent) !== insertEvent) {
@@ -43758,8 +44642,31 @@ class ConfigFileToGeoDBService {
43758
44642
  .info('igo.geo.indexedDb.data-download-start', undefined, { disableTimeOut: true, progressBar: false, closeButton: true, tapToDismiss: false });
43759
44643
  firstDownload = false;
43760
44644
  }
43761
- return this.http.get(url)
43762
- .pipe(concatMap(r => this.geoDBService.update(url, url, r, 'system', insertEvent)));
44645
+ let responseType = 'json';
44646
+ const isZip = this.isZip(url);
44647
+ if (isZip) {
44648
+ responseType = 'arraybuffer';
44649
+ }
44650
+ return this.http.get(url, { responseType }).pipe(concatMap(r => {
44651
+ if (isZip) {
44652
+ const observables$ = [this.geoDBService.update(url, url, {}, InsertSourceInsertDBEnum.System, insertEvent)];
44653
+ JSZip.loadAsync(r)
44654
+ .then((zipped) => {
44655
+ zipped.forEach((relativePath) => {
44656
+ if (relativePath.toLocaleLowerCase().endsWith('.geojson')) {
44657
+ zipped.file(relativePath).async("base64").then((r) => {
44658
+ const geojson = JSON.parse(atob(r));
44659
+ const subUrl = geoData.zippedBaseUrl || '';
44660
+ const zippedUrl = subUrl + (subUrl.endsWith('/') ? '' : '/') + relativePath;
44661
+ observables$.push(this.geoDBService.update(zippedUrl, url, geojson, InsertSourceInsertDBEnum.System, insertEvent));
44662
+ });
44663
+ }
44664
+ });
44665
+ });
44666
+ return zip(observables$);
44667
+ }
44668
+ return this.geoDBService.update(url, url, r, InsertSourceInsertDBEnum.System, insertEvent);
44669
+ }));
43763
44670
  }
43764
44671
  else {
43765
44672
  return of(false);
@@ -43785,6 +44692,10 @@ class ConfigFileToGeoDBService {
43785
44692
  }
43786
44693
  });
43787
44694
  }
44695
+ isZip(value) {
44696
+ const regex = /(zip)$/;
44697
+ return typeof value === 'string' && regex.test(value.toLowerCase());
44698
+ }
43788
44699
  }
43789
44700
  ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.MessageService)); };
43790
44701
  ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigFileToGeoDBService, factory: ConfigFileToGeoDBService.ɵfac, providedIn: 'root' });
@@ -43805,5 +44716,5 @@ ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
43805
44716
  * Generated bundle index. Do not edit.
43806
44717
  */
43807
44718
 
43808
- export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, ConfigFileToGeoDBService, 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, FontType, GeoDBService, GeoNetworkService, 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, InsertSourceInsertDBEnum, LAYER, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, 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, ResponseType, 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, StyleModalComponent, 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, WakeLockButtonComponent, 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, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getDirectChildLayersByDeletion, getDirectChildLayersByProperty, getDirectParentLayerByDeletion, getDirectParentLayerByProperty, getFileExtension, getFormatFromOptions, getIgoLayerByLinkId, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initLayerSyncFromRootParentLayers, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerHasLinkDeletion, layerHasLinkWithProperty, 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 };
44719
+ export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, ConfigFileToGeoDBService, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, CoordinatesUnit, DDtoDMS, 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, FontType, GeoDBService, GeoNetworkService, 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, InsertSourceInsertDBEnum, LAYER, LabelType, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, 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, ResponseType, 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, StyleModalComponent, 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, WakeLockButtonComponent, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addDirectionToRoutesFeatureStore, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addStopToStopsFeatureStore, addStopToStore, buildUrl, 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, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getDirectChildLayersByDeletion, getDirectChildLayersByProperty, getDirectParentLayerByDeletion, getDirectParentLayerByProperty, getFileExtension, getFormatFromOptions, getIgoLayerByLinkId, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initLayerSyncFromRootParentLayers, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerHasLinkDeletion, layerHasLinkWithProperty, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarker, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, removeStopFromStore, renderFeatureFromOl, roundCoordTo, roundCoordToString, 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 };
43809
44720
  //# sourceMappingURL=igo2-geo.mjs.map